oracle 結束被鎖的包或存儲過程

問題現象:

在pl/sql編譯包或者是存儲過程procedure等,編譯一直未響應。

 問題原因:

ORACLE 存儲過程或包被鎖,編譯不了

 問題解決方法:

第一步:查找存儲過程被哪些session鎖住而無法編譯


select * FROM dba_ddl_locks where name =upper('heb_sdb_pay_opr_pkg');
1.
第二步:通過第一步得到的session_id,得到sid和serial#


select t.sid,t.serial# from v$session t where t.sid=&session_id;
1.
第三步: kill 相關session


alter system kill session 'sid,serial#'

結束被鎖的表

問題現象:

後臺數據庫操作某一個表時發現一直出於假死狀態,可能是該表被某一用戶鎖定。

 

問題解決步驟:

第一步:查詢哪些表被用戶鎖住


SELECT object_name, machine, s.sid, s.serial#
FROM gv$locked_object l, dba_objects o, gv$session s
WHERE l.object_id = o.object_id
AND l.session_id = s.sid;
1.
2.
3.
4.
第二步:找到被鎖的表,解鎖

--alter system kill session 'sid, serial#';
ALTER system kill session '23, 1647';
1.
2.

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章