當imp後,procedure重新compile若是經由oem等圖型介面管理工具去處理時,往往必須一個一個打開後,才能重新compile。因此我會利用以下的方式來進行首先找出狀態為invaild的procedure,並加上alter procedure等語法,使找出來的結果便能直接執行set pagesize 0set head offspool invaild.sqlselect 'ALTER PROCEDURE '||OWNER||'.'||OBJECT_NAME|' COMPILE;'from dba_objectswhere object_type='PROCEDURE' and status='INVALID';spool off如此便會將執行完的結果存成invaild.sql內容大約會成為:SQL>ALTER PROCEDURE SYSTEM.TESTPROC COMPILE;... SQL>此檔可直接執行,但因為第一行和最後一行會有SQL>的不正常語法,為免螢幕花掉,可利用編輯的方式將他拿掉。如果在UNIX中,可以用SED來取代此方法COMPILE完的結果會直接秀在螢幕上,如果其中有無法COMPILE的PROCEDURE,想知道進一步的問題發生的原因,可以在有問題的那行後,加上SHOW ERROR;就可以進一步知道問題的內容。 .msgcontent .wsharing ul li { text-indent: 0; } 分享 Facebook Plurk YAHOO! .
- Jan 14 Sat 2012 17:41
當imp後,procedure重新compile
close
全站熱搜
留言列表
禁止留言