暂无图片
寻求ORA-04031问题的优化方案
我来答
分享
四八老姜
2020-03-24
寻求ORA-04031问题的优化方案

oracle数据库用久了,就会出现
ORA-04031
这种错误。我该如何优化这些参数值(tmpfs>MEMORY_TARGET >sga+pga)才能避免此问题出现呀。每次手动清理下共享池,然后重启数据库,过段时间还是会出现此错误,麻烦给出详细点的解决方案

我来答
添加附件
收藏
分享
问题补充
5条回答
默认
最新
盖国强

ORA-04031 没有一劳永逸的解决之道。

在各个版本中,还可能因为 BUG 而出现。
如果排除BUG因素,可以考虑根据 Shared Pool Advisor 的建议,增大 Shared Pool 的设置,这样可以避免大多数非 BUG 因素导致的问题。

设置 Shared Pool 的大小,不要用自动内存的调整特性。

暂无图片 评论
暂无图片 有用 0
打赏 0
四八老姜

1.png

目前我查看shared_pool的大小,是自动分配的。我服务器16G内存,那Share_pools该设置多大呢?其次,tmpfs,MEMORY_TARGET ,sga,pga 分别设置多大比较好?

暂无图片 评论
暂无图片 有用 0
打赏 0
外包DBA

【原因】
1、手动内存管理share pool 设置太小
2、share pool 碎片太多,申请大块内存时无法分配连续空间
未使用绑定变量
使用绑定变量,但child cursor不能共享,生成太多child cursor
session_cached_cursor很大 + cursor_space_for_time=true
3、组成share pool的各个subpool使用不均衡(每个subpool都有独立free list + shared pool latch单独管理)
4、bug(内存泄漏)
5、物理内存不足(使用过多swap)
【解决思路】
1、临时处理(不适用于shared pool 较大而且比较繁忙的系统)
alter system flush share_pool;
2、调整内存管理参数(需要重启实例)

暂无图片 评论
暂无图片 有用 0
打赏 0
冯彦苇

不启动shared_pool的自动内存调整,建议设置为一个固定的值

暂无图片 评论
暂无图片 有用 0
打赏 0
四八老姜

有人建议手工共享内存管理: memory_target=0 and sga_target=0 指定 share_pool_size 、db_cache_size 等 sga 参数。 请问是否可以解决此ORA-04031问题? 其次,8核16G服务器,share_pool_size和db_cache_size分别设置多少比较合适?

暂无图片 评论
暂无图片 有用 0
打赏 0
回答交流
Markdown


请输入正文
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