更新时间:2022-01-19 12:00:51 来源:极悦 浏览1438次
用于检查 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天面授
Java就业班有基础 直达就业
业余时间 高薪转行
Java在职加薪班工作1~3年,加薪神器
工作3~5年,晋升架构
提交申请后,顾问老师会电话与您沟通安排学习