react 前端框架如何驱动企业数字化转型与创新发展
353
2023-12-29
这期内容当中小编将会给大家带来有关如何解决library cache pin及library cache lock故障,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
某个客户, 突然发生前端零售业务卡顿的情况。因为当时在处理其他客户的事宜, 所以当时没有进行monitor。由另外一位同事进行处理, 直接紧急重启了应用。
问题解决。但是业务不得已中断。
事后调查原因, 从卡顿的时间段来看发现大量的library cache pin等待事件,并且伴有library cache lock。
另外,同事也保存了阻塞相关的会话信息
create table block_sess1018 as
select * from v$session where blocking_session is not null
结合
select * from dba_hist_active_sess_history h where h.sample_time > to_date(20171018 15:25:00, yyyymmdd hh34:mi:ss)
and h.sample_time < to_date(20171018 16:00:00, yyyymmdd hh34:mi:ss) and event like library cache%
library cache pin几个参数的意思:
p1=handle address
p2=pin address
p3=namespace&&encoded mode对于p1raw可以对应于x$kglob中的KGLHDADR字段x$kglpn中的KGLPNHDL字段,x$kgllk中的KGLLKHDL字段,后边有sql关联。
dba_hist_active_sess_history中的P1可以转换成16进制之后,再去v$object_dependency通过to_address定位到pin的对象SQL> select s.sid, s.saddr, sw.p1raw
from v$session_wait sw, v$session s
where sw.sid = s.sid and sw.event=library cache pin;
SID SADDR P1RAW
---------- ---------------- ----------------
53 0000000077204A80 000000006DBC5BE8
Now using the P1RAW and SADDR values find the the address of the user session that is holding the lock
SQL> select b.KGLLKUSE from dba_kgllock w , dba_kgllock b
where w.KGLLKHDL = b.KGLLKHDL
and w.KGLLKREQ > 0 and b.KGLLKMOD > 0
and w.KGLLKTYPE = b.KGLLKTYPE
and w.KGLLKUSE = 0000000077204A80 -- SADDR
and w.KGLLKHDL = 000000006DBC5BE8 -- P1RAW
select to_owner, to_name from v$object_dependency
where to_address = 000000016B500270;
select * from dba_ddl_locks where owner = HR;
找到了library cache pin的对象。
再进一步发现(通过logminer挖掘日志),故障开始前,有开发的同事对一个基础表进行了DDL操作,引发了其后一连串的编译的动作(有很多对象依赖于此表)。
很多对象,比如触发器(产品的逻辑很多是用触发器完成), 过程,函数,视图等依赖于此表。
由于此时正值业务高峰,所以出现了大面积的卡顿。
以下是DDL时间顺序
执行的DDL语句:
上述就是小编为大家分享的如何解决library cache pin及library cache lock故障了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注行业资讯频道。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~