【问题标题】:Oracle 11g dbms_java.start_jmx_agent throws an exceptionOracle 11g dbms_java.start_jmx_agent 抛出异常
【发布时间】:2017-05-31 17:17:46
【问题描述】:

我正在尝试分析 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写入哪里?

【问题讨论】:

    标签: java oracle oracle11g jmx


    【解决方案1】:

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

    dbms_java.set_output(100);
    

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 2010-11-20
        • 2013-05-24
        • 1970-01-01
        • 2012-02-14
        • 2011-05-30
        • 1970-01-01
        • 1970-01-01
        • 2011-02-25
        相关资源
        最近更新 更多