ch5. Control File 관리하기.

 

1. 각 버전별 Control File의 내용.

 - control file은 binary file이라서 os편집기로 직접 내용을 볼 수 없다. -→ 내용을 확인하려면 해당 파일을 Trace작업을 별도로 수행해서 확인해야 한다.

 오라클  7 버전

 1.  데이터베이스에 대한 전체 요약 정보 저장
 2.  리두 로그 관련 정보 저장

 3.  로그 그룹의 각 로그 멤버에 관한 정보 저장
 4. 데이터 파일에 대한 정보(복구할 때 중요하게 사용) 
 5. 로그 히스토리 정보 저장

 오라클  8 버전

 (7버전의 5가지 항목에 내용 추가)

 - 8 버전부터 등장한 RMAN 관련 정보
 1. 진행중인 체크포인트 관련 정보 저장   
 2. 데이터베이스내 전체 테이블 스페이스 정보 저장   
 3. Tablesapce가 offline이나 읽기전용일 경우 online으로 만들 때와 쓰기가능하게 하는 주요 정보 저장   
 4. 아카이브 로그 관련 정보 포함   
 5. 백업셋 관련 정보 보관   

 Oracle 9i 버전

 1. Database Entry : 데이터베이스 전체에 대한 정보 요약
 2. Checkpoint Progress Record : 체크포인트 관련 주요 정보들 저장
 3. Extended Database Entry : control file 백업 등의 추가적인 정보 저장
 4. Redo Thread Records : Redo log Thread 관련 정보
 5. Log File Records : 각 리두 로그 그룹 별 시퀀스 번호와  SCN 번호 등의 정보
 6. Data File Records : 각 데이터 파일별 File name, checkpoint SCN, stop SCN, hot backup 상태, 오프라인 상태 등 저장
 7. Temp File Records : 각 temporary file 관련 상태 기록

 8. Tablespace Records : 각 tablespace 이름과 링크된 데이터 파일 정보, PITR(Point In Time Recovery) 관련 정보 저장
 9. RMAN CONFIGURATION RECORDS
 10. LOG FILE HISTORY RECORDS
 11. OFFLINE RANGE RECORDS
 12. ARCHIVED LOG RECORDS
 13. BACKUP SET RECORDS
 14. BACKUP PIECE RECORDS
 15. BACKUP DATAFILE RECORDS
 16. BACKUP LOG RECORDS
 17. DATAFILE COPY RECORDS
 18. BACKUP DATAFILE CORRUPTION RECORDS
 19. DATAFILE COPY CORRUPTION RECORDS
 20. DELETION RECORDS
 21. PROXY COPY RECORDS
 22. INCARNATION RECORDS

 Oracle 10g 버전 - 총 30개의 정보

 1. DATABASE ENTRY
 2. CHECKPOINT PROGRESS RECORDS
 3. EXTENDED DATABASE ENTRY
 4. REDO THREAD RECORDS
 5. LOG FILE RECORDS
 6. DATA FILE RECORDS
 7. TEMP FILE RECORDS
 8. TABLESPACE RECORDS
 9. RMAN CONFIGURATION RECORDS
 10. FLASHBACK LOGFILE RECORDS
 11. THREAD INSTANCE MAPPING RECORDS
 12. MTTR RECORDS
 13. STANDBY DATABASE MAP RECORDS
 14. RESTORE POINT RECORDS
 15. LOG FILE HISTORY RECORDS
 16. OFFLINE RANGE RECORDS
 17. ARCHIVED LOG RECORDS
 18. BACKUP SET RECORDS

 19. BACKUP PIECE RECORDS
 20. BACKUP DATAFILE RECORDS
 21. ACKUP LOG RECORDS
 22. DATAFILE COPY RECORDS
 23. ACKUP DATAFILE CORRUPTION RECORDS
 24. DATAFILE COPY CORRUPTION RECORDS
 25. DELETION RECORDS
 26. PROXY COPY RECORDS
 27. INCARNATION RECORDS
 28. RMAN STATUS RECORDS
 29. DATAFILE HISTORY RECORDS
 30. NORMAL RESTORE POINT RECORDS

 Oracle 11g 버전 - 총 33개 항목

 1. DATABASE ENTRY
 2. CHECKPOINT PROGRESS RECORDS
 3. EXTENDED DATABASE ENTRY
 4. REDO THREAD RECORDS
 5. LOG FILE RECORDS
 6. DATA FILE RECORDS
 7. TEMP FILE RECORDS
 8. TABLESPACE RECORDS
 9. RMAN CONFIGURATION RECORDS
 10. FLASHBACK LOGFILE RECORDS
 11. THREAD INSTANCE MAPPING RECORDS
 12. MTTR RECORDS
 13. STANDBY DATABASE MAP RECORDS
 14. RESTORE POINT RECORDS
 15. ACM SERVICE RECORDS
 16. LOG FILE HISTORY RECORDS
 17. OFFLINE RANGE RECORDS
 18. ARCHIVED LOG RECORDS
 19. FOREIGN ARCHIVED LOG RECORDS
 20. BACKUP SET RECORDS
 21. BACKUP PIECE RECORDS
 22. BACKUP DATAFILE RECORDS

 23. BACKUP LOG RECORDS
 24. DATAFILE COPY RECORDS
 25. BACKUP DATAFILE CORRUPTION RECORDS
 26. DATAFILE COPY CORRUPTION RECORDS
 27. DELETION RECORDS
 28. PROXY COPY RECORDS
 29. INCARNATION RECORDS
 30. RMAN STATUS RECORDS
