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


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

 

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM