Oracle 查看 对象 持有锁的情况
?
同事在測試庫上對一個表加字段,提示 ORA-00054, 資源忙。 應該是表對象的鎖沒有釋放。
?
用如下SQL 查看一下系統中相關對象上鎖的情況:
?
/* Formatted on 2012/2/13 14:24:32 (QP5 v5.185.11230.41888) */ SELECT S.SID SESSION_ID,S.USERNAME,DECODE (LMODE,0, ' None ',1, ' Null ',2, ' Row-S(SS) ',3, ' Row-X(SX) ',4, ' Share',5, 'S/Row-X (SSX) ',6, 'Exclusive ',TO_CHAR (LMODE))MODE_HELD,DECODE (REQUEST,0, ' None ',1, ' Null ',2, ' Row-S(SS) ',3, ' Row-X(SX) ',4, ' Share',5, 'S/Row-X (SSX) ',6, 'Exclusive ',TO_CHAR (REQUEST))MODE_REQUESTED,O.OWNER || ' . ' || O.OBJECT_NAME || ' ?( ' || O.OBJECT_TYPE || ' ) 'AS OBJECT_NAME,S.TYPE LOCK_TYPE,L.ID1 LOCK_ID1,L.ID2 LOCK_ID2FROM V$LOCK L, SYS.DBA_OBJECTS O, V$SESSION SWHERE L.SID = S.SID AND L.ID1 = O.OBJECT_ID AND object_name = 'xxxx';?
?
該SQL 顯示所有對象上的鎖,如果要查某個具體的對象,可以根據OBJECT_NAME 字段進行一下過濾,找到對應的SID 之后去查V$SESSION 視圖。
?
該視圖會顯示session 對應的信息,包括終端的信息,如果找到了終端,可以讓它提交或者回滾一下就OK了。 我這里是測試環境,直接把session kill 掉了。然后修改表就ok了。
?
SQL>alter system kill session 'SID,SERIAL#'?
?
?
?
?
?
-------------------------------------------------------------------------------------------------------
Blog: http://blog.csdn.net/tianlesoftware
Weibo: http://weibo.com/tianlesoftware
Email: dvd.dba@gmail.com
DBA1 群:62697716(滿);?? DBA2 群:62697977(滿)??DBA3 群:62697850(滿)??
DBA 超級群:63306533(滿);? DBA4 群:83829929(滿) DBA5群: 142216823(滿)?
DBA6 群:158654907(滿)?? DBA7 群:69087192(滿)??DBA8 群:172855474
DBA 超級群2:151508914? DBA9群:102954821???? 聊天 群:40132017(滿)
--加群需要在備注說明Oracle表空間和數據文件的關系,否則拒絕申請
總結
以上是生活随笔為你收集整理的Oracle 查看 对象 持有锁的情况的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [置顶] 总结工作中常用到
- 下一篇: WSGI