http://blog.csdn.net/chagaostu/article/details/21548381
轉載備用
在ORACLE操作中經常會發生,尚未提交(或回滾)數據Session異常關閉的情況
會導致表中的某些數據被鎖死。
解決辦法是用sys登錄後,先找出lock的Session。
select object_id,locked_mode,session_id,os_user_name from v$locked_object;
其中object_id可以結合dba_objects找出對應的對象名,可能是表名,索引名等。
os_user_name 是用戶的電腦名。
locked_mode 表示鎖的級別
ORACLE裏鎖有以下幾種模式:
0:none
1:null 空
2:Row-S 行共享(RS):共享表鎖
3:Row-X 行專用(RX):用於行的修改
4:Share 共享鎖(S):阻止其他DML操作
5:S/Row-X 共享行專用(SRX):阻止其他事務操作
6:exclusive 專用(X):獨立訪問使用
數字越大鎖級別越高, 影響的操作越多。
一般的查詢語句如select ... from ... ;是小於2的鎖, 有時會在v$locked_object出現
一般事務未提交照成的鎖級別是3,即行鎖。
session_id是後面用來殺對話用的。
用下面這個語句可以殺對話
alter system kill session 'sid,serial#';
sid就是上面的session_id,serial#需要查詢v$session
select sid,serial# from v$session