Flashback Transaction: механизм отмены нежелательных транзакций в Oracle

Flashback Transaction в Oracle Database

Средство Flashback Transaction служит для отмены нежелательной транзакции. Отменить можно не только одну нежелательную транзакцию, но также все зависимые от нее транзакции — единственным щелчком. Если для этого используется Database Control, а не процедура PL/SQL, то средство Flashback Transaction обеспечивает намного лучшую альтернативу по сравнению восстановлению резервных копий для отмены транзакций, поскольку при этом база данных Oracle остается в онлайновом режиме для пользователей.

Данные отмены ключ к средству Flashback Transaction. База данных Oracle Database использует данные отмены для создания и выполнения необходимых компенсирующих транзакций, которые отменят нежелательную транзакцию.

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

 

Использование Flashback Transaction

Отменять транзакции можно либо через интерфейс Database Control, либо выполняя процедуры PL/SQL. Чтобы отменить транзакцию вручную, используйте процедуру DBMS_FLASHBACK.TRANSACTION_BACKOUT. Параметры процедуры TRANSACTION_BACKOUT показаны ниже.

PROCEDURE TRANSACTION_BACKOUT
Argument Name Type In/Out Default?
----------------------------   ----------------- ------ --------
NUMTXNS                        NUMBER            IN
XIDS                           XID_ARRAY         IN
OPTIONS                        BINARY_INTEGER    IN     DEFAULT
SCNHINT                        NUMBER            IN     DEFAULT
PROCEDURE TRANSACTION_BACKOUT
Argument Name                  Type              In/Out Default?
----------------------------   ----------------- ------ --------
NUMTXNS                        NUMBER            IN
XIDS                           XID_ARRAY         IN
OPTIONS                        BINARY_INTEGER    IN     DEFAULT
TIMEHINT                       TIMESTAMP         IN
PROCEDURE TRANSACTION_BACKOUT
Argument Name                  Type              In/Out Default?
----------------------------   ----------------- ------ --------
NUMTXNS                        NUMBER            IN
NAMES                          TXNAME_ARRAY      IN
OPTIONS                        BINARY_INTEGER    IN     DEFAULT
SCNHINT                        NUMBER            IN     DEFAULT
PROCEDURE TRANSACTION_BACKOUT
Argument Name                  Type              In/Out Default?
---------------------------- -----------------   ------ --------
NUMTXNS                      NUMBER              IN
NAMES                        TXNAME_ARRAY        IN
OPTIONS                      BINARY_INTEGER      IN     DEFAULT
TIMEHINT                     TIMESTAMP           IN

Как видите, процедура перегружена. Вот что означают ее разные параметры.

  • NUMTXNS. Показывает количество транзакций, подлежащих отмене.
  • NAMES. Определяет список транзакций для возврата, который можно передать в форме массива, используя XID-идентификаторы или имена транзакций.
  • TIMEHINT. Позволяет специфицировать время, если транзакции идентифицируются по именам.
  • SCNHINT. Позволяет специфицировать номер SCN для идентификации транзакций.
  • OPTIONS. Позволяет специфицировать параметры возврата. Можно использовать следующие значения параметра OPTIONS.
  • Cascade. Используйте это для возврата дочерних транзакций перед возвратом родительских транзакций.
  • Nocascase. Используйте это, если транзакция не имеет никаких зависимых транзакций.
  • Nocascase_force. Используйте это для возврата транзакций, игнорируя все зависимые транзакции.
  • Nocascase_only. Используйте это для возврата только изменений, проведенных в неконфликтующих строках транзакции.

 

Мониторинг возврата транзакций

Для просмотра отчетов, сгенерированных выполнением процедуры TRANSACTION_BACKOUT можно опрашивать представления словаря данных DBA_FLASHBACK_TXN_STATE и DBSA_FLASHBACK_TXN_REPORT.

Теперь рассмотрим механизмы Flashback Transaction Query и Flashback Table более подробно в этой статье.

Вас заинтересует / Intresting for you:

Восстановление баз данных Orac...
Восстановление баз данных Orac... 9496 просмотров Дэн Tue, 21 Nov 2017, 13:18:05
Выполнение восстановления базы...
Выполнение восстановления базы... 9781 просмотров Дэн Tue, 21 Nov 2017, 13:18:05
Механизм Flashback Data Archiv...
Механизм Flashback Data Archiv... 4662 просмотров Светлана Комарова Tue, 21 Nov 2017, 13:18:05
Восстановление Oracle RAC в де...
Восстановление Oracle RAC в де... 2499 просмотров Mon, 07 May 2018, 11:31:36
Войдите чтобы комментировать

osha_osha аватар
osha_osha ответил в теме #9918 3 года 3 мес. назад
Благодарю за лестную оценку!)
AidaU аватар
AidaU ответил в теме #9916 3 года 3 мес. назад
Спасибо за внятное объяснение работы механизма Flashback Transaction в СУБД Oracle Database!