如何查看oracle过程的日志(dbms_output语句)

时间:2011-08-02 05:00:20

标签: oracle11g jboss5.x

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

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

我花了好几个小时在Google上寻找一些东西。但是,我似乎无法找到任何牵手,你的帮助非常感谢。试着更清楚,我在这个问题上缺乏想法,即使它听起来像是经典。

1 个答案:

答案 0 :(得分:3)

当你调用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表中。