无微不至:调整_lm_cache_res_cleanup解决Shared Pool 的4031问题
李真旭(Roger)
云和恩墨西北区技术总监
Oracle ACE, ACOUG 核心会员
前不久某客户的一套核心数据库(10.2.0.4.12),据说每间隔一段时间就必须重启,因为会报ORA-04031 错误。
查询发现 shared pool 差不多 5G 的样子,其实 ges resource 消耗了差不多 3.5G shared pool 内存,也确实有些离谱了。
我们可以看到,ges resource 消耗的内存确实非常高。那么这里为什么 ges resource 消耗的内存这么高呢?
通过检查 v$resource_limit 发现存在有些异常,如下所示:
我们可以发现,ges_cache_ress 的 max 和 current 都很大,大的超乎想象。从现象来看,可以大致判断是 shared pool 中 cache 的 ges resource 没有及时回收,导致 ges resource占据的内存比较大。
想到这里,我心中产生了一个疑问,是否 Oracle 有相关隐含参数来控制这个资源回收的机制呢?我们知道 Oracle 通常都是这么干的,通过隐含参数来控制某项功能或机制。
搜下发现了2个相关的 bug,确实可能出现 ges resource 消耗内存很高的情况,最后产生ora-04031错误。
其中文档中提到了一个参数 _lm_cache_res_cleanup;通过调整该参数,来该表 ges resource 的回收机制;有可能避免这个情况。
方法好用不,要试试才知道,果断告知客户进行调整,然后观察几天后,发现 ges resource 的内存消耗得到了有效控制:
在未调整参数之前,重启实例1天,ges resource 就超过 300M了,然后逐渐攀升,直至出现问题。
备注: bug 9026008,bug 10042937 跟该参数有关系,影响版本为11.1,11.2部分版本,大家可以阅读下。
总结:Oracle数据库的精细程度往往超越了大家的经验,几乎每一个微小的功能都存在着控制参数,遇到问题时,仔细分析,深入细节,最后从源头解决问题,是Oracle DBA的必备素质
本文出自数据和云公众号,原文链接
无微不至:调整_lm_cache_res_cleanup解决Shared Pool 的4031问题相关推荐
- oracle 调整shared pool,Oracle性能调整中的Shared pool tunning要点
本文主要简述的是Oracle性能调整中Shared pool tunning要点,Shared pool tunning要点,在Oracle性能调整实际的相关操作中起到不可忽视的作用,以下的文章就是对 ...
- Shared pool内存块组成结构及4031错误原因分析
这篇文章是参考甲骨论老相老师的教学视频所做的学习笔记: http://v.youku.com/v_show/id_XMzkyMDQ4MzUy.html 之前提到Shared pool的作用: Shar ...
- oracle 调整shared pool,Oracle设置Shared Pool的大小
在oracle 10G或者11G版本中,如何合理设置shared pool大小,对oracle数据库的性能影响很大. Shared Pool的大小设置规则如下: 1.查到shared pool设置的合 ...
- 隐含参数与 Library Cache 与 Shared Pool Latch 原理
现在每一个 Oracle DBA,很少有不知道隐含参数的.但至少在表面上,Oracle 是不支持将隐含参数用于数据库的.隐含参数通常用于救急,或者是作为 Oracle BUG 的临时解决方案(Work ...
- SHARED POOL 原理
SHARED POOL 原理 由于shared pool中最重要的是library cache,所以本文主要讲解Library cache的结构,library cache latch,library ...
- oracle shared pool size,oracle 关于设置shared pool及sga大小
本文参考了https://blog.csdn.net/xinzhan0/article/details/52461611?locationNum=2&fps=1 如何设置shared pool ...
- oracle shared pool size,SHARED_POOL_RESERVED_SIZE参数的设置及作用
SHARED_POOL_RESERVED_SIZE参数的设置及作用 shared_pool_reserved_size: 该参数指定了保留的共享池空间,用于满足将来的大的连续的共享池空间请求.当共享池 ...
- 共享池 shared pool
定义: 共享池( shared pool )是位于SGA中的一块内存区域,主要用于缓存SQL的执行计划.之所以叫共享,是由于该块内存区域可以被多个会话共享同一个执行计划.即,如果有一个会话执行了SQL ...
- atch: shared pool 优化探索
首先来看赤裸裸的问题直击: Top 10 Foreground Events by Total Wait Time Event Waits Total Wait Time (sec) Wait Avg ...
最新文章
- php 编译安装降解,对php编译安装的修正
- python input和print,Python基础——输出[print()]与输入[input()]
- 基于centos6的mysql5.7.13主从部署(一)
- php memcache扩展的一个细节
- 【正一专栏】巴萨和曼城都那么强了还在买人续约
- 太逗了,面试官让我讲线程 WAITING 状态!
- 001Python路--入门
- go语言之行--golang核武器goroutine调度原理、channel详解
- zigbee 编译source_zigbee_sensor_monitor_v1_2_1 vs2008 qt-win-opensource-src-4.4.3
- 百味扶胰系假药 冒用降糖宁胶囊批号
- Servlet中获取请求体的数据
- java new对象 =null_在Java中将对象分配为null会影响垃圾回收吗?
- matplotlib setting zh-hans
- C/C++字符串处理库
- Eclipse改动Project的文件夹位置
- Android Studio使用tips
- Android开发指南(39) —— Testing Fundamentals
- python源码深度剖析_Python源码剖析-深度探索动态语言核心技术 PDF 下载
- 数据分析_excel
- 狄克斯特拉算法(Dijkstra)详细解释