Начиная с 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;