앞 장에서 살펴본 바와 같이 Oracle Server 를 Startup 하면
Parameter File 을 읽고 NOMOUNT 단계로 가서
Instance를 메모리에 생성한 후
Control File 을 읽고 Database 의 무결성을 확인한 후
Data File 과 Redo Log File 을 읽고 Open 상태로 가게 된다.
또한 Control File 은 Database 가 운영될 때 실시간으로 각종 정보가 저장되고 조회된다.
이 파일에 장애가 발생할 경우 Instance 가 실패되어 중단되므로 잘 관리해야 한다.
Control File 은 Binary File 이라서 Control File 안에 있는 내용은 사용자나 DBA 가 직접 수정할 수 없다.
만약 내용을 변경하려면 Server Process 에게 변경을 요구하는 SQL 문장이나 DDL 문장을 수행해야 한다.
1. 각 버전별 Control File 의 내용
오라클 7 버전
오라클 8 버전
오라클 9i 버전 22개
오라클 10g 버전 30개 정보
오라클 11g 버전 33개 항목
2. Control File 관리하기
Control File 은 오라클 서버를 운영하는 데 필수적인 정보들이 저장되어 있으며 Instance 가 Mount 이상의 상태일 때부터 Control File 의 내용이 실시간으로 변경되고 조회된다. 이 파일을 잘못 관리할 경우 심각한 장애가 발생할 수 있으므로 평소에 이 파일을 잘 관리하여야 한다.
파일이 삭제되지 않도록 주의해야 하며, 혹시 삭제되더라도 복구 할 수 있도록 여러 곳에 복사본을 만들어 관리하는 것을 권장한다.
(Multiplexing, 다중화)
DBA가 startup 을 실행하면 Parameter File 을 읽은 후 Control File 의 위치를 확인한 후 해당 Control File 들을 메모리로 불러와서 내용을 확인한다.
중요한 점은 Parameter File 에 적혀있는 내용을 보고 Control File 의 위치를 파악한다는 점이다.
그래서 여러 곳으로 다중화 할 경우에는 Parameter File 에 Control File 위치를 기록한 후
그 위치에 Control File 을 복사해 두면 된다.
실습1. Spfile 일 경우 다중화 하는 방법 (11g 기준)
현재 상태 확인
SYS> select status from v$instance ;
SYS> show parameter spfile ;
현재 Control File 조회하기
SYS> select name from v$controlfile ;
Spfile 의 내용을 변경한 후 Instance 를 종료한다.
SYS> alter system set control_files='/home/oracle/disk1/control01.ctl',
'/home/oracle/disk2/control02.ctl' scope=spfile ;
SYS> shutdown immediate ;
대상 디렉토리를 생성하고 파일을 복사한다.
SYS> !
$ cd /home/oracle
$ mkdir disk1 disk2
$ cp /app/oracle/oradata/testdb/control01.ctl /home/oracle/disk1/control01.ctl
$ cp /app/oracle/fast_recovery_area/testdb/control02.ctl /home/oracle/disk2/control02.ctl
$ exit
정상적으로 startup 시켜서 확인한다.
SYS> startup
SYS> select name from v$controlfile ;
실습2. Pfile 일 경우 다중화 하는 방법 (11g 기준)
현재 spfile 이므로 pfile 을 생성한 후 spfile을 삭제하고 Instance 를 재시작 한 후 다중화 작업을 하겠다.
SYS> !ls $ORACLE_HOME/dbs
spfile 로 pfile 생성하기
SYS> create pfile from spfile ;
SYS> !rm -f $ORACLE_HOME/dbs/spfiletestdb.ora
SYS> !ls $ORACLE_HOME/dbs
SYS> shutdown immediate ;
SYS> startup
value 부분에 아무 내용이 안나오면 pfile 을 사용중이다.
SYS> show parameter pfile ;
현재 사용중인 Control File 조회하기
SYS> select name from v$controlfile ;
Instance 를 종료한다.
SYS> shutdown immediate ;
pfile 에서 Control File 의 경로를 수정한 후 저장한다.
SYS> !vi $ORACLE_HOME/dbs/inittestdb.ora
해당 디렉토리를 생성 후 Control File 을 복사한다.
SYS> !
$ cd /home/oracle/
$ mkdir disk3 disk4
$ cp /home/oracle/disk1/control01.ctl /home/oracle/disk3/control01.ctl
$ cp /home/oracle/disk2/control02.ctl /home/oracle/disk4/control02.ctl
$ exit
정상 Open 후 확인한다.
SYS> startup
SYS> select name from v$controlfile ;
old control file 에러가 뜨는 이유
startup
pfile
control file 90버전
data file 100버전
1. control file 을 새로 만든다
모든 설정이 초기화 되기 때문에 권장하지 않는다.
연습문제1.
spfile 을 사용하여 아래와 같이 구성하세요.
cd/data
mkdir disk1 disk2 disk3
/data/disk1/control01.ctl
disk2/control02.ctl
disk3/control03.ctl
연습문제2.
pfile 을 이용하여 아래와 같이 구성하세요.
cd /data
mkdir disk4 disk5 disk6
/data/disk4/control01.ctl
disk5/control02.ctl
disk6/control03.ctl