简体   繁体   中英

Oracle 11g dbms_java.start_jmx_agent throws an exception

I'm trying to profile a Java stored proc inside an Oracle DB. My user has been granted role JMXSERVER , but when I run call dbms_java.start_jmx_agent('22222', 'false', 'false'); I get:

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

I've traced the error to this line in JDK: https://github.com/frohoff/jdk8u-dev-jdk/blob/master/src/share/classes/sun/management/Agent.java#L483 , and the exception details are printed to System.err , but where does Oracle write its stderr to?

You have to redirect the output like this:

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

Then the error will be printed to the SQL session output. In my case the culprit was a missing file javavm//lib/management/management.properties , so I went to server admins.

You can also redirect the Java System.out and System.err to DBMS_OUTPUT:

dbms_java.set_output(100);

By the way, I tried the DBMS_JAVA.SET_OUTPUT_TO_SQL function as provided by Alexey but it failed with "Parameter 2 has invalid SQL" error. Did it work for you?

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM