Symantec Backup Exec: восстановление Oracle, установленного на Linux
В первой части было описано, как сделать резервную копию БД Oracle установленной на Linux средствами Symantec Backup Exec, теперь рассмотрим как из этой копии восстановить данные. Как и с резервным копированием не все так просто и очевидно.
Восстановление будет происходить в три этапа, это связано с тем, что SBE разделяет файлы и БД, когда мы настраивали резервную копию, мы выбирали в [ROOT] путь к ORACLE_HOME, и БД. В такой очередности и будем восстанавливать.
Этап 1. Восстановление ORACLE_HOME
Восстанавливать данные не обязательно на тот же самый сервер, такая возможность очень удобна, так как можно сделать тестовый сервер для разработок, а также проверить возможность восстановления и попрактиковаться в развертывании бэкапа. Итак приступим, создаем первое задание:
Меню > Файл > Создать > Задание восстановления
Выбираем в ресурсах имя сервера и дату для восстановления каталогов. На вкладке «Перенаправление файлов» указываем на какой сервер восстанавливать данные, если не нужно восстановить на тот же с которого был сделан бэкап. Нажимаем выполнить немедленно и наблюдаем в разделе «Монитор заданий» успешное выполнение задания.
Этап 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 на сервере резервного копирования данных.
По такому же принципу как в первом этапе создаем задание восстановления.
Меню > Файл > Создать > Задание восстановления
В этом задании мы выбираем раздел «Управляющие файлы» и выбираем один соответствующий тому времени на какой момент мы хотим восстановить БД. Далее также просматриваем все вкладки, в «Перенаправлении Oracle» указываем имя сервера на который мы восстанавливаем (отличный от того с которого был сделан бэкап) и останавливаемся на вкладке Oracle.
Рекомендую установить галочки как на картинке, это поможет избежать некоторых проблем например таких как не согласованность времени указанного вами и выбранного Управляющего файла. Момент на который будет произведено восстановление данных будет равен времени выбранного управляющего файла. Запускаем на восстановление, по окончанию успешного восстановления возвращаемся на сервер куда выполнили восстановление и выполняем следующее:
SQL> ALTER DATABASE OPEN RESETLOGS;
Если команда не возвратила ошибок, проверяем alert.log на наличие ошибок. Проблем не обнаружено — восстановление прошло успешно!