, ,

DML Error Logging

вторник, 26 мая 2009 г. 0 коммент.

В 10.2 наконец-то появилось логирование ошибок при выполнение dml команд insert, update, delete и merge.

Почитать хорошую статью можно тут: DML Error Logging in Oracle 10g Database Release 2
В документации пример можно посмотреть здесь: Inserting Data with DML Error Logging

Единственно что нужно, это уточнить пару моментов:

  1. Команда REJECT LIMIT указывает на максимально количество ошибок, которое может произойти, прежде чем statement "отвалится". Представим, что у нас при выполнении statement произойдет 2 ошибки, что будет происходить, если при разных значениях REJECT LIMIT.

  2. REJECT LIMITОшибка?ЛогированиеТранзакция
    0отрайзится ошибкав логе будет 1 строкапроизойдет автоматический rollback
    1отрайзится ошибкав логе будет 2 строкипроизойдет автоматический rollback
    2, больше и UNLIMITEDошибки не будет!в логе будет 2 записинужно будет подтвердить или откатить транзацию.

    Строки в табличке для логирования появятся в любом случае, так как они добавляются в автономной транзакции.
  3. Можно использовать 'simple_expression' для последующей выборки из таблицы логирования по колонке ORA_ERR_TAG$. Особенно это полезно, при параллельном выполнении команд.
  4. Логирование не работает в следующих случаях:

    • есть отложенное ограничение;
Читать полностью