우리 회사 데이터베이스를 티베로로 변경하기
컨트롤 파일 0 0 80,237

by 티베로 티베로 파일 티베로 컨트롤파일 [2018.10.11]


컨트롤 파일은 데이터베이스의 정상적인 운영을 위해 데이터베이스가 생성하고(설치 시) 읽고(데이터베이스 기동 시) 작성하는(데이터베이스 운영 중) 바이너리 파일이다.

데이터베이스 관리자는 해당 파일을 읽거나 사용할 수 없으므로 데이터베이스가 필요한 상황에 부하 없이 읽고 쓸 수 있도록 관리하는 역할을 수행해야 하며 이를 위해 다음과 같은 운영 포인트들을 숙지해야 한다.

  • 1. 컨트롤 파일의 역할, 주요 내용 및 중요성을 파악해야 한다.
  • 2. 컨트롤 파일은 데이터베이스 운영관련 주요 변경 정보들이 끊임없이 기록된다. 만약 컨트롤 파일의 장애로 인하여 해당 정보를 기록하지 못한다면 데이터베이스가 다운되는 장애를 맞이할 수도 있으므로 안전하게 이중화하여 관리해야 한다(예를 들어, 체크포인트 수행 시 체크포인트 타임스탬프를 컨트롤 파일에 기록하지 못하면 데이터베이스가 다운된다).
  • 3. 컨트롤 파일은 쓰기I/O가 지속적으로 발생하므로 다른 파일들(데이터 파일, 리두로그 파일 등)과 분리된 디스크에 저장하는 것이 좋으며 이중화된 파일도 원본 파일과 다른 디스크에 저장하는 것이 바람직하다.
  • 4. 컨트롤 파일 장애 혹은 데이터베이스의 복구에 대비하여 주기적으로 백업을 받고(재생성 script) 필요 시 재생성해야 한다.

가. 컨트롤 파일의 주요 내용

컨트롤 파일은 표 6-3과 같은 정보들을 저장하고 있으며 데이터베이스 운영중 해당 정보들이 변경되는 작업(테이블스페이스/데이터 파일 변경, 체크포인트 수행등)이 수행될 때마다 그 내용이 갱신되고 해당 작업이 확정된다.

컨트롤 파일이 이러한 정보를 저장하고 갱신하는 이유는 다음과 같이 데이터베이스 기동 시 정상 여부를 검증하고 비정상 시 복구하기 위해서이다.

1. 데이터베이스 기동 시(재기동 시) 데이터 파일, 매개변수 파일, 리두로그 파일 및 테이블 스페이스 등이 컨트롤 파일에 명시된 것과 동일하게 구성되어 있는지를 검증

2. 데이터베이스가 정상 종료되었으며 물리적인 데이터 파일과 컨트롤 파일에 기록된 데이터 파일의 체크포인트 타임스탬프(TSN, Tibero System Number)가 동일한지 검증(사용자의 마지막 요청까지 물리적인 데이터파일에 정상적으로 반영되어 있는지 여부 확인)

3. 만약 검증에 실패할 경우 컨트롤 파일의 정보를 활용하여 데이터베이스를 복구

티베로 데이터베이스가 매개변수 파일을 읽어 들여 정상적으로 인스턴스 생성을 완료했다면 (기동-1단계) 이후에는 위와 같이 컨트롤 파일을 통해 검증을 완료(기동-2단계)한다.

매개변수 파일과 컨트롤 파일은 모두 티베로 데이터베이스 기동 시에 반드시 필요한 파일이라는 공통점을 가지고 있으나, 기동 시 참조한 이후 더 이상 사용하지 않는 매개변수 파일과 달리 컨트롤 파일은 운영 중 계속해서 변경 사항을 기록해야 하므로 컨트롤 파일에 문제가 생길경우 기동이 불가능하고 운영 중 손실되었다면 데이터베이스가 다운되는 장애가 발생하므로 반드시 이중화하여 관리해야 한다.

  • [표 6-3] 컨트롤파일 정보
  • 정보 설명
    데이터베이스 데이터베이스 이름, $TB_SID.tip 파일의 이름 또는 생성되었거나 변경된 타임스탬프(TSN,TIBERO SYSTEM NUMBER) 등이 있다.
    테이블스페이스 테이블 스페이스를 구성하는 데이터 파일 또는 생성되었거나 변경된 타임스탬프(TSN,TIBERO SYSTEM NUMBER) 등이 있다.
    데이터파일 데이터 파일의 이름과 위치 또는 생성되었거나 변경된 타임스탬프(TSN, TIBERO SYSTEM NUMBER) 등이 있다.
    리두로그 로그 그룹의 개수 및 이를 구성하는 로그 멤버(로그 파일)의 이름과 위치 또는 생성되었거나 변경된 타임스탬프(TSN, TIBERO SYSTEM NUMBER) 등이 있다.
    체크포인트 최근 체크포인트를 수행한 타임스탬프(TSN, TIBERO SYSTEM NUMBER) 등이 있다.

나. 컨트롤 파일 이중화 관리

