数据库锁大于600秒的session的抓取

本文介绍了一个用于监控Oracle数据库中长时间锁定情况的过程。该过程通过查询v$lock、v$session等视图,筛选出锁定时间超过10分钟的会话,并将相关信息记录到moni_lock_block表中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

create or replace procedure moni_lock is
begin
insert /* +append */
into moni_lock_block
select seq_mlb.nextval, mkb.*
from (select /*+rule*/
do.OWNER || '.' || do.OBJECT_NAME,
vs.LAST_CALL_ET,
vs.USERNAME,
vs.OSUSER,
vs.MACHINE,
vs.PROGRAM,
vs.SID,
'(' || vs.SID || ',' || vs.SERIAL# || ')',
SYS_CONTEXT('USERENV', 'INSTANCE_NAME'),
sysdate,
vsq.SQL_TEXT
from v$lock a,
v$session vs,
v$locked_object vl,
dba_objects do,
v$sqlarea vsq
where exists (select 1
from v$lock b
where a.ID1 = b.ID1
and a.ID2 = b.ID2
and a.SID <> b.SID)
and vs.SQL_ADDRESS = vsq.ADDRESS(+)
and a.SID = vs.SID
and a.SID = vl.SESSION_ID
and vl.OBJECT_ID = do.OBJECT_ID
and a.BLOCK = 1
and vs.LAST_CALL_ET > 600
order by SID) mkb
where mkb.sid is not null;
commit;
end moni_lock;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值