Как посмотреть логи процедуры оракула (инструкция dbms_output) - PullRequest
4 голосов
/ 02 августа 2011

На самом деле я вызываю процедуру оракула из файла Java, присутствующего на сервере приложений. Я хочу отладить свою процедуру оракула, поэтому я пишу оператор в процедуре оракула как "dbms_output", но не знаю, где хранится журнал на сервере оракула, на самом деле я хочу напечатать некоторое значение переменной в процедуре оракула для отслеживания моей проблемы. *

Если вам известен какой-либо другой механизм отладки для вызова процедуры оракула из файла Java, пожалуйста, поделитесь объяснением.

Я часами искал что-то в Google. Однако я не могу найти ничего, что держит руку, Ваша помощь очень ценится. Постарайтесь быть более понятным, мне не хватает идей в этой проблеме, даже если это звучит как классика.

1 Ответ

3 голосов
/ 02 августа 2011

Когда вы вызываете 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.

...