于是我们可以大胆的猜测,统计信息后面其实是没有运行完成的,这也就是为什么982会话会导致大量的 library cache lock 等待的原因。 那么最后,为什么 select 这个表会挂起呢? 其实很简单,这是因为这个表的统计信息收集其实未完成,正在在进行中。而我们也知道这是会导致 cursor 失效的,那么针对这个表的所有 SQL 都必须...
1、回收站oracle recyclebin 2、重建索引 3、收集数据库统计信息 4、11g密码延迟特性 cursor: mutex S、kksfbc child completion、library cache lock造成数据库cpu100% 触发Oracle的bug:10636231 解决方案: 版本11.1.0.7SQL>altersystemset"_cursor_features_enabled"=18 scope=spfile; System altered.SQL>altersystem...
2)正在执行搜集统计信息 这是大家往往会忽略的,一般会看last_ddl_time,却忽略了last_analyzed, 检查脚本如下: 比如EMP是遇到library cache lock中的表名: select owner,object_name,object_type,to_char(last_ddl_time,'yyyy-mm-dd hh24:mi:ss') from dba_objects where object_name='EMP'; select table_...
Troubleshooting Library Cache: Lock, Pin and Load Lock (Doc ID 444560.1) 一般可以理解的是alter table或者alter package/procedure会以X模式持有library cache lock,造成阻塞。 但是常见的问题还有以下几种原因: 1)错误的用户名密码: 一般需要通过ASH或者SSD/hang analyze去获取p3进行namespace分析。 1. event: ...
所以统计信息的变化导致这类通过主键访问的SQL的游标失效,导致大量会话对同一SQL需几乎同时做重新解析,于是就引发了大量的library cache lock和library cache: mutex X等待,进而导致系统故障。 问题解决 本次故障主要是由于业务高峰期对表主键索引进行重建导致的,对于已在线的业务表和索引的DDL操作,必须经过严格的审核,...
non-recursive 以及 recursive statements 的 Overall wait 中显示较多的 library cache lock 等待。 AWR 或者 statspack: 显示较多的 library cache lock 等待。 原因: 使用常量(Literals)导致SQL没有被共享 如果在 SQL 语句的条件规范中使用常量而不是绑定变量,则 SQL 语句将不会被共享,并且需要进行硬解析。
##数据库等待事件发现大量的library cache lock ##从下图中的等待事件查询,基本上可以判定是一条SQL语句导致的,大量回话被1996回话阻塞,1996被回话1354回话阻塞,1354对应的blockding session为空。且所有的回话执行的都是同一条SQL 2.获取SQL_TEXT ##通过sql_id无法获取到sql_text ...
2.优化查询计划:使用Oracle的查询优化工具(如Explain Plan)来分析查询计划,通过重建和优化索引、收集统计信息等方式改进查询计划。 3.使用批量处理方式:对于需要频繁访问的数据,可以考虑使用批量处理方式,减少单条SQL语句执行次数,从而减少库缓存锁的发生。 步骤三:调整系统资源配置 如果是由于系统资源限制导致的库缓存锁...
系统支持的等待事件,可以查看等待事件所属类别、参数的含义等信息。 2、v$system_wait_class displays the instance-wide time totals for each registered wait class. 等待事件类别的统计信息(系统级)。通过这一视图,可从全局角度了解系统那类操作等待较多。
编辑手记:library cache lock 大家都并不陌生,在MOS上对该阻塞的一般成因描述为:一般可以理解的是alter table或者alter package/procedure会以X模式持有library cache lock,造成阻塞(444560.1)。但针对具体问题仍要具体分析,今天分享一则因SQL绑定变量出现空值,导致大量子游标产生并引发library cache lock 的故障,供大家...