查詢當前執行的SQL,鎖表與解鎖

2021-08-19 16:33:39 字數 1502 閱讀 4120

一:查詢當前正在執行的sql:

select a.sid, a.serial#, a.machine, a.username, b.hash_value, c.sql_text

from v$session a, v$sqlarea b, v$sqltext c

where a.sql_hash_value = b.hash_value

and b.hash_value = c.hash_value

order by b.hash_value, c.piece;

查詢結果如下所示:

二:檢視當前鎖表資訊:

select l.session_id sid,

s.serial#,

l.locked_mode,

l.oracle_username,

l.os_user_name,

s.machine,

s.terminal,

o.object_name,

s.logon_time

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

where l.object_id = o.object_id

and l.session_id = s.sid

order by sid, s.serial#;

查詢結果如下所示:

此鎖的原因是我使用了select ... for update;此鎖為**鎖,可以看出是circ_period表鎖住了。

三:解鎖:

根據上面查詢出來的sid和serial#來kill session,sql如下:

alter system kill session 'sid,serial#'; 

也可以根據如下sql查詢出kill語句:

select 'alter system kill session ''' || l.session_id || ',' || s.serial# || ''';'

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

where l.object_id = o.object_id

and l.session_id = s.sid

order by sid, s.serial#;

查詢結果如下所示:

ORCALE 鎖表與解鎖

簡單快捷的檢視鎖表和解鎖方法,需在命令列執行 檢視鎖表記錄 select object name,machine,s.sid,s.serial from v locked object l,dba objects o v session s where l.object id o.object id...

Mysql 鎖表與解鎖

使用lock tables後,在鎖定期間需要在其他執行緒使用其他別的未鎖定表,需要慎用鎖定,可能讀寫失敗等奇怪現象 參考 寫鎖定 lock tables lrcolumnsdesc write 寫鎖,鎖定之後,只有當前執行緒只可以對lrcolumnsdesc進行讀操作和寫操作,其他執行緒對對prod...

mysql 鎖表與解鎖

連線mysql 直接執行unlock tables,細節如下 查詢是否鎖表 show open tables 查詢程序 show processlist 查詢到相對應的程序,然後殺死程序 kill id 一般到這一步就解鎖了 檢視正在鎖的事務 select from information sche...