Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ответы к экзамену ИИС.doc
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
445.95 Кб
Скачать

15. Сопровождение отката транзакций Виды undo-сегментов

Для отката транзакций используется информация, предварительно сохраненная в особых сегментах. Они называются сегментами отмены (undo segments). Undo-сегмент используется для хранения исходного значения, когда какой-либо процесс изменяет информацию БД. В нем хранится информация о месте расположения данных, а также сами данные в первоначальном виде. Заголовок undo-сегмента содержит таблицу транзакций, содержащую информацию о текущих транзакциях, которые используют этот заголовок. Простая транзакция может использовать для хранения своих записей только один undo-сегмент. Один undo-сегмент может использоваться несколькими транзакциями.

Откат транзакции

Во время изменения транзакцией строк таблицы в undo-сегменте сохраняется старый образ данных. Исходные данные восстанавливаются, когда значение из undo-сегмента записывается обратно в строку, если происходит откат транзакции.

Восстановление транзакции

Сервер должен выполнить откат незафиксированных изменений пр undo-сегмента открытии БД после сбоя экземпляра. Эта отмена называется восстановлением транзакции и возможна только в том случае, если информация об изменениях undo-сегмента также поддерживается журнальными файлами.

Целостность чтения

Во время обработки какой-либо транзакции другие пользователи БД не должны иметь доступ к незафиксированным изменениям. Недопустимо, чтобы какой-либо команде были доступны изменения, зафиксированные уже после начала ее выполнения. Старые значения из undo-сегментов предоставляют читателям целостный образ информации из БД для текущей команды. Сервер гарантирует, что любая команда получает целостный образ данных фиксированный на какой-то момент времени, даже если в текущий момент данные изменяются другими транзакциями. Когда сервер начинает выполнение команды выборки, undo-сегмента он определяет текущий номер изменений (SCN) и не позволяет данной команде получить доступ к информации, которая не была зафиксирована до этого SCN.

Undo-сегмент system

Создается в табличном пространстве SYSTEM во время создания базы данных. Этот undo-сегмент используется только для изменений, касающихся объектов табличного пространства SYSTEM.

Табличное пространство типа undo

  • Табличное пространство типа UNDO может быть создано в момент создания базы данных при помощи команды

CREATE DATABASE db01

UNDO TABLESPACE und01 DATAFILE 'undoldb01.dbf' SIZE 20M AUTOEXTEND ON;

  • Или может быть создано позднее по команде

CREATE UNDO TABLESPACE undol DATAFILE 'undoldb0l.dbf' SIZE 20M;

Изменение табличного пространства типа UNDO

Команда alter tablespace позволяет произвести изменения в табличном пространстве undo:

  • ADD DATAFILE

  • RENAME

  • DATAFILE [ONLINE | OFFLINE]

  • BEGIN BACKUP

  • END BACKUP

Пример:

Файл данных добавляется к табличному пространству undo :

ALTER TABLESPACE undotbs

ADD DATAFILE 'undotbs2.dbf' SIZE 30M

AUTOEXTEND ON;

Переключение табличных пространств типа undo

  • Вы можете переключить использование табличного пространства UNDO с одного на другое.

  • Только одно табличное пространство undo может быть назначено экземпляру в какой-то момент времени.

  • Более одного табличного пространства undo может быть создано для экземпляра, но только одно может быть активным.

  • Переключение выполняется динамически по команде alter system

ALTER SYSTEM SET UNDO_TABLESPACE=UNDOTBS2;

Удаление табличного пространства типа undo

Команда drop tablespace используется для удаления табличного пространства undo

DROP TABLESPACE UNDOTBS2;

  • Табличное пространство undo может быть удалено, если только оно не используется экземпляром в текущий момент времени.

  • Undo-сегмент, имеющий статус PENDING OFFLINE, содержит данные активных транзакций. Если транзакции завршины, то можно удалять табличное пространство.

  • Чтобы удалить табличное пространство undo:

- переключитесь на новое табличное пространство UNDO ;

- удалите табличное пространство после завершения текущих транзакций.

Квоты на использование текущего табличного пространства undo

  • Длинные транзакции - результат неверного программирования, потребляющие значительные ресурсы.

  • Квоты на табличное пространство UNDO задают максимальные ресурсные ограничения для группы пользователей.

  • UNDO_POOL - директива Resource Manager, определяющая размер пространства для группы потребителей ресурсов.

  • Когда группа превышает лимит, новые транзакции для группы невозможны, пока текущая транзакция не закончится нормально или аварийно и не освободит пространство отката.

Получение информации об Undo-сегментах

-Представления словаря данных

DBA_ROLLBACK_SEGS

-Динамические представления производительности

V$ROLLNAME, V$SESSION,

V$TRANSACTION, V$ROLLSTAT, V$UNDOSTAT