Выпуск 30

Изменение SID и имени базы данных на платформе Windows

Этот выпуск - продолжение предыдущего. Описан процесс изменения SID и имени базы данных Oracle на платформе Windows (NT/2000/XP). Том Кайт на этот раз снова цитирует документ службы технической поддержки, а именно бюллетень <Note:61590.1>. Я решил опубликовать его фрагменты, поскольку он описывает специфический для Windows способ создания экземпляра с помощью утилиты oradim и содержит пример оператора CREATE CONTROLFILE, синтаксис которого мы уже рассматривали в одном из выпусков.

Переименование базы данных и SID в NT

Том!

Ты уже отвечан на это вопрос для пользователей UNIX. Не мог бы ты описать процесс для использующих платформу NT? Подойдет ли такая же процедура для NT?

Ответ Тома Кайта

...

В этом бюллетене описаны шаги, необходимые для переименования существующей базы данных Oracle на платформе Windows NT, включая изменение SID, DB_NAME и всех соответствующих файлов.

В представленных далее инструкциях предполагается следующее:

Этот документ описывает действия для СУБД версии 8.0, но инструкции можно легко адаптировать и для других версий, изменив имена утилит в соответствии с представленной ниже таблицей.

Версия СУБД Утилиты
7.2 sqldba72 и oradim72
7.3 svrmgr23 и oradim73
8.0 svrmgr30 и oradim80
8.1 svrmgrl и oradim
9.x sqlplus и oradim

ПРЕДУПРЕЖДЕНИЕ:

