Oracle 編譯、調用或調試Procedure、Function或Package時卡死問題


在對Procedure、Function或Package進行Debug時,如果長時間沒有操作,這個時候數據庫不會主動的釋放會話的資源,如果再次對Procedure、Function或Package進行Debug的話,就會產生等待產生數據庫鎖。只有等到數據庫回收上次Debug的會話資源或者DBA手動將會話KILL掉。

以下是手動KILL會話的方法:

1: 查詢V$DB_OBJECT_CACHE

SELECT * FROM V$DB_OBJECT_CACHE WHERE NAME='PROCEDURE_NAME' AND LOCKS!='0';

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

2: 通過對象查詢SID

SELECT SID FROM V$ACCESS WHERE OBJECT='PROCEDURE_NAME';

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

3: 查詢SID,SERIAL#

SELECT SID,SERIAL#,PADDR FROM V$SESSION WHERE SID='SID';

注意: SID為第二步查詢出的SID。

4: KILL死鎖的會話

ALTER SYSTEM KILL SESSION 'SID,SERIAL#' IMMEDIATE;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM