12июн
Как переименовать базу данных ORACLE?
Задача стояла так:
- Создать базу данных (V9.2) на новом сервере для неё SID=stk
- Файлы данных должны быть размещены на новом сервере на диске K
- Данные перенести из старой базы данных (V9.2), имеющей SID=stb и файлы данных на диске C:
- И все должно работать.
Для решения этой задачи предлагаю следующую схему
Ну а теперь все по порядку и детально:
- По пункту 1(создание базы данных) я сейчас расписывать не буду – это не предмет данной статьи. Возьмем за исходное положение – база данных на новом сервере SID= stk создана, файлы данных должны быть размещены на новом сервере, на диске K.
- На старом сервере сначала узнаем (если не знали) куда формируются файлы трассировки:
SELECT value from v$parameter where name = 'user_dump_dest';
- Сделаем читабельную копию контрольного файла (вернее скрипт на создание):
ALTER DATABASE BACKUP CONTROLFILE TO TRACE;
- После чего в папке, на которую указывает параметр user_dump_dest , будет создан файл трассировки со скриптом по созданию контрольного файла.
- Сделаем еще перечень всех файлов данных
select name from v$datafile;
- И последнее, что нужно сделать на старом сервере: если вы для старта базы данных используете spfile , то создайте init.ora. Для этого выполните команду
create pfile from spfile;
- Теперь старый сервер останавливаем
shutdown immediate
- Останавливаем службу: Control Panel/Services,служба OracleServiceSTB, STOP
Или для этого выполним net stop OracleServiceSTB
- Теперь все файлы данных переносим со старого сервера на новый в соответствующую папку на диске K. Контролируем процесс по списку, полученному в пункте 5.
- А теперь нужно немного поколдовать:
- подправить init.ora полученый в п.6
- подправить скрипт на создание контрольного файла, полученый в п.6
По файлу инициализации делаем следующее: назовем его initSTK.ora, все вхождения “STB” в содержимом этого файла меняем на “STK” и подправьте названия всех необходимых папок так, как они должны называться на новом сервере.
По скрипту: выкинем всё лишнее, поменяем название папок (названия должны отвечать новому серверу. И будьте очень внимательны - замените REUSE DATABASE "STB" на SET DATABASE "STK"! Иначе во время работы будет получена ошибка ORA-01161! Также у вас должна быть конструкция RESETLOGS. В результате скрипт должен быть аналогичен:
CREATE CONTROLFILE SET DATABASE "STK" RESETLOGS NOARCHIVELOG
MAXLOGFILES 50
MAXLOGMEMBERS 5
MAXDATAFILES 100
MAXINSTANCES 1
MAXLOGHISTORY 226
LOGFILE
GROUP 1 'K:\ORACLE\ORADATA\STK\REDO01.LOG' SIZE 100M,
GROUP 2 'K:\ORACLE\ORADATA\STK\REDO02.LOG' SIZE 100M,
GROUP 3 'K:\ORACLE\ORADATA\STK\REDO03.LOG' SIZE 100M
DATAFILE
'K:\ORACLE\ORADATA\STK\SYSTEM01.DBF',
'K:\ORACLE\ORADATA\STK\UNDOTBS01.DBF',
'K:\ORACLE\ORADATA\STK\CWMLITE01.DBF',
'K:\ORACLE\ORADATA\STK\DRSYS01.DBF',
'K:\ORACLE\ORADATA\STK\EXAMPLE01.DBF',
'K:\ORACLE\ORADATA\STK\INDX01.DBF',
'K:\ORACLE\ORADATA\STK\TOOLS01.DBF',
'K:\ORACLE\ORADATA\STK\USERS01.DBF',
'K:\ORACLE\ORADATA\STK\XDB01.DBF',
CHARACTER SET CL8MSWIN1251;
- Теперь стартуем новую базу данных таким образом:
STARTUP NOMOUNT PFILE=С:\ORACLE\ORA92\DATABASE\INITSTK.ORA
- Затем выполним скрипт на создание контрольного файла.
ALTER DATABASE OPEN RESETLOGS;
- обратите внимание на временное табличное пространство:
alter tablespace temp add tempfile 'K:\oracle\oradata\stk\temp01.dbf' size 100M;
- а теперь
create spfile from pfile;
- выполним
shutdown immediate
- и последнее
startup
Вот и все.Рекомендую сразу же сделать полный холодный бекап и приступайте к работе. Успехов Вам!
Новый комментарий
|
Поиск по блогам
Подпишись на RSS:
Читателям
Рекомендую к прочтению
Разделы блога
Последние публикации
Последние коментарии
|