2012. 7. 11. 17:37

No. 10069

CONTROL FILE 재생성하는 방법
============================

ORACLE SERVER MANAGER의 경우 V7.2 이하에서는 SQLDBA가, V7.3 이상에서는
SVRMGR이 사용되며 본 내용에서는 SVRMGR을 사용함을 알려드립니다.  
다음 자료를 참조해서 control file을 작성하시면 되겠습니다.

CONTROL FILE은 다음과 같은 경우에 다시 생성한다.

. CONTROL FILE이 손상되었는데, 이용 가능한 BACKUP FILE이 없을 경우
. 데이타베이스 이름을 변경할 경우
. DATA FILE, LOG FILE의 MAX 갯수를 확장할 때

  CONTROL FILE을 다시 생성하는 경우 ONLINE REDO LOG FILE 및 DATA FILE이
손상될 경우가 있으므로, CONTROL FILE을 생성하기 전에 모든 데이타베이스의
FULL BACKUP을 실행한다.
  CONTROL FILE을 재생성하기 위해서는 DATABASE에 관계되는 모든 FILE NAME을
알아야 한다. 다음 SQL 문을 DB 구조가 변경될 때 즉 DATA FILE을 추가하거나
DROP할 때 실행하여 DATA FILE과 LOG FILE 이름을 항상 알아둔다.
  
  SVRMGR > SELECT * FROM V$DBFILE;
  
  FILE#  NAME
  -----  ------------------------------
      1  /usr/oracle/dbs/systORA7.dbf
      2  /usr/oracle/dbs/rbsORA7.dbf
      3  /usr/oracle/dbs/tempORA7.dbf
      4  /usr/oracle/dbs/userORA7.dbf

  SVRMGR > SELECT * FROM V$LOGFILE

  GROUP#  STATUS  MEMBER
  ------  ------  ------
       1           /usr/oracle/dbs/log1ORA7.dbf
       2           /usr/oracle/dbs/log2ORA7.dbf


CONTROL FILE 생성 절차
----------------------

1. DATABASE를 SHUTDOWN한다.
  
    SVRMGR > SHUTDOWN;

2. DB를 내린 상태에서 모든 DATABASE FILE을 BACKUP 받는다.
   (DATA FILE, ONLINE REDO LOG FILE)


3. 인스턴스를 START한다.

    SVRMGR > STARTUP NOMOUNT

4. CONTROL FILE을 생성한다.

    SVRMGR > CREATE CONTROLFILE  [REUSE]
             [SET] DATABASE ORA7
             LOGFILE '/usr/oracle/dbs/log1ORA7.dbf',
                     '/usr/oracle/dbs/log2ORA7.dbf',
                     '/usr/oracle/dbs/log3ORA7.dbf'
             NORESETLOGS [ RESETLOGS ]
             DATAFILE
                     '/usr/oracle/dbs/systORA7.dbf',
                     '/usr/oracle/dbs/rbsORA7.dbf',
                     '/usr/oracle/dbs/tempORA7.dbf',
                     '/usr/oracle/dbs/userORA7.dbf',
                     '/usr/oracle/dbs/dataORA7.dbf'
             MAXLOGFILES 10
             MAXDATAFILES 60;

[ REUSE ] : 기존에 CONTROL FILE이 존재하는 경우에 사용.
             생략하면 ?/dbs 디렉토리에 CONTROL FILE이 없어야 한다.

[ SET ]   : 데이타베이스 이름을 변경할 때 사용

5. ?/dbs/initORA7 혹은 ?/dbs/configORA7.ora ( ORACLE 7의 경우) 화일 내의
  CONTROL_FILES 파라미터에 새로 생성된 CONTROL FILE을 추가한다.
  
  CONTROL_FILES = (/usr/oracle/dbs/ctrl1ORA7.ctl,
                   /usr/oracle/dbs/ctrl2ORA7.ctl)

6. 데이타베이스를 MOUNT, RECOVER, OPEN한다.
  
  SVRMGR > SHUTDOWN
  SVRMGR > STARTUP MOUNT

[ NORESETLOGS ] OPTION을 사용한 경우

  SVRMGR > RECOVER DATABASE
    Media recovery complete.
  SVRMGR > ALTER DATABASE OPEN;


[ RESETLOGS ] OPTION을 사용한 경우
  
  SVRMGR > RECOVER DATABASE
           USING BACKUP CONTROLFILE
           UNTIL CANCEL;

  incomplete cancel-based recovery를 실행한다.

  SVRMGR > ALTER DATABASE OPEN RESETLOGS;
   Statement processed

Posted by 몰라욧