вторник, 13 марта 2012 г.

[РЕШЕНИЕ] Как создать контрол-файлы Oracle?


Oracle Database

Когда требуется пересоздавать контрол-файлы Oracle? 
  1. У Вас их нет или они повреждены.
  2. Меняется физическое расположение файлов БД

Делаем скрипт для создания контрол-файлов


sqlplus / as sysdba
SQL> alter database backup controlfile to trace;


Данная команда создаст trace-файл в каталоге udump
В моем случае это:


\ora\admin\work\udump\orcl_ora_2052.trc


В этом файле есть команды из которых можно легко сделать скрипт для создания контрол-файлов.
переименуем orcl_ora_2052.trc в ctl.sql и отредактируем как нам надо:


CREATE CONTROLFILE REUSE DATABASE "work" RESETLOGS ARCHIVELOG
MAXLOGFILES 5
MAXLOGMEMBERS 3
MAXDATAFILES 14
MAXINSTANCES 1
MAXLOGHISTORY 226
LOGFILE
GROUP 1 '\ora\oradata\work\REDO01.LOG' SIZE 100M,
GROUP 2 '\ora\oradata\work\REDO02.LOG' SIZE 100M,
GROUP 3 '\ora\oradata\work\REDO03.LOG' SIZE 100M
DATAFILE
'\ora\oradata\work\SYSTEM01.DBF',
'\ora\oradata\work\UNDOTBS01.DBF',
'\ora\oradata\work\EXAMPLE01.DBF',
'\ora\oradata\work\INDX01.DBF',
'\ora\oradata\work\TOOLS01.DBF',
'\ora\oradata\work\USERS01.DBF',
'\ora\oradata\work\OEM_REPOSITORY.DBF',
'\ora\oradata\work\CWMLITE01.DBF',
'\ora\oradata\work\DRSYS01.DBF',
'\ora\oradata\work\ODM01.DBF',
'\ora\oradata\work\XDB01.DBF',
'\ora\oradata\work\USERS02.DBF',
'\ora\oradata\work\USERS03.DBF',
'\ora\oradata\work\USERS04.DBF'
CHARACTER SET WE8MSWIN1252
;


ALTER DATABASE OPEN RESETLOGS;




Стартуем СУБД в nomount mode и запустим ctl.sql под sysdba


sqlplus / as sysdba
SQL> startup nomount
ORACLE instance started.


Total System Global Area 80812648 bytes
Fixed Size 453224 bytes
Variable Size 54525952 bytes
Database Buffers 25165824 bytes
Redo Buffers 667648 bytes
SQL> @ctl.sql


Control file created.




Database altered.


SQL> select status from v$instance;


STATUS
------------------------------------
OPEN


SQL> select name from v$controlfile;


NAME
--------------------------------------------------------
\ora\oradata\work\CONTROL01.CTL
\ora\oradata\work\CONTROL02.CTL
\ora\oradata\work\CONTROL03.CTL




Для переименования базы данных достаточно поменять в скрипте reuse на set:


CREATE CONTROLFILE SET DATABASE "work" RESETLOGS ARCHIVELOG
MAXLOGFILES 5
MAXLOGMEMBERS 3
MAXDATAFILES 14
MAXINSTANCES 1
MAXLOGHISTORY 226
LOGFILE
GROUP 1 '\ora\oradata\work\REDO01.LOG' SIZE 100M,
GROUP 2 '\ora\oradata\work\REDO02.LOG' SIZE 100M,
GROUP 3 '\ora\oradata\work\REDO03.LOG' SIZE 100M
DATAFILE
'\ora\oradata\work\SYSTEM01.DBF',
'\ora\oradata\work\UNDOTBS01.DBF',
'\ora\oradata\work\EXAMPLE01.DBF',
'\ora\oradata\work\INDX01.DBF',
'\ora\oradata\work\TOOLS01.DBF',
'\ora\oradata\work\USERS01.DBF',
'\ora\oradata\work\OEM_REPOSITORY.DBF',
'\ora\oradata\work\CWMLITE01.DBF',
'\ora\oradata\work\DRSYS01.DBF',
'\ora\oradata\work\ODM01.DBF',
'\ora\oradata\work\XDB01.DBF',
'\ora\oradata\work\USERS02.DBF',
'\ora\oradata\work\USERS03.DBF',
'\ora\oradata\work\USERS04.DBF'
CHARACTER SET WE8MSWIN1252
;


ALTER DATABASE OPEN RESETLOGS;


Удачи и всего самого хорошего!


Комментариев нет:

Отправить комментарий