Сообщение отдельно
18.09.2006 11:06
О! Нашел свое старое письмо как раз по теме. Речь про 8i.

Везде по тексту предполагается что делаем базу DEMO из базы DBMAG1

1) делаем скрипт для создания контрольников

От имени SYS на исходной базе выполняем

alter database backup controlfile to trace;

в результате, в каталог user_dump_dest (у меня это был D:\ORACLE\admin\DBMAG1\udump)
вываливается файл oraNNNNN.trc , где NNNNN - пять цифр
лучше всего искать его сразу, тогда это будет самый свежий из трассеров.
перетаскиваем его в удобное место и даем осмысленное имя, например ren2demo.sql

открываем наш ren2demo.sql и находим текст вида

STARTUP NOMOUNT
CREATE CONTROLFILE REUSE DATABASE "DBMAG1" NORESETLOGS NOARCHIVELOG

Имя базы будет, разумеется, другое. Все, что выше STARTUP NOMOUNT - удаляем.

переделываем это безобразие (заменяем REUSE на SET; меняем имя)

STARTUP NOMOUNT PFILE="D:\ORACLE\admin\DEMO\pfile\initDEMO.ora"
CREATE CONTROLFILE SET DATABASE "DEMO" RESETLOGS NOARCHIVELOG

Имя профайла указывать необязательно, но мне так нравится больше.
Включать или нет архивлоги - выбираем сами. Я для демок не включаю.

Удаляем все строки, что ниже чем

CHARACTER SET CL8MSWIN1251
;

Сохраняем.

2) копируем базу

Останавливаем исходную базу, останавливаем сервис базы

Создаем в oracle\oradata каталог для новой базы, копируем туда все из каталога исходной

Создаем в oracle\admin каталог для новой базы, внутри него каталоги pfile, bdump, cdump, udump
В pfile копируем профайл из того же места исходной базы.

3) правим профайл

Заменяем все вхождения старого имени базы на новое.
Учитывая, что это тестовая база - можно заодно подрезать экземпляру ресурсы
Переименовываем файл (опять же, заменяем старый сид на новый)

4) создаем экземпляр оракла

Делаем батник вида

set nls_lang=american_america.cl8mswin1251
oradim -new -sid DEMO -pwd qqq -startmode m -pfile d:\oracle\admin\DEMO\pfile\initDEMO.ora

Запускаем. Должно молча отработаться и вывалиться обратно в командную строку.
При этом должен появиться новый оракловый сервис.

5) правим tnsnames.ora - добавляем запись для новой базы

6) собственно, создаем контрольники

Запускаем сервис нашей новой базы, если он еще не работает.

Делаем батник вида
set nls_lang=american_america.cl8mswin1251
set oracle_sid=DEMO
svrmgrl.exe

Запускаем.

Коннектимся к экземпляру и запускаем наш скрипт (имя указывать с путем до файла).
Затем открываем базу.

Connect internal;
@c:\sql\ren2DEMO;
alter database open resetlogs;

Готово. База работает с новым SID'ом. Если весь этот процесс показался сложным -
имеет смысл сразу погасить ее и сделать холодную копию.

Можно переключить базу на автозапуск. Путей несколько.
Лично я, по лености своей, сношу экземпляр и создаю снова с другим "-startmode"

oradim -delete -sid DEMO

oradim -new -sid DEMO -pwd qqq -startmode a -pfile d:\oracle\admin\DEMO\pfile\initDEMO.ora