Флэшбэк-оракул, что это такое

Обновлено: 04.07.2024


Oracle предлагает ряд продуктов и функций, обеспечивающих высокую доступность в случае незапланированного или запланированного простоя. К ним относятся Fast-Start Fault Recovery, Real Application Clusters (RAC), Recovery Manager (RMAN), решения для резервного копирования и восстановления, Oracle Flashback, секционирование, Oracle Data Guard, LogMiner, мультиплексированные файлы повторного журнала и онлайн-реорганизация.

Для исправления проблем, вызванных повреждением логических данных или ошибками пользователя, мы можем использовать Oracle Flashback.

  • Запрос Flashback (из Oracle 9i)
  • Таблица воспоминаний (от Oracle 10g)
  • Flashback Drop (от Oracle 10g)
  • Запрос версии Flashback (из Oracle 10g)
  • Запрос ретроспективной транзакции (из Oracle 10g)
  • База данных Flashback (от Oracle 10g)
  • Архив ретроспективных данных (от Oracle 11g)
  • Транзакция Flashback (из Oracle 11g)

Архив ретроспективных данных — начиная с Oracle 11g, ретроспективная обработка будет использовать журналы ретроспективной обработки, явно созданные для этой таблицы в FRA (область флэш-памяти/быстрого восстановления), не будет использовать отмену. Архивы данных Flashback могут быть определены для любой таблицы/табличного пространства. Архивы данных Flashback записываются специальным фоновым процессом, называемым FBDA, поэтому они меньше влияют на производительность. Может очищаться через равные промежутки времени автоматически.


  1. DBA должен включить табличное пространство отмены с соответствующим сроком хранения.
  2. Пользователь должен осознать ошибку до истечения срока хранения.
  3. Пользователь не должен выходить из сеанса.
  4. Даже внешний интерфейс должен быть включен с опцией Flashback (пакет).

(База данных Flashback и таблица Flashback)

Таблица Flashback использует информацию из табличного пространства отмены для восстановления таблицы. Это обеспечивает значительные преимущества по сравнению с восстановлением с носителя с точки зрения простоты использования, доступности и более быстрого восстановления.

Oracle Flashback сокращает время восстановления с нескольких часов до Минуты

Oracle Flashback сокращает время восстановления с часов до минут

Несмотря на превентивные меры, человеческие ошибки случаются. Технологии Oracle Database Flashback — это уникальный и богатый набор решений для восстановления данных, которые позволяют устранять человеческие ошибки путем выборочного и эффективного устранения последствий ошибки. До Flashback на повреждение базы данных могли уйти минуты, а на ее восстановление — часы. В Flashback исправление ошибки занимает примерно столько же времени, сколько потребовалось для ее совершения. Кроме того, время, необходимое для восстановления после этой ошибки, не зависит от размера базы данных, что является уникальной возможностью базы данных Oracle.

Возможности Flashback Technologies

Обзор

Flashback поддерживает восстановление на всех уровнях, включая строку, транзакцию, таблицу и всю базу данных. Flashback предоставляет постоянно растущий набор функций для просмотра и перемотки данных назад и вперед во времени, а именно:

  • База данных Flashback: восстановление всей базы данных до определенного момента времени с использованием журналов ретроспективного анализа, оптимизированных для Oracle, а не с помощью резервного копирования и прямого восстановления.
  • Таблица Flashback: легко восстанавливайте таблицы до определенного момента времени, полезно, когда логическое повреждение ограничено одной или набором таблиц, а не всей базой данных.
  • Flashback Drop: восстановить случайно удаленную таблицу. Он восстанавливает удаленную таблицу и все ее индексы, ограничения и триггеры из корзины (логического контейнера всех удаленных объектов).
  • Транзакция Flashback: отменяет эффекты одной транзакции и, при необходимости, всех зависимых от нее транзакций. с помощью одной операции PL/SQL или с помощью мастера Enterprise Manager.
  • Запрос ретроспективной транзакции: просмотрите все изменения, внесенные определенной транзакцией, полезно, когда ошибочная транзакция изменила данные в нескольких строках или таблицах.
  • Flashback Query: запрос любых данных в определенный момент времени в прошлом. Эту мощную функцию можно использовать для просмотра и логического восстановления поврежденных данных, которые могли быть случайно удалены или изменены.
  • Запрос ретроспективных версий: получение разных версий строки за указанный интервал времени, а не за один момент времени.
  • Total Recall: эффективно управляйте и запрашивайте долгосрочные исторические данные. Total Recall автоматически отслеживает каждое изменение, внесенное в данные, хранящиеся в базе данных, и поддерживает безопасный, эффективный и легкодоступный архив исторических данных.

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

