Документ создан: 28.10.2010

Клонирование базы данных с помощью RMAN

Клонировать существующую базу с помощью RMAN очень просто. Я делал это на одной машине под управлением CentOS Linux, но это не принципиально.

Условия:

  1. Исходная база должна быть в режиме ARCHIVELOG;
  2. Должен быть, как минимум, один RMAN-бэкап.
  3. Обе базы — одной версии (на разных версиях не экспериментировал — нет возможности);

При выполнении этих условий проблем возникнуть не должно.

У меня было так:

  • Исходный экземпляр "ORA11G";
  • Файлы располагались в "/opt/oracle/11g/oradata/ORA11G/".

Клонировал в экземпляр "ORA11GD".

Итак, выполняем следующее:

  1. Добавляем в "listener.ora":
        (SID_DESC =
          (SID_NAME = ORA11GD)
          (ORACLE_HOME=/opt/oracle/11g/product/11.2.0/dbhome_1)
        )
  2. Добавляем в "tnsnames.ora":
    ORA11GD =
      (DESCRIPTION =
        (ADDRESS = (PROTOCOL = TCP)(HOST = host.domain.ru)(PORT = 1521))
        (CONNECT_DATA =
          (SERVICE_NAME = ORA11GD)
        )
      )
  3. Создаём каталог для файлов данных:
    mkdir -p /opt/oracle/11g/oradata/ORA11GD
  4. Создаём файл паролей для нового экземпляра:
    orapwd file=$ORACLE_HOME/dbs/orapwORA11GD password=<PASSWORD> entries=10
  5. Создаём pfile файл "$ORACLE_HOME/dbs/initORA11GD.ora" следующего содержания:
    compatible='11.2.0.0.0'
    control_files=('/opt/oracle/11g/oradata/ORA11GD/control01.ctl',
                  '/opt/oracle/11g/oradata/ORA11GD/control02.ctl',
                  '/opt/oracle/11g/oradata/ORA11GD/control03.ctl')
    db_block_size=8192
    db_name='ORA11GD'
    DB_FILE_NAME_CONVERT=(/opt/oracle/11g/oradata/ORA11G/,/opt/oracle/11g/oradata/ORA11GD/)
    LOG_FILE_NAME_CONVERT=(/opt/oracle/11g/oradata/ORA11G/,/opt/oracle/11g/oradata/ORA11GD/)
  6. Объявляем переменную среды окружения:
    export ORACLE_SID=ORA11GD
  7. Подключаемся к пустому экземпляру:
    sqlplus / as sysdba
  8. Создаём spfile из существующего pfile:
    create spfile from pfile;
  9. Стартуем экземпляр:
    startup force nomount;

Теперь либо выходим из "sqlplus", либо переходим в другой терминал и выполняем следующее:

  1. Объявляем переменную среды окружения:
    export ORACLE_SID=ORA11GD
  2. Запускаем RMAN таким образом (у меня нет каталога, поэтому используем "NOCATALOG"):
    rman TARGET sys/qwerty123@ORA11G NOCATALOG AUXILIARY /
  3. Выполняем клонирование:
    duplicate target database to ORA11GD;

После того, как отработает RMAN, база готова к соединению. Не забудьте добавить соответствующую строку в "/etc/oratab", чтобы экземпляр стартовал автоматически при запуске ОС (см. также dbora для одновременного запуска Oracle 10g и Oracle 11g):

ORA11GD:/opt/oracle/11g/product/11.2.0/dbhome_1:Y


И всё!

 
Recent changes RSS feed Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki Donate