ITPub博客

首页 > 数据库 > Oracle > 【ASK_ORACLE】Library cache pin 与 library load lock的关系和区别

【ASK_ORACLE】Library cache pin 与 library load lock的关系和区别

原创 Oracle 作者:Attack_on_Jager 时间:2023-04-10 15:27:30 0 删除 编辑

Library cache pin 与 library load lock 关系和区别

Library cache pin 和 load lock 可能出现在对 PL/SQL, views, types 等的编译与重编译期间。这种编译总是显式的(比如应用安装,升级,打补丁)。但是对象重编译也可能发生在对象失效期间。

 

在处理那些让人摸不着头脑的 library cache pin 和 load lock 等待时,则需要检查为什么对象失效了。很有可能失效是由于某些操作修改了它所依赖的对象的"LAST_DDL"。通常来说这些操作包括对象维护操作,比如 ALTER, GRANT, REVOKE, replacing views 等等。还有就是收集 optimizer statistics 也会造成 cursor 失效,进而导致 library cache 的重装载。这个现象在 Oracle Server Application Developer's Guide 的object dependency maintenance 部分有描述。

 

对象失效以后,Oracle 尝试在第一次访问这个对象时去重编译它。有些情况下,如果其它 session 已经 pin 住这个对象,可能就会出现问题。并且在有大量活跃用户与复杂依赖关系(例如,很多交叉依赖的 packages 或package bodies)的情况下更容易出现问题。有些时候对对象的编译会持续数小时从而阻止其它 session 对其的访问。


在 library cache dump, level 10 可以看到:

查找 ALTER ... COMPILE 语句和 lock=X 或 pin=X 的 objects/handles.

 

特别注意:

1. 需要频繁使用的 stored PL/SQL 所依赖的对象,对其 altering, granting, evoking 操作需要特别小心。实际上,解决这种问题很大程度上依赖于应用程序和系统维护的时间。应用程序开发者需要考虑某些决定可能会对应用程序的可扩展性及性能产生负面影响。

 

2. Load lock总是以排它模式获得的。如果 session load lock 繁忙,session 将一直等待,直到锁变成可用。


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

请登录后发表评论 登录
全部评论
在某银行任职DBA,拥有多年数据库运维经验,擅长Oracle,MySQL。尤其擅长Oracle的SQL优化,数据库性能调优,数据库备份、恢复与迁移。拥有的认证:OCM 12c,OCM 11g,MySQL OCP,RHCE,阿里云ACP,巨杉SCDP,软考系统集成工程师认证,Oracle Iaas OCA,OBCA,TDSQL认证,TBase认证

注册时间:2021-01-11

  • 博文量
    142
  • 访问量
    482775