出現的原因是有人對某一條數據進行了修改,oracle會通過這個事務記住這條數據,若修改的人沒有進行提交或進行回滾記錄,oracle是不允許對這條數據在此進行修改的,在這種情況下你要進行修改數據,則會被阻止,提示"記錄被另外一個用戶鎖定"。
現在就需要對其鎖進行刪除,以便達到修改數據的目的。
1、查看數據庫鎖,診斷鎖的來源及其類型:
select object_id,session_id,locked_mode from v$locked_object;
2、找到數據庫的serial#,以備殺死。
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;
還是圖來的更直接一點。

3、殺死該session ,解除鎖。
alter system kill session 'sid,serial#'

執行完第三步后記得運行下第二步,看是否所有鎖被解除。
最后,各位oracle操作人員需要細心,大多數原因是操作時候不注意,遺留了提交,我是使用PL/SQL的,出現的原因就是一下這種情況,還是圖來的直接點,在圖中造成這個原因的大多數就是第二步忘記。
第一步:這個肯定會操作的。

第二步:有可能你操作完忘了,直接關閉走人了,這樣就會出現被鎖住的情況。

所以,一定要提交。
另外,補充下,大多數這種情況都是由於修改了,沒有commit造成的,比如有的人經常用for update修改數據,不提交導致鎖表,對於for update的修改,可以用rowid代替,不會鎖表的。感謝博友的補充,謝謝!!!!
