oracle 如何查死锁

在Oracle中查看死锁通常涉及查询数据字典视图和动态性能视图。以下是一个基本的查询示例,用于检测和显示最近的死锁:

SELECT 
    dd.inst_id, 
    dd.name, 
    o.object_id, 
    o.object_type, 
    s.sid, 
    s.serial#, 
    s.username, 
    p.spid, 
    s.program,
    d.xidusn,
    d.xidslot,
    d.xidsqn,
    d.blocking_session
FROM 
    gv$lock d
JOIN 
    gv$session s ON d.sid = s.sid
LEFT JOIN 
    gv$process p ON p.addr = s.paddr
JOIN 
    gv$instance dd ON s.inst_id = dd.inst_id
WHERE 
    d.blocking_session = 'YES'
ORDER BY 
    dd.inst_id, 
    o.object_type, 
    o.object_name;

这个查询会返回当前实例中所有当前锁定的对象的信息,包括锁定对象的数据库对象名、对象ID、对象类型,以及锁定该对象的会话信息,如会话ID、会话序列号、用户名和进程ID。

如果你需要查看死锁的详细信息,可以使用以下查询:

SELECT 
    dd.inst_id, 
    dd.name, 
    o.object_id, 
    o.object_type, 
    s.sid, 
    s.serial#, 
    s.username, 
    p.spid, 
    s.program,
    d.xidusn,
    d.xidslot,
    d.xidsqn,
    d.blocking_session
FROM 
    gv$lock d
JOIN 
    gv$session s ON d.sid = s.sid
LEFT JOIN 
    gv$process p ON p.addr = s.paddr
JOIN 
    gv$instance dd ON s.inst_id = dd.inst_id
WHERE 
    d.blocking_session = 'YES'
ORDER BY 
    dd.inst_id, 
    o.object_type, 
    o.object_name;

这个查询会返回所有当前正在阻塞其他会话的会话的信息,包括事务ID和阻塞另外哪个会话。

请注意,这些查询可能需要DBA权限才能执行。如果你没有相应的权限,你可能需要联系你的数据库管理员来获取这些信息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值