一:查詢當前正在執行的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...