Oracle與MySQL中如何查詢被鎖的表

2022-07-16 15:12:14 字數 1827 閱讀 6597

檢視當前資料庫鎖表的情況

select * from information_schema.innodb_trx;
殺掉查詢結果中鎖表的trx_mysql_thread_id
kill trx_mysql_thread_id
查詢是否鎖表
show open tables where in_use > 0;
查詢程序
show processlist
殺掉查詢到相對應的程序
kill id
檢視正在鎖的事務
select * from information_schema.innodb_locks;
檢視等待鎖的事務
select * from information_schema.innodb_lock_waits;
操作的前提 用 sys 使用者 以 sysdba角色登入

查詢被鎖的表

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 and l.session_id=s.sid;

查詢那個session引起表被鎖
select b.username,b.sid,b.serial#,logon_time

from v$locked_object a,v$session b

where a.session_id = b.sid order by b.logon_time;

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 and l.session_id=s.sid;

解鎖表
alter system kill session 'sid, serial#';
檢視被鎖的表
select p.spid, a.serial#, c.object_name, b.session_id, b.oracle_username,b.os_user_name

from v$process p, v$session a, v$locked_object b, all_objects c

where p.addr = a.paddr

and a.process = b.process

and c.object_id = b.object_id;

批量解鎖
declare cursor mycur is   

select b.sid,b.serial#

from v$locked_object a,v$session b

where a.session_id = b.sid group by b.sid,b.serial#;

begin

for cur in mycur

loop

execute immediate ( 'alter system kill session '''||cur.sid || ','|| cur.serial# ||''' ');

end loop;

end;

oralce與mysql中,如何刪除重覆記錄

最近遇到這麼乙個問題 要求刪除表中重複的記錄。具體來說 比如有一張使用者表,使用者姓名不是主鍵可以重複,存在這種情況,乙個使用者姓名被錄入了好幾次,如何刪除重複的記錄,同時要保留一條該使用者錄。沒有具體說明保留那條記錄,只要使用者姓名重複的保留一條即可。示例 animal 表 create tabl...

mysql 與Oracle 函式對比

oracle 函式和mysql 函式比較 1.oracle 中的to number 轉換成數字 oracle select to number 123 from dual 123 select to char 33 from dual 33 mysql select conv 123 10,10 1...

mysql與oracle 比較日期

select from cot gw main where create date to date 20150105 yyyymmdd 如上語句可能想查詢出建立日期在2015年1月5日那天或之前的,但實際上因為你的create date是date屬性的 當你將條件設定為2015年01月05號,而不設...