【体系结构问题解决,1】解决4031错误方法
2014-09-12 07:10
148 查看
三.解决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自动内存管理来分配共享池,防止共享池设置小而出错。(一般做到这一步就可以了)
相关文章推荐
- dblink远程库表结构修改导致本地库调用此表的存储过程出错问题解决方法
- sqlserver 2008手工修改表结构,表不能保存的问题与解决方法
- 用Excel导入Oracle数据库中时候 提示在指定的DSN中,驱动程序和应用程序之间的体系结构不匹配 问题解决!!!
- SQL2008不允许保存更改的表结构问题解决方法
- [置顶] 在指定的 DSN 中,ODBC驱动程序和应用程序之间的体系结构不匹配解决方法
- 解决问题的方法:构建业务中台的基础——共享服务体系
- PowerDesigner16.5反向工程获取Oracle11g数据表结构遇到的问题及解决方法
- 不使用循环结构解决循环问题的方法
- 解决办法:在指定的 DSN 中,驱动程序和应用程序之间的体系结构不匹配 问题解决 SQLSTATE=IM014
- sqlserver 2008手工修改表结构,表不能保存的问题与解决方法
- 软件体系结构经典问题——KWIC的分析和解决
- SQL2008不允许保存更改的表结构问题解决方法
- sqlserver 2008手工修改表结构,表不能保存的问题与解决方法
- 计数器和累加器的使用循环结构程序设计中的常见问题有2个以及解决方法
- Win7 64位 Visio 32位 "驱动程序和应用程序之间的体系结构不匹配 问题解决 本人亲测"
- DB2 修改表结构后查询出现问题解决方法
- 水晶报表 创建odbc数据源出现 在指定的 DSN 中,驱动程序和应用程序之间的体系结构不匹配 问题解决
- 解决最优子结构问题的两种方法----…
- 软件体系结构经典问题——KWIC的分析和解决
- SQL2008不允许保存更改的表结构问题解决方法