其实我是从应用服务器上的java文件调用oracle过程的。我想调试我的oracle过程,所以我在oracle过程中将语句写为“dbms_output”,但是不知道oracle服务器上的日志存储在哪里,实际上我想在oracle过程中打印一些变量值来跟踪我的问题。
如果你知道从java文件调试oracle过程调用的任何其他调试机制,请分享解释。
我花了好几个小时在Google上寻找一些东西。但是,我似乎无法找到任何牵手,你的帮助非常感谢。试着更清楚,我在这个问题上缺乏想法,即使它听起来像是经典。
答案 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
表中。