среда, 27 июля 2011 г.

Восстановление оракла из бэкапа (лайт версия)

Есть бэкап базы оракла (контрол-файлы, дата файлы и т.д.). Есть сервер с установленным ораклом, SID должен совпадать с SID'ом базы, с которой сделан бэкап.

0. Останавливаем базу данных (все действия через rman connect target /)
shutdown immediate;

Удаляем все файлы данных и логи новой базы, что бы не мешались.

startup nomount;

1. Восстанавливаем spfile.
restore spfile to '/home/oracle/spfile.last' from '/u01/db1_rman/CF_DB1_c-1328626743-20110727-00.bus';

где CF_DB1_c-1328626743-20110726-00.bus бэкап контрол-файлов (есди настроена retention policy, то это самый последний-свежий файл).

Теперь копируем восстановленный файл параметров заместо старого.
cp /home/oracle/spfile.last /u01/app/oracle/product/11.2.0/dbhome_1/dbs/spfiledb1.ora

2. Поднимаем базу в nomount режиме
shutdown immediate;
startup nomount;

(Может ругнутся на недоступность некоторых директорий - их нужно создать и выдать соответствующие права)

3. Восстанавливаем контрол-файлы.
restore controlfile from '/nfsbackup/db1_rman/CF_DB1_c-1328626743-20110726-00.bus'

4. Монтируем базу данных.
alter database mount;

5. Указываем файлы бэкапа данных базы.
Что бы бэкапы "подошли" к новой базе dbid в заголовке базы должен совпадать с текущим. Обычно после восстановления spfile, контрол-файлов и перезагрузки базы в mount, dbid должен соответствовать dbid базы с которой снят бэкап. Если это не так делаем
set dbid 1328626743
1328626743 - dbid вашей базы с которой снят бэкап (если не в курсе где его брать, то он указан в ошибках)

Далее добавляем в каталог файлы бэкапов
catalog backuppiece '/nfsbackup/db1_rman/DB1_1275980815_20110719_939_1.bus';
catalog backuppiece '/nfsbackup/db1_rman/DB1_1275980815_20110719_939_1.bus';
catalog backuppiece '/nfsbackup/db1_rman/DB1_1275980815_20110719_940_1.bus';
...


Если исользуется retention policy - то нужно указать все файлы бэкапов данных.
Либо
catalog start with '/nfsbackup/db1_rman/';
Будут каталогизированы все файлы в этой директории.

6. Восстанавливаем базу.
restore database;

7. Накатываем изменения (архивлоги).
recover database;

8. Открываем базу.
Что бы джобы не запустились сразу, можно использовать в sqlplus следующий параметр:
alter system set JOB_QUEUE_PROCESSES = 0; (Потом обязательно не забыть его поменять!)
alter database open resetlogs;

Комментариев нет:

Отправить комментарий