oracle資料庫鎖解除方法之一

2021-06-09 00:24:43 字數 3016 閱讀 3261

1、檢視資料庫鎖,診斷鎖的**及型別:

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

後: owner 

object_name 

session_id  locked_mode  1 

bszcgl tdispose_accept_f 

1115 

32 bszcgl tdispose_accept_f 

1097 

33 bszcgl tdispose_accept_z 

1116 

34 bszcgl tdispose_accept_z 

1111 

35 bszcgl tdispose_accept_z 

1103 36 

bszcgl tdispose_accept_z 

1100 

37 bszcgl tdispose_accept_z 

1097 

38 bszcgl tdispose_accept_z 

1092 39 

bszcgl tdispose_damage_z 

1106 

310 

bszcgl tzc6_22cl 

1097  3

可以看出,那些表被鎖住

第二步:

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 sid  serial#  logon_time

1 bszcgl 

1115 

132 

2011-12-6 14:51:35

2 bszcgl 

1097 

116 

2011-12-6 14:51:57

3 bszcgl 

1097 

116 

2011-12-6 14:51:57

4 bszcgl 

1097 

116 

2011-12-6 14:51:57

5 bszcgl 

1111 

155 

2011-12-6 14:56:29

6 bszcgl 

1103 

292 

2011-12-6 14:57:34

7 bszcgl 

1116 

388 

2011-12-6 15:04:56

8 bszcgl 

1100 

240 

2011-12-6 15:08:13

9 bszcgl 

1106 

228 

2011-12-6 15:26:20

10 bszcgl  1092 

10  2011-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,檢查時候清除完畢 ;

oracle資料庫檢視和解除死鎖

檢視死鎖 select sess.sid,sess.serial lo.oracle username,lo.os user name,ao.object name,lo.locked mode,sess.machine from v locked object lo,dba objects ao,...

檢視oracle資料庫鎖

方法一 檢視產生鎖的程序id 在資料庫伺服器上 主機 如應用伺服器 等等 select s.machine sourse host,p.spid pid,l.session id sid,s.serial l.locked mode,l.oracle username,s.user l.os use...

Oracle資料庫鎖表解決方法

今天執行乙個刪除語句的時候,一直執行不了,最後發現是因為之前對這個表使用了for update語句,然後又忘記提交了,從而造成了該錶被鎖住。以下語句的執行,需要具有相應的許可權才可以執行,如果當前使用者沒有該許可權,請賦權或者使用管理員帳號 執行下語句將查詢到有哪些表被鎖住了 select b.ow...