Oracle duplicate

И так …. собственно методичка по переносу Oracle.

первым делом для удобства переноса новый сервер должен быть идентичным по буквам дисков,
чтобы не было необходимости править инициализационные файлы oracle.

допустим задача.

oracle исходный.
первым делом надо перевести его в archivelog mode.
проверяем в каком состоянии archivelog.

SQL> archive log list;
Database log mode Archive Mode
Automatic archival Enabled
Archive destination USE_DB_RECOVERY_FILE_DEST
Oldest online log sequence 346081
Next log sequence to archive 346083
Current log sequence 346083

из чего следует что архивлог включен и местоположение берется из параметра настройки USE_DB_RECOVERY_FILE_DEST
Automatic archival если Enable то можно после включения не делать ручного старта командой
ALTER SYSTEM ARCHIVE LOG START; он запустится автоматически.

если архив лог не включен делаем следующее

SHUTDOWN IMMEDIATE;
STARTUP MOUNT EXCLUSIVE;
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE OPEN;

если Automatic archival Disabled то надо еще и стартовать процесс архива
ALTER SYSTEM ARCHIVE LOG CURRENT;
ALTER SYSTEM ARCHIVE LOG ALL;
ALTER SYSTEM ARCHIVE LOG START;

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

далее…

допустим база данных находится в E:\DATA
путь к archivelog находится в E:\DATA\ARC

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

первым делом надо создать бэкап базы которую будем переносить ( не забыть о том что куда будешь создавать бэкап точно в таком же месте должен будешь его разместить на новом сервере ).

заходим в RMAN и конектимся к базе.

RMAN> connect target /

далее сам бэкап.

RMAN> backup database format=’G:\BACKUP\backup_%U.bkp’;

если скорость и конфигурация дисков позволяет можно увеличить перед началом бэкапа параллелизм, тогда делаем так.

RMAN> configure device type disk parallelism 3; ( либо больше )

RMAN> backup database format=’G:\BACKUP\backup_%U.bkp’; ( это долгий процесс, так что курим и пьем кофе )

по окончании смотрим что получилось

RMAN> list backup;

Вывод может быть длинным, думаем, если надо анализируем, если нет идем дальше.

далее переносим все архивлоги из папки куда их сложили при включении archivelog mode на новый сервер в такую же папку в том же пути. ( можно включить в бакап и архивлоги тоже но не заморачивайтесь )
переносим также весь бакап который у нас был сделан тоже на новый сервер в тотже путь в туже папку.
теперь мы готовы к дублированию.

база исходного сервера (target) должна находится в смонтированном либо в открытом состоянии.
база на новом сервере (auxiliary) должна находится в несмонтированном состоянии.

Далее дабы у нас не было ошибок в процессе дублирования делаем пару лайфхаков заранее
1. удаляем все файлы из папки с базой данных.
2. устанавливаем местоположение оперативных журналов чтобы после дублирования они создались в своем привычном месте.
SQL> alter system set
log_file_name_convert=’E:\DATA’,’E:\DATA’ SCOPE=SPFILE;
System altered.
SQL> startup force nomount;

заходим в RMAN>

надо подключиться к обоим серверам.

подключаться надо либо как сис либо с пользователем с правами sysdba.

как вариант можно создать нового пользователя с такими правами, например на исходном сервере

SQL> grant connect, sysdba to oraduplicate identified by Qwerty123;
Grant succeeded.

ну и далее с нового сервера из рман коннектимся к исходному серверу по сети

RMAN> connect target oraduplicate/Qwerty123@oracleserver/DB1;
connected to target database: DB1 (DBID=1265664822)

после коннекта коннектимся к новому серверу

RMAN> connect auxiliary /;
connected to auxiliary database: DB1 (not mounted)

собственно можно начинать дублирование, маленький лайфхак, нужно выйти из всех sqlplus на обоих серваках, иначе в процессе клонирования виснет до безконечности и ни слова не говорит что ждет завершения процесса sql сессии.

RMAN> duplicate target database to DB1 nofilenamecheck;

описывать какие скрипты процесс будет генерировать во время выполнения и что конкретно они делают не буду, долго это и нудно, если интересно RTFM.

использованы статьи

http://alldba.ru/index.php/stati/oracle/334-dubl-rman-1

http://alldba.ru/index.php/stati/oracle/372-rman-1

Запись опубликована в рубрике Slackware. Добавьте в закладки постоянную ссылку.