Oracle Admin 강좌 (Oracle9i)
Control File 설명 12 3 41,677

by 김정식 CONTROL FILE V$CONTROLFILE V$PARAMETER ALTER SYSTEM CONTROL_FILES [2002.01.23]


컨트롤 파일이란?

  - DB의 구조(Structure)를 포함하는 조그마한 바이너리 파일 입니다.

  - 오라클이 사용하며, DBA도 변경 할 수 없습니다.

  - 데이타베이스의 구조변경이나 변경사항이 있을 때 자동으로 업데이트 됩니다.

  - 모든 데이터파일, 로그 파일의 정보(경로, 이름 등)를 갖고 있습니다.

  - 컨트롤 파일은 오라클 DB를 마운트하고, 오픈하여 사용하는데 꼭 필요한 파일 입니다.

  - 컨트롤 파일이 손상되면 오라클을 mount, open 할 수 없으므로 적어도 두 개 이상의 컨트롤 파일을 백업 받아서 다른 디스크에 저장해 놓는 것이 좋습니다

  - 복구시 필요한 동기화(Synchronization)정보를 저장 합니다.

컨트롤 파일에 기록되는 내용

  • - 데이타베이스의 이름과 식별자
  • - 데이타파일의 위치
  • - 온라인 리두로그 파일 위치
  • - 현재 로그 시퀀스 번호
  • - 테이블스페이스의 이름
  • - 체크포인트 정보
  • - 현재까지의 로그 기록
  • - 백업정보

컨트롤 파일의 지정

  - initSID.ora파일의 CONTROL_FILES 파라미터를 통해 지정 합니다.

  - CONTROL_FILES파라미터의 값은 쉼표로 구분된 하나 이상의 Control File 이름을 나타냅니다.

  - 인스턴스는 데이터베이스 작업을 하는동안 CONTROL_FILES 파라미터에 나열된 Control File을 유지 관리합니다.

 
-- 예제1   
CONTROL_FILES = "C:\Oracle\oradata\control01.ctl"

-- 예제2
CONTROL_FILES =
        ("C:\Oracle\oradata\control01.ctl","C:\Oracle\oradata\backup\control02.ctl")  
    

컨트롤 파일에 대한 정보 조회

  V$CONTROLFILE : 컨트롤 파일의 이름과 상태의 리스트

  V$PARAMETER : 파라미터의 위치정보

  V$CONTROLFILE_RECORD_SECTION : 컨트롤 파일에 있는 이전 자료에 대한 정보

 
C:\> SQLPLUS /nolog
SQL> CONN / AS SYSDBA


SQL> SELECT name  FROM V$CONTROLFILE;

NAME
---------------------------------------------------
C:\ORACLE\ORADATA\ORACLE\CONTROL01.CTL
C:\ORACLE\ORADATA\ORACLE\CONTROL02.CTL
C:\ORACLE\ORADATA\ORACLE\CONTROL03.CTL
 

SQL> SELECT value 
     FROM V$PARAMETER
     WHERE name='control_files';

VALUE
------------------------------------------
C:\Oracle\oradata\oracle\control01.ctl, 
C:\Oracle\oradata\oracle\control02.ctl,
C:\Oracle\oradata\oracle\control03.ctl

1 행이 선택되었습니다.


-- 컨트롤 파일에 있는 위치, 이름 정보
SQL> SHOW PARAMETER CONTROL_FILES;

NAME            TYPE    VALUE
--------------- ------- ------------------------------
control_files   string  D:\oracle\oradata\oracle\CONTR
                        OL01.CTL, D:\oracle\oradata\or
                        acle\CONTROL02.CTL, D:\oracle\
                        oradata\oracle\CONTROL03.CTL  
    

컨트롤 파일의 다중화

  CONTROL_FILES 초기화 파라미타에 완전한 경로로 컨트롤 파일 이름을 8개 까지 지정함으로써 다중 컨트롤 파일을 가진 데이타베이스를 생성 할 수 있습니다.

  오라클은 서로 다른 디스크에 최소한 두개의 컨트롤 파일을 저장할 것을 권장합니다. 한 컨트롤파일에 문제가 생기면 사본을 이용하여 인스탄스를 재시작 하면 됩니다.

InitSID.ora파일의 컨트롤 파일 다중화

  1) 데이타베이스를 종료 합니다.

  2) 운영체제 명령을 사용하여 기존의 Control File의 사본을 다른 디스크 장치에 Copy합니다.

  3) 모든 컨트롤 파일 이름이 포함되도록 CONTROL_FILES을 편집 합니다.

 
CONTROL_FILES =
         ("C:\Oracle\oradata\control01.ctl","C:\Oracle\database2\backup\control02.ctl")    
    

  4) 데이타베이스를 다시 시작 합니다.

SPFILE의 컨트롤 파일 다중화

  1) ALTER 명령어를 사용하여 파라미터파일 정보를 수정 합니다.

 
SQL> ALTER SYSTEM SET
     CONTROL_FILES = 'D:\oracle\oradata\disk1\ctrl01.ctl',
                     'D:\oracle\oradata\disk2\ctr02.ctl' 
     SCOPE=SPFILE;
    

  2) 데이터베이스를 Shutdown 합니다. DB를 종료하는데 abort 옵션을 제외한 다른 옵션은 사용 할 수 있습니다.

  3) OS명령어를 사용하여 컨트롤 파일을 복사 합니다

 
CP D:\oracle\oradata\disk1\ctrl01.ctl  D:\oracle\oradata\disk2\ctrl02.ctl    
    

  4) DB를 STARTUP 합니다.

- 강좌 URL : http://www.gurubee.net/lecture/1089

- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^

- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.

by 야동우 [2009.10.25 01:12:21]
정말 간략하게 핵심만 쏙쏙 머리에 들어오게 설명해주셨네요
좋은 강좌 감사합니다 ^^

by 학생 [2012.01.22 12:32:54]
저렇게 해두면 하나의 컨트롤 파일의 수정이 일어나면 나머지도 다 똑같은 내용으로 수정 되는건가요? 그작업은 자동으로 처리 되는건가요?

by 학생 [2012.01.22 12:36:01]
강좌에 8개 까지라고 게시되어있는데... 8개를 다 사용하는 것에는 어떠한 장점이 있으며 컨트롤 파일이 많아지면 갖게되는 장점같은것도 있나요?
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입