出現的緣由是有人對某一條數據進行了修改,oracle會經過這個事務記住這條數據,若修改的人沒有進行提交或進行回滾記錄,oracle是不容許對這條數據在此進行修改的,在這種狀況下你要進行修改數據,則會被阻止,提示"記錄被另一個用戶鎖定"。數據庫
如今就須要對其鎖進行刪除,以便達到修改數據的目的。session
一、查看數據庫鎖,診斷鎖的來源及其類型:oracle
select object_id,session_id,locked_mode from v$locked_object; spa
二、找到數據庫的serial#,以備殺死。blog
select t2.username,t2.sid,t2.serial#,t2.logon_time
from v$locked_object t1,v$session t2
where t1.session_id=t2.sid order by t2.logon_time;事務
仍是圖來的更直接一點。it
三、殺死該session ,解除鎖。io
alter system kill session 'sid,serial#' object
執行完第三步後記得運行下第二步,看是否全部鎖被解除。date
最後,各位oracle操做人員須要細心,大多數緣由是操做時候不注意,遺留了提交,我是使用PL/SQL的,出現的緣由就是一下這種狀況,仍是圖來的直接點,在圖中形成這個緣由的大多數就是第二步忘記。
第一步:這個確定會操做的。
第二步:有可能你操做完忘了,直接關閉走人了,這樣就會出現被鎖住的狀況。
因此,必定要提交。
另外,補充下,大多數這種狀況都是因爲修改了,沒有commit形成的,好比有的人常常用for update修改數據,不提交致使鎖表,對於for update的修改,能夠用rowid代替,不會鎖表的。感謝博友的補充,謝謝!!!!