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”);


Створення таблиці для збереження записів, відхилених 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).

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*