专注Java教育14年 全国咨询/投诉热线:400-8080-105
动力节点LOGO图
始于2009,口口相传的Java黄埔军校
首页 hot资讯 检查Oracle数据库锁的脚本

检查Oracle数据库锁的脚本

更新时间:2022-01-19 12:00:51 来源:动力节点 浏览1340次

用于检查 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数据库视频,里面的视频教程由浅到深,通俗易懂,适合小白学习,希望对大家能够有所帮助。

提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>