今天碰到一個執行語句等了半天沒有執行:delete table XXX where ......,但是在select 的時候沒問題。后來發現是在執行
select * from XXX for update 的時候沒有commit,oracle將該記錄鎖住了。
可以通過以下辦法解決:
先查詢鎖定記錄
Sql代碼
SELECT s.sid, s.serial# FROM v$locked_object lo, dba_objects ao, v$session s WHERE ao.object_id = lo.object_id AND lo.session_id = s.sid;
然后刪除鎖定記錄
Sql代碼
ALTER system KILL session 'SID,serial#';
通過上述sql,問題終於解決了!