oracle lms进程 内存,【案例】Oracle ges resource消耗内存高报错ORA-04031 MOS解决办法...

天萃荷净

Oracle研究中心案例分析:运维DBA反映Oracle数据库10.2.0.4.12每间隔一段时间就必须重启,运行一断时间报ORA-04031错误oracle ges res cache large of memory。

本站文章除注明转载外,均为本站原创: 转载自love wife & love life —Roger 的Oracle技术博客

本文链接地址: 通过调整_lm_cache_res_cleanup解决shared Pool问题

核心数据库(10.2.0.4.12),每间隔一段时间就必须重启,因为会报ORA-04031错误。查询发现shared pool差不多5G的样子,其实ges resource消耗了差不多3.5G shared pool 内存,也确实有些离谱了。

SQL> c/gcs/ges

1* select * from v$sgastat where name like 'ges%'

SQL> /

POOL         NAME                                 BYTES

------------ ------------------------------- ----------

shared pool  ges big msg p                       461440

shared pool  ges resource hash seq tab            32768

shared pool  ges shared global area               23928

shared pool  ges regular msg buffers            1254008

shared pool  ges enqueue multiple free             1280

shared pool  ges res mastership bucket             4096

shared pool  ges deadlock xid freelist            11264

shared pool  ges resource pools                    1984

shared pool  ges recovery domain table              176

shared pool  ges reserved msg buffers           8240008

shared pool  ges big Oracle?о?????msg buffers               15936168

shared pool  ges process array                  1273272

shared pool  ges enqueue max. usage pe               32

shared pool  ges lmd process descripto             2760

shared pool  ges process hash table               44000

shared pool  ges enqueue cur. usage pe               32

shared pool  ges ipc instance maps                  384

shared pool  ges lms process descripto             5520

shared pool  ges resource                    3696886168

shared pool  ges deadlock xid hash tab            17800

shared pool  ges resource hash table            1441792

shared pool  ges scan queue array                   176

我们可以看到,ges resource消耗的内存确实非常高。那么这里为什么ges resource 消耗的内存这么高呢?

通过检查v$resource_limit发现存在有些异常,如下所示:

RESOURCE_NAME        CURRENT_UTILIZATION MAX_UTILIZATION INITIAL_ALLOCATION   LIMIT_VALUE

-------------------- ------------------- --------------- -------------------- -------------

ges_procs                            181             439       1001                 1001

ges_ress                               0               0      27462            UNLIMITED

ges_locks                              0               0      40358            UNLIMITED

ges_cache_ress                   8559179        14625461          0            UNLIMITED

ges_reg_msgs                         243             898       2750            UNLIMITED

ges_big_msgs                          41           35280       1934            UNLIMITED

ges_rsv_msgs                           0               0       1000                 1000

SQL> select startup_time from v$instance;

STARTUP_TIME

-------------------

2015-10-26 05:02:04

我们可以发现,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的内存消耗得到了有效控制:

SQL> select * from v$sgastat where name like '%ges res%';

POOL                     NAME                               BYTES

------------------------ ----------------------------- ----------

shared pool              ges resource hash seq tab          32768

shared pool              ges res mastership bucket           4096

shared pool              ges resource pools                  1984

shared pool              ges reserved msg buffers         8240008

shared pool              ges resource                   215312592

shared pool              ges resource hash table          1441792

6 rows selected.

SQL> alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';

Session altered.

SQL> select startup_time from v$instance;

STARTUP_TIME

-------------------

2016-01-28 23:08:27

SQL> select sysdate from dual;

SYSDATE

-------------------

2016-02-03 10:24:17

有些人可能会说,才几天可能看不出来吧?实际上,之前客未调整之前,重启实例才1天,ges resource就超过300M了。

备注: bug 9026008,bug 10042937 跟该参数有关系,影响版本为11.1,11.2部分版本,大家可以阅读下。

--------------------------------------ORACLE-DBA----------------------------------------

最权威、专业的Oracle案例资源汇总之【案例】Oracle ges resource消耗内存高报错ORA-04031 MOS解决办法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值