ITPub博客

首页 > Linux操作系统 > Linux操作系统 > ORA-04031

ORA-04031

原创 Linux操作系统 作者:guocun09 时间:2011-11-16 10:30:54 0 删除 编辑

ORA-04031:當分配大塊的連續的內存時不足時出現,很多時候是因為內存碎片過多,而并非內存不足造成。oracle首先會清除shared pool中當前沒有使用的對象,使空間合并,如果仍然沒有足夠大的單塊內存可以滿足需要,就會發生04031

 案例: 2011/10/26 Oracle9i Enterprise Edition Release 9.2.0.8.0 - 64bit Production

+Red Hat Enterprise Linux AS release 4 (Nahant Update 5)

用戶程序突然ORA-04031:無法分配共享記憶體的4072位元組()

SELECT free_space, avg_free_size,used_space, avg_used_size,request_failures, last_failure_size FROM v$shared_pool_reserved;

FREE_SPACE|AVG_FREE_SIZE|USED_SPACE|AVG_USED_SIZE|REQUEST_FAILURES|LAST_FAILURE_SIZE

155403224|226205.566229985|10824904|15756.7743813683|5170|432

看到有請求失敗,最后一次失敗大小位432<4400(_shared_pool_reserved_min_alloc)

SELECT * FROM X$KSPPCV A,X$KSPPI B WHERE A.INDX=B.INDX AND B.KSPPINM = '_shared_pool_reserved_min_alloc'

查看數據庫parse count (hard)和parse count (total)的比例:

select name,value from v$sysstat where name like 'parse%';

 我的方法找出多次沒有綁定變量的sql:查前20個字符相同的SQL_TEXT V$SQL

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

上一篇: ORA-04030
请登录后发表评论 登录
全部评论
DBA,掌握Oracle,SQLServer,MySQL,hadoop,casscandra等数据库。喜爱深入研究数据库技术原理,擅长管理和优化工作。

注册时间:2011-10-02

  • 博文量
    177
  • 访问量
    686667