2011-08-02 62 views
3

從出現在應用程序服務器的Java文件其實我打電話Oracle過程的日誌。我想調試我的oracle過程,所以我在oracle過程中將語句寫爲「dbms_output」,但不知道oracle服務器上存儲日誌的位置,我想在oracle過程中打印一些變量值來跟蹤我的問題。如何查看Oracle過程(DBMS_OUTPUT語句)

如果您知道調試Oracle過程從Java文件調用任何其它調試機制,請分享解釋。

我花了幾個小時尋找關於谷歌的東西。然而,我似乎無法找到任何牽着手的東西,非常感謝您的幫助。試着更清楚一點,我在這個問題上缺乏創意,即使它聽起來像一個經典。

回答

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表。

+0

u能爲我提供任何記錄儀工作的存儲過程的代碼? – user595014

+1

@ user595014已更新。此外,您之前的一些問題已得到解答,但您未將其標記爲已回答(點擊回答旁邊的複選框即可)。檢查以前的問題並將其標記爲已接受 – Sathya