数据库环境:
SunOS 5.6+Oracle8i Enterprise Edition Release 8.1.7.0.0
sqlplus连库提示如下:错误:
ORA-04031: unable to allocate 4096 bytes of shared memory ("shared pool","begin
dbms_output.disable; e...","PL/SQL MPCODE","BAMIMA: Bam Buffer")连接到:
Oracle8i Enterprise Edition Release 8.1.7.0.0 - Production
With the Partitioning option
JServer Release 8.1.7.0.0 - ProductionSQL>如上所示,报ora-04031错误,但还是能连上,应用程序和数据库目前也没有什么异常,alert_ora8.log日志也没有错误,上网查大概是说我的共享内存不够了,可有时候连就没有报错,而且即使报错也能连上,这是什么原因呢?我需要增加共享内存么(不管他行么?),如何增加?本人新手,请各位老师赐教,谢谢!
SunOS 5.6+Oracle8i Enterprise Edition Release 8.1.7.0.0
sqlplus连库提示如下:错误:
ORA-04031: unable to allocate 4096 bytes of shared memory ("shared pool","begin
dbms_output.disable; e...","PL/SQL MPCODE","BAMIMA: Bam Buffer")连接到:
Oracle8i Enterprise Edition Release 8.1.7.0.0 - Production
With the Partitioning option
JServer Release 8.1.7.0.0 - ProductionSQL>如上所示,报ora-04031错误,但还是能连上,应用程序和数据库目前也没有什么异常,alert_ora8.log日志也没有错误,上网查大概是说我的共享内存不够了,可有时候连就没有报错,而且即使报错也能连上,这是什么原因呢?我需要增加共享内存么(不管他行么?),如何增加?本人新手,请各位老师赐教,谢谢!
WHERE name LIKE 'opened cursors current'如果值很大(Ws/Ks),那么出4031是正常的,需要从应用端减少同时开启的cursou来解决。
如果值不大,那可能是碎片,需要在应用端使用bind变量来解决
====================================================
GOOGLE来的
所以发现这个问题首先要升级打补丁,排除BUG 的可能
其次做一个statspack 看看SQL语句是否使用了bind var最后要看是不是打开过多的cursor ,如果打开过多的cursor 的话,也会导致这个问题的发生的SELECT * FROM v$sysstat
WHERE name LIKE 'opened cursors current'如果值很大(Ws/Ks),那么出4031是正常的,需要从应用端减少同时开启的cursou来解决。
如果值不大,那可能是碎片,需要在应用端使用bind变量来解决
当然,不排除BUG的可能……
===========================
ZT
WHERE name LIKE 'opened cursors current' ;STATISTIC# NAME CLASS VALUE
-------- --------------------------- --------- ---------
3 opened cursors current 1 219请问这个值算大么?
"果值不大,那可能是碎片,需要在应用端使用bind变量来解决 "能具体解释一下么?
会是什么原因造成这种问题的呢?