查詢鎖表並殺死鎖表

2021-08-21 20:06:01 字數 1558 閱讀 2846

1、查詢鎖表的sid 和 serial#

select

s.sid

,s.serial#

from

v$locked_object lo

,dba_objects ao

,v$session s

where

ao.object_id

=lo.object_id

andlo.session_id

=s.sid;

2、查詢鎖死的表名,使用者

select

sess.sid,

sess.serial#,

lo.oracle_username,

lo.os_user_name,

ao.object_name,

lo.locked_mode

from

v$locked_object lo,

dba_objects ao,

v$session sess

where

ao.object_id

=lo.object_id

andlo.session_id

=sess.sid;

3、--找到該物件導致的鎖的session會話,並編寫語句

殺死導致死鎖的會話,怎麼找關於這個表的session卻沒有提到,這裡做個說明:

--找到表物件(表名要大寫)

select * from dba_objects where object_name='tmp_da_gms'

--找到該物件導致的鎖的session會話,並編寫語句(id1是第乙個語句查詢出的object_id值)

select  'alter system kill session '''||sid||','||serial#||''';' from v$session  where sid in ( select sid from v$enqueue_lock t where t.type='to' and  id1='99879' )

--執行生成後的sql語句解除死鎖

例:要先執行第一步和第二步,查出相應的表名、sid和serial#

1)select

*from

dba_objects

where

object_name

='bl_clinic_consult';

2)select

'alter system kill session '''

||673

||','

||415

||''';'

from

bl_clinic_consult

where

idin

(selectid

from

bl_clinic_consult t

where

t.id

='673')

3)alter

system

kill

session

'1982,442'

;

oracle查詢鎖表並解鎖

一些oracle中的程序被殺掉後,狀態被置為 killed 但是鎖定的資源很長時間不釋放,有時實在沒辦法,只好重啟資料庫。現在提供一種方法解決這種問題,那就是在oracle中殺不掉的,在os一級再殺。1.下面的語句用來查詢哪些物件被鎖 select object name,machine,s.sid...

Oracle 鎖表 鎖表查詢 結束鎖表程序

1.oracle 鎖表 lock table 表名字in exclusive mode 所記錄 select from 表名字 for update 2.oracle 鎖表查詢 selectb.owner,b.object name,a.session id,a.locked mode from v...

3 全域性鎖 表鎖 行鎖,死鎖

對整個資料庫例項加鎖。mysql提供加全域性讀鎖的方法 flush tables with read lock ftwrl 這個命令可以使整個庫處於唯讀狀態。使用該命令之後,資料更新語句 資料定義語句和更新類事務的提交語句等操作都會被阻塞。可以用unlock tables主動釋放鎖 1.如果在主庫備...