Применяется к:
База данных Oracle: 11gR2
Проблема:
Часто при проведении сравнительных тестов перед началом новой серии необходимо загрузить чистую базу данных. Один из способов получения чистой базы данных — воссоздание всей базы данных перед каждым запуском теста, но в зависимости от размера ИТ-инфраструктуры этот подход может быть очень трудоемким или неэффективным.
Решение.
В этой статье описано, как использовать функцию flashback Oracle для быстрого восстановления состояния базы данных, которое существовало перед рабочей нагрузкой. В частности, в этой статье описан порядок использования «гарантированных точек восстановления».
Точка восстановления
Точка восстановления — это только имя, связанное с меткой времени или SCN базы данных. Можно создать обычную или гарантированную точку восстановления. Разница между этими двумя заключается в том, что гарантированная точка восстановления позволяет вернуться к восстанавливаемому состоянию независимо от значения параметра инициализации DB_FLASHBACK_RETENTION_TARGET, т. е. она всегда доступна (если достаточно места в области быстрого восстановления).
ПРИМЕЧАНИЕ. В этой статье ведение журнала Flashback не было включено.
Гарантированная точка восстановления
Предварительные условия. Создание гарантированной точки восстановления требует соблюдения следующих предварительных условий:
- пользователь должен иметь системные привилегии SYSDBA,
- необходимо создать область быстрого восстановления,
- база данных должна быть в режиме ARCHIVELOG.
Создание гарантированной точки восстановления
После создания или переноса свежей базы данных, прежде всего необходимо создать гарантированную точку восстановления, чтобы можно было вернуться к ней перед каждой новой рабочей нагрузкой. Порядок действий:
- $> su – oracle
- $> sqlplus / as sysdba;
- Проверьте, включен ли ARCHIVELOG
SQL> select log_mode from v$database;
Если на шаге 3 указано, что ARCHIVELOG не включен, перейдите к шагу 8 ниже.
- SQL> shutdown immediate;
- SQL> startup mount;
- SQL> alter database archivelog;
- SQL> alter database open;
- SQL> create restore point CLEAN_DB guarantee flashback database;
где CLEAN_DB — имя, заданное для гарантированной точки восстановления.
Просмотр гарантированной точки восстановления
SQL> select * from v$restore_point;
Проверьте информацию о созданной точке восстановления. Также запишите номер SCN для справки. Мы будем называть его «справочный номер SCN»
Возврат к гарантированной точке восстановления
Теперь, чтобы вернуть базу данных к гарантированной точке восстановления, выполните следующие действия:
- $> su – oracle
- $> sqlplus / as sysdba;
- SQL> select current_scn from v$database;
- SQL> shutdown immediate;
- SQL> startup mount;
- SQL> select * from v$restore_point;
- SQL> flashback database to restore point CLEAN_DB;
- SQL> alter database open resetlogs;
- SQL> select current_scn from v$database;
Сравните SCN#, полученный на шаге 9 выше, со справочным SCN#.
ПРИМЕЧАНИЕ. Номер SCN, начиная с шага 9 выше, может не полностью совпадать со справочным номером SCN, но он будет достаточно похож.
Справочные материалы: