2-10. Восстановление повреждённого файла данных из копии- отображения.
Если один из файлов данных повреждён, то вместо того, чтобы немедленно восстанавливать файл из резервной копии, можно временно использовать копию-отображения файла из флэш- области восстановления.
Рассмотрим данную ситуацию на примере. Для начала повредим (удалим) файл данных EXAMPLE01.DBF, переведя его в автономный режим, без физического удаления:
SQL> alter database datafile '/u02/oradata/orcl/example01.dbf' offline drop; Database altered.
Затем, удалим его физически с помощью команды операционной системы.
[oracle@alfa orcl]$ pwd /u02/oradata/orcl [oracle@alfa orcl]$ rm example01.dbf
Проверка файлов базы данных
Восстановление начнём с проверки списка файлов:
RMAN> report schema; Report of database schema List of Permanent Datafiles =========================== File Size(MB) Tablespace RB segs Datafile Name ---- -------- -------------------- ------- ------------------------ 1 480 SYSTEM *** /u02/oradata/orcl/system01.dbf 2 140 UNDOTBS1 *** /u02/oradata/orcl/undotbs01.dbf 3 240 SYSAUX *** /u02/oradata/orcl/sysaux01.dbf 4 28 USERS *** /u02/oradata/orcl/users01.dbf 5 0 EXAMPLE *** /u02/oradata/orcl/example01.dbf List of Temporary Files ======================= File Size(MB) Tablespace Maxsize(MB) Tempfile Name ---- -------- -------------------- ----------- -------------------- 1 20 TEMP 32767 /u02/oradata/orcl/temp01.dbf
Как видим, размер файла EXAMPLE01.DBF равен нолю. Будем считать, что он у нас повреждён.
Проверка на существование копии-отображения повреждённого файла.
Проверяем наличие копии-отображения для нашего повреждённого файла:
RMAN> list copy of datafile 5; List of Datafile Copies Key File S Completion Time Ckp SCN Ckp Time Name ------- ---- - --------------- ---------- --------------- ---- 35 5 A 30-MAR-11 553896 30-MAR-11 /u01/app/oracle/flash_recovery_area/ORCL/datafile/o1_mf_example_6s4ozj5c_.dbf
Перевод повреждённого файла в offline режим.
Если повреждённый файл находится в оперативном режиме, то необходимо перевести его в автономный режим:
RMAN> sql 'alter database datafile 5 offline'; sql statement: alter database datafile 5 offline
Переключение повреждённого файла к последней копии-отображения.
После того как файл перевёлся в автономный режим, нужно сигнализировать базе данных, чтобы она использовала вместо повреждённого файла данных файл копии-отображения из флэш-области восстановления:
RMAN> switch datafile 5 to copy; datafile 5 switched to datafile copy "/u01/app/oracle/flash_recovery_area/ORCL/datafile/o1_mf_example_6s4ozj5c_.dbf"
Восстановление копии.
Переключение состоялось. Теперь, остаётся только привести копию-отображения файла в состояние согласованное с текущим состоянием базы данных:
RMAN> recover datafile 5; Starting recover at 30-MAR-11 using channel ORA_DISK_1 starting media recovery media recovery complete, elapsed time: 00:00:02 Finished recover at 30-MAR-11
Перевод повреждённого файла в online режим.
После того как файл восстановлен, его необходимо перевести в оперативный режим работы.
RMAN> sql 'alter database datafile 5 online'; sql statement: alter database datafile 5 online
Проверяем файлы данных:
RMAN> report schema; Report of database schema List of Permanent Datafiles =========================== File Size(MB) Tablespace RB segs Datafile Name ---- -------- -------------------- ------- ------------------------ 1 480 SYSTEM *** /u02/oradata/orcl/system01.dbf 2 140 UNDOTBS1 *** /u02/oradata/orcl/undotbs01.dbf 3 240 SYSAUX *** /u02/oradata/orcl/sysaux01.dbf 4 28 USERS *** /u02/oradata/orcl/users01.dbf 5 100 EXAMPLE *** /u01/app/oracle/flash_recovery_area/ORCL/datafile/o1_mf_example_6s4ozj5c_.dbf List of Temporary Files ======================= File Size(MB) Tablespace Maxsize(MB) Tempfile Name ---- -------- -------------------- ----------- -------------------- 1 20 TEMP 32767 /u02/oradata/orcl/temp01.dbf
Как видно из листинга, база данных теперь использует вместо отсутствующего файла example01.dbf файл o1_mf_example_6s4ozj5c_.dbf из флэш-области восстановления, и у нас есть время для того чтобы спокойно восстановить оригинальный файл данных.
2-11. Переключение назад из флэш-области восстановления.
Как было сказано выше, переключение поврежденного файла данных на файл копии- отображения - это временная мера, позволяющая быстро вернуть повреждённый файл в оперативный режим работы. Но затягивать с эксплуатацией базы данных в таком режиме долго не стоит. Как только появится первая возможность, необходимо сразу же совершить обратное переключение.
Проверка файлов базы данных
Обратное переключение начнём с проверки списка файлов:
RMAN> report schema; Report of database schema List of Permanent Datafiles =========================== File Size(MB) Tablespace RB segs Datafile Name ---- -------- -------------------- ------- ------------------------ 1 480 SYSTEM *** /u02/oradata/orcl/system01.dbf 2 140 UNDOTBS1 *** /u02/oradata/orcl/undotbs01.dbf 3 240 SYSAUX *** /u02/oradata/orcl/sysaux01.dbf 4 28 USERS *** /u02/oradata/orcl/users01.dbf 5 100 EXAMPLE *** /u01/app/oracle/flash_recovery_area/ORCL/datafile/o1_mf_example_6s4ozj5c_.dbf List of Temporary Files ======================= File Size(MB) Tablespace Maxsize(MB) Tempfile Name ---- -------- -------------------- ----------- -------------------- 1 20 TEMP 32767 /u02/oradata/orcl/temp01.dbf
Как видно, файл данных 5 находится в флэш-области восстановления. Необходимо перенести его в оригинальное местоположение.
Создание копии-отображения
Для начала создаём копию-отображения файла 5 в оринальном местоположении. Правда, надо не забыть предварительно, удалить старый повреждённый файл по этому пути:
RMAN> backup as copy datafile 5 format='/u02/oradata/orcl/example01.dbf'; Starting backup at 30-MAR-11 using channel ORA_DISK_1 channel ORA_DISK_1: starting datafile copy input datafile fno=00005 name=/u01/app/oracle/flash_recovery_area/ORCL/datafile/o1_mf_example_6s4ozj5c_.dbf output filename=/u02/oradata/orcl/example01.dbf tag=TAG20110330T022059 recid=38 stamp=747109266 channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:15 Finished backup at 30-MAR-11
Перевод файла в offline режим.
Перед переключением необходимо перевести текущий файл данных 5 в автономный режим:
RMAN> sql 'alter database datafile 5 offline'; sql statement: alter database datafile 5 offline
Переключение файла данных к копии-отображения.
Теперь нам остаётся только переключить текущий файл данных 5 из флэш-области восстановления к файлу копии-отображения, созданному в оригинальном местоположении:
RMAN> switch datafile 5 to copy; datafile 5 switched to datafile copy "/u02/oradata/orcl/example01.dbf"
Восстановление копии.
После переключения необходимо привести копию-отображения в состояние согласованное с текущим состоянием базы данных:
RMAN> recover datafile 5; Starting recover at 30-MAR-11 using channel ORA_DISK_1 starting media recovery media recovery complete, elapsed time: 00:00:03 Finished recover at 30-MAR-11
Перевод файла в online режим.
После того как файл восстановлен, переводим его в оперативный режим работы.
RMAN> sql 'alter database datafile 5 online'; sql statement: alter database datafile 5 online
Проверка файлов базы данных
Проверяем файлы данных:
RMAN> report schema; Report of database schema List of Permanent Datafiles =========================== File Size(MB) Tablespace RB segs Datafile Name ---- -------- -------------------- ------- ------------------------ 1 480 SYSTEM *** /u02/oradata/orcl/system01.dbf 2 140 UNDOTBS1 *** /u02/oradata/orcl/undotbs01.dbf 3 240 SYSAUX *** /u02/oradata/orcl/sysaux01.dbf 4 28 USERS *** /u02/oradata/orcl/users01.dbf 5 100 EXAMPLE *** /u02/oradata/orcl/example01.dbf List of Temporary Files ======================= File Size(MB) Tablespace Maxsize(MB) Tempfile Name ---- -------- -------------------- ----------- -------------------- 1 20 TEMP 32767 /u02/oradata/orcl/temp01.dbf
Файл данных 5 вернулся в своё оригинальное местоположение.
Создание копии-отображения
В заключение перечисленных выше действий необходимо создать новую копию отображения файла в флэш-области восстановления, для будущего использования в случае отказов:
RMAN> backup as copy datafile 5; Starting backup at 30-MAR-11 using channel ORA_DISK_1 channel ORA_DISK_1: starting datafile copy input datafile fno=00005 name=/u02/oradata/orcl/example01.dbf output filename=/u01/app/oracle/flash_recovery_area/ORCL/datafile/o1_mf_example_6s4q423w_.dbf tag=TAG20110330T022609 recid=40 stamp=747109572 channel ORA_DISK_1: datafile copy complete, elapsed time: 00:00:03 Finished backup at 30-MAR-11
2-12. Резервное копирование FRA на магнитную ленту
Так как, дисковое пространство, в котором находиться флэш-область восстановления так же подвержено сбоям, как и другое любое пространство, имеет смысл сделать резервную копию всех файлов флэш-области восстановления на магнитную ленту. В этом случае, не надо копировать на ленту каждый файл области по отдельности, так как всё это можно сделать с помощью единственной команды backup recovery area. Чтобы эта команда заработала, предварительно должен быть сконфигурирован канал sbt накопителя на магнитной ленте. В связи с тем, что накопитель у нас отсутствует, мы будем эмулировать этот канал.
Эмуляция канала SBT
Чтобы произвести эмуляцию накопителя на магнитной ленте, нам понадобиться библиотека интерфейса SBT для конкретной платформы. Имеется много вариантов этих библиотек от различных программных продуктов резервного копирования. Мы возьмём файл библиотеки
RMAN> configure channel device type 'sbt_tape' parms 'SBT_LIBRARY=oracle.disksbt ENV=(BACKUP_DIR=/u01/app/oracle/admin/orcl/backup)'; using target database control file instead of recovery catalog new RMAN configuration parameters: CONFIGURE CHANNEL DEVICE TYPE 'SBT_TAPE' PARMS 'SBT_LIBRARY=oracle.disksbt ENV=(BACKUP_DIR=/u01/app/oracle/admin/orcl/backup)'; new RMAN configuration parameters are successfully stored
В качестве места назначения резервных копий в канале, у нас будет выступать специально созданный нами каталог /u01/app/oracle/admin/orcl/backup. Именно туда будут отправляться копии файлов флэш-области.
Копирование флэш-области восстановления
Выполним резервное копирование FGA:
RMAN> backup recovery area; Starting backup at 14-APR-11 released channel: ORA_DISK_1 allocated channel: ORA_SBT_TAPE_1 channel ORA_SBT_TAPE_1: sid=150 devtype=SBT_TAPE channel ORA_SBT_TAPE_1: WARNING: Oracle Test Disk API specification does not match any archive log in the recovery catalog specification does not match any datafile copy in the repository input backupset count=100 stamp=748452179 creation_time=14-APR-11 channel ORA_SBT_TAPE_1: starting piece 1 at 14-APR-11 channel ORA_SBT_TAPE_1: backup piece /u01/app/oracle/flash_recovery_area/ORCL/backupset/2011_04_14/o1_mf_nnndf_TAG20110414T152 259_6tfp8o08_.bkp piece handle=34m9ouaj_1_2 comment=API Version 2.0,MMS Version 8.1.3.0 channel ORA_SBT_TAPE_1: finished piece 1 at 14-APR-11 channel ORA_SBT_TAPE_1: backup set complete, elapsed time: 00:00:36 input backupset count=101 stamp=748452225 creation_time=14-APR-11 channel ORA_SBT_TAPE_1: starting piece 1 at 14-APR-11 channel ORA_SBT_TAPE_1: backup piece /u01/app/oracle/flash_recovery_area/ORCL/backupset/2011_04_14/o1_mf_ncsnf_TAG20110414T152 259_6tfpb2kj_.bkp piece handle=35m9ouc1_1_2 comment=API Version 2.0,MMS Version 8.1.3.0 channel ORA_SBT_TAPE_1: finished piece 1 at 14-APR-11 channel ORA_SBT_TAPE_1: backup set complete, elapsed time: 00:00:01 Finished backup at 14-APR-11
Резервные копии файлов флэш-области восстановления были скопированы в ранее созданный нами каталог /u01/app/oracle/admin/orcl/backup. Проверим, так ли это:
[oracle@alfa backup]$ pwd /u01/app/oracle/admin/orcl/backup [oracle@alfa backup]$ ls 34m9ouaj_1_2 35m9ouc1_1_2 Oracle_Disk_SBT_Catalog
Резервные копии присутствуют. Вывести их список можно с помощью следующей команды RMAN:
RMAN> list backup device type sbt_tape; List of Backup Sets =================== BS Key Type LV Size Device Type Elapsed Time Completion Time ------- ---- -- ---------- ----------- ------------ --------------- 48 Full 586.28M SBT_TAPE 00:00:43 14-APR-11 BP Key: 55 Status: AVAILABLE Compressed: NO Tag: TAG20110414T152259 Handle: 34m9ouaj_1_2 Media: List of Datafiles in backup set 48 File LV Type Ckp SCN Ckp Time Name ---- -- ---- ---------- --------- ---- 1 Full 567952 14-APR-11 /u02/oradata/orcl/system01.dbf 2 Full 567952 14-APR-11 /u02/oradata/orcl/undotbs01.dbf 3 Full 567952 14-APR-11 /u02/oradata/orcl/sysaux01.dbf 4 Full 567952 14-APR-11 /u02/oradata/orcl/users01.dbf 5 Full 567952 14-APR-11 /u02/oradata/orcl/example01.dbf BS Key Type LV Size Device Type Elapsed Time Completion Time ------- ---- -- ---------- ----------- ------------ --------------- 49 Full 6.80M SBT_TAPE 00:00:01 14-APR-11 BP Key: 56 Status: AVAILABLE Compressed: NO Tag: TAG20110414T152259 Handle: 35m9ouc1_1_2 Media: Control File Included: Ckp SCN: 567971 Ckp time: 14-APR-11 SPFILE Included: Modification time: 13-APR-11
Если потребуется в дальнейшем удалить резервные копии флэш-области, то сделать это можно с помощью обычной команды RMAN delete:
RMAN> delete backup device type sbt_tape; allocated channel: ORA_SBT_TAPE_1 channel ORA_SBT_TAPE_1: sid=140 devtype=SBT_TAPE channel ORA_SBT_TAPE_1: WARNING: Oracle Test Disk API List of Backup Pieces BP Key BS Key Pc# Cp# Status Device Type Piece Name ------- ------- --- --- ----------- ----------- ---------- 55 48 1 2 AVAILABLE SBT_TAPE 34m9ouaj_1_2 56 49 1 2 AVAILABLE SBT_TAPE 35m9ouc1_1_2 Do you really want to delete the above objects (enter YES or NO)? Y deleted backup piece backup piece handle=34m9ouaj_1_2 recid=55 stamp=748452258 deleted backup piece backup piece handle=35m9ouc1_1_2 recid=56 stamp=748452295 Deleted 2 objects