При закрытии подписчики были переданы в рассылку "СУБД Oracle "с нуля"" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
Информационный Канал Subscribe.Ru |
Этот выпуск - продолжение предыдущего. Описан процесс изменения SID и имени базы данных Oracle на платформе Windows (NT/2000/XP). Том Кайт на этот раз снова цитирует документ службы технической поддержки, а именно бюллетень <Note:61590.1>. Я решил опубликовать его фрагменты, поскольку он описывает специфический для Windows способ создания экземпляра с помощью утилиты oradim и содержит пример оператора CREATE CONTROLFILE, синтаксис которого мы уже рассматривали в одном из выпусков.
Том!
Ты уже отвечан на это вопрос для пользователей 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 |
Прежде чем продолжать, создайте полную резервную копию. Прежде чем применять инструкции, дочитайте их до конца.
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.
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
SVRMGR> shutdown immediate
В 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:\>
Если вы хотите перенести файлы, скопируйте их в другой каталог.
В Oracle8i стандартная структура каталогов предполагает, что:
Эти файлы обычно не содержат в имени SID.
Пример: файл init для SID равного LEO будет иметь имя D:\Oracle\admin\LEO\pfile\init.ora - SID используется в качестве имени каталога.
Подробнее о стандартной стркутуре каталогов см. в руководстве "Getting Started Oracle8i for Windows NT".
STARTUP NOMOUNT PFILE=%ORACLE_HOME%\DATABASE\INITTEST.ORA
В нашем примере надо использовать:
STARTUP NOMOUNT PFILE=D:\ORANT\DATABASE\INITTEST.ORA
# 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.
Пример:
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' ;
ORADIM80 -new -sid TEST -intpwd пароль_internal -startmode auto -pfile %ORACLE_HOME%\DATABASE\INITTEST.ORA
C:\> SET ORACLE_SID=TEST C:\> svrmgr30 SVRMGR> CONNECT INTERNAL/internal_password Connected. SVRMGR> @<user_demp_destination_path>\chname.sql # или каталог, в котором сохранен сценарий переименования chname.
В результате будет пересоздан управляющий файл с новыми файлами данных...
SVRMGR> ALTER DATABASE OPEN RESETLOGS; statement processed
Проверьте после этого, что база данных открыта:
SVRMGR> SELECT status FROM V$THREAD; STATUS ------ OPEN SVRMGR> SHUTDOWN IMMEDIATE;
См. бюллетень <Note:62004.1> "Removing an Oracle Instance and Database from Windows NT"
Учтите, пожалуйста, следующее:
Не забудьте также проверить настройки NET8 или SQL*Net, заменив все ссылки на ORCL ссылками на TEST (в частности, в файлах TNSNAMES.ORA, LISTENER.ORA и т.д.).
Очень понятное руководство, но я получил указанную выше ошибку. Утверждается, что заголовки файлов данных содержат старый 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 |
Отписаться
Убрать рекламу |
В избранное | ||