oracle 鎖表的解決方法及查詢引起鎖表sql語句方法
ora-00054: 資源正忙, 但指定以 nowait 方式獲取資源, 或者超時失效。
看來有鎖定該錶的會話,於是,執行如下查詢;
1. oracle中檢視當前系統中鎖表情況
select * from v$locked_object
可以通過查詢v$locked_object拿到sid和objectid,然後用sid和v$session鍊錶查詢是**鎖的表,用v$session中的objectid欄位和dba_objects的id欄位關聯,查詢詳細的鎖表情況。
2、-- 檢視被鎖的表,使用者,程序sid,serial#
select c.sid,c.serial#,c.osuser,b.owner,b.object_name,a.session_id,a.locked_mode from
v$locked_object a,dba_objects b,v$session c where b.object_id = a.object_id
and c.sid = a.session_id;
3、查詢是什麼sql引起了鎖表的原因,sql如下:
select l.session_id sid,
s.serial#,
l.locked_mode,
l.oracle_username,
s.user#,
l.os_user_name,
s.machine,
s.terminal,
a.sql_text,
a.action
from v$sqlarea a, v$session s, v$locked_object l
where l.session_id = s.sid
and s.prev_sql_addr = a.address
order by sid, s.serial#;
4、-- 殺掉程序 sid,serial#
alter system kill session'136,1397';
Oracle表被鎖解決方法
最近在工作中遇到了oracle資料庫表被鎖的情況,導致無法對錶進行修改,再這裡給大家分享一下解決方法,避免大家從踩坑 1 查詢鎖的session id mysql select session id from v locked object 例 3334 2 根據session id查詢鎖的會話資訊...
oracle之鎖表的解決方法
首先,查處鎖定表的session 的sid,serial os user name,machine name,terminal 和執行的語句 select l.session id sid,s.serial l.locked mode,l.oracle username,s.user l.os us...
oracle 表鎖死的解決方法
我們在運算元據庫 的 時候,有時候會由於操作不當引起資料庫表被鎖定,這麼我們經常不知所措,不知怎麼給這些表解鎖,在pl sql developer工具的的選單 tools 裡面的 sessions 可以查詢現在存在的會話,但是我們很難找到那個會話被鎖定了,想找到所以被鎖的 會話就更難了,下面這叫查詢...