컨트롤 파일의 다중화의 필요성 : 컨트롤 파일은 DB의 구조를 저장하는 조그만 바이너리 파일 입니다. 만약 이 컨트롤 파일을 손실하게 됐을땐 DB FILE이 멀정하더라도, 그것을 찾을수 있는 방법이 없기때문에 db를 모두 손실한것과 같습니다. 그런 상황을 막기 위해 이 컨트롤 파일을 다중화 하여 저장 해야 합니다.

1. pfile을 이용하여 Control file을 다중화 하는 경우

SQL> shutdown abort
SQL> startup pfile=$ORACLE_HOME/dbs/initdevdb.ora
SQL> show parameter control
일단 pfile의 컨트롤 파일을 확인함.

SQL> shutdown immediate
SQL> !vi $ORACLE_HOME/dbs/initdevdb.ora
 control_files = ('/u01/app/oracle/oradata/devdb/control01.ctl',
                  '/u01/app/oracle/oradata/devdb/control02.ctl',
                  '/u01/app/oracle/oradata/devdb/control03.ctl')
꼭! immediate를 사용하여 shutdown 한다. 종류가 완료된 후에 pfile을 열어 수정한다. (여기서는 2개의 컨트롤 파일을 3개로 늘리는 과정이다.)

SQL> !cp /u01/app/oracle/oradata/devdb/control01.ctl /u01/app/oracle/oradata/devdb/control03.ctl
1번 컨트롤 파일을 복사하여 3번 컨틀롤 파일을 만들어 준다.

SQL> startup pfile=$ORACLE_HOME/dbs/initdevdb.ora
SQL> show parameter control
pfile을 이용하여 startup 한다. 그리고 컨트롤 파일을 확인해본다.


2. spfile을 이용하여 Control file을 다중화 하는 경우

SQL> create spfile from pfile='$ORACLE_HOME/dbs/initdevdb.ora';
spfile생성

SQL> startup force
SQL> select name from v$controlfile;
서버 재실행 그리고 컨트롤 파일 확인

SQL> alter system set control_files = '/u01/app/oracle/oradata/devdb/control01.ctl',
                  '/u01/app/oracle/oradata/devdb/control02.ctl',
      '/u01/app/oracle/oradata/devdb/control03.ctl',
      '/u01/app/oracle/oradata/devdb/control04.ctl' scope=spfile;
spfile에 04번 컨트롤 파일 추가

SQL> !cp /u01/app/oracle/oradata/devdb/control01.ctl /u01/app/oracle/oradata/devdb/control04.ctl
1번 컨트롤 파일을 복사하여 4번 컨틀롤 파일을 만들어 준다.