更新時間:2022-01-19 12:00:51 來源:動力節點 瀏覽1728次
用于檢查 oracle 數據庫中的鎖的腳本(單實例)
SELECT inst_id,DECODE(request,0,'Holder:','Waiter:')||sid sess,
id1、id2、lmode、請求、類型
來自 V$LOCK
WHERE (id1, id2, type) IN
(SELECT id1, id2, type FROM V$LOCK WHERE request>0)
ORDER BY id1, 請求
在 RAC 的情況下,使用以下查詢檢查 oracle 數據庫中的鎖
SELECT inst_id,DECODE(request,0,'Holder:','Waiter:')||sid sess,
id1、id2、lmode、請求、類型
來自 GV$LOCK
WHERE (id1, id2, type) IN
(SELECT id1, id2, type FROM gV$LOCK WHERE request>0)
ORDER BY id1, 請求
我們也可以使用下面的查詢來檢查 Oracle 鎖
查詢以找出 Oracle 中的等待會話和保持會話
設置線條大小 1000
列 waiting_session 標題 'WAITING|SESSION'
列holding_session標題“HOLDING|SESSION”
列 lock_type 格式 a15
列 mode_held 格式 a15
列 mode_requested 格式 a15
選擇
等待會話,
舉行會議,
鎖定類型,
mode_held,
mode_requested,
lock_id1,
lock_id2
從
dba_waiters
/
如何在單實例中找到庫緩存鎖/如何在 oracle 中檢查包上的鎖
選擇 /*+ all_rows */ w1.sid waiting_session,
h1.sid 持有會話,
w.kgllktype lock_or_pin,
w.kgllkhdl 地址,
decode(h.kgllkmod, 0, '無??', 1, '空', 2, '共享', 3, '獨占',
'未知') mode_held,
decode(w.kgllkreq, 0, '無??', 1, '空', 2, '共享', 3, '獨占',
'未知') mode_requested
從 dba_kgllock w、dba_kgllock h、v$session w1、v$session h1
在哪里
(((h.kgllkmod != 0) 和 (h.kgllkmod != 1)
和 ((h.kgllkreq = 0) 或 (h.kgllkreq = 1)))
和
((((w.kgllkmod = 0)或(w.kgllkmod = 1))
和 ((w.kgllkreq != 0) 和 (w.kgllkreq != 1))))
和 w.kgllktype = h.kgllktype
和 w.kgllkhdl = h.kgllkhdl
和 w.kgllkuse = w1.saddr
和 h.kgllkuse = h1.saddr
/
查詢在oracle中查找鎖定對象/如何在oracle中查找鎖定表
列 sid_ser 格式 a12 標題 'session,|serial#';
列用戶名格式 a12 標題 'os user/|db user';
列處理格式 a9 標題 'os|process';
列 spid 格式 a7 標題 'trace|number';
列 owner_object 格式 a35 標題 'owner.object';
列locked_mode 格式a13 標題“鎖定|模式”;
列狀態格式 a8 標題“狀態”;
選擇
substr(to_char(l.session_id)||','||to_char(s.serial#),1,12) sid_ser,
substr(l.os_user_name||'/'||l.oracle_username,1,12) 用戶名??,
l.過程,
p.spid,
substr(o.owner||'.'||o.object_name,1,35) owner_object,
解碼(l.locked_mode,
1,'無鎖',
2,'行共享',
3,'行獨占',
4,“分享”,
5,'共享行除外',
6,'獨占',null) 鎖定模式,
substr(s.status,1,8) 狀態
從
v$locked_object l,
all_objects o,
v$session s,
v$進程 p
在哪里
l.object_id = o.object_id
和 l.session_id = s.sid
和 s.paddr = p.addr
和 s.status != 'KILLED'
/
一旦找到阻塞會話并決定終止 oracle 會話,我們可以使用以下查詢生成終止會話 sql
select 'alter system kill session '''||sid||','||serial#||''';' 來自 v$session 其中 sid=&1;
以上就是關于“檢查Oracle數據庫鎖的腳本”介紹,如果大家想了解更詳細的課程,可以關注動力節點的Oracle數據庫視頻,里面的視頻教程由淺到深,通俗易懂,適合小白學習,希望對大家能夠有所幫助。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習