前一段时间一个用户告知需要重新安装一下Oracle JVM,随派工程师上门去安装,工程师在现场检查发现Oracle JVM是好的,问客户,客户说他们的一个应用报如下错误:
[2012-11-13 11:28:03,046] Thread-2 root DEBUG - 数据库异常Pool not open
[2012-11-13 11:29:59,875] Thread-2 root DEBUG - 定时开始取基础资料
[2012-11-13 11:29:59,875] Thread-2 root DEBUG - 数据库连接池状态:{活动连接数:=0, 空闲连接数:=0}
[2012-11-13 11:30:00,359] Thread-2 root DEBUG - 财政基础资料存储过程:call SP_JK_JCZL(330122,1,null)
[2012-11-13 11:30:00,468] Thread-2 root DEBUG - 数据库异常ORA-29516: Aurora 断言失败: Assertion failure at joncomp.c:127
jtc_active_clint_init_ncomp_slots(oracle/xml/parser/v2/XMLNode, -1) returned 0
ORA-06512: 在"SYS.XMLDOCUMENTCOVER", line 0
ORA-06512: 在"SYS.XMLDOM", line 1605
ORA-06512: 在"FSZG.SP_JK_JCZL", line 126
ORA-06512: 在line 1
软件供应商说在另外一个地方也报了同样的错误,重新安装一下JVM就好了,无奈,工程师只好重新安装JVM,结果JVM是重新安装了,但是JVM跟XDB是相关的,安装好JVM,XDB变成无效了,而XDB跟客户另外一套系统是相关的,结果是导致客户的另外一套系统无法登陆,让工程师给我收集信息,收集了一堆信息,就关键的应用报错信息没收集,只是告诉我报“
数据库异常Pool not open”错误,而下面的关键信息却没有收集到,无奈,只得亲自去一趟,去了跟之前处理过这个问题的工程师沟通了一下,人家明明说的是他处理的那个问题跟这个问题不太一样,但是软件供应商一口咬定是一样,NND,现在上门去给客户实施的软件安装的工程师,搞不定的问题就直接推了!
其实这个问题的处理很简单,对于XDB,现场处理的时候为了安全起见,我是重新安装了XDB,后来觉得这个安装过程是多余的,其实只要注册一下就行了:
execute xdb. DBMS_REGXDB.VALIDATEXDB
对于重新安装JVM一事,我基本上持否定的态度,先看错误信息:(这是排除错误的关键起点啊!我那位可爱的同事给忽略了....)
[2012-11-13 11:30:00,468] Thread-2 root DEBUG - 数据库异常ORA-29516: Aurora 断言失败: Assertion failure at joncomp.c:127
jtc_active_clint_init_ncomp_slots(oracle/xml/parser/v2/XMLNode, -1) returned 0
ORA-06512: 在"SYS.XMLDOCUMENTCOVER", line 0
ORA-06512: 在"SYS.XMLDOM", line 1605
ORA-06512: 在"FSZG.SP_JK_JCZL", line 126
ORA-06512: 在line 1
选个关键字“ORA-29516”搜搜!碰到这种问题先看看是不是Oracle的Bug,上Oracle Support一搜,真的发现一个Bug,MOS ID 293715.1
解决方法就很简单了,这个文档里连去哪里下AIX的补丁都告诉我们了,打完补丁后,应用程序正常:
[2012-11-13 12:50:55,984] Thread-0 root DEBUG - Start the
[2012-11-13 12:50:56,000] Thread-0 root DEBUG - Initialize the configuration file:E:\dsf\Server.config
[2012-11-13 12:50:56,015] pool-1-thread-1 980101 DEBUG - 工商银行980101开始监听
[2012-11-13 12:50:56,515] Thread-0 root DEBUG - 相前活动银行线程数:1
[2012-11-13 12:50:56,531] Thread-0 root DEBUG - 定时器初始化成功
[2012-11-13 12:50:56,531] Thread-0 root DEBUG - 启动定时器
[2012-11-13 12:50:56,531] Thread-2 root DEBUG - 定时开始取基础资料
[2012-11-13 12:50:56,531] Thread-0 root DEBUG - 启动文件监控
[2012-11-13 12:50:56,531] Thread-3 root DEBUG - Server.config修改前日期1352773583156
[2012-11-13 12:50:56,531] Thread-2 root DEBUG - 数据库连接池状态:{活动连接数:=0, 空闲连接数:=0}
[2012-11-13 12:50:57,187] Thread-2 root DEBUG - 财政基础资料存储过程:call SP_JK_JCZL(330122,1,null)
[2012-11-13 12:51:00,687] Thread-2 root DEBUG - 调用基础资料存储过程返回码:1
[2012-11-13 12:51:00,703] Thread-2 root DEBUG - 已有jczl文件夹
[2012-11-13 12:51:00,703] Thread-2 root DEBUG - 上传文件名:基础资料-Query.xml上传文件大小:222265
[2012-11-13 12:51:00,703] Thread-2 root DEBUG - 释放连接池
附录:MOS ID 293715.1
MOS ID 293715.1
After upgrading to AIX 5.2 ML-4 Oracle JAVAVM fails permanently with ORA-29516
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Versions Affected
~~~~~~~~~~~~~~~~~
Oracle Server - Enterprise Edition Versions 9.2.0.1 - 9.2.0.6
Equivalent tests have not duplicated the problem in Oracle 10g.
Platforms Affected
~~~~~~~~~~~~~~~~~~
Port-specific, AIX 5L Based Systems (64-bit)
Description
~~~~~~~~~~~
Customers upgrading AIX 5L 5.2 to Maintenance Level 4
have encountered error ORA-29516 when using Oracle JAVAVM
Error description:
29516, 00000, "Aurora assertion failure: %s"
// *Cause: An internal error occurred in the Aurora module.
// *Action: Contact Oracle Worldwide Support.
Likelihood of Occurrence
~~~~~~~~~~~~~~~~~~~~~~~~
The AIX Os-level has been upgraded to ML-4:
I.e. oslevel -r shows
5200-04
and lslpp -L "bos.mp";lslpp -L "bos.*64*"; shows the following filesets have
the versions listed as below:
Fileset Level (range)
----------------------------------------------
bos.mp 5.2.0.44 - 5.2.0.50
bos.mp64 5.2.0.44 - 5.2.0.50
bos.64bit 5.2.0.43 - 5.2.0.50
Possible Symptoms
~~~~~~~~~~~~~~~~~
When executing JAVAVM initialization script
initjvm.sql error ORA-29516 is signaled during
create or replace java system;
2 /
create or replace java system;
*
ERROR at line 1:
ORA-29516: Aurora assertion failure: Assertion failure at joncomp.c:127
jtc_active_clint_init_ncomp_slots(
) returned 0
The same error is reported if trying to create any other Java Class:
CREATE OR REPLACE JAVA SOURCE NAMED "HelloWorld" AS
public class HelloWorld
{
public static void main(String args[])
{
System.out.println("Hello World!");
}
}
ORA-29516: Aurora assertion failure: Assertion failure at joncomp.c:127
jtc_active_clint_init_ncomp_slots(java/lang/reflect/AccessibleObject, -7)
returned 0
Other customers have reported same error when running
ojvmjava -user user/password@tns-alias and executing the help command.
The error disappears if the same statement gets reexecuted within the same
sqlplus/ojvmjava session.
Workaround
~~~~~~~~~~
none
Patches
~~~~~~~
This was reproduced and verified fixed by AIX e-fix IY63366:
IY63366: DLSYM RETURNS NULL EVEN FOR VALID SYMBOL IN AIX520 ML-4 04/12/06 PTF
PECHANGE
In order to aplly the e-fix AIX filesets must be already at level
bos.mp 5.2.0.50
bos.mp64 5.2.0.50
bos.64bit 5.2.0.50
or
bos.mp 5.2.0.45
bos.mp64 5.2.0.45
bos.64bit 5.2.0.43.
The official fix can be obtained from IBM as APAR IY63366 when available
or downloaded as e-fix from ftp://service.software.ibm.com/aix/efixes/iy63366
References
~~~~~~~~~~
BUG:4011660 ORA-29516: AURORA ASSERTION FAILURE: ASSERTION FAILURE
Keyword
~~~~~~~~~~
ORA-29516, JAVAVM, AIX 5L, ML-4
Modification History
~~~~~~~~~~~~~~~~~~~~
13-DEC-2004 Note creation date