據庫鎖,診斷鎖

2021-09-02 17:32:53 字數 2563 閱讀 9306

select object_id,session_id,locked_mode from v$locked_object;

或者用以下命令:

select b.owner,b.object_name,l.session_id,l.locked_mode

from v$locked_object l, dba_objects b

where b.object_id=l.object_id

select lpad(' ',decode(l.xidusn ,0,3,0))||l.oracle_username user_name,

o.owner,o.object_name,o.object_type,s.sid,s.serial#

from v$locked_object l,dba_objects o,v$session s

where l.object_id=o.object_id

and l.session_id=s.sid

order by o.object_id,xidusn desc

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#'

用步驟2中查出來的記錄,對應進該語句刪除

就是這樣子,以下是我操作的方法:

第一步:(只是用於檢視哪些表被鎖住,真正有用的是第

二、第三步)

select b.owner,b.object_name,l.session_id,l.locked_mode

from v$locked_object l, dba_objects b

where b.object_id=l.object_id

後:ownerobject_namesession_idlocked_mode

1bszcgltdispose_accept_f11153

2bszcgltdispose_accept_f10973

3bszcgltdispose_accept_z11163

4bszcgltdispose_accept_z11113

5bszcgltdispose_accept_z11033

6bszcgltdispose_accept_z11003

7bszcgltdispose_accept_z10973

8bszcgltdispose_accept_z10923

9bszcgltdispose_damage_z11063

10bszcgltzc6_22cl10973

可以看出,那些表被鎖住

第二步:

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;

後:username sidserial#logon_time

1bszcgl11151322011-12-6 14:51:35

2bszcgl10971162011-12-6 14:51:57

3bszcgl10971162011-12-6 14:51:57

4bszcgl10971162011-12-6 14:51:57

5bszcgl11111552011-12-6 14:56:29

6bszcgl11032922011-12-6 14:57:34

7bszcgl11163882011-12-6 15:04:56

8bszcgl11002402011-12-6 15:08:13

9bszcgl11062282011-12-6 15:26:20

10bszcgl1092102011-12-6 15:26:46

第三步:(關鍵)

執行:(alter system kill session 'sid,serial#')具體如下:

alter system kill session '1115,132'

alter system kill session '1097,116'

alter system kill session '1111,155'

alter system kill session '1103,292'

alter system kill session '1116,388'

alter system kill session '1100,240'

alter system kill session '1106,228'

alter system kill session '1092,10'

執行成功,會提示執行完畢!

有可能執行完一條之後,其他的id也跟著消失,執行完3後,在執行2,檢查時候清除完畢

InnoDB 鎖數管理據結構

lock bitmap用於表示行鎖,緊鄰lock struct存放,每bit代表頁內1行資料,使用heap no對應 例如bitmap的第5位如果啟用,則表明heap no 5的行被鎖定.隱式鎖 cluster index 隱式鎖是邏輯上的乙個概念,判斷乙個記錄是否有隱式鎖是通過記錄中的trx id...

資料庫行鎖 表鎖 記錄鎖 間隙鎖 臨鍵鎖

行鎖就是一次鎖一行或者多行記錄,mysql的行鎖是基於索引載入的,所以行鎖是要加在索引響應的行上,即命中索引。假設 table的b列為索引字段,則以下更新語句只會鎖b b 的行 update table set a a where b b 行鎖的特徵 鎖衝突概率低,併發性高,但是會有死鎖的情況出現。...

診斷DB2資料庫鎖的問題

診斷db2資料庫鎖的問題 簡介 鎖是資料庫為了控制併發資料的完整性而引入的機制,在併發應用中出現鎖現象並不可怕,鎖現象通常分為死鎖和鎖等待兩種情形。死鎖是因為兩個併發的程序或者執行緒同時各自占有乙個資源,又需要占有對方資源,但又都各不相讓造成的,這通常是因為程式在併發上考慮不周造成的。鎖等待則是資料...