27.02.2016 1 min to read

Перенос БД Oracle 11gR2 c 32-битной платформы на 64-битную

Category : Статьи

Начиная с Oracle 11gR1, перенести базу данных с одной платформы на другую, отличающуюся разрядностью (32-бит -> 64 бит, 64 бит -> 32 бит) можно методом копирования всех конфигурационных файлов и файлов с данными. Для этого необходимо выполнить несколько шагов. Эта схема применима для ОС linux. В других случаях могут потребоваться дополнительные операции.

Сохранение всех, необходимых для переноса, файлов на действующей БД.

Для этого необходимо создать шаблон управляющих файлов (controlfiles), остановить БД и скопировать файлы конфигурации (initSID.ora), табличных пространств, файл с паролями $ORACLE_HOME/database/$ORACLE_SID/init.ora, redo. Сначала создание шаблона управляющих файлов:

sqlplus / as sysdba
-- команда создания шаблонов
SQL> ALTER DATABASE BACKUP CONTROLFILE TO TRACE;
SQL> SHUTDOWN IMMEDIATE;

 

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

Создание controlfile’а.

На основе заготовленного шаблона подготавливаем команду создания controlfile для новой БД. В результате, получаем нечто, похожее на следующее:

CREATE CONTROLFILE REUSE DATABASE SID NORESETLOGS NOARCHIVELOG
MAXLOGFILES 5
MAXLOGMEMBERS 5
MAXDATAFILES 100
MAXLOGHISTORY 1
LOGFILE
GROUP 1 'ORACLE_BASE/oradata/SID/redo01.log' SIZE 50M,
GROUP 2 'ORACLE_BASE/oradata/SID/redo02.log' SIZE 50M,
GROUP 3 'ORACLE_BASE/oradata/SID/redo03.log' SIZE 50M
DATAFILE
'ORACLE_BASE/oradata/SID/system01.dbf',
'ORACLE_BASE/oradata/SID/TEMP01.dbf',
'ORACLE_BASE/oradata/SID/tools01.dbf',
'ORACLE_BASE/oradata/SID/sysaux01.dbf',
'ORACLE_BASE/oradata/SID/undotbs02.dbf',
'ORACLE_BASE/oradata/SID/users01.dbf'
CHARACTER SET AL32UTF8;

 

Здесь обозначение SID здесь символизирует имя экземпляра БД, а – место установки сервера Oracle ($ORACLE_BASE). Количество и названия перечисленных файлов табличных пространств, а также их месторасположение зависят от конкретной БД и могут отличаться.

Обновление файлов для перехода на новую платформу.

Переходим в директорию $ORACLE_HOME/rdbms/admin и соединяемся с БД.

cd $ORACLE_HOME/rdbms/admin
sqlplus / as sysdba

 

Подготовленной командой создаем управляющие файлы для новой платформы, переводим БД в режим обновления и выполняем необходимые обновления объектов.

STARTUP NOMOUNT

CREATE CONTROLFILE REUSE DATABASE SID NORESETLOGS NOARCHIVELOG
MAXLOGFILES 5
MAXLOGMEMBERS 5
MAXDATAFILES 100
MAXLOGHISTORY 1
LOGFILE
GROUP 1 'ORACLE_BASE/oradata/SID/redo01.log' SIZE 50M,
GROUP 2 'ORACLE_BASE/oradata/SID/redo02.log' SIZE 50M,
GROUP 3 'ORACLE_BASE/oradata/SID/redo03.log' SIZE 50M
DATAFILE
'ORACLE_BASE/oradata/SID/system01.dbf',
'ORACLE_BASE/oradata/SID/TEMP01.dbf',
'ORACLE_BASE/oradata/SID/tools01.dbf',
'ORACLE_BASE/oradata/SID/sysaux01.dbf',
'ORACLE_BASE/oradata/SID/undotbs02.dbf',
'ORACLE_BASE/oradata/SID/users01.dbf'
CHARACTER SET AL32UTF8;
-- остановка БД
SHUTDOWN IMMEDIATE;
-- запуск в режиме обновления
STARTUP UPGRADE;
-- обновление объектов
@utlirp.sql;
-- остановка БД
SHUTDOWN IMMEDIATE;
-- запуск БД
STARTUP;
-- перекомпиляция объектов PL/SQL
@utlrp.sql;