建立儲存過程編譯無效物件
有時候我們需要自己編寫程式碼實現對無效物件的編譯,以下儲存過程可以完成該工作。
具有DBA角色的使用者在編譯和執行該儲存過程前需要顯示授予以下許可權:
grant select on dba_objects to dis;
grant execute on dbms_registry_sys to dis;
grant execute on utl_recomp to dis;
以下是編譯無效物件的儲存過程:
create or replace procedure recompile is
-- 編譯無效物件
type tab_char is table of varchar2(32767) index by binary_integer;
commands tab_char;
table_exists number;
begin
sys.utl_recomp.recomp_parallel(0);
select count(*)
into table_exists
from dba_objects
where owner = 'SYS'
and object_name = 'UTLIRP_ENABLED_FUNC_INDEXES'
and object_type = 'TABLE';
if (table_exists > 0) then
execute immediate q'+
select 'alter index "' || u.name || '"."' || o.name || '" enable'
from utlirp_enabled_func_indexes e, ind$ i, obj$ o, user$ u
where e.obj# = i.obj# and i.obj# = o.obj# and o.owner# = u.user#
and bitand(i.flags, 1024) != 0+' bulk
collect
into commands;
if (commands.count() > 0) then
for i in 1 .. commands.count() loop
execute immediate commands(i);
end loop;
end if;
execute immediate 'drop table utlirp_enabled_func_indexes';
end if;
sys.dbms_registry_sys.validate_components;
end;
/
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28974745/viewspace-2141525/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 編譯無效物件編譯物件
- 儲存過程編譯時卡死儲存過程編譯
- oracle編譯無效物件Oracle編譯物件
- 儲存過程被鎖無法編譯的解決儲存過程編譯
- oracle 儲存過程重新編譯方法Oracle儲存過程編譯
- 儲存過程編譯時會卡死儲存過程編譯
- Oracle認證 :Oracle中重新編譯無效的儲存過程,或函式、觸發器Oracle編譯儲存過程函式觸發器
- Oracle建立儲存過程Oracle儲存過程
- Oracle 編譯儲存過程卡死解決方法Oracle編譯儲存過程
- SQL 建立儲存過程PROCEDURESQL儲存過程
- Oracle儲存過程編譯卡死的解決方法Oracle儲存過程編譯
- 一個儲存過程編譯HANG住的分析儲存過程編譯
- MySql儲存過程—2、第一個MySql儲存過程的建立MySql儲存過程
- 編寫JAVA儲存過程Java儲存過程
- 把自編儲存過程設定為系統儲存過程儲存過程
- laravel建立一個儲存過程Laravel儲存過程
- MySQL 建立儲存過程報錯MySql儲存過程
- 編譯儲存過程時被卡死的處理方法編譯儲存過程
- Oracle EBS 重新編譯無效物件 invalid objectOracle編譯物件Object
- 儲存過程裡呼叫編譯自己是什麼情況?儲存過程編譯
- oracle儲存過程編譯死掉的原因及解決(zt)Oracle儲存過程編譯
- SqlServer儲存過程的建立與使用SQLServer儲存過程
- MySQL儲存過程的建立和使用MySql儲存過程
- 用儲存過程動態建立表儲存過程
- ORACLE儲存過程中建立子過程的測試!Oracle儲存過程
- Oracle查詢並批量編譯無效物件指令碼Oracle編譯物件指令碼
- 6.5. 常用物件——6.5.6. 儲存過程物件儲存過程
- 檢視和儲存過程相關物件儲存過程物件
- MySQL儲存過程詳解 mysql 儲存過程MySql儲存過程
- MySQL 5.5 建立儲存過程和函式MySql儲存過程函式
- 儲存過程儲存過程
- (轉)編譯Oracle中無效的物件的N中方法編譯Oracle物件
- 編寫儲存過程基本注意事項儲存過程
- 自動編號的儲存過程 (轉)儲存過程
- 生成sql server2000物件建立指令碼的儲存過程(轉)SQLServer物件指令碼儲存過程
- 使用儲存過程(PL/SQL)向資料庫中儲存BLOB物件儲存過程SQL資料庫物件
- 資料庫開發---常用物件-儲存過程資料庫物件儲存過程
- oracle 儲存過程不能編譯-- (編譯的同時正在訪問所導致的) [轉載]Oracle儲存過程編譯