锁表时KILL SESSION及回滚段监控(回滚时间评估)

本文介绍了数据库维护中常见的Session管理问题,包括如何解决应用挂起和其他Session阻塞的情况,并提供了具体的SQL查询示例来定位和解除锁定。
在数据库的日常维护中,经常出现以下两种情况,需要DBA手工干预KILL SESSION :
1. 应用hang住了,在数据库里查询得知session被其它session block,要把其它session kill掉。
2. 应用跑到中途,突然决定不跑了,需要DBA把他们的session kill掉。

DBA采用的kill session的方法:
1. 在数据库层面  alter system kill session  'sid, serial#';
2. 在某些特殊情况下,方法1无法使用,便在OS层面执行kill -9 
 
例子: 执行某job未成功,查询锁表session及锁定的object .
查找锁及SID, SERIAL# , OBJECT .
 SELECT se.inst_id, lk.SID,  se.serial#,  se.username, se.OSUser, se.Machine,
 DECODE (lk.TYPE,'TX', 'Transaction','TM', 'DML','UL', 'PL/SQL User Lock',lk.TYPE)
 lock_type, DECODE (lk.lmode,0, 'None',1, 'Null',2,'Row-S (SS)',3, 'Row-X (SX)',4,'Share',5,'S/Row-X (SSX)',6,'Exclusive',TO_CHAR (lk.lmode))
 mode_held, DECODE (lk.request,0, 'None',1, 'Null',2,'Row-S (SS)',3, 'Row-X (SX)',4,'Share',5,'S/Row-X (SSX)',6,'Exclusive',TO_CHAR (lk.request))
 mode_requested, TO_CHAR (lk.id1) lock_id1, TO_CHAR (lk.id2) lock_id2, ob.owner, ob.object_type, ob.object_name,
 DECODE (lk.Block,  0, 'No',  1, 'Yes',  2, 'Global') block, se.lockwait
 FROM GV$lock lk, dba_objects ob, GV$session se
 WHERE  lk.TYPE IN ('TM', 'UL') AND lk.SID = se.SID  AND lk.id1 = ob.object_id(+)
 AND (lk.inst_id = se.inst_id)
查看其中 OBJECT_NAME = TEMP_DOCUMENT_DLV_MSG_REF
         SESSION ID  = 2939 
         SERIAL#     = 26036 

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/35489/viewspace-748349/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/35489/viewspace-748349/

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值