Oracle 11g dbms_java.start_jmx_agent抛出异常

时间:2017-05-31 17:17:46

标签: java oracle oracle11g jmx

我正在尝试在Oracle DB中分析Java存储过程。我的用户已被授予角色JMXSERVER,但当我运行call dbms_java.start_jmx_agent('22222', 'false', 'false');时,我得到了:

ORA-29532: Java call terminated by uncaught Java exception: java.lang.RuntimeException: java.lang.RuntimeException: Management agent class failed 
ORA-06512: at "SYS.DBMS_JAVA", line 803
ORA-06512: at "SYS.DBMS_JAVA", line 812
ORA-06512: at line 1

我在JDK中跟踪了这一行的错误:https://github.com/frohoff/jdk8u-dev-jdk/blob/master/src/share/classes/sun/management/Agent.java#L483,异常详细信息打印到System.err,但Oracle将其stderr写入哪里?

2 个答案:

答案 0 :(得分:1)

您必须像这样重定向输出:

select DBMS_JAVA.SET_OUTPUT_TO_SQL('1', 'begin dbms_output.put_line(:1); end;','TEXT') from dual;

然后将错误打印到SQL会话输出。在我的情况下,罪魁祸首是一个丢失的文件javavm//lib/management/management.properties,所以我去了服务器管理员。

答案 1 :(得分:1)

您还可以将Java System.out和System.err重定向到DBMS_OUTPUT:

dbms_java.set_output(100);

顺便说一句,我尝试了Alexey提供的DBMS_JAVA.SET_OUTPUT_TO_SQL函数,但它失败了"参数2有无效的SQL"错误。它对你有用吗?

相关问题