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

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.dtcms.com/a/359826.html

相关文章:

  • TensorFlow 面试题及详细答案 120道(81-90)-- 其他框架/工具
  • 【重学MySQL】九十三、MySQL字符集与比较规则完全解析
  • 标定分享3--lidar与rtk/ins标定外参工程实现分享
  • SciPy
  • 【MLLM】具有长期记忆的多模态智能体框架M3-Agent
  • Uniapp 项目创建与目录结构解析
  • LangChain实战(七):Text Embedding Models与Vector Stores
  • 嵌入式ARM程序高级调试技能:19.qumu arm elf无法生成coredump
  • 829作业
  • DAY17-新世纪DL(DeepLearning/深度学习)战士:Q(机器学习策略)2
  • Claude Code干翻Cursor后,轮到AI浏览器了
  • 组件通信终极指南:从Props Drilling到Context API
  • MPI-NCCL-TEST 训练自检,基础通信和可用的机器
  • NM:微生物组数据分析的规划与描述
  • GDPU操作系统实验:生产者消费者问题
  • Matplotlib:让数据在Python中跳舞的魔法画笔![特殊字符]
  • 5.【C++进阶】红黑树
  • C++从入门到实战(二十)详细讲解C++List的使用及模拟实现
  • Qt中解析XML文件
  • 基于muduo库的图床云共享存储项目(四)
  • Luma 视频生成 API 对接说明
  • 编写一个用scala写的spark程序从本地读取数据,写到本地
  • 基于Matlab元胞自动机的强场电离过程模拟与ADK模型分析
  • 【Linux】模拟实现Shell(上)
  • 分享一个实用的B站工具箱(支持音视频下载等功能)
  • 【Canvas技法】绘制横向多色旗和竖向多色旗
  • 008.LangChain 输出解析器
  • 备份压缩存储优化方案:提升效率与节省空间的完整指南
  • 新手首次操作SEO核心要点
  • 线程池常见面试问答