Oracle9i представила пакет DBMS_FLASHBACK, позволяющий запросам ссылаться на более старые версии базы данных. В Oracle 10g эта технология продвинулась еще дальше, сделав ее более простой в использовании и более гибкой.

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

Запрос ретроспективного кадра

Подробнее об этой функции можно прочитать здесь.

Flashback Query позволяет запрашивать содержимое таблицы со ссылкой на определенный момент времени, используя предложение AS OF. По сути, это то же самое, что и функциональность DBMS_FLASHBACK или Oracle 9i, но в более удобной форме. Например.

Запрос ретроспективной версии

Подробнее об этой функции можно прочитать здесь.

Запрос версии Flashback позволяет отслеживать версии определенной строки в течение указанного периода времени с помощью предложения VERSIONS BETWEEN.

  • VERSIONS_STARTSCN или VERSIONS_STARTTIME — запуск SCN и TIMESTAMP, когда строка принимает это значение. Значение NULL возвращается, если строка была создана до нижней границы SCN или TIMESTAMP.
  • VERSIONS_ENDSCN или VERSIONS_ENDTIME – конечный SCN и TIMESTAMP, когда строка в последний раз содержала это значение. Значение NULL возвращается, если значение строки все еще является текущим по верхней границе SCN или TIMESTAMP.
  • VERSIONS_XID — идентификатор транзакции, которая создала строку в ее текущем состоянии.
  • VERSIONS_OPERATION — операция, выполняемая транзакцией ((I)nsert, (U)pdate или (D)delete)

Границы запроса версии также можно определить с помощью ключевых слов MINVALUE и MAXVALUE.

Запрос ретроспективной транзакции

Подробнее об этой функции можно прочитать здесь.

Запрос ретроспективной транзакции можно использовать для получения дополнительной информации о транзакциях, перечисленных в запросах ретроспективной версии. Значения столбца VERSIONS_XID из запроса ретроспективной версии можно использовать для запроса представления FLASHBACK_TRANSACTION_QUERY.

Таблица воспоминаний

Подробнее об этой функции можно прочитать здесь.

Команда FLASHBACK TABLE позволяет восстановить отдельные таблицы на определенный момент времени при соблюдении следующих требований.

  • У вас должна быть либо системная привилегия FLASHBACK ANY TABLE, либо объектная привилегия FLASHBACK для таблицы.
  • У вас должны быть права SELECT, INSERT, DELETE и ALTER для таблицы.
  • Для завершения операции в табличном пространстве отмены должно быть достаточно информации.
  • Для таблицы должно быть включено перемещение строк ( ALTER TABLE имя_таблицы ENABLE ROW MOVEMENT; ).

В следующем примере создается таблица, вставляются некоторые данные и возвращается к моменту, предшествующему вставке данных. Наконец, он возвращается к моменту после вставки данных.

Flashback таблиц также может выполняться с использованием временных меток.

Flashback Drop (Корзина)

Подробнее об этой функции можно прочитать здесь.

В Oracle 10g по умолчанию команда DROP TABLE перемещает таблицу в корзину (или переименовывает ее), а не удаляет. ТАБЛИЦА УДАЛЕНИЯ. Опцию PURGE можно использовать для окончательного удаления таблицы.

Корзина — это логическая коллекция ранее удаленных объектов, доступ к которым связан с привилегией DROP. Эта функция не использует журналы воспоминаний или отмены, поэтому она не зависит от других технологий воспоминаний. Содержимое корзины можно просмотреть с помощью команды SHOW RECYCLEBIN и очистить с помощью команды PURGE TABLE. В результате ранее удаленная таблица может быть восстановлена ​​из корзины.

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

Если объект удаляется и создается повторно несколько раз, все удаленные версии будут храниться в корзине с учетом свободного места. При наличии нескольких версий лучше ссылаться на таблицы через RECYCLEBIN_NAME . Для любых ссылок на ORIGINAL_NAME предполагается, что самым последним объектом является отброшенная версия в указанном вопросе. Во время операции flashback таблица может быть переименована.

Существует несколько вариантов очистки.

Применяется несколько ограничений в отношении корзины.

  • Доступно только для несистемных, локально управляемых табличных пространств.
  • У корзины нет фиксированного размера. Время, в течение которого объект остается в корзине, может варьироваться.
  • Объекты в корзине предназначены только для операций запроса (без DDL или DML).
  • Операции ретроспективного запроса должны ссылаться на имя корзины.
  • Таблицы и все зависимые объекты одновременно помещаются в корзину, восстанавливаются и удаляются из нее.
  • Таблицы с детальными политиками доступа не защищены корзиной.
  • Секционированные индексно-организованные таблицы не защищены корзиной.
  • Корзина не сохраняет ссылочную целостность.

