GES:Potential blocker on resource TX问题的处理

有时候会在Oracle alert日志中看到如下信息:

GES: Potential blocker (pid=348868) on resource TX-0013000E-0010D004;

这就是rac中的死锁,一般Oracle会自己处理,有时候需要手工干预。要找到这个引起死锁的session也很简单,通过v$process和v$session视图就能查到:

select * from v$session where paddr= (select addr from v$process where spid='348868')

可以根据这个session的情况来决定如何处理。比如这个session的program是oracle@p5b1 (J000),这应该 是oracle自身的job,然后检查dba_jobs_running,发现昨晚的一个job没有跑完,而这个job阻塞了其他的session。

可以查看v$session_wait视图查看该session的等待事件:

select * from v$session_wait where event<>'SQL*Net message from client'
and event<>'rdbms ipc message'

发现等待事件在db file sequential read和gc cr request间不断切换,这在rac中是很常见的,说明这个job需要的很多block要从别的节点上作一致读,而state是WAITED KNOWN TIME表示等待已经结束了。

那么如何找到被阻塞的session是什么呢?可以通过v$lock来查看,block=1的是blocker,block=0的是waiter, 另外更直观的做法是查看DBA_WAITERS视图,该视图可以通过运行 $ORACLE_HOME/rdbms/admin/catblock.sql这个脚本来创建。DBA_WAITERS里的lock_id1和 lock_id2分别对应v$lock中的id1和id2,不同的lock有不同的定义, 比如TM的话,lock1就是object id。

如果严重影响了系统的运行,可以杀死引起死锁的session:

alter system kill session '833,33751'

come from:http://www.banping.com/2010/03/31/ges_potential_blocker/


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

转载于:http://blog.itpub.net/90618/viewspace-672010/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值