【问题标题】:How can I see logs of oracle procedure(dbms_output statement)如何查看 oracle 程序的日志(dbms_output 语句)
【发布时间】:2011-08-02 17:29:53
【问题描述】:

实际上,我是从应用服务器上的 java 文件调用 oracle 程序。我想调试我的oracle程序,所以我在oracle程序中将语句写为“dbms_output”,但不知道日志在oracle服务器上的存储位置,实际上我想在oracle程序中打印一些变量值来跟踪我的问题。

如果您知道任何其他调试从java文件调用oracle过程的调试机制,请在解释中分享。

我花了几个小时在 Google 上寻找东西。但是我似乎找不到任何可以牵手的东西,非常感谢您的帮助。尝试更清楚一点,我在这个问题上缺乏想法,即使听起来很经典。

【问题讨论】:

    标签: oracle11g jboss5.x


    【解决方案1】:

    当您调用 dbms_output(我假设是 put_line 方法)时,输出将被泵送到 stderr,而不是任何日志文件。

    我强烈建议您使用Log4PLSQL 之类的工具,或者创建一个日志表并拥有一个自主事务,将所有错误记录到该表中。


    您的基本错误记录过程如下所示:

    PROCEDURE log_errors(p_error_details varchar2) is
    
    PRAGMA AUTONOMOUS_TRANSACTION;
    
    BEGIN
      INSERT INTO ERROR_LOG(SR_NO, ERR_MSG, ERR_DATE) 
                      VALUES(ERR_LOG_SEQ.NEXTVAL, p_error_details, sysdate);
    
      COMMIT;
    END log_errors;
    

    错误记录过程的支持脚本:

    CREATE TABLE ERROR_LOG(SR_NO NUMBER, ERR_MSG VARCHAR2(2000), ERR_DATE DATE);
    
    CREATE SEQUENCE ERR_LOG_SEQ MINVALUE 1 START WITH 1 INCREMENT BY 1 CACHE 20;
    

    现在,只需添加一个异常处理程序并在 PL/SQL 过程中调用此过程即可解决问题。

    BEGIN
       ....
    EXCEPTION
      ... 
      WHEN OTHERS THEN
         log_errors(DBMS_UTILITY.FORMAT_ERROR_BACKTRACE);
    

    所有异常都会被处理并存储在ERROR_LOG表中。

    【讨论】:

    • 你能给我提供任何带有记录器的工作存储过程代码吗?
    • @user595014 已更新。此外,您之前的一些问题已得到解答,但您尚未将它们标记为已回答(单击答案旁边的复选框即可)。请查看之前的问题并将其标记为已接受
    猜你喜欢
    • 2013-06-08
    • 2023-03-27
    • 2016-10-22
    • 1970-01-01
    • 2011-12-15
    • 1970-01-01
    • 1970-01-01
    • 2013-04-08
    • 1970-01-01
    相关资源
    最近更新 更多