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...