当前位置: 首页 > ds >正文

Library cache lock常见案例分析(一)

Library cache lock常见案例分析(一)

  • 原因:未共享的SQL文本
    • 解决方案:重写SQL以使用绑定变量
    • 解决方案:使用CURSOR_SHARING参数
  • 原因:共享SQL被淘汰出内存
    • 解决方案:共享池扩容
    • 解决方案:开启自动共享内存管理(ASSM)
    • 解决方案:将频繁使用的对象pin在共享池中
  • 原因:失效的库缓存对象
    • 解决方案:避免在业务繁忙时段进行DDL操作
    • 解决方案:避免在业务繁忙时段收集统计信息
    • 解决方案:避免在业务繁忙时段进行TRUNCATE操作
  • 原因:对象被其他会话编译中
    • 解决方案:避免不同会话同时编译对象、避免在业务繁忙时段编译对象
  • 原因:审计开启导致
    • 解决方案:评估审计的必要性

库缓存锁通过在对象句柄上获取锁来控制库缓存客户端之间的并发,其作用主要有以下两种:

  • 一个客户端可以阻止其他客户端访问同一个对象。
  • 客户端可以长期维持一种依赖关系(此时其他客户端无法对该对象进行修改)。

此外,在库缓存中定位某个对象的操作过程中也会获取该锁(首先获取库缓存child latch以扫描句柄列表,找到对象后,再在该对象的句柄上放置此锁)。

下面两个工具可以协助排查库缓存锁等待问题:

  • TKProf:非递归语句与递归语句的总体等待事件汇总显示,库缓存锁等待占用了大量时间。
  • AWR或者statspack:严重的库缓存锁等待。

TKProf是Oracle数据库官方提供的核心性能诊断工具,主要用于分析数据库后台生成的SQL Trace(SQL 跟踪文件),将原始、杂乱的跟踪日志转换为结构化、可读性强的报告,帮助数据库管理员(DBA)和开发人员定位SQL语句的性能瓶颈(如执行效率低、资源消耗过高的SQL)。

⭐️ 出现Library cache lock等待事件的常见原因可以分为如下几类:

  • 未共享的SQL文本
  • 共享SQL被淘汰出内存
  • 失效的库缓存对象
  • 对象被其他会话编译中
  • 审计开启导致
  • RAC环境中SQL未共享
  • 行级别触发器过度使用
  • 子游标的数量过多

http://www.xdnf.cn/news/19512.html

相关文章:

  • Encoder编码器
  • 图像描述编辑器 (Image Caption Editor)
  • 极客时间AI 全栈开发实战营毕业总结(2025年8月31日)
  • 【Linux基础】深入理解计算机存储:GPT分区表详解
  • 前端组件拆分与管理实战:如何避免 props 地狱,写出高可维护的项目
  • 《Unity Shader入门精要》学习笔记四(高级纹理)
  • ing Data JPA 派生方法 数据操作速查表
  • 【WEB】[BUUCTF] <GXYCTF2019禁止套娃>《php函数的运用》
  • ADC platfrom day65
  • MVC架构模式
  • Blender建模:对于模型布线的一些思考
  • 介绍GSPO:一种革命性的语言模型强化学习算法
  • 现代C++性能陷阱:std::function的成本、异常处理的真实开销
  • Luma 视频生成 API 对接说明
  • AI 智能体汇总,自动执行任务的“真 Agent”
  • 查看所有装在c盘软件的方法
  • Trae接入自有Deepseek模型,不再排队等待
  • OpenStack 03:创建实例
  • 并发编程——11 并发容器(Map、List、Set)实战及其原理分析
  • Opencv的数据结构
  • wifi控制舵机
  • AI热点周报(8.24~8.30):Grok 2.5开源,OpenAI Realtime正式商用,Meta或与OpenAI或Google合作?
  • 从零开始的python学习——语句
  • python pyqt5开发DoIP上位机【自动化测试的逻辑是怎么实现的?】
  • lumerical_FDTD_光源_TFSF
  • 《中国棒垒球》垒球世界纪录多少米·垒球8号位
  • 第2.3节:AI大模型之Claude系列(Anthropic)
  • [特殊字符]️ STL 容器快速参考手册
  • LangChain实战(五):Document Loaders - 从多源加载数据
  • Python库2——Matplotlib2