31. DATAFILE HISTORY RECORDS
32. NORMAL RESTORE POINT RECORDS
33. DATABASE BLOCK CORRUPTION RECORDS

 

 

2. Control File 관리하기.

** pfile의 내용과 실제 내용이 다를 경우 DB는 죽는다. 이게 맞춰져야 한다. pifle에는 control01.ctl, control02.ctl, control03.ctl이 적혀있는데, 실제는 control01.ctl, control02.ctl 만 있는 경우, db죽는다. 단, pfile에는 control01,02,03이 적혀있는데, 실제는 control01,02,03,04가 있는 경우 어차피 오라클이 pfile을 보고 찾아가므로 실제 존재하는 control04.ctl은 인식을 하지 않는다.

▶ 다중화(multiplexing): control file은 삭제될 경우 심각한 문제가 발생하므로, 복사본을 만들어서 분산시켜 사용하는 것을 권장한다. 

 → 여러곳으로 다중화 할 경우에는 Parameter File에 Control File의 위치를 기록한 후 그 위치에 Control File 복사 

 

 

 


[실습1] Spfile일 경우 다중화.

 : 현재 운영중인 control file의 경로를 확인한 후 /home/oracle/disk1~3/control01~03.ctl 세가지로 다중화 해보자.

 

 0. 현재 instance 상태 확인 : select status from v$instance;

 1. 현재 파라미터 pfile을 사용하는지, spfile을 사용하는지 조회 : show parameter spfile; (또는 pfile;) -> value 값 있으면 spfile사용중

 2. 현재 control file 조회 : select name from v$controlfile;

 

 

 3. spfile 내용 변경 : alter system set  control_files='/home/oracle/disk1~3/control01~03.ctl' scope=spfile;

 4. Instance 강제 종료 : shutdown immediate;

 

 

 

 

 5. 대상 디렉토리 생성 후 파일 복사.

 

 

 

 6. 정상적으로 startup 시킨후, 현재 control file 조회.

 

 

 

 