Эта функция может быть отключена/включена на уровне сеанса или системы.

Содержимое корзины также можно отобразить с помощью представления DBA_RECYCLEBIN.

База данных воспоминаний

Подробнее об этой функции можно прочитать здесь.

Команда FLASHBACK DATABASE — это быстрая альтернатива выполнению неполного восстановления. Для восстановления базы данных у вас должна быть привилегия SYSDBA, а область мгновенного восстановления должна быть подготовлена ​​заранее.

В столбце FLASHBACK_ON представления V$DATABASE показано текущее состояние базы данных ретроспективного анализа.

Если база данных находится в режиме NOARCHIVELOG, ее необходимо переключить в режим ARCHIVELOG.

Флэшбэк должен быть включен перед выполнением любых операций ретроспективного кадра.

В Oracle 11gR2 этот процесс был упрощен, что позволяет включать и отключать базу данных ретроспективного просмотра без необходимости перезапуска базы данных. В результате вы можете просто выдать следующее.

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

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

Временное окно, доступное для ретроспективного кадра, определяется параметром DB_FLASHBACK_RETENTION_TARGET. Максимальное значение ретроспективного кадра можно определить, запросив представление V$FLASHBACK_DATABASE_LOG. Восстановить память можно только на момент времени после того, как в базе данных была включена ретроспектива, и с момента последней команды RESETLOGS.

Помимо SCN и меток времени, мы можем создавать точки восстановления и гарантированные точки восстановления. Точка восстановления — это просто текстовый псевдоним, представляющий SCN. Гарантированная точка восстановления означает, что база данных не удаляет журналы воспоминаний между этой точкой и текущим временем. Вы должны удалить все ненужные гарантированные точки восстановления.

Существующие точки восстановления можно отобразить с помощью представления V$RESTORE_POINT. Чтобы вернуться к этой точке восстановления, мы выполним следующую команду.

Функции ретроспективного запроса

Функции TIMESTAMP_TO_SCN и SCN_TO_TIMESTAMP были добавлены в SQL и PL/SQL для упрощения операций ретроспективного анализа.

Помимо запроса к представлению V$DATABASE, текущий SCN можно получить с помощью пакета DBMS_FLASHBACK.


Арун Кумар

Oracle Flashback позволяет переместить базу данных в прошлое. Вы можете использовать технологию flashback для перемещения всей базы данных или отдельной таблицы внутри базы данных.

Примечание. Только для работы с базой данных ретроспективного анализа необходимо включить базу данных ретроспективного анализа. Для всех остальных действий с воспоминаниями вам не нужно включать базу данных с воспоминаниями

Таблица воспоминаний перед удалением

Вы можете воспроизвести удаленную таблицу из корзины с помощью команды flashback table

Вы даже можете переименовать таблицу, перепрошивая ее обратно из корзины

Таблица воспоминаний

Вы можете вернуть таблицу к определенному SCN или времени в прошлом. Прежде чем вы сможете воспроизвести таблицу, вы должны включить перемещение строк

Теперь вы готовы вернуть таблицу к SCN или отметке времени

База данных воспоминаний

Мы можем переместить всю базу данных назад во времени к определенному номеру SCN или отметке времени. База данных Flashback должна быть уже включена в базе данных, чтобы использовать эту функцию.

Включить базу данных Flashback

Убедитесь, что параметр DB_RECOVERY_FILE_DEST установлен. Это место, где Oracle будет хранить журналы воспоминаний

Установите параметр DB_RECOVERY_FILE_DEST в соответствии с требованиями

Установите параметр DB_FLASHBACK_RETENTION_TARGET, который указывает верхний предел (в минутах) того, как далеко назад можно вернуть базу данных во времени

Включить базу данных Flashback, для которой требуется отказ базы данных

Создать образец пользователя

Давайте зафиксируем номер SCN базы данных, прежде чем создавать пользователя

Создайте пользователя FLASH_USR и попытайтесь подключиться к базе данных с тем же пользователем

База данных Flashback для SCN или временной метки

Предположим, что пользователь был создан по ошибке, и вы хотите вернуть базу данных в SCN непосредственно перед созданием пользователя. Выключение БД и монтирование при запуске

Перенести базу данных обратно в SCN перед созданием пользователя и открыть базу данных с помощью журналов сброса

Читайте также: