Четверг
25.04.2024
20:35


Форма входа


Приветствую Вас Гость | RSS
Статьи по ORACLE, PL/SQL, Java и немного по SHELL (BASH),...
Главная Каталог статей Регистрация Вход
Главная » Статьи » ORACLE » ORACLE, PL/SQL

LOG ERRORS (протоколировать ошибки)

В сервере Oracle Database 10 g Release 2 в операторах DELETE, INSERT, MERGE и UPDATE можно использовать новое предложение LOG ERRORS (протоколировать ошибки). Использование этого предложения в операторах массовой обработки данных позволяет записывать строки, при обработке которых произошли ошибки, и не откатывать весь этот оператор.

 

create table test_el(pole1 integer, pole2 varchar2(100));

 

exec dbms_errlog.create_error_log('test_el','test_el_errlog');

Cоздание таблицы для сохранения записей, отклоненных DML-предложением.

test_el_errlog - создаваемая таблица для логов

test_el - исходная таблица

 

Выполним оператор, в поле POLE1 пытаемся внести символ 'g'

insert into test_el values ('g','что-то') log errors into test_el_errlog reject limit unlimited;

Вставлено: 0 строк

 

Как видим вставки не произошло.

А теперь посмотрим сдержимое таблицы test_el_errlog

 

select * from test_el_errlog;

 

ORA_ERR_NUMBER$  ORA_ERR_MESG$           ORA_ERR_ROWID$  ORA_ERR_OPTYP$ ORA_ERR_TAG$ POLE1 POLE2

---------------------------------  ---------------------------             -----------------------------   -----------------------------  ------------------------- ---------- -----------

1722                            ORA-01722: invalid number                                 I                                                        g          что-то

 

 

ORA_ERR_NUMBER$ - номер ошибки

ORA_ERR_MESG$ - который показывает сообщение об ошибке.

ORA_ERR_ROWID$ - заполняется идентификатором этой ROWID при UPDATE и DELETE

ORA_ERR_OPTYP$ - записывается операция при которой возникла ошибка

ORA_ERR_TAG$ - незнаю назначения

Все столбцы таблицы test_el

 

В таблицу test_el_errlog (некорректные записи для таблицы test_el) будут записываться все строки, которые нарушают ограничения; например, будут протоколироваться ошибки, вызванные слишком большими значениями столбцов, нарушениями ограничений целостности (ограничения NOT NULL, уникальности, ссылочной целостности и проверочные), ошибки,

возникающие при выполнении триггеров, ошибки преобразования типа столбца подзапроса к типу соответствующего столбца таблицы, ошибки распределения строк по секциям и некоторые ошибки при выполнении оператора MERGE (обновление со вставкой), например, ORA-30926: Unable to get a stable set of rows for MERGE operation - невозможно получить устойчивый набор строк для операции MERGE.

Когда возникает ошибка, строка, вызвавшая ее, протоколируется в таблице "некорректных записей" наряду с номером ошибки, текстом сообщения об ошибке, типом операции (INSERT, UPDATE или DELETE), а также с идентификатором этой строки ROWID (для операций UPDATE и DELETE).

Категория: ORACLE, PL/SQL | Добавил: Akarak (25.06.2009)
Просмотров: 6479 | Теги: ORA_ERR_NUMBER$, ORA_ERR_ROWID$, ORA_ERR_MESG$, create_error_log, dbms_errlog, LOG ERRORS, log errors into, dbms_errlog.create_error_log, ORA_ERR_OPTYP$ | Рейтинг: 5.0/2
Всего комментариев: 0
Имя *:
Email *:
Код *:
Меню сайта

Категории раздела
ORACLE, PL/SQL [36]
Скрипты DDL [3]
Скрипты по управлению объектами
Встроенные функции SQL [2]
Встроенные функции SQL

Интересные сайты
  • sql.ru
  • all-oracle.ru
  • oranet.ru
  • oracloid.ru
  • forum.vingrad.ru

  • Статистика

    Онлайн всего: 1
    Гостей: 1
    Пользователей: 0

    Поиск

    Copyright MyCorp © 2024
    Используются технологии uCoz