12июн Как переименовать базу данных ORACLE?

Задача стояла так:

  1. Создать базу данных (V9.2) на новом сервере для неё SID=stk
  2. Файлы данных должны быть размещены на новом сервере на диске K
  3. Данные перенести из старой базы данных (V9.2), имеющей SID=stb и файлы данных на диске C:
  4. И все должно работать.

Для решения этой задачи предлагаю следующую схему

Ну а теперь все по порядку и детально:

  1. По пункту 1(создание базы данных) я сейчас расписывать не буду – это не предмет данной статьи. Возьмем за исходное положение – база данных на новом сервере SID= stk создана, файлы данных должны быть размещены на новом сервере, на диске K.
  2. На старом сервере сначала узнаем (если не знали) куда формируются файлы трассировки:
    SELECT value from v$parameter where name = 'user_dump_dest';
  3. Сделаем читабельную копию контрольного файла (вернее скрипт на создание):
    ALTER DATABASE BACKUP CONTROLFILE TO TRACE;
  4. После чего в папке, на которую указывает параметр user_dump_dest , будет создан файл трассировки со скриптом по созданию контрольного файла.
  5. Сделаем еще перечень всех файлов данных
    select name from v$datafile;
  6. И последнее, что нужно сделать на старом сервере: если вы для старта базы данных используете spfile , то создайте init.ora. Для этого выполните команду
    create pfile from spfile;
  7. Теперь старый сервер останавливаем
    shutdown immediate
  8. Останавливаем службу: Control Panel/Services,служба OracleServiceSTB, STOP Или для этого выполним net stop OracleServiceSTB
  9. Теперь все файлы данных переносим со старого сервера на новый в соответствующую папку на диске K. Контролируем процесс по списку, полученному в пункте 5.
  10. А теперь нужно немного поколдовать:

    • подправить 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;
  11. Теперь стартуем новую базу данных таким образом:
    STARTUP NOMOUNT PFILE=С:\ORACLE\ORA92\DATABASE\INITSTK.ORA
  12. Затем выполним скрипт на создание контрольного файла.
  13. ALTER DATABASE OPEN RESETLOGS;
  14. обратите внимание на временное табличное пространство:
    alter tablespace temp add tempfile 'K:\oracle\oradata\stk\temp01.dbf' size 100M;
  15. а теперь
    create spfile from pfile;
  16. выполним
    shutdown immediate
  17. и последнее
    startup
  18. Вот и все.Рекомендую сразу же сделать полный холодный бекап и приступайте к работе. Успехов Вам!

Комментарии (4)

[42] Комментарий от Vova   30.01.2008(13:47:54)
а где про переименование, иль под этим слоганом скрывается суть переноса базы?
[43] Комментарий от dbstalker   30.01.2008(15:47:55)
Вы правы, материал изложено несколько избыточно ( база переносится на другой сервер и переименовывается). Постановка задачи указана в начале статьи. Если же вам не нужно переносить базу данных на другой сервер, то совсем просто самостоятельно адаптировать изложенную технологию для Вашего случая. Просто чаще всего ( в моём случае также) приходится переносить базу на другой сервер и переименовывать. Успехов Вам!
[240] Комментарий от murena   22.08.2008(10:31:06)
хорошая статья, мне помогло :) респект.
[277] Комментарий от Andrey   12.09.2008(19:39:52)
Начиная с 9 версии появилась условно документированная утилита NID, которая может сменить DBID / DBNAME, или все вместе.



Новый комментарий

Имя
Электронная почта
 
Ваш сайт
Защита от спама: укажите сумму 7 + 4
   
 

Поиск по блогам



Подпишись на RSS:

RSS - Подписаться на блог



Читателям


Рекомендую к прочтению





Разделы блога



Последние публикации



Последние коментарии