Symantec Backup Exec: восстановление Oracle, установленного на Linux

В первой части было описано, как сделать резервную копию БД Oracle установленной на Linux средствами Symantec Backup Exec, теперь рассмотрим как из этой копии восстановить данные. Как и с резервным копированием не все так просто и очевидно.
Восстановление будет происходить в три этапа, это связано с тем, что SBE разделяет файлы и БД, когда мы настраивали резервную копию, мы выбирали в [ROOT] путь к ORACLE_HOME, и БД. В такой очередности и будем восстанавливать.

Этап 1. Восстановление ORACLE_HOME


Восстанавливать данные не обязательно на тот же самый сервер, такая возможность очень удобна, так как можно сделать тестовый сервер для разработок, а также проверить возможность восстановления и попрактиковаться в развертывании бэкапа. Итак приступим, создаем первое задание:

Меню > Файл > Создать > Задание восстановления


134863ea7a5547e79d8b6eb36f7189a4.PNG
Выбираем в ресурсах имя сервера и дату для восстановления каталогов. На вкладке «Перенаправление файлов» указываем на какой сервер восстанавливать данные, если не нужно восстановить на тот же с которого был сделан бэкап. Нажимаем выполнить немедленно и наблюдаем в разделе «Монитор заданий» успешное выполнение задания.

Этап 2. Подготовка к восстановлению файлов данных


Поле того как ORACLE_HOME был восстановлен — было сделано восстановление только программной части БД ORACLE. Далее необходимо выполнить запуск базы. Так как файлов данных нет то можно запустить БД не больше чем в режиме mount.

SQL> startup nomount
lsnrctl start 


Если вы восстанавливаете на другой сервер, то скорее всего попадете на ошибку связанную с файлом конфигурации БД, например

ORA-27102: out of memory
Linux Error: 12: Cannot allocate memory


Такая ошибка возникает, когда БД работает с spfile в котором остались настройки с другого сервера. Самый простой способ это найти стандартный файл примера конфигурации — он обычно имеет минимальный набор параметров для запуска БД. Искать его нужно в ORACLE_HOME/dbs, имя его init.ora. Обычный файл параметров pfile имеет имя init.ora. Итак пробуем запустить БД с другим файлом параметров.

SQL> shu immediate --- останавливаем БД
SQL> startup pfile=<путь к файлу параметров> nomount;


Если запуск успешен, то

SQL> create spfile from pfile=<путь к файлу параметров>;


Снова останавливаем и запускаем БД

SQL> shu immediate
SQL> startup nomount


База данных в режиме nomount, listener запущен, переходим к восстановлению файлов данных БД dbf (Так называемое расширение в названии файлов может быть любое, в Linux это не имеет значения и обозначается больше для удобства восприятия файлов).

Этап 3. Восстановление файлов данных БД Oracle.


Возвращаемся к консоли управления SBE на сервере резервного копирования данных.
По такому же принципу как в первом этапе создаем задание восстановления.

Меню > Файл > Создать > Задание восстановления


da28649018984a118560d1e031eac527.PNG
В этом задании мы выбираем раздел «Управляющие файлы» и выбираем один соответствующий тому времени на какой момент мы хотим восстановить БД. Далее также просматриваем все вкладки, в «Перенаправлении Oracle» указываем имя сервера на который мы восстанавливаем (отличный от того с которого был сделан бэкап) и останавливаемся на вкладке Oracle.
1a7cb942f5f341da844d9894e013254c.PNG
Рекомендую установить галочки как на картинке, это поможет избежать некоторых проблем например таких как не согласованность времени указанного вами и выбранного Управляющего файла. Момент на который будет произведено восстановление данных будет равен времени выбранного управляющего файла. Запускаем на восстановление, по окончанию успешного восстановления возвращаемся на сервер куда выполнили восстановление и выполняем следующее:

SQL> ALTER DATABASE OPEN RESETLOGS;


Если команда не возвратила ошибок, проверяем alert.log на наличие ошибок. Проблем не обнаружено — восстановление прошло успешно!

© Habrahabr.ru