2012. 7. 9. 18:09

1. Control File의 구성요소

   - Database name
   - Data file location
   - Redo log file location
   - Tablespace names
   - Current log sequence number --> redo log file의 번호
   - Checkpoint information
   - Log history
   - Backup information
   
   * Control file은 2가지 type이 있다.
     Reusable : 재사용 가능한 정보. Recovery Manager(RMAN)를 사용하기위한 backup정보 저장
     Not reusable : 재사용 가능하지 못한 정보.
     
2. Control file의 size를 변경하기위한 parameter들.

   - MAXLOGFILES
   - MAXLOGMEMBERS
   - MAXLOGHISTORY
   - MAXDATAFILES
   - MAXINSTANCES
   
3. Conrol file의 정보를 갖고있는 Data Dictionary

   - V$CONTROLFILE : name
     SVRMGR> SELECT name
          2  FROM v$controlfile ;
          
   - V$PARAMETER : name, value
     SVRMGR> SELECT name, value
          2  FROM v$parameter WHERE name = 'control_files' ;
          
   - V$CONTROLFILE_RECORD_SECTION : type, records_size, records_total, records_used
     SVRMGR> SELECT type, records_size, records_total, records_used
          2  FROM v$controlfile_record_section
          3  WHERE type = 'DATAFILE' ;
          
     * oracle 7엔 v$controlfile_record_section view가 없다.
     
4. Multiplexing the Control file

   * control file이 손상되었을때를 대비해서 control file은 2개정도 만드는게 좋다.
     control file을 2개로 setting해놓으면 기록될 때 똑같은 내용을 2개의 file에 기록한다.
     backup 용으로 좋다.
     
   * 절차
     1) shutdown immediate
     2) host로 나가서 file을 copy한다.
     3) init.ora file에 있는 control_files parameter를 수정한다.
        control_files=(/DISK1/control01.con, /DISK2/control02.con)
     4) startup



[ Lab ]

1. 현재 database의 control file의 구성을 확인하십시오.
SVRMGR> select * from v$controlfile ;

2. control file이 없거나 손상되었다고 가정하고, 오라클을 기동하십시오.
SVRMGR> shutdown immediate
SVRMGR> host
$ mv $ORACLE_HOME/DATA/DISK1/cntrlSID.ctl $ORACLE_HOME/DATA/DISK1/cntrlSID.bak
$ exit
SVRMGR> startup    ==> Database mount error! (ORA-00205)
SVRMGR> shutdown immediate
SVRMGR> host
$ mv $ORACLE_HOME/DATA/DISK1/cntrlSID.bak $ORACLE_HOME/DATA/DISK1/cntrlSID.ctl
SVRMGR> startup    ==> Success!

3. control file을 하나 더 추가하십시오.
SVRMGR> shutdown immediate
SVRMGR> host
$ cp $ORACLE_HOME/DATA/DISK1/cntrlSID.ctl $ORACLE_HOME/DATA/DISK1/cntrl2SID.ctl
$ vi $ORACLE_HOMD/dbs/initSID.ora

  control_files = ($ORACLE_HOME/DATA/DISK1/cntrlSID.ctl,
                   $ORACLE_HOME/DATA/DISK1/cntrl2SID.ctl)
  --> 이렇게 수정한다.
$ exit
SVRMGR> startup
SVRMGR> select * from v$controlfile ;

4. database에 생성할 수 있는 data file의 maximum 개수를 확인하십시오.
SVRMGR> select records_total from v$controlfile_record_section
     2  where type = 'DATAFILE' ;

 

Posted by 몰라욧