考试网 >> IT认证 >> Oracle >> Oracle指导 >> 如何解决ORA-04031 错误(2)

如何解决ORA-04031 错误(2)

发布时间:2006-06-28 09:50     点击:
分页:[1] 2 3 4 5 6  下一页

  编译Java代码时出现的ORA-4031

  

  在你编译Java代码的时候如果内存溢出,你会看到错误:

  

  A SQL exception occurred while compiling: :

  ORA-04031: unable to allocate bytes of shared memory

  ("shared pool","unknown object","joxlod: init h", "JOX: ioc_allocate_pal")

  

  解决办法是关闭数据库然后把参数 JAVA_POOL_SIZE 设定为一个较大的值。这里错误信息中提到的 "shared pool" 其实共享全局区(SGA)溢出的误导,并不表示你需要增加SHARED_POOL_SIZE,相反,你必须加大 JAVA_POOL_SIZE 参数的值,然后重启动系统,再试一下。参考: 。

  

  小的共享池尺寸

  

  很多情况下,共享池过小能够导致ORA-04031错误。下面信息有助于你调整共享池大小:

  

  库高速缓冲命中率

  

  命中率有助于你衡量共享池的使用,有多少语句需要被解析而不是重用。下面的SQL语句有助于你计算库高速缓冲的命中率:

  

  SELECT SUM(PINS) "EXECUTIONS",

  SUM(RELOADS) "CACHE MISSES WHILE EXECUTING"

  FROM V$LIBRARYCACHE;

  

  如果丢失超过1%,那么尝试通过加大共享池的大小来减少库高速缓冲丢失。

  

  共享池大小计算

  

  要计算最适合你工作负载的共享池大小,请参考:

  

  : HOW TO CALCULATE YOUR SHARED POOL SIZE.

  

  共享池碎片

  

  每一次,需要被执行的SQL 或者PL/SQL 语句的解析形式载入共享池中都需要一块特定的连续的空间。数据库要扫描的第一个资源就是共享池中的空闲可用内存。一旦空闲内存耗尽,数据库要查找一块已经分配但还没使用的内存准备重用。如果这样的确切尺寸的大块内存不可用,就继续按照如下标准寻找:
分页:[1] 2 3 4 5 6  下一页
版权申明:未经书面授权请勿转载本站信息!!作品版权归所属媒体与作者所有!!
发表评论: 匿名发表 用户名: 查看评论
您将承担一切因您的行为、言论而直接或间接导致的民事或刑事法律责任
留言板管理人员有权保留或删除其管辖留言中的任意内容
本站提醒:不要进行人身攻击。谢谢配合。
在本站搜索相关信息
2003-2005 Ksw123.com All Rights Reserved. - TOP
Copyright © 2006 Ksw123.com. All rights reserved.中国考题网 版权所有