关键词:ORA-04030、(pga heap,kgh stack)、(kxs-heap-c,kprbalo temp memory)。
通常情况下,该错误是由于 私有内存超出 导致。为了分配更多的私有内存,您可以在操作系统级别更改页面计数或调整数据库中的 realfree 堆页面大小。
在trace文件中发现:“Process Map” 显示了65532个映射的内存块。然而,每个进程只有 65536 个内存映射条目,这些错误通常是由于操作系统中的映射条目用完而出现的。
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)
##检查max_map_count当前值
more /proc/sys/vm/max_map_count
##关闭数据库实例
##修改max_map_count
sysctl -w vm.max_map_count=200000
或者
cat <>/etc/sysctl.conf
vm.max_map_count=200000
EOF
##生效
sysctl -p
##重启主机
reboot
##启动数据库实例
注意:因为修改系统参数需要重启主机,所以需要数据库停机进行操作,重启主机系统参数生效之后,再启动数据库。
##设置spfile参数
alter system set "_use_realfree_heap"=TRUE scope=spfile;
alter system set "_realfree_heap_pagesize_hint"=200000 scope=spfile;
##重启数据库
##设置spfile参数
alter system set "_use_realfree_heap"=TRUE scope=spfile;
alter system set "_realfree_heap_pagesize"=200000 scope=spfile;
##重启数据库
注意:由于修改spfile,因此需要重启数据库实例才能生效。
参考官方文章:Doc ID 1325100.1
本次分享到此结束啦~