Как осуществить перенос файлов данных БД ORACLE на другой диск?

dbstalker, 12 июня

Такую задачу достаточно часто приходиться решать. Поэтому неплохо иметь для этого готовый регламент робот. Коротко это выглядит так:

Обычно я поступаю следующим образом:
  1. Сначала нужно знать какие файлы данных есть в нашей базе данных. Для этого выполним select name from v$datafile; Таким образом, перечень готов, к тому же теперь знаем где файлы находятся.
  2. Теперь приготовим скрипт для переименования файлов данных . Предполагаем, что нужно перенести с диска С: на диск K:. Выполнив вот такой запрос, получим скрипт на переименование файлов данных.
    Select 'alter database rename file '''||name||''' to ''K'||substr(name,2)||''';' from v$datafile;
    
    Результат таков:
    alter database rename file 'C:\ORACLE\ORADATA\STB\SYSTEM01.DBF' to 'K:\ORACLE\ORADATA\STB\SYSTEM01.DBF;
    alter database rename file 'C:\ORACLE\ORADATA\STB\UNDOTBS01.DBF' to 'K:\ORACLE\ORADATA\STB\UNDOTBS01.DBF;
    alter database rename file 'C:\ORACLE\ORADATA\STB\DRSYS01.DBF' to 'K:\ORACLE\ORADATA\STB\DRSYS01.DBF;
    alter database rename file 'C:\ORACLE\ORADATA\STB\INDX01.DBF' to 'K:\ORACLE\ORADATA\STB\INDX01.DBF;
    alter database rename file 'C:\ORACLE\ORADATA\STB\TOOLS01.DBF' to 'K:\ORACLE\ORADATA\STB\TOOLS01.DBF;
    alter database rename file 'C:\ORACLE\ORADATA\STB\USERS01.DBF' to 'K:\ORACLE\ORADATA\STB\USERS01.DBF;
    alter database rename file 'C:\ORACLE\ORADATA\STB\XDB01.DBF' to 'K:\ORACLE\ORADATA\STB\XDB01.DBF;
    
  3. Если нужно перенести и управляющие файлы на тот же диск, то выполним следующие манипуляции:
    • выполнив команду
      create pfile from spfile;
      получим init.ora (файл инициализации) нашей базы данных.
    • В файле инициализации строку
      control_files='c:\oracle\oradata\STB\control01.ctl','c:\oracle\oradata\STB\control02.ctl','c:\oracle\oradata\STB\control03.ctl'
      заменить нужно, например, на
      control_files='k:\oracle\oradata\STB\control01.ctl','k:\oracle\oradata\STB\control02.ctl','k:\oracle\oradata\STB\control03.ctl'
    • Если необходимо перенести архивные файлы журнализации и чтобы они формировались в новое месторасположение, то измените еще и параметр LOG_ARCHIVE_DEST_1
  4. Если необходимо перенести файлы журнализации, то командой
    Select 'alter database rename file '''||member||''' to ''K'||substr(member,2)||''';' from v$logfile;
    
    Получим скрипт
    alter database rename file 'C:\ORACLE\ORADATA\STB\REDO01.LOG' to 'K:\ORACLE\ORADATA\STB\REDO01.LOG;
    alter database rename file 'C:\ORACLE\ORADATA\STB\REDO02.LOG' to 'K:\ORACLE\ORADATA\STB\REDO02.LOG;
    alter database rename file 'C:\ORACLE\ORADATA\STB\REDO03.LOG' to 'K:\ORACLE\ORADATA\STB\REDO03.LOG;
  5. Теперь сервер останавливаем
     shutdown immediate
  6. Останавливаем службу: Control Panel/Services,служба OracleServiceSTB, STOP или для этого выполним net stop OracleServiceSTB
  7. Теперь все файлы данных переносим в соответствующую папку на диске K. Контролируем процесс по списку, полученному в пункте 1.
  8. Затем стартуем базу данных
    SQL> STARTUP MOUNT PFILE=C:\oracle\ora92\database\initstb.ora;
    ORACLE instance started.
    Total System Global Area 2392403784 bytes
    Fixed Size                   458568 bytes
    Variable Size            1862270976 bytes
    Database Buffers          528482304 bytes
    Redo Buffers                1191936 bytes
    Database mounted.
    
  9. Затем выполним наш скрипт на переименование файлов данных и файлов журнализации:
    SQL> @c:\1\r.sql;
    Database altered.
    Database altered.
    ……………….
    Database altered.
    SQL> alter database open;
    Database altered.
    
    SQL> create spfile from pfile;
    File created.
    SQL> shutdown immediate
    Database closed.
    Database dismounted.
    ORACLE instance shut down.
    SQL> startup
    ORACLE instance started.
    Total System Global Area 2392403784 bytes
    Fixed Size                   458568 bytes
    Variable Size            1862270976 bytes
    Database Buffers          528482304 bytes
    Redo Buffers                1191936 bytes
    Database mounted.
    Database opened.
    
    Все!

Тэги: общее

ОднаКнопка

 

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

Я не спамер: введите суму 7+0



 

От авторов блога

О Блоге - прочитай перед началом.

Задать вопрос и получить ответ - уже решено 94 вопросов

Глоссарий - список терминов и сокращений


 
 

Бизнес форум

Последние темы:

Микрофон
19 августа, 2 ответа
Сумочка
19 августа, 2 ответа
средства для рук
17 августа, 3 ответа