Выполнение восстановления базы данных Oracle с помощью утилиты RMAN

Rman восстановит базу данных Oracle из резервной копииВо время восстановления очень важно иметь под рукой правильные файлы журналов, и утилита RMAN с ее способностью автоматически поддерживать необходимые файлы может очень сильно в этом помочь. В частности, она может помочь выполнить все пользовательские виды восстановления, а также предоставляет несколько дополнительных преимуществ, которые будут перечислены в следующем разделе. В этой статье основное внимание удаляется именно приемам выполнения восстановления с помощью RMAN, хотя пользовательские методы тоже рассматриваются, хотя и кратко.

Как уже объяснялось в наших блогах, с помощью утилиты RMAN можно создавать как копии образов, подобные копиям файлов операционной системы, так и понятные только самой RMAN наборы резервных копий (backup). Созданные с помощью RMAN копии образов можно напрямую использовать для выполнения восстановления базы данных Oracle. Что же касается наборов резервных копий, то перед восстановлением их необходимо сначала извлечь с помощью команды RESTORE.


На заметку! Для переноса табличных пространств через Rman можно использовать резервные копии базы данных (backup) вместо самих файлов базы данных. Такой подход избавляет от необходимости делать файлы данных работающей базы данных доступными только для чтения лишь для того, чтобы осуществить перенос табличных пространств.


 

Преимущества, которые предоставляет утилита RMAN для восстановления

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

Утилита RMAN восстанавливает файлы данных из резервных копий (backup) и применяет необходимые архивные журналы повторного выполнения для приведения базы данных в актуальное состояние. Она сама знает, благодаря просмотру своего каталога восстановления, какие файлы ей необходимы. А это, следовательно, позволяет избегать ручного, чрезмерно интенсивного в плане усилий и подверженного ошибкам вмешательства, без которого не обходится ни один пользовательский метод восстановления.


На заметку! Каталог восстановления, о котором рассказывалось в главе 15, предоставляет настолько много преимуществ, что нужно обязательно его использовать, если RMAN является частью стратегии резервного копирования и восстановления.


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

 

Применение команды VALIDATE BACKUP для проверки действительности резервных копий, сделанных с помощью RMAN

В случае применения RMAN для выполнения связанных резервным копированием и восстановлением задач, можно легко удостовериться не только в том, что определенная резервная копия существует, но и также в том, что она является пригодной для использования. Команда LIST позволяет просматривать информацию о наборах резервных копий, прокси-копиях и копиях образов, записанных в репозитории RMAN, команда LIST BACKUP — информацию только о наборах резервных копий, фрагментах резервных копий и прокси-копиях, команда LIST COPY — информацию о копиях всех файлов данных, архивных журналах и копиях образов этих архивных журналов, а команда LIST BACKUP SUMMARY — сводную информацию обо всех резервных копиях RMAN.

Все эти команды LIST отображают сведения как о пригодных, так и о непригодных резервных копиях, о резервных копиях, которые как могут, так и не могут использоваться для восстановления, и о резервных копиях, у которых истек срок хранения или которые больше не доступны. Для получения перечня только тех резервных копий, которые можно использовать для выполнения восстановления, нужно указать вместе с командой LIST параметр RECOVERABLE.

Команда VALIDATE BACKUPSET позволяет проверять пригодность резервных копий RMAN. Это означает, что можно сначала получить информацию о наборе резервных копий с помощью команды LIST BACKUP, а затем проверить этот набор на пригодность посредством команды VALIDATE BACKUPSET.

Ниже приведен пример применения команды VALIDATE BACKUPSET

RMAN> VALIDATE BACKUPSET 1;
allocated channel: ORA_DISK_1
channel ORA_DISK_1: sid=155 devtype=DISK
channel ORA_DISK_1: starting validation of datafile backupset
channel ORA_DISK_1: reading from backup piece . . .
channel ORA_DISK_1: restored backup piece 1
piece handle=/u01/app/oracle/10.2.0/db_3/flash_recovery_area/NICKO...
channel ORA_DISK_1: validation complete, elapsed time: 00:00:34
RMAN>

В этом примере сообщение validation complete (проверка завершена) в последней строке свидетельствует о том, что RMAN считает указанный набор резервных копий действительным и пригодным для выполнения процедуры восстановления.

 

Применение команды RESTORE...VALIDATE

Команда RESTORE...VALIDATE позволяет проверять, находится ли определенный интересующий объект в наборах резервных копий RMAN. Например:

RMAN> RESTORE TABLESPACE users VALIDATE;
Starting restore at 29-JUN-05
. . .
Finished restore at 29-JUN-05
RMAN>

