2017-05-31 1 views
1

J'essaie de profiler un processus stocké Java dans une base de données Oracle. Mon utilisateur a été accordé rôle JMXSERVER, mais quand je lance call dbms_java.start_jmx_agent('22222', 'false', 'false');-je obtenir:Oracle 11g dbms_java.start_jmx_agent déclenche une exception

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 

J'ai retracé l'erreur de cette ligne dans JDK: https://github.com/frohoff/jdk8u-dev-jdk/blob/master/src/share/classes/sun/management/Agent.java#L483, et les détails d'exception sont imprimés à System.err, mais d'où vient Oracle écrire son stderr à?

Répondre

1

Vous devez rediriger la sortie comme ceci:

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

l'erreur sera imprimé à la sortie de la session SQL. Dans mon cas, le coupable était un fichier manquant javavm//lib/management/management.properties, donc je suis allé aux administrateurs de serveur.