Показать сообщение отдельно
  #8  
Старый 24.09.2009, 15:23
Marley Marley вне форума
Senior Member
 
Регистрация: 19.09.2009
Сообщений: 7,211
По умолчанию Мониторинг отмен



Мониторинг отмен

Большую часть времени экземпляр сам автоматически управляет информацией отмены. Однако иногда требуется вмешательство АБД. Это происходит, когда:

недостаточно свободного пространства для данных отмены;
пользователи получают сообщения об ошибке ORA-01555 snapshot too old.

Информация отмены, сгенерированная транзакцией, всегда удерживается до ее окончания. Поэтому, когда удаляются или изменяются очень большие объемы данных, табличное пространство отмены должно быть достаточно большим, чтобы вместить первоначальные данные. Операция вставки потребляет очень малое пространство, так как первоначальный образ вставляемого данного - это пустое (null) значение.

Представьте ситуацию, когда удаляются все строки из таблицы, размером 50 GB:

Код:
SQL> DELETE FROM имя_действительно_большой_таблицы;
В табличном пространстве типа undo потребуется место для 50 GB первоначальной информации, поскольку пользователь может захотеть откатить изменения. Когда в табличном пространстве нет места для данных отмены, пользователь получает сообщение об ошибке :

ORA-01650: unable to extend rollback segment

Профилактический мониторинг помогает выявить проблемы, связанные с нехваткой места в табличном пространстве, до того, как это скажется на работе пользователей.

Перед администратором может возникнуть и другая проблема, когда запросу потребуются данные, переписанные новой информацией отмены. Это может произойти, если запрос долго выполняется или в нем выбираются старые данные (flashback query). Когда запросу потребуется "моментальный снимок" ("snapshot") на какой-то момент в прошлом и информация отмены для его восстановления больше не существует, будет выдана следующая ошибка:

ORA-01555: snapshot too old

Такое может произойти, потому что база данных Oracle предоставляет пользователю целостный образ данных на момент начала выполнения запроса. Если же при выполнении запроса в таблице обнаруживаются незафиксированные данные, Oracle производит чтение информации отмены, чтобы предоставить зафиксированные данные. Это целостное чтение (read consistency). Когда запрос выполняется так долго, что успевает произойти фиксация изменений, после которой уже не блокируемая системой информация переписывается новыми данными, тогда нельзя предоставить целостный образ данных на момент начала выполнения этого долго выполняющегося запроса. Поэтому следует конфигурировать время удержания таким образом, чтобы оно соответствовало запросу с наибольшим временем выполнения.
__________________
Телеграм чат
Ответить с цитированием