oracle 儲存過程不能編譯-- (編譯的同時正在訪問所導致的) [轉載]

lovehewenyu發表於2013-02-28

oracle 儲存過程不能編譯-- (編譯的同時正在訪問所導致的)  [轉載]

1.SELECT * FROM V$DB_OBJECT_CACHE WHERE name='NCCM_MEDICAL_USERSTATS2' AND LOCKS!='0';
2.select SID from V$ACCESS WHERE bject='NCCM_MEDICAL_USERSTATS2';
3.SELECT SID,SERIAL#,PADDR FROM V$SESSION WHERE SID='135';
4.alter system kill session '135,50430' immediate;


在對儲存過程進行訪問、執行、測試的時候,沒有完全停止,就又在另外一個視窗,對它進行修改而且進行編譯,出現了卡死現象。用PLSQL Developer 在session裡,找到這條session的記錄,然後kill後,再重新編譯這個過程,還是卡死,可是在session裡這條記錄已經是顯示killed狀態,那就通過下面的方法進行解決:

1:查V$DB_OBJECT_CACHE

SELECT * FROM V$DB_OBJECT_CACHE WHERE name='P_DATA_SYNC_CHECK' AND LOCKS!='0';

注意:P_DATA_SYNC_CHECK為儲存過程的名稱。

發現locks=2,

2:按物件查出sid的值

select SID from V$ACCESS WHERE bject='P_DATA_SYNC_CHECK';

注意:P_DATA_SYNC_CHECK為儲存過程的名稱。

3:查sid,serial#

SELECT SID,SERIAL#,PADDR FROM V$SESSION WHERE SID='剛才查到的SID';

4:alter system kill session 'sid值,serial#值' immediate;

 

 

本人轉載:http://www.cnblogs.com/kaka-bing/archive/2012/06/28/2568501.html

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26442936/viewspace-754966/,如需轉載,請註明出處,否則將追究法律責任。

相關文章