在ALERT的日志中出现如下报错:
Errors in file /home/oracle/db/diag/rdbms/qdsj/qdsj1/trace/qdsj1_m000_18573.trc:
ORA-04035: unable to allocate 4096 bytes of shared memory in shared object cache "JOXSHM" of size "134217728"
Tue Jul 07 05:00:33 2009
Thread 1 advanced to log sequence 79
Current log# 5 seq# 79 mem# 0: /oradata1/qdsj/redo05.log
经过查明,是ORACLE 11G的一个BUG,最终问题已经按照文档修改,是否解决需要观察。
根据ORACLE文档的解决办法:
There are 2 workarounds available:
1] Create the following directories under the $ORACLE_HOME/dbs:javanld1plsqlnld1
2] Disable the just in time compiler, set initialization parameter:java_jit_enabled = false
The permanent solution is to upgrade to 11.1.0.7 when it is released
NOTE:
When the workaround of creating directories is implemented, there will be a lot of smallfiles generated under $ORACLE_HOME/dbs/javanld1 with name format:JOXSHM_EXT__TARSG1_0.so*
These files get deleted when the database is shutdown.
解决步骤如下:
SQL> show parameter JAVA_JIT_ENABLED;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
java_jit_enabled boolean TRUE
$ cd $ORACLE_HOME
$ cd dbs
$ mkdir javanld1
$ mkdir plsqlnld1
SQL> alter system set JAVA_JIT_ENABLED= FALSE scope = both;
System altered.
SQL> show parameter JAVA_JIT_ENABLED;
NAME TYPE VALUE
------------------------------------ ----------- ------------------------------
java_jit_enabled boolean FALSE