컨트롤 파일은 데이터베이스 정상여부 검증 및 복구에 필요한 각종 정보들이 변경이 발생할 때마다 저장되므로 데이터베이스가 운영 중에 항상 접근이 가능한 상태로 유지되어야 한다

따라서, 관리자는 컨트롤 파일이 손상되지 않도록 주의하는 것과 동시에 반드시 장애에 대비하여 이중화하여 관리해야 한다. 이중화 이후에는 변경 사항이 모든 컨트롤 파일에 동시 기록되며 정보를 확인할 때는 하나의 파일에서 읽게 된다.

장애 등으로 인해 1개 파일에 문제가 생기더라도 티베로는 문제없이 운영되며 데이터베이스 정상종료 이후 다시 이중화하여 재기동하면 된다.

컨트롤 파일은 티베로 데이터베이스에서 사용하는 바이너리 형태의 파일로써 데이터베이스 관리자가 읽거나 쓸 수 없다. 다만 tbsql을 통해 SQL> alter system dump controlfile; 명령으로 dump를 추출하면 매개변수 파일의 TRACE_DUMP_DEST의 설정된 경로에서 해당 내용을 확인할 수 있다.

컨트롤 파일 이중화 방법

1. 티베로 데이터베이스 최초 생성 시 매개변수 파일에 이중화된 컨트롤 파일을 지정한다 -> CONTROL_FILES="/dev/rcontrol001","/dev/rcontrol002"

2. 최초 생성 시 1개의 컨트롤 파일을 지정하고 운영 중이라면 데이터베이스를 정상 종료한 후 OS 명령어를 통해 원본 파일을 복사/이동하고 해당 파일을 매개변수에 추가한 후 재기동한다.

3. 데이터베이스 복구 과정에서 컨트롤 파일 재생성(CREATE CONTROLFILE) 할 때 이중화되기를 원한다면 매개변수 파일에 이중화된 컨트롤 파일을 지정한 후 재생성 한다.

다. 컨트롤 파일의 디스크 분리

리두로그 파일, 컨트롤 파일과 같이 순차적인 쓰기 I/O가 끊임없이 일어나는 파일들은 병렬로 동시에 쓰기 작업이 처리될 수 있도록 서로 다른 디스크에 구성하는 것이 바람직하다(컨트롤 파일의 원본과 복사본도 서로 다른 디스크에 구성해야 한다).

또한 RAID 0, RAID 5 구성을 하지 않아야 여러 디스크에 분산(STRIPE)됨으로 인한 I/O 부하를 예방할 수 있다(여건이 된다면 이러한 파일들은 SSD에 구성하는 것을 검토할 것을 추천한다).

라. 컨트롤 파일의 백업

매개변수 파일은 데이터베이스 기동 이후 더 이상 사용되지 않으므로 운영 중에 OS 명령어로 copy를 해둔 백업본을 원본 파일 장애 시 대체하여 사용이 가능했다.

그러나 컨트롤 파일에 저장된 정보는 데이터베이스 운영 중에 끊임없이 변경되고 그 정보는 다른 파일들(리두로그, 데이터 파일 등)과 타임스탬프(TSN) 정보 등이 일치해야만 계속 사용이 가능하므로 OS 명령어로 복사해둔 컨트롤 파일은 다른 파일들과 정보가 달라져 사용할 수 없는 파일이 된다.

따라서 데이터베이스를 정상적으로 종료한 이후 복사한 컨트롤 파일을 제외하고 운영 중에 복사한 컨트롤 파일은 어떠한 경우라도 재사용이 불가능하다.

만약 데이터베이스를 정상적으로 종료 시키지 못하고 컨트롤 파일 손실 등 여러 가지 장애로 인하여 데이터베이스를 복구(Recovery)해야 하는 경우라면 반드시 컨트롤 파일을 재생성해야 하며 이때를 대비해서 운영 중 주요 DDL 작업 이후 컨트롤 파일 재생성 스크립트를 생성하는 데이를 컨트롤 파일 백업이라고 한다.

컨트롤 파일 백업 예시
alter database backup controlfile 
to trace as '/tibero/backupcontrol.sql'; 

참고 1) 컨트롤 파일에 저장되는 내용(데이터 파일, 리두로그 파일, 테이블 스페이스 등)에 변경이 발생하는 DDL 작업 후에는 컨트롤 파일 백업을 받아두는 것이 안전하다

참고 2) 데이터베이스를 정상 종료한 후 전체 백업하며 복사한 컨트롤 파일은 함께 백업한 파일들과 함께 재기동하여 사용이 가능하다.

참고 3) 데이터베이스 복구 시 컨트롤 파일의 상세한 내용은 ‘http://technet.tmaxsoft.com의 Tibero 백업 & 복구 가이드’를 참고한다.

  • - 해당 강좌는 도서 " [우리 회사 데이터베이스를 티베로로 변경하기]"의 내용을 옮겼습니다.
  • - 해당 도서는 기간계 DBMS(DATABASE MANAGEMENT SYSTEM)를 티베로로 전환하는 실제 프로젝트를 수행한 실무자가 DBMS 전환 과정과 실제 적용 사례, 문제 해결 과정 등을 자세하게 설명하고 있습니다.

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

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

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

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입