[Oracle] Supplemental Logging

오라클에서 Redo 로그 파일은 데이터베이스 변경 사항을 기록하는 중요한 역할을 합니다. 일반적으로 Redo 로그는 데이터베이스 복구에 필요한 데이터만 포함합니다.

그러나 특정 응용 프로그램이나 로그 분석 도구(LogMiner 등)에서 추가 데이터가 필요할 경우 Supplemental Logging을 활성화해야 합니다.

Supplemental Logging이란?

Supplemental Logging은 데이터베이스 변경 사항과 함께 추가적인 컬럼 정보를 Redo 로그 파일에 기록하도록 설정하는 과정입니다.
Oracle Database는 기본적으로 Supplemental Logging이 기본적으로 비활성화 되어 있으므로, LogMiner와 같은 도구를 사용하려면 최소한 Minimal Supplemental Logging을 활성화해야 합니다.

*오라클 로그마이너(Oracle LogMiner)는 Redo 로그 데이터를 분석하고, SQL 명령어로 변경 내역을 재구성하는 데 사용되는 유틸리티로, 주로 데이터 추적 및 변경 기록 분석 목적으로 활용하는 프로그램이에요.

Supplemental Logging이 필요한 경우

  1. 복제 또는 다른 데이터베이스로 SQL 적용:
    • ROWID 대신, 기본 키 또는 고유 컬럼 집합을 사용해 데이터베이스 간의 데이터 충돌을 방지.
  2. 행 변경 전 상태 추적:
    • 업데이트된 컬럼 외에도 전체 행의 변경 전 이미지(before-image)를 기록해 정확한 변경 내역 분석 가능.

Supplemental Logging 구성 요소

Supplemental Log Group

Supplemental Log Group은 추가로 기록할 컬럼 집합을 정의하며, 두 가지 유형이 있습니다

  1. Unconditional Supplemental Log Group (무조건적 보조 로그 그룹)
    • 특정 컬럼의 변경 전 이미지가 해당 컬럼이 변경되었는지와 관계없이 항상 기록.
    • 'Always Log Group'이라고도 부릅니다.
  2. Conditional Supplemental Log Group (조건부 보조 로그 그룹)
    • 특정 컬럼 중 하나라도 변경되었을 때에만 변경 전 이미지를 기록.

Supplemental Logging Levels

Supplemental Logging은 데이터베이스 전역 또는 특정 테이블 수준에서 설정할 수 있습니다

  1. Database-Level Supplemental Logging:
    • 데이터베이스 전체에 적용하며, 모든 트랜잭션에 대해 활성화.
  2. Table-Level Supplemental Logging:
    • 특정 테이블에만 적용되며, 필요한 데이터만 추가 기록.

Supplemental Logging 예시

아래는 EMP 테이블을 참고해 Supplemental Logging을 설정한 SQL 코드입니다

CREATE TABLE EMP_LOGGING
(
  EMPNO      NUMBER(5),          -- 사원 번호
  ENAME      VARCHAR2(50),       -- 사원 이름
  JOB        VARCHAR2(30),       -- 직급
  MGR        NUMBER(5),          -- 매니저 번호
  HIREDATE   DATE,               -- 입사일
  SAL        NUMBER(10, 2),      -- 급여
  COMM       NUMBER(10, 2),      -- 커미션
  DEPTNO     NUMBER(3)           -- 부서 번호
)
TABLESPACE EMP_TSPACE            -- 테이블스페이스 설정
PCTUSED    0                     -- 공간 재사용 임계치
PCTFREE    10                    -- 블록 공간 여유율
LOGGING                            -- Redo 로그 활성화
NOCOMPRESS                         -- 압축 비활성화
NOPARALLEL                         -- 병렬 처리 비활성화
MONITORING;                        -- 테이블 모니터링 활성화

-- 무조건적 Supplemental Log Group 추가
ALTER TABLE EMP_LOGGING 
  ADD SUPPLEMENTAL LOG GROUP EMP_LOG_GRP (EMPNO, ENAME, DEPTNO) ALWAYS;

-- 테이블 주석 추가
COMMENT ON TABLE EMP_LOGGING IS '사원 데이터 관리 및 Supplemental Logging 테이블';

Supplemental Logging 데이터의 저장 위치

Supplemental Logging에서 기록된 데이터는 Redo 로그 파일에 저장됩니다. Redo 로그는 데이터 변경 사항뿐만 아니라 Supplemental Logging에서 설정한 추가 컬럼 데이터도 포함합니다.

Redo 로그 파일 경로 확인

Redo 로그 파일의 위치는 아래 SQL로 확인 가능합니다.

SELECT MEMBER
FROM V$LOGFILE;

Supplemental Logging의 주요 활용

  1. 데이터베이스 복구:
    • 장애 복구 시, Redo 로그 파일에 기록된 Supplemental Logging 데이터로 정확한 복구 가능.
  2. 변경 내역 분석:
    • LogMiner를 통해 트랜잭션 변경 사항을 추적하고, 재구성된 SQL로 분석.
  3. 데이터 동기화 및 복제:
    • 다른 데이터베이스와 데이터 동기화를 위한 정확한 변경 사항 전달.
이전최근
댓글 쓰기
가져가실 때, 출처 표시 부탁드려요! 감사합니다. 💗