В этом примере команда RESTORE TABLESPACE users VALIDATE, по сути, просит утилиту RMAN показать, получится ли у нее восстановить табличное пространство users из своих наборов резервных копий. Сообщение Finished restore (Восстановление завершено) свидетельствует о том, что табличное пространство users удастся восстановить, если потребуется — реальное восстановление этого табличного пространства RMAN не выполняет.

 

Применение команды RESTORE...PREVIEW

Для успешного восстановления базы данных или какой-то ее части утилите RMAN требуется иметь доступ ко всем необходимым файлам данных и архивным журнальным файлам этой базы данных. В RMAN предусмотрен удобный параметр PREVIEW, который можно использовать с командой RESTORE и тем самым выяснять, какие файлы резервных копий потребуются для выполнения конкретной операции восстановления, а, следовательно, проверять, все ли из этих файлов доступны, перед запуском команды RESTORE.

Ниже приведено несколько примеров применения команды RESTORE с параметром PREVIEW:

RMAN> RESTORE DATABASE PREVIEW;
RMAN> RESTORE TABLESPACE users PREVIEW;
RMAN> RESTORE DATAFILE 3 PREVIEW;

Команда RESTORE...PREVIEW отображает детальный отчет обо всех резервных копиях, которые потребуются для успешного выполнения команды RESTORE. Если необходимо получить лишь сводный отчет, можно использовать параметр PREVIEW SUMMARY, как показано ниже: 

RMAN> RESTORE DATABASE PREVIEW SUMMARY;
. . .
List of Backups
. . .
List of Archived Log Copies
. . .
Finished Restore at 29-JUN-05
RMAN>

 

Определение того, какие файлы нуждаются в восстановлении

К возникновению необходимости в выполнении восстановления может привести утрата управляющих файлов или файлов данных. Работа базы данных завершается немедленно, даже если недоступной становится лишь какая-то одна из мультиплексированных копий управляющих файлов. В таком случае потребуется предпринять соответствующие меры, которые будут перечислены позже в этой главе, в разделе “Восстановление после потери управляющих файлов”.

Для выяснения, какие именно файлы данных нуждаются в восстановлении, можно воспользоваться следующим оператором SQL: 

SQL> SELECT FILE#, ERROR, ONLINE_STATUS, CHANGE#, TIME
FROM V$RECOVER_FILE;

Для получения более подробной информации о файлах, которые может потребоваться восстанавливать, можно соединить представления V$DATAFILE и V$TABLESPACE, как показано ниже: 

SQL> SELECT r.FILE# AS df#, d.NAME AS df_name, t.NAME AS tbsp_name,
d.STATUS, r.ERROR, r.CHANGE#, r.TIME
FROM V$RECOVER_FILE r, V$DATAFILE d, V$TABLESPACE t
WHERE t.TS# = d.TS#
AND d.FILE# = r.FILE#;

 

Поддерживаемые RMAN процедуры восстановления

В случае применения RMAN никакой особой работы выполнять не требуется, поскольку RMAN автоматизирует весь процесс восстановления. В частности, для восстановления базы данных (или ее части) применяются следующие команды RMAN.

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

Утилита Rman восстановит восстановит Oracle из backup

 

Выполнение восстановления с использованием инкрементных резервных копий

Создание полных копий образов базы данных каждую ночь сопровождается определенными накладными расходами, а выполнение процедур восстановления носителя с использованием архивных журналов занимает довольно много времени. Для сокращения этих накладных расходов и времени восстановления можно воспользоваться утилитой RMAN и провести накат копии образа файла данных вперед до состояния, соответствующего текущему моменту во времени, просто применив к ней инкрементные резервные копии. Например, можно сделать так, чтобы основная резервная копия уровня 0 создавалась только раз в неделю, скажем, в воскресенье, а во все остальные дни, начиная с понедельника, к ней просто применялась создаваемая в этот день инкрементная резервная копия. Тогда в любой день недели после объединения подготовленной в этот день инкрементной резервной копии с исходной воскресной резервной копией уровня 0 будет получаться новая версия резервной копии, обновленная в соответствии со всеми изменениями текущего дня.

При использовании инкрементных резервных копий для восстановления осуществляется обновление исходных копий образов изменениями, которые были внесены вплоть до того SCN-номера (System Change Number — системный номер изменения), на котором была сделана последняя инкрементная резервная копия. После применения инкрементных резервных копий необходимо, как обычно, применить все архивные журналы (которые были получены с момента создания последней инкрементной резервной копии), что позволит привести файлы данных в актуальное состояние. При наличии возможности выбирать, что использовать для восстановления — архивный журнал или инкрементную резервную копию, RMAN всегда выбирает инкрементную резервную копию.

