Сбой пользовательского процесса

Сбой оператора SQL

Различные типы сбоев

Основные типы сбоев: сбой оператора SQL, сбой пользовательского процесса, машинный сбой, сбой распределенной транзакции, сбой экземпляра и дисковый сбой/потеря файла.

 

В Oracle такой оператор DML, как UPDATE, выполняется или для всех строк, удовлетворяющих предложению WHERE, или вообще ни для одной из них.

Сбой оператора может произойти по разным причинам. Например, когда вставляются строки в таблицу, таблица может увеличиться в объеме занятой внешней памяти; если программное обеспечение базы данных обнаруживает, что нет доступного свободного пространства, оно возвращает пользователю сообщение об ошибке. Oracle не оставляет вставленными только половину строк. Если сбой происходит на полпути выполнения оператора, уже измененные строки возвращаются к исходному состоянию. Это называется откатом уровня оператора.

Другие операторы DML в транзакции остаются в отложенном состоянии, готовом для фиксации или отката транзакции.

 

Когда пользовательский процесс, соединившийся с базой данных, завершается ненормально, это означает его сбой. Например, администратор системы мог бы ликвидировать пользовательский процесс. Если это происходит, фоновый процесс Oracle PMON автоматически отменяет какие-либо изменения для текущей транзакции. Все изменения, уже фиксированные в транзакции пользовательским процессом, сохранены, но вставки, модификации и удаления со времени последней фиксации транзакции или отката отменяются.

Кроме того, фоновый процесс PMON освобождает все блокировки, сегменты отката и другие ресурсы системы, захваченные пользовательским процессом во время работы. Участия администратора базы данных для этого не требуется. База данных продолжает функционировать как обычно, и таблицы доступны для других пользователей. (Небольшая задержка возможна, пока блокировки будут освобождены.)