ITPub博客

首页 > Linux操作系统 > Linux操作系统 > ORA-04031错误的处理

ORA-04031错误的处理

原创 Linux操作系统 作者:westzq1984 时间:2009-04-09 17:38:27 0 删除 编辑

4031我两年遇到了不下5次,现在总结下下

4031错误是SHARED_POOL很容易产生的错误,对于SHARED_POOL的原因一般有3类:
  BUG
  SHARED_POOL太小
  SHARED_POOL有太多的碎片
对于LARGE POOL,JAVA POOL,一般是由于设置的太小导致到

BUG可以从Doc ID:  396940.1 中查询
SHARED_POOL太小,可以通过监控v$sgastat查看free memory是否过少,或者在04031发生后生成的DUMP中也可以查看到
SHARED_POOL有太多的碎片,这个可以通过x$ksmsp来分析,或者是04031发生后的DUMP

如何来减少04031错误了
1.10G的SGA自动管理
2.定期flush SHARED_POOL
3.不要设置过高的session_cache_cursor
4.使用绑定变量
5.当没有使用绑定变量而且cursor_sharing=similar时,一定不要收集直方图
6.加大SHARED_POOL_RESERVED_MIN_ALLOC的空间,保留空间也可能发生04031,具体诊断是监控v$shared_pool_reserved
7.把一些大的对象PIN到SHARED_POOL中

对于碎片造成的04031,一般的原因是没有使用绑定变量的SQL和大量的硬解析
查找的方法一般有
  v$sqlarea中基本相同的SQL
  v$sqlarea中version_count异常高的SQL
  通过v$open_cursor和v$sqlarea查询当前占用内存高的SESSION,在获得该SESSION的SQL分析(还方法不适合于存在version_count异常高的情况)
  DUMP library_cache 来分析SQL硬解析的SQL

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/8242091/viewspace-586914/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2009-04-06

  • 博文量
    251
  • 访问量
    953354