Прежде чем продолжать, создайте полную резервную копию. Прежде чем применять инструкции, дочитайте их до конца.


  1. Скопируйте управляющий файл в трассировочный:
         C:\> SET ORACLE_SID=ORCL
         C:\> svrmgr30
         SVRMGR> CONNECT INTERNAL/пароль_internal
         Connected.
    

    Теперь надо сверить значение user_dump_destination. Это можно сделать двумя способами:

    	 SVRMGR> SHOW PARAMETER USER_DUMP_DEST
       
         NAME             TYPE    VALUE
         ---------------- ------- ------------------------------
         user_dump_dest   string  D:\ORANT\rdbms80\utrace
    

    или

     
         SVRMGR> SELECT value from v$parameter where name = 'user_dump_dest';
       
         VALUE
         ----------------------------------
         D:\ORANT\rdbms80\utrace
    

    Создайте копию управляющего файла:

     
         SVRMGR> ALTER DATABASE BACKUP CONTROLFILE TO TRACE;
    

    В результате, в каталоге user_dump_destination будет создан трассировочный файл ORAxxxxx.TRC.

  2. Получите список файлов, которые образуют базу данных:
         SVRMGR> select name from v$datafile;
     
         NAME
         -----------------------------------------
         D:\DATABASES\ORCL\SYS1ORCL.ORA
         D:\DATABASES\ORCL\RBS1ORCL.ORA
         D:\DATABASES\ORCL\USR1ORCL.ORA
         D:\DATABASES\ORCL\TMP1ORCL.ORA
         D:\DATABASES\ORCL\INDX1ORCL.ORA
         D:\DATABASES\ORCL\OEM204.DBF
         D:\DATABASES\ORCL\USR2ORCL.ORA
         D:\DATABASES\ORCL\TEST.DBS
         D:\DATABASES\ORCL\WEBDB.DBF
    
  3. Остановите базу данных (с помощью SHUTDOWN NORMAL или SHUTDOWN IMMEDIATE) и завершите сеанс.
     
         SVRMGR> shutdown immediate
    
  4. Остановите службы:

    В Control Panel/Services найдите службу OracleServiceORCL и нажмите на кнопку STOP. Может быть задан вопрос о необходимости остановки также службы OracleStartORCL. Если ее надо остановить, выберите Yes. Учтите, что в Oracle 8i существует только служба OracleServiceORCL.

    Или введите в командной строке:

       
         C:\>net stop OracleServiceORCL
     
         The following services are dependent on the OracleServiceORCL service.
         Stopping the OracleServiceORCL service will also stop these services:
        
             OracleStartORCL
    
         Do you want to continue this operation? (Y/N):  y
    
         The OracleStartORCL service was stopped successfully.
    
         The OracleServiceORCL service is stopping.
         The OracleServiceORCL service was stopped successfully.
         C:\>
    
  5. Обычно имена файлов базы данных содержат SID; если вы хотите это изменить, переименуйте выявленные на шаге 2 файлы с помощью проводника (Explorer), File Manager или окна командной строки DOS.

    Если вы хотите перенести файлы, скопируйте их в другой каталог.

    В Oracle8i стандартная структура каталогов предполагает, что:

    Эти файлы обычно не содержат в имени SID.

    Пример: файл init для SID равного LEO будет иметь имя D:\Oracle\admin\LEO\pfile\init.ora - SID используется в качестве имени каталога.

    Подробнее о стандартной стркутуре каталогов см. в руководстве "Getting Started Oracle8i for Windows NT".

  6. Создайте и отредактируйте файл INITTEST.ORA:
  7. Отредактируйте файл, созданный на шаге 1:

    Пример:

       STARTUP NOMOUNT PFILE=D:\TEST\DATABASE\INITTEST.ORA
       CREATE CONTROLFILE SET DATABASE "TEST" RESETLOGS ARCHIVELOG
           MAXLOGFILES 32
           MAXLOGMEMBERS 2
           MAXDATAFILES 254
           MAXINSTANCES 1
           MAXLOGHISTORY 226
       LOGFILE
         GROUP 1 (
           'D:\DATABASES\TEST\LOGTEST1.ORA',
           'D:\DATABASES\TEST\CTLBIS\CTL1TESTBIS.ORA'
         ) SIZE 2M,
         GROUP 2 (
           'D:\DATABASES\TEST\LOGTEST2.ORA',
           'D:\DATABASES\TEST\CTLBIS\CTL2TESTBIS.ORA'
         ) SIZE 2M
       DATAFILE
         'D:\DATABASES\TEST\SYS1TEST.ORA',
         'D:\DATABASES\TEST\RBS1TEST.ORA',
         'D:\DATABASES\TEST\USR1TEST.ORA',
         'D:\DATABASES\TEST\TMP1TEST.ORA',
         'D:\DATABASES\TEST\INDX1TEST.ORA',
         'D:\DATABASES\TEST\OEM204.DBF',
         'D:\DATABASES\TEST\USR2TEST.ORA',
         'D:\DATABASES\TEST\TEST.DBS',
         'D:\DATABASES\TEST\WEBDB.DBF'
       ;
    

  8. С помощью утилиты ORADIM80 создайте новый экземпляр с новым значением SID. В окне командной строки DOS введите:
       
         ORADIM80 -new -sid TEST -intpwd пароль_internal -startmode auto -pfile %ORACLE_HOME%\DATABASE\INITTEST.ORA
    
  9. Проверьте, что новая служба запустилась:
  10. Выполните сценарий "chname.sql":
        C:\> SET ORACLE_SID=TEST
        C:\> svrmgr30
        
        SVRMGR> CONNECT INTERNAL/internal_password
        Connected.
        SVRMGR> @<user_demp_destination_path>\chname.sql
        # или каталог, в котором сохранен сценарий переименования chname.
    

    В результате будет пересоздан управляющий файл с новыми файлами данных...

  11. Откройте и остановите базу данных.
     
          SVRMGR> ALTER DATABASE OPEN RESETLOGS;
          statement processed
    

    Проверьте после этого, что база данных открыта:

          SVRMGR> SELECT status FROM V$THREAD;
     
          STATUS
          ------
          OPEN
     
          SVRMGR> SHUTDOWN IMMEDIATE;
    
  12. Остановите службу TEST и выполните полное резервное копирование
  13. Удаление старого экземпляра:

    См. бюллетень <Note:62004.1> "Removing an Oracle Instance and Database from Windows NT"

    Учтите, пожалуйста, следующее:

    Не забудьте также проверить настройки NET8 или SQL*Net, заменив все ссылки на ORCL ссылками на TEST (в частности, в файлах TNSNAMES.ORA, LISTENER.ORA и т.д.).

Ошибка ORA-1161

Очень понятное руководство, но я получил указанную выше ошибку. Утверждается, что заголовки файлов данных содержат старый SID. Не могли бы вы объяснить, как с этим разобраться...

Ответ Тома Кайта

Выполните команду oerr ora 1161. В результате вы получите достаточно понятное описание причин и способов их устранения (я даю перевод выдаваемой информации на русский - Прим. В.К.):

01161, 00000, "database name %s in file header does not match given name of %s"

Причина: Имя базы данных, указанное в командной строке, не соответствует указанному в заголовке файла.

Действие: Велика вероятность, что в командной строке указано неверное имя базы данных. Устраните разночтения и повторно выполните команду. Если вы пытаетесь изменить имя базы данных, не забудьте использовать опцию SET DATABASE.

Я уверен, что вы пропустили 4 пункт 7 шага.


Оригинал обсуждения этого вопроса можно найти здесь.


Copyright © 2002 Oracle Corporation


В следующем выпуске

Завершение темы клонирования - про переносимые табличные пространства (transportable tablespaces). Следите за новостями на сайте проекта Open Oracle.

С наилучшими пожеланиями,

  В.К.

OpenXS Rambler's Top100 Rambler's 
Top100