查詢語法如下:
SELECT B.OSUSER, A.*
FROM V$ACCESS A, V$SESSION B
WHERE A.OBJECT = 'MY_PROC'
AND A.SID = B.SID
結果就會告訴你:哪個session正在使用這物件,所以你無法異動該procedure。譬如說:
OSUSER SID OWNER OBJECT TYPE
--------- ---- -------------- ----------- ----------------------
murderer 519 SCHEMA_OWNER MY_PROC PROCEDURE
表示使用者murderer (sessoon id = 519)這個傢伙正在使用My_PROC這個procedure,並且尚未釋放掉。大部分的情況下就是他正在執行testing 動作,但是因為程式迴圈很大或者他也去上廁所,因此呼叫的程序仍在執行中或暫停著,被呼叫的MY_PROC也就因此跟著被咬住了。Oracle此時就會禁止其他使用者異動該procedure,直到那位仁兄上廁所回來並結束那個testing的程序。
就這樣,以後找兇手簡單多了。
沒有留言:
張貼留言