1、先來看看為什么會出鎖?。?/strong>
數據庫是一個多用戶使用的共享資源。當多個用戶并發(fā)地存取數據時,在數據庫中就會產生多個事務同時存取同一數據的情況。若對并發(fā)操作不加控制就可能會讀取和存儲不正確的數據,破壞數據庫的一致性。
加鎖是實現數據庫并發(fā)控制的一個非常重要的技術。當事務在對某個數據對象進行操作前,先向系統(tǒng)發(fā)出請求,對其加鎖。加鎖后事務就對該數據對象有了一定的控制,在該事務釋放鎖之前,其他的事務不能對此數據對象進行更新操作。
在數據庫中有兩種基本的鎖類型:排它鎖(Exclusive Locks,即X鎖)和共享鎖(Share Locks,即S鎖)。當數據對象被加上排它鎖時,其他的事務不能對它讀取和修改。加了共享鎖的數據對象可以被其他事務讀取,但不能修改。數據庫利用這兩種基本的鎖類型來對數據庫的事務進行并發(fā)控制。
2、解決方法:
用管理員賬號登錄數據庫,執(zhí)行sql:
SELECT object_name, machine, s.sid, s.serial#
FROM gv$locked_object l, dba_objects o, gv$session s
WHERE l.object_id = o.object_id
AND l.session_id = s.sid;
找到對應鎖住的表執(zhí)行:
--釋放SESSION SQL:
--alter system kill session 'sid, serial#';
ALTER system kill session '23, 1647';
總結
以上所述是小編給大家介紹的Oracle數據庫"記錄被另一個用戶鎖住"解決方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!