重庆思庄Oracle、KingBase、PostgreSQL、Redhat认证学习论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 154|回复: 0
打印 上一主题 下一主题

[Oracle] ORA-04030 私有内存超出

[复制链接]
跳转到指定楼层
楼主
发表于 2026-2-28 16:24:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
前言
今天巡检遇到数据库报错 ORA-04030 错误,错误日志如下:


ORA-04030: out of process memory when trying to allocate 169040 bytes (pga heap,kgh stack)
ORA-04030: out of process memory when trying to allocate 432 bytes (kxs-heap-c,kprbalo temp memory)


​​​​oerr 04030


关键词:ORA-04030、(pga heap,kgh stack)、(kxs-heap-c,kprbalo temp memory)。


一、问题分析
1、通过 Oracle oerr 工具查看错误代码:


通常情况下,该错误是由于 私有内存超出 导致**。为了分配更多的私有内存,您可以在操作系统级别更改页面计数或调整数据库中的 realfree 堆页面大小**。


2、抓取trace文件关键信息:


在trace文件中发现:“Process Map” 显示了65532个映射的内存块。然而,每个进程只有 65536 个内存映射条目,这些错误通常是由于操作系统中的映射条目用完而出现的。


3、通过查询MOS文档,发现该错误相符合的文档:


(Doc ID 1325100.1)


二、解决方案
两种解决方案,任选其一即可。建议修改系统参数。


1、操作系统级别修改页面计数


##检查max_map_count当前值
more /proc/sys/vm/max_map_count


##关闭数据库实例


##修改max_map_count
sysctl -w vm.max_map_count=200000


或者


cat <<EOF>>/etc/sysctl.conf
vm.max_map_count=200000
EOF


##生效
sysctl -p


##重启主机
reboot


##启动数据库实例
注意:因为修改系统参数需要重启主机,所以需要数据库停机进行操作,重启主机系统参数生效之后,再启动数据库。


2、修改数据库隐含参数


Oracle 11204版本之前:


##设置spfile参数
alter system set "_use_realfree_heap"=TRUE scope=spfile;
alter system set "_realfree_heap_pagesize_hint"=200000 scope=spfile;


##重启数据库
Oracle 12.1版本之后:


##设置spfile参数
alter system set "_use_realfree_heap"=TRUE scope=spfile;
alter system set "_realfree_heap_pagesize"=200000 scope=spfile;


##重启数据库
参考官方文章:PLSQL Procedure Causing ORA-04030: (pga heap,control file i/o buffer) And ORA-04030: (koh-kghu sessi,pmuccst: adt/record) or ORA-04030: (koh-kghucall ,pmucalm coll) Errors (Doc ID 1325100.1)

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 支持支持 反对反对
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|重庆思庄Oracle、Redhat认证学习论坛 ( 渝ICP备12004239号-4 )

GMT+8, 2026-4-17 19:49 , Processed in 0.219502 second(s), 21 queries .

重庆思庄学习中心论坛-重庆思庄科技有限公司论坛

© 2001-2020

快速回复 返回顶部 返回列表