视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
【体系结构问题解决,1】解决4031错误方法
2020-11-09 14:46:29 责编:小采
文档


三.解决4031错误方法: (ora-4031错误产生原因:大量的硬解析后,导致链上的chunk都变的非常小,此时来了一个大的sql会找不到合适的chunk,就会报ora-4031错误。) 如果SHARED_POOL_SIZE 设置得足够大,又可以排除 Bug 的因素,那么大多数的ORA- 04031 错误

三.解决4031错误方法:

(ora-4031错误产生原因:大量的硬解析后,导致链上的chunk都变的非常小,此时来了一个大的sql会找不到合适的chunk,就会报ora-4031错误。)

如果SHARED_POOL_SIZE 设置得足够大,又可以排除 Bug 的因素,那么大多数的ORA- 04031 错误都是由共享池中的大量的SQL 代码等导致过多内存碎片引起的。

1.执行alter system flush shared_pool; 清理library cache 和rows cache ,此方法只能临时解决问题不推荐使用。

原因:

(1 )Flush Shared Pool 会导致当前未使用的cursor 被清除出共享池,如果这些 SQL 随后需 要执行,那么数据库将经历大量的硬解析,系统将会经历严重的CPU 争用,数据库将会产生 激烈的L atch 竞争。

(2 )如果应用没有使用绑定变量,大量类似SQL 不停执行,那么Flush Shared Pool 可能 只能带来短暂的改善,数据库很快就会回到原来的状态。

(3 )如果Shared Poo l 很大,并且系统非常繁忙,刷新Shared Pool可能会导致系统挂起, 对于类似系统尽量在系统空闲时进行。

2.方法二: 让开发人员修改sql语句,实现共享SQL,

3.方法三:将较大的对象保存到内存中,

4.方法四:设置合适的shared_pool_reserved_size参数,结合shared_pool_reserved_min_alloc 参数可以用 来避免由此导致的性能下降。这个参数的缺省值是shared_pool_size 的5%,通常这个参数的建议值为shared_pool_size参数的10% ~20% 大小,最大不得超过shared_pool_size的50% 。 保留区是在shared_pool中专门用来缓存大对象区域,所以可以增加保留区的大小。 #查看请求保留区的错误次数,(若过请求保留区错误,就会包4031错误) select REQUEST_MISSES from v$shared_pool_reserved; 6.使用AMM自动内存管理来分配共享池,防止共享池设置小而出错。(一般做到这一步就可以了)

下载本文
显示全文
专题