Более подробно о возможности создания инкрементных резервных копий с помощью RMAN рассказывалось в этой статье.

 

Мониторинг выполнения заданий RMAN

Следить за состоянием выполняемых с помощью RMAN операций как резервного копирования, так и восстановления можно с помощью представления V$RMAN_STATUS. В этом представлении отображаются все как выполненные, так и выполняющиеся задания RMAN.

Ниже показан простой пример: 

SQL> SELECT operation, status from V$RMAN_STATUS;
OPERATION       STATUS
--------------- ---------
REPORT          COMPLETED
BACKUP          COMPLETED
LIST            COMPLETED
RESTORE PREVIEW COMPLETED
. . .
SQL>

Еще одним очень полезным представлением словаря данных для мониторинга заданий RMAN является хранящееся в памяти представление V$RMAN_OUTPUT, отображающее все сообщения, которые выдает RMAN во время операции резервного копирования или восстановления.


Совет. Для выполнения большинства задач по резервному копированию и восстановлению с помощью RMAN, в том числе задач восстановления данных до состояния на определенный момент в прошлом и задач ретроспективного отката (Flashback), можно использовать интерфейс Database Control. Клиентское приложение RMAN с интерфейсом командной строки обеспечивает большую гибкость в сложных ситуациях восстановления, а интерфейс Database Control является гораздо более простым в плане эксплуатации в большинстве случаев.


 

Пользовательские процедуры восстановления

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

В целом для восстановления баз данных, функционирующих в режиме ARCHIVELOG, с помощью пользовательского метода нужно применять описанную ниже универсальную процедуру. Разные ситуации требуют различных стратегий восстановления, но основные приемы выглядят во всех случаях одинаково, какие бы файлы не восстанавливались (управляющие файлы, файлы системного табличного пространства, файлы данных и т.д.).

  1. Сначала необходимо принять решение о том, оставлять ли пользователям доступ к базе данных на время восстановления. Это решение зависит от масштабов повреждения носителя: если пострадала большая часть файлов, необходимо запустить базу данных в режиме монтирования, а если пострадал только один файл, можно перевести табличное пространство, которому принадлежит данный файл, в автономный режим, а самую базу данных оставить открытой.
  2. Далее нужно восстановить пострадавшие файлы данных в их исходном месте, если возможно, или в альтернативном, но тогда сначала их переименовывать. Также потребуется восстановить и любые необходимые файлы архивных журналов повторного выполнения. Список имен существующих файлов архивных журналов содержится в представлениях V$RECOVERY_LOG и V$ARCHIVED_LOG. Представление V$RECOVERY_LOG содержит имена только тех файлов архивных журналов повторного выполнения, которые необходимы базе данных для восстановления носителя. При наличии достаточного количества свободного пространства восстанавливать необходимые файлы архивных журналов повторного выполнения нужно в месте, на которое указывает параметр инициализации LOG_ARCHIVE_DEST_1. Тогда база данных будет автоматически обнаруживать правильный журнал во время восстановления носителя.
  3. Затем необходимо воспользоваться командой RECOVER DATABASE, RECOVER TABLESPACE или RECOVER DATAFILE, в зависимости от ситуации, для восстановления, соответственно, всей базы данных, какого-то конкретного табличного пространства или отдельных файлов данных.
  4. Если для восстановления базы данных, табличного пространства или файлов данных необходимы какие-то архивные журналы, Oracle предложит предоставить эти журналы, после чего позволит выполнить восстановление либо вплоть до самой точки сбоя (полное восстановление), либо, при желании, только до определенного момента времени в прошлом (неполное восстановление).
  5. И, наконец, напоследок, необходимо открыть базу данных (если это не было сделано на первом шаге) с помощью команды ALTER DATABASE OPEN.

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

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

Восстановление баз данных Orac...
Восстановление баз данных Orac... 9411 просмотров Дэн Tue, 21 Nov 2017, 13:18:05
Ищем и исправляем ошибки в баз...
Ищем и исправляем ошибки в баз... 6770 просмотров Александров Попков Tue, 21 Nov 2017, 13:18:05
Резервное копирование базы дан...
Резервное копирование базы дан... 5004 просмотров Андрей Волков Tue, 21 Nov 2017, 13:17:28
Восстановление в базе данных O...
Восстановление в базе данных O... 3953 просмотров Antoniy Mon, 29 Jan 2018, 16:31:55
Печать
Войдите чтобы комментировать

ildergun аватар
ildergun ответил в теме #8903 6 года 1 мес. назад
RMAN - действительно спасает когда жареный петух таки действительно клюнет и приходится экстренно восстанавливать базу Оракл после краха.