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

Переименование экземпляра БД.

Переименование экземпляра БД – несложная процедура. Приведу шаги для Windows. Для других ОС нужно сделать поправки на специфические особенности, как то: имена переменных окружения, пути к файлам, команды операционной системы и т.п. Итак.

  1. Делаем бэкап.
  2. На экземпляре, который планируем переименовать, выполняем, например, в sqlplus ("sqlplus / as sysdba") следующие действия:
    • Необязательно, но можно:
      alter system switch logfile;
    • Фактически получаем команду создания control-файла только в одном варианте - с RESETLOGS:
      alter database backup controlfile to trace as 'c:\control.bkp' resetlogs;
    • Создаём init.ora для возможности запуска нового экземпляра со старыми настройками:
      create pfile from spfile;
    • Останавливаем экземпляр и выходим из sqlplus:
      shutdown immediate;
      exit;
  3. Для создания нового экземпляра выполняем следующие действия:
    • Копируем (или переименовываем) %ORACLE_BASE%/oradata/olddb в %ORACLE_BASE%/oradata/newdb.
    • Копируем полученный init.ora в новый. Например:
      copy %ORACLE_HOME%/database/INIT<olddb>.ORA %ORACLE_HOME%/database/INIT<newdb>.ORA
    • Редактируем %ORACLE_HOME%/database/INIT<newdb>.ORA таким образом, чтобы все вхождения старого имени экземпляра были заменены на новое имя экземпляра.
    • Удаляем (или копируем в сторонку) существующие control-файлы везде, где размещены их копии (можно найти в '%ORACLE_HOME%/database/INIT<olddb>.ORA').
    • В 'c:\control.bkp' меняем все вхождения старого имени экземпляра на новое имя экземпляра.
    • В 'c:\control.bkp' строку:
      CREATE CONTROLFILE REUSE DATABASE newdb RESETLOGS  NOARCHIVELOG

      меняем на

      CREATE CONTROLFILE SET DATABASE newdb RESETLOGS  NOARCHIVELOG

      А точнее – "REUSE" меняем на "SET".

    • Далее, в командной строке:
      • Выставляем переменную среды окружения в новое значение экземпляра:
        set oracle_sid=newdb
      • Создаём экземпляр:
        oradim -new -sid %ORACLE_SID% -syspwd qwerty123 -startmode auto -srvcstart system

        Где:
        %ORACLE_SID% – переменная, созданная в предыдущем пункте;
        qwerty123 – пароль для доступа к базе.

      • Подключаемся к вновь созданному экземпляру, например, с помощью sqlplus:
        sqlplus / as sysdba
    • в sqlplus:
      • Если экземпляр стартовал, останавливаем:
        shutdown immediate;
      • Поднимаем экземпляр без монтирования:
        startup nomount;
      • Выполняем создание control-файла из c:\control.bkp (выполняем часть текста, начинающуюся с "CREATE CONTROLFILE SET" и до первого вхождения ";", включительно).
      • Выполняем восстановление экземпляра:
        RECOVER DATABASE USING BACKUP CONTROLFILE

        На что получим, скорее всего, подобное сообщение:

        ORA-00279: change 31413210566 generated at 07/15/2013 17:55:31 needed for
        thread 1
        ORA-00289: suggestion :
        D:\ORACLE\FAST_RECOVERY_AREA\OLDDB\ARCHIVELOG\2013_07_15\O1_MF_1_69238_%U_.ARC
        ORA-00280: change 31413210566 for thread 1 is in sequence #69238
        
        
        Specify log: {<RET>=suggested | filename | AUTO | CANCEL}

        В качестве аргумента нужно указать полное имя (включая путь) redo-файла. Например, 'D:\oracle\oradata\newdb\redo01.log' (redo-файл может быть и с другим номером – sequence # и файл, в котором он размещён, можно найти в alert.log). После чего появится:

        Log applied.
        Media recovery complete.
      • Открываем базу данных:
        ALTER DATABASE OPEN RESETLOGS;
      • Выполняем команду "ALTER TABLESPACE TEMP ADD TEMPFILE…" (можно найти в 'c:\control.bkp').
      • Создаём spfile из существующего pfile:
        create spfile from pfile;
      • Перестартовываем экземпляр, чтобы он начал использовать spfile:
        shutdown immediate;
        startup;
  4. Настраиваем listener и проверяем работоспособность.

Всё.

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