oracle "記錄被另外一個用戶鎖定"

  出現的緣由是有人對某一條數據進行了修改,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代替,不會鎖表的。感謝博友的補充,謝謝!!!!

相關文章
相關標籤/搜索