Oracle告警日志ora-04030
oracle 11g 出现ORACLE ORA-04030之 out of process memory when trying to allocate报错,查询ORACLE官方MOS确定是:BUG11852492,原因是用户会话单进程占用PGA超过4GB异常终止,根据MOS文章1325100.1的建议:可以根据服务器实际情况及SQL运行的实际情况放开PGA单进程使用内存空间的限制到16GB。
相关分析处理过程如下:
ORA4030告警,告警信息如下:
查看数据库告警日志 **************************
警报日志文件中的错误 - 过去 3 天
=====================================
15/12/2016 22:44:13 15 年 22 月 44 日星期四 13:2016:<>
15 年 22 月 44 日星期四 13:2016:<>
ORA-04030:尝试分配 64 字节时进程内存不足(kxs-heap-c,分配器状态)
ORA-04030:尝试分配 624 字节时进程内存不足 (kxs-heap-c,MSQ2)
ORA-04030:尝试分配 82456 字节时进程内存不足(pga 堆,控制文件 I/O 缓冲区)
文件 /u01/app/oracle/diag/rdbms/orcl/orcl2/incident/incdir_498/orcl_pmon_60993.trc 中的错误:
有关错误和打包的详细信息,请参阅 My Oracle Support 上的注释 411.1。
使用 ADRCI 或 Support Workbench 打包事件。
针对PGA单进程4GB内存空间的限制,查证当前操作系统相关限制参数设置为4GB:
[root@host ~]# 更多 /proc/sys/vm/max_map_count
65530
[root@host ~]# 更多 /proc/sys/vm/max_map_count
65530
[root@host~]#
针对PGA单进程4GB内存空间的限制,使用如下sql语句查证oracle数据库相关隐含参数设置为4GB:
_realfree_heap_pagesize_hint=65536
选择 A.KSPPINM 名称、B.KSPPSTVL 值、A.KSPPDESC 说明
从 x$ksppi a, x$ksppcv b
其中 a.indx = b.indx 和 a.ksppinm 如 '_realfree_heap_pagesize_hint';
如果实际情况可以,oracle官方允许PGA单进程设置为16GB,相关操作如下:
溶液
更改操作系统或数据库级别的上限:
更改操作系统级别的页数:
更多 /proc/sys/vm/max_map_count
sysctl -w vm.max_map_count=262144(例如)
**请注意,上述更改将在主机重新启动时恢复,除非这些更改是在 /etc/sysctl.conf 文件中永久进行的 **
通过在 init/spfile 中设置以下参数来调整数据库中的 realfree 堆页面大小,然后重新启动数据库。
对于版本 11.2.0.4 及更低版本:
_use_realfree_heap=真
_realfree_heap_pagesize_hint = 262144
对于 12.1 及更高版本:
_use_realfree_heap=真
_realfree_heap_pagesize = 262144