Регистрация ошибок в SQL*Plus

Стас Белков

Стас Белков

Автор статьи. Известный специалист в мире IT. Консультант по продуктам и решениям Oracle. Практикующий программист и администратор баз данных. Подробнее.

Для просмотра ошибок, которые могут возникать при выполнении того или иного оператора PL/SQL, в SQL*Plus служит команда show errors. Однако фиксироваться в базе данных выявляемые подобным образом ошибки не будут. В Oracle Database 11g для сохранения ошибок SQL PL/SQL и SQL*Plus в специальной таблице можно применять новый механизм регистрации ошибок, настраиваемый с помощью SQL*Plus-команды SET.В частности, при выполнении команды SET ERRORLOGGING ON база данных будет далее записывать все ошибки, возникающие в результате выполнения операторов SQL или PL/SQL, в таблицу по имени sperrolog. Вместо предлагаемой по умолчанию таблицы sperrolog для хранения ошибок можно также задавать и собственную таблицу.

При обнаружении ошибок в этой таблице будут сохраняться следующие сведения:

  • имя пользователя;
  • время возникновения ошибки;
  • имя сценария, если таковой имел место;
  • назначенный пользователем идентификатор;
  • сообщение об ошибке;
  • оператор, приведший к возникновению данной ошибки.

По умолчанию механизм регистрации ошибок находится в отключенном состоянии:

SQL> show errorlogging
errorlogging is OFF
SQL>

Активизировать его можно с помощью следующей команды SQL*Plus:

SQL> set errorlogging on; 

После включения механизма регистрации нужно обязательно удостовериться в том,что он действительно был включен, выдав такую команду:

SQ> connect hr/hr
Connected.
SQL> show errorlogging
errorlogging is ON TABLE HR.SPERRORLOG
SQL> 

Обратите внимание, что база данных не только подтверждает, что механизм регистрации ошибок был включен, но и также показывает, в какой именно таблице будут сохраняться сообщения об ошибках (hr.sperrorlog). Права на владение этой таблицей предоставляются пользователю, включившему механизм регистрации ошибок. В данном случае таковым является HR.

После включения механизма регистрации ошибок можно выполнять запросы к таблице ошибок и получать информацию о сообщениях, сгенерированных при выполнении того или иного проблемного оператора SQL или PL/SQL, а также прочие сведения.

Ниже приведен пример:

SQL> select username,statement,message
from sperrorlog;
USERNAME                      STATEMENT                     MESSAGE
---------            ---------------------------        --------------------------
HR                     create table employees as      ORA-00955: name is already
                       select * from employees        used by an existing object
                                                      имя уже используется
                                                      существующим объектом
HR                     select names from employees    ORA-00904: "NAMES":
                                                      invalid identifier
                                                      недопустимый идентификатор
SQL>

В этом примере первое сообщение об ошибке показывает, что оператор create table,выданный пользователем HR, выполнить не удалось из-за того, что таблица с именем EMPLOYEES уже существует, а второе — что выполнение оператора SELECT завершилось ошибкой по той причине, что он ссылался на несуществующий столбец в таблице EMPLOYEES. Таблица регистрации ошибок может оказаться очень полезной при выявлении и устранении ошибок в коде SQL и PL/SQL.

Вас заинтересует / Intresting for you:

Административные команды в SQL...
Административные команды в SQL... 4163 просмотров Antoniy Tue, 21 Nov 2017, 13:18:46
Использование SQL*Plus и Oracl...
Использование SQL*Plus и Oracl... 13430 просмотров aleksandr Tue, 21 Nov 2017, 13:19:25
Фиксация изменений DML-команд ...
Фиксация изменений DML-команд ... 2044 просмотров Дэйзи ак-Макарова Tue, 21 Nov 2017, 13:18:46
Установка значений для наиболе...
Установка значений для наиболе... 4145 просмотров Andrew Tue, 21 Nov 2017, 13:18:46
Войдите чтобы комментировать