[실습2] Pfile일 경우 다중화.

 : 현재 spfile이므로 pfile을 생성한 후 spfile을 삭제하고 다중화 작업해보겠습니다.

  /home/oracle/disk1~3/control01~03.ctl 을 /home/oracle/disk4~6/control04~06.ctl로 다중화.

 

 [ 실습 준비과정 ] : pfile 생성한 후 spfile 삭제하고 Isntance 재시작.

 * 현재 파라미터 pfile사용하는지, spfile사용하는지 조회 : show parameter spfile;

 * 파라미터파일 조회 : ls $ORACLE_HOME/dbs

 * spfile로부터 pfile 생성 : create pfile from spfile;

 * spfile 삭제 : !rm -f $ORACLE_HOME/dbs/spfiletestdb.ora 

  --spfile과 pfile이 동시에 존재할 경우, spfile만 인식하므로, pfile을 사용하려면 spfile을 삭제해 주어야 한다.

 * instance 재시작 : shutdown immediate -> startup

 

 0. 현재 파라미터 pfile을 사용하는지 spfile을 사용하는지 조회 : show parameter pfile;  --value 값이 없으면 pfile 사용중.

 1. 현재 사용중인 control file 조회 : select name from v$controlfile;

 2. Instance 강제 종료 : shutdown immediate;

 

 

 

 3. pfile을 vi창으로 열어 control file의 경로를 수정한 후 저장 : !vi $ORACLE_HOME/dbs/inittestdb.ora

 

 

 

 

 4. 해당 디렉토리 생성 후 control file 복사.

  ***pfile을 사용하여 다중화 하는 경우에는, control file을 먼저 복사 한 후에, vi창으로 pfile열어서 control file경로를 수정해도 상관 없다.***

 5. 정상 open후 확인 : startup -> select name from v$controlfile;

 

 

 

control file 다중화 정리 / 요약

 spfile의 경우.

 

 1. spfile 내용 변경 : alter system set  control_files='/home/oracle/disk1~3/control01~03.ctl' scope=spfile;

 2. Instance 강제 종료 : shutdown immediate;

 3. 대상 디렉토리 생성 후 파일 복사.

 4. 정상적으로 startup 후 현재 control file조회

 

 pfile의 경우.

 

 1. Instance 강제 종료 : shutdown immediate;

 2. pfile을 vi창으로 열어 control file의 경로를 수정한 후 저장 : !vi $ORACLE_HOME/dbs/inittestdb.ora

 3. 해당 디렉토리 생성 후 control file 복사.

 -> 2,3번 과정 순서 바꿔서 해도 상관 없음.

 4. 정상 open후 확인 : startup -> select name from v$controlfile;

 

 

- control file에는 변경되는 정보가 실시간으로 저장되기 때문에 가장 최근에 사용한 것만 진짜 control file이고 나머지들은 사용할 수 없는 구 control file로 변하므로, 이동이나 복사할 때 가장 최근에 사용했던 것만 사용해야 한다.

 


 

[실습시험]

spfile을 사용하여 아래와 같이 control file을 다중화 하세요.

    [실습 준비과정 : 에러 발생] 

 
>conn / as sysdba   --관리자계정으로 로그인
>shutdown immediate;   --db를 종료한다.
>!
$ rm $ORACLE_HOME/dbs/*.ora  -- 모든 파라미터 파일 삭제하는 오류 발생시킨다.

 

 -- spfile과 pfile 모두 존재 하지 않는다.

 

 

 

 [ 답안 ]

1. 원본 pfile을 찾아서 복사해 온다. : ls $ORACLE_BASE/admin/testdb/pfile

 

 

2. pfile을 vi창으로 열어서 확인해보면, control file 경로가 구경로로 지정되어있음을 확인할 수 있다.

 

 

 

3. 정상적으로 startup 한 후, 현재 파라미터 파일을 pfile사용하는지, spfile사용하는지 조회한다. -> show parameter spfile;

 

 

4. pfile을 이용해 spfile을 생성한다.

 

 

5. 현재 사용중인 control file 조회후, spfile의 내용을 변경한다.

 -> Instance를 강제 종료한 후, 해당 디렉토리를 생성하고 파일을 복사한다.

  

 

6. 정상적으로 startup한 후, 현재 사용중인 controlfile을 조회한다.

 

Print Friendly and PDF Posted by JJ*
: