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

Клонирование базы данных на локальный хост без RMAN-бэкапа.

  1. Объявляем переменные окружения:
    export ORACLE_OLD_SID=testdb
    export ORACLE_SID=tstdb1
    read -s -p "Enter DB password: " pass
  2. Если БД уже существовала:
    • останавливаем экземпляр:
      sqlplus -S '/ as sysdba' << EOF
      shutdown immediate;
      EOF
    • удаляем БД:
      rm -Rf ${ORACLE_BASE}/admin/${ORACLE_SID}
      rm -Rf ${ORACLE_BASE}/fast_recovery_area/${ORACLE_SID}
      rm -Rf ${ORACLE_BASE}/oradata/${ORACLE_SID}
      rm -Rf ${ORACLE_BASE}/diag/rdbms/${ORACLE_SID}
      find ${ORACLE_HOME}/dbs/ -type f -iname "*${ORACLE_SID}*" -print0 | xargs -0 rm -f
  3. Создаём структуру каталогов:
    mkdir -p ${ORACLE_BASE}/admin/${ORACLE_SID}/adump
    mkdir -p ${ORACLE_BASE}/fast_recovery_area/${ORACLE_SID}
    mkdir -p ${ORACLE_BASE}/oradata/${ORACLE_SID}
    mkdir -p ${ORACLE_BASE}/diag/rdbms/${ORACLE_SID}
  4. Создаём password-файл:
    orapwd file=$ORACLE_HOME/dbs/orapw${ORACLE_SID} entries=10 password=${pass}
  5. Создаём инициализационный файл:
    echo "db_name='${ORACLE_SID}'" > $ORACLE_HOME/dbs/init${ORACLE_SID}.ora
  6. запускаем экземпляр в режиме "nomount":
    sqlplus -S '/ as sysdba' << EOF
    startup nomount;
    EOF
  7. Проверяем, при необходимости, правим файлы "$ORACLE_HOME/network/admin/listener.ora" и $ORACLE_HOME/network/admin/tnsnames.ora
    • если правили "listener.ora", перегружаем listener:
      lsnrctl reload
  8. Запускаем клонирование:
    echo "duplicate target database to ${ORACLE_SID}
    from active database
    db_file_name_convert '/opt/oracle/oradata/${ORACLE_OLD_SID}/','/opt/oracle/oradata/${ORACLE_SID}/'
    spfile
      parameter_value_convert '/opt/oracle/oradata/${ORACLE_OLD_SID}/','/opt/oracle/oradata/${ORACLE_SID}/'
                            , '/opt/oracle/fast_recovery_area/${ORACLE_OLD_SID}/','/opt/oracle/fast_recovery_area/${ORACLE_SID}/'
      set log_file_name_convert '/opt/oracle/oradata/${ORACLE_OLD_SID}/','/opt/oracle/oradata/${ORACLE_SID}/'
    ;" | rman target sys/${pass}@${ORACLE_OLD_SID} auxiliary sys/${pass}@${ORACLE_SID}

    В "parameter_value_convert" должны быть перечислены все пары "исходный путь-новый путь", особенно это касается групп control-файлов.

 
Top.Mail.Ru
Recent changes RSS feed Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki Donate