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

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

Шаги для Windows на примере обновления с 11.2.0.2.0 до 11.2.0.4.0. Для других ОС нужно сделать поправки на специфические особенности, как то: имена переменных окружения, пути к файлам, команды операционной системы и т.п.

  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 вне ORACLE_HOME для возможности запуска нового экземпляра со старыми настройками, например:
      create pfile='C:\INIT<sid>.ORA' from spfile;
  3. Копируем alert.log. Он понадобится в дальнейшем для поиска "sequence #".
  4. Копируем каталог с файлами данных, включая redo-логи. Можно не копировать файл/ы данных temporary tablespace. Если места недостаточно, то можно, вместо копирования, переместить каталог в недоступное для "Oracle Universal Installer" место (вне ORACLE_HOME и ORACLE_BASE).
  5. Удаляем установленное ПО Oracle.
  6. Устанавливаем новую версию без создания БД.
  7. Создаём БД вручную:
    • В 'c:\control.bkp' находим все упоминаемые каталоги и, при необходимости, создаём их.
    • В 'c:\INIT<sid>.ORA' находим все упоминаемые каталоги и, при необходимости, создаём их.
    • Копируем полученный init.ora, например, так:
      copy C:\INIT<sid>.ORA %ORACLE_HOME%/database/
    • Копируем содержимое каталога с файлами данных (за исключением файла/ов данных temporary tablespace) в %ORACLE_BASE%/<sid>.
    • Далее, в командной строке:
      • Выставляем переменную среды окружения:
        set oracle_sid=<sid>
      • Создаём экземпляр:
        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\SID\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\sid\redo01.log' (redo-файл может быть и с другим номером – sequence # и файл, в котором он размещён, можно найти в скопированном ранее alert.log, либо простым перебором имён redo-логов повторяя команду.). После чего появится:

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

Всё.

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