2017-01-19 30 views
0

在Oracle DB中,在某些情況下,對象(視圖/同義詞)變得「無效」(編譯出來),這會增加更多工作給我經常維護這些問題。用於檢查Oracle中的無效對象並構建腳本以編譯無效對象的腳本

我打算在我的每個部署中的腳本的開始和結尾包含一些語句 1.在部署更改之前檢查所有無效對象。 2.更改部署後,再次檢查所有無效對象並自動構建腳本以修復INVALID視圖&同義詞並執行它。

如果有人能幫我建立一個涵蓋我上面提到的要點的oracle腳本,對我來說會有很大的幫助嗎?

注:我沒有DBA管理員權限,我用部署工具來提前部署腳本

非常感謝。 Sitesh

+0

當你說自動修復 - 你的意思是重新編譯的權利? - 請檢查我的答案。 –

回答

1

這個腳本會發現無效對象,

select OWNER, OBJECT_NAME, OBJECT_TYPE, STATUS 
from dba_objects 
where status != 'VALID' 
    and OWNER in ('SCHEMA_1','SCHEMA_2','SCHEMA_3') 
order by owner, object_type; 

使用下面的腳本來重新編譯在一個給定模式中的所有無效對象。

EXEC DBMS_UTILITY.compile_schema('SCHEMA_1', compile_all => false);