Control 파일은 Database가 운영될 때 실시간으로 각종 정보가 저장되고 또 조회가 된다.
이 파일에 장애가 발생할 경우 Instance가 실패되어 중단되므로 잘 관리해야함
컨트롤 파일 관리하기
컨트롤 파일이 삭제 될 경우 아주 심각한 문제가 발생하기 때문에 이 파일이 삭제되지 않도록 주의해야 하며, 혹시나 삭제되더라도 복구할 수 있도록 여러곳에 복사본을 만들어 분산시켜 관리하는것을 권장 ( 이를 Multiplexing - 다중화 라고 한다 )
DBA가 startup을 실행하면 parameter file을 읽은 후 control file 의 위치를 확인 후 해당 control file들을 메모리로 불러와 내용을 확인. 다중화 할 경우 parameter file 에 control file 위치를 기록한 후 그 위치에 control file을 복사해 두 면 된다.
실습 1. spfile 일 경우 다중화 하는 방법
SQL> show parameter spfile ; 을 이용해 spfile로 실행하는지 확인 (value 값이 있으면 spfile )
step 1. 현재 control file 조회
(11g)
SQL> select name from v$controlfile ;
NAME
-----------------------------------------
/app/oracle/oradata/testdb/control01.ctl
/app/oracle/fast_recovery_area/testdb/control02.ctl
step 2. spfile 의 내용을 변경한 후 Instance 종료
SQL> alter system set control_file='/home/oracle/disk1/ctrl01.ctl' ,
'/home/oracle/disk2/ctrl02.ctl' ,
'/home/oracle/disk3/ctrl03.ctl' scope = spfile ;
System altered.
SQL> shutdown immediate ;
step 3. 대상 디렉토리를 생성하고 파일을 복사
SQL>!
[oracle@ ~]$ cd /home/oracle
[oracle@ oracle]$ mkdir disk1 disk2 disk3
[oracle@ oracle]$ cp /app/oracle/oradata/testdb/control01.ctl /home/oracle/disk1/control01.ctl
[oracle@ oracle]$ cp /app/oracle/oradata/testdb/control01.ctl /home/oracle/disk2/control02.ctl
[oracle@ oracle]$ cp /app/oracle/oradata/testdb/control01.ctl /home/oracle/disk3/control03.ctl
[oracle@ oracle]$ exit
step 4. startup 시켜서 확인
SQL> startup
SQL> select name from v$controlfile ;
NAME
----------------------------
/home/oracle/disk1/control01.ctl
/home/oracle/disk2/control02.ctl
/home/oracle/disk3/control03.ctl
순서 : spfile 의 내용변경 -> Instance 종료 -> control file 복사 -> Instance Open
실습 2. pfile 일 경우 다중화 하는 방법
현재 spfile 이므로 spfile 삭제하고 pfile 생성
SQL> create pfile from spfile ;
SQL> !rm -rf $ORACLE_HOME/dbs/spfiletestdb.ora
SQL> shutdown immediate ;
SQL> startup
SQL> show parameter pfile ; <- pfile 로 열었기 때문에 value 값이 비어있어야 한다
step 1. 현재 사용중인 control file 조회
SQL> select name from v$controlfile ;
NAME
-----------------------------
/home/oracle/disk1/control01.ctl
/home/oracle/disk2/control02.ctl
/home/oracle/disk3/control03.ctl
위에서 조회된 control file의 위치를
/home/oracle/disk4/control01.ctl
/home/oracle/disk5/control02.ctl
/home/oracle/disk6/control03.ctl 로 다중화
step 2. instance 종료
SQL> shutdown immediate ;
step 3. pfile 에서 control file의 경로를 수정한 후 저장
SQL> !vi $ORACLE_HOME/dbs/inittestdb.ora
*.control_files='/home/oracle/disk4/control01.ctl' ,
'/home/oracle/disk4/control01.ctl' ,
'/home/oracle/disk4/control01.ctl'
찾아서 변경
step 4. 해당 디렉토리를 생성 후 control file 복사
SQL> !
[oracle @localhost ~]$ cd /home/oracle
[oracle @localhost oracle]$ mkdir disk4 disk5 disk6
[oracle @localhost oracle]$ cp /home/oracle/disk1/control01.ctl /home/oracle/disk4/control01.ctl
[oracle @localhost oracle]$ cp /home/oracle/disk1/control01.ctl /home/oracle/disk5/control02.ctl
[oracle @localhost oracle]$ cp /home/oracle/disk1/control01.ctl /home/oracle/disk6/control03.ctl
[oracle @localhost oracle]$ exit
step 5. startup 해서 확인
SQL> startup
SQL> select name from v$controlfile ;
NAME
--------------------------------------
/home/oracle/disk4/control01.ctl
/home/oracle/disk5/control02.ctl
/home/oracle/disk6/control03.ctl
pfile 의 경우 step3 과 step4 의 과정을 바꾸어도 상관없다. 그러나 나머지 순서는 바뀌면 장애가 발생하니 순서에 주의
control file 에는 변경되는 정보가 실시간으로 저장되기 때문에 가장 최근에 사용한 것만 진짜 control file 이고 나머지는 사용할 수 없는 control file이 되므로 이동이나 복사할때 최근 사용한 것으로 해야 한다.
'오라클 > 관리 실무' 카테고리의 다른 글
Oracle 저장구조 (0) | 2014.10.23 |
---|---|
Tablespace 와 Data File 관리하기 (2) | 2014.10.21 |
Redo Log 관리하기 (0) | 2014.10.20 |
ORACLE 시작하기 & 종료하기 (0) | 2014.10.20 |
Oracle Background Process (0) | 2014.10.17 |
SQL 문장의 실행 원리 (0) | 2014.10.17 |
Oracle Architecture (2) | 2014.10.17 |