컨트롤 파일의 다중화의 필요성 : 컨트롤 파일은 DB의 구조를 저장하는 조그만 바이너리 파일 입니다. 만약 이 컨트롤 파일을 손실하게 됐을땐 DB FILE이 멀정하더라도, 그것을 찾을수 있는 방법이 없기때문에 db를 모두 손실한것과 같습니다. 그런 상황을 막기 위해 이 컨트롤 파일을 다중화 하여 저장 해야 합니다.
1. pfile을 이용하여 Control file을 다중화 하는 경우
2. spfile을 이용하여 Control file을 다중화 하는 경우
1. pfile을 이용하여 Control file을 다중화 하는 경우
SQL> shutdown abort
SQL> startup pfile=$ORACLE_HOME/dbs/initdevdb.ora
SQL> show parameter control
일단 pfile의 컨트롤 파일을 확인함.SQL> startup pfile=$ORACLE_HOME/dbs/initdevdb.ora
SQL> show parameter control
SQL> shutdown immediate
SQL> !vi $ORACLE_HOME/dbs/initdevdb.ora
꼭! immediate를 사용하여 shutdown 한다. 종류가 완료된 후에 pfile을 열어 수정한다. (여기서는 2개의 컨트롤 파일을 3개로 늘리는 과정이다.)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')
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 한다. 그리고 컨트롤 파일을 확인해본다.SQL> show parameter control
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> select name from v$controlfile;
SQL> alter system set control_files = '/u01/app/oracle/oradata/devdb/control01.ctl',
spfile에 04번 컨트롤 파일 추가
'/u01/app/oracle/oradata/devdb/control02.ctl',
'/u01/app/oracle/oradata/devdb/control03.ctl',
'/u01/app/oracle/oradata/devdb/control04.ctl' scope=spfile;
'/u01/app/oracle/oradata/devdb/control04.ctl' scope=spfile;
SQL> !cp
/u01/app/oracle/oradata/devdb/control01.ctl
/u01/app/oracle/oradata/devdb/control04.ctl
1번 컨트롤 파일을 복사하여 4번 컨틀롤 파일을 만들어 준다.