Отправляет email-рассылки с помощью сервиса Sendsay

Открыто о СУБД Oracle на русском

  Все выпуски  

Открыто о СУБД Oracle на русском : изменение SID на платформе Windows


Информационный Канал Subscribe.Ru

Выпуск 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 и всех соответствующих файлов.

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

  • база данных запущена;
  • вы работаете на машине, на которой работает сервер;
  • SID существующей базы данных - ORCL, а DB_NAME - ORACLE;
  • SID новой базы данных будет TEST, а DB_NAME - тоже TEST.

Этот документ описывает действия для СУБД версии 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 стандартная структура каталогов предполагает, что:

    • Каталог D:\Oracle\oradata\ORCL будет содержать управляющие файлы, журналы повторного выполнения, файлы данных
    • Каталог D:\Oracle\admin\ORCL\pfile будет содержать файл init.

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

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

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

  6. Создайте и отредактируйте файл INITTEST.ORA:
    • Скопируйте %ORACLE_HOME%\database\INITORCL.ORA в %ORACLE_HOME%\database\INITTEST.ORA
    • Замените все вхождения строки ORCL строкой TEST и замените все необходимые имена каталогов в именах файлов.
    • Замените DB_NAME = ORACLE на DB_NAME = TEST
    • Сохраните файл.
  7. Отредактируйте файл, созданный на шаге 1:
    • Замените все вхождения строки ORCL строкой TEST.
    • Удалите заголовок (все строки вплоть до STARTUP NOMOUNT)
    • Измените строку Startup чтобы она имела вид:
                   
              STARTUP NOMOUNT PFILE=%ORACLE_HOME%\DATABASE\INITTEST.ORA 
      

      В нашем примере надо использовать:

       
              STARTUP NOMOUNT PFILE=D:\ORANT\DATABASE\INITTEST.ORA 
      
    • Измените имя базы данных. Измените оператор CREATE CONTROLFILE:
      • Замените REUSE DATABASE "Oracle" на SET DATABASE "Test"
      • Замените NORESETLOGS на RESETLOGS
    • Удалите строки
        
              # Recovery is required if any of the datafiles are restored backups, 
              # or if the last shutdown was not normal or immediate. 
              RECOVER DATABASE 
              # All logs need archiving and a log switch is needed. 
              ALTER SYSTEM ARCHIVE LOG ALL; 
              # Database can now be opened normally. 
              ALTER DATABASE OPEN; 
      

      Примечание: Оператор ALTER SYSTEM ARCHIVE LOG ALL будет в файле только если исходная база данных работает в режиме ARCHIVEMODE.

    • Сохраните файл как CHNAME.SQL

    Пример:

     
       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. Проверьте, что новая служба запустилась:
    • В Control Panel/Services найдите строку для службы OracleServiceTEST.
    • Если эта служба не запущена, щелкните на кнопке START.
  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 и выполните полное резервное копирование
    • В окне Control Panel/Services найдите службу OracleServiceTEST.
    • Щелкните на кнопке STOP.
    • Выполните полное резервное копирование базы данных.
  13. Удаление старого экземпляра:

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

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

    • Если вы повторно используете те же файлы или не переименовываете их (т.е. вы частично или полностью пропустили Шаг 2), не удаляйте эти файлы при выполнении Шага 6 в соответствии с бюллетенем <Note:62004.1>
    • В бюллетене <Note:62004.1> удаляется экземпляр TEST, - у нас так называется новый экземпляр; при буквальном выполнении рекомендаций бюллетеня <Note:62004.1> замените строку TEST строкой ORCL.

    Не забудьте также проверить настройки 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.

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

  В.К.



http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное