IT기술/Oracle

5 Control File 관리하기

dobbby 2013. 12. 4. 11:55
반응형

앞 장에서 살펴본 바와 같이 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




반응형