资讯专栏INFORMATION COLUMN

案例分享:ORA-04021处理过程

IT那活儿 / 2043人阅读
案例分享:ORA-04021处理过程

点击上方“IT那活儿”公众号,关注后了解更多内容,不管IT什么活儿,干就完了!!!


问题现象

在给客户授权访问一张表时,grant语句却hang住了,等了一段时间后该语句报ORA-04021,获取对象锁资源超时。如下图:


问题分析

在grant语句等待期间,会话等待事件为“library cache lock”,那么接下来就需要分析该会话是被哪个会话给锁住了。
2.1 Oracle提供了hanganalyze以及systemstate方式来收集信息,可以辅助来分析问题
代码如下:
1) 收集HangAnalyze trace
sqlplus / as sysdba
SQL> oradebug setmypid
SQL> oradebug unlimit
SQL> oradebug tracefile_name
SQL> oradebug hanganalyze 3
SQL> oradebug tracefile_name
2) 收集Systemstate dump
sqlplus / as sysdba
SQL> oradebug setmypid
SQL> oradebug unlimit
SQL> oradebug tracefile_name
SQL> oradebug dump systemstate 258
SQL> oradebug tracefile_name
2.2 还一种方式就是查询相关基表来分析(rac环境不是很适用)
1) 先查询saddr
select sid,saddr from v$session where event= library cache lock;
2) 根据基表信息,通过等待事件会话的saddr,找到handle信息
select kgllkhdl Handle,kgllkreq Request, kglnaobj Object
from x$kgllk where kgllkses = &saddr
and kgllkreq > 0;
3) 找到阻塞的saddr
select kgllkses saddr,kgllkhdl handle,kgllkmod mod,kglnaobj object
from x$kgllk lock_a
where kgllkmod > 0
and exists (select lock_b.kgllkhdl from x$kgllk lock_b
where kgllkses = &saddr
and lock_a.kgllkhdl = lock_b.kgllkhdl
and kgllkreq > 0);
4) 通过阻塞saddr找到相关会话信息
select sid,username,terminal,program from v$session where saddr = &saddr 
笔者在这里使用了第一种方式生成了systemstate的trace文件,在文件里找到了相关信息:
其中sid:3875 是grant会话,正在等待library cache lock,而实例3上的会话1744正是阻塞者。会话1744的信息如下:

解决方案

找到阻塞会话,和业务确认后该会话可清理。清理该会话后,grant语句正常执行,到此问题解决。



本文作者:金震宇(上海新炬王翦团队)

本文来源:“IT那活儿”公众号

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/129200.html

相关文章

  • 与CNCF一起分享K8s博客文章或案例研究

    摘要:和网站不时发布来之全世界的博客文章和案例研究。提交案例研究案例研究强调组织如何使用解决实际问题。看看现有案例研究材料。 showImg(https://segmentfault.com/img/bVbp45W?w=1280&h=545); CNCF和Kubernetes网站不时发布来之全世界的博客文章和案例研究。 近期的博客文章有: 使用Ansible和Vagrant设置Kubern...

    JinB 评论0 收藏0
  • 与CNCF一起分享K8s博客文章或案例研究

    摘要:和网站不时发布来之全世界的博客文章和案例研究。提交案例研究案例研究强调组织如何使用解决实际问题。看看现有案例研究材料。 showImg(https://segmentfault.com/img/bVbp45W?w=1280&h=545); CNCF和Kubernetes网站不时发布来之全世界的博客文章和案例研究。 近期的博客文章有: 使用Ansible和Vagrant设置Kubern...

    xiongzenghui 评论0 收藏0
  • 洞察行业领先者的前沿思想——第五届TOP100全球软件案例研究峰会精彩谢幕

    摘要:夏华夏先生以美团发展的五个阶段为演讲主线,分别介绍每个阶段中所遇到的问题及解决方案。在夏华夏先生的分享之后,第五届开幕式圆满结束,他山之石可以攻玉是的宗旨,我们希望通过优秀案例的分享传播更多的经验。 showImg(https://segmentfault.com/img/bVHgPK?w=629&h=418);(第五届TOP100summit开幕式现场) 12月09日-12日,由ms...

    liaoyg8023 评论0 收藏0
  • 洞察行业领先者的前沿思想——第五届TOP100全球软件案例研究峰会精彩谢幕

    摘要:夏华夏先生以美团发展的五个阶段为演讲主线,分别介绍每个阶段中所遇到的问题及解决方案。在夏华夏先生的分享之后,第五届开幕式圆满结束,他山之石可以攻玉是的宗旨,我们希望通过优秀案例的分享传播更多的经验。 showImg(https://segmentfault.com/img/bVHgPK?w=629&h=418);(第五届TOP100summit开幕式现场) 12月09日-12日,由ms...

    MonoLog 评论0 收藏0

发表评论

0条评论

IT那活儿

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<