트랜잭션 로그 설정 및 요구사항

Oracle GoldenGate는 리두 로그를 사용하여 소스 트랜잭션을 복제하는 데 필요한 데이터를 캡처합니다. Oracle GoldenGate 처리를 시작하기 전에 소스 시스템의 Oracle 리두 로그를 제대로 구성해야 합니다.

이 섹션에서는 Oracle GoldenGate에 적용되는 다음 로깅 레벨을 다룹니다. 사용하는 로깅 레벨은 사용 중인 Oracle GoldenGate 기능에 따라 다릅니다.

주: 이 필수 로깅으로 인해 리두 볼륨이 증가합니다. 로깅을 사용으로 설정하기 위해 Oracle GoldenGate 처리를 시작할 준비가 될 때까지 기다릴 수 있습니다.

이 표에서는 여러 로깅 속성에 대한 Oracle GoldenGate 사용 사례를 보여줍니다.

로깅 옵션 명령 이름 동작 사용 사례
강제 로깅 모드로 설정됨 ALTER DATABASE FORCE LOGGING; 모든 트랜잭션 및 로드를 강제로 로깅합니다. 모든 Oracle GoldenGate 사용 사례에 강력히 권장됩니다. FORCE LOGGING는 모든 테이블 레벨 NOLOGGING 설정을 무효화합니다.

최소 데이터베이스 레벨 보완 로깅

하위 집합 데이터베이스 복제 로깅 사용을 참조하십시오.

ALTER DATABASE ADD SUPPLEMENTAL LOG DATA; 리두 로그에 행 체인화 정보를 추가하기 위한 최소 보완 로깅을 활성화합니다. 모든 Oracle GoldenGate 사용 사례에 필요
스키마 레벨 보완 로깅 [ADD SCHEMATRANDATA](/pls/topic/lookup?ctx=en/database/goldengate/core/26/coredoc&id=GCLIR-GUID-5DA7C3DC-5D87-4A8B-AD23-6EF587A5CF41)

기본 키의 무조건 보완 로깅과 스키마에 있는 모든 테이블의 고유 키와 외래 키의 조건부 보완 로깅을 사용으로 설정합니다. 이러한 모든 키를 함께 예약 열이라고 합니다.

또한 이 설정을 사용하면 이 스키마에 생성된 새 객체가 적절한 보완 로깅을 갖게 됩니다.

스키마의 모든 현재 및 미래 테이블에 대한 로깅을 사용으로 설정합니다. 소스 및 대상에서 기본 키, 고유 키 및 외래 키 열이 동일하지 않은 경우 ALLCOLS를 사용합니다.
지원되는 모든 열에 대해 무조건 로깅을 사용하는 스키마 레벨 보완 로깅입니다. 지원되지 않는 열 유형은 스키마 레벨 추가 로깅 사용을 참조하십시오. ADD SCHEMATRANDATA 및 ALLCOLS 옵션

스키마에 있는 모든 테이블에 대해 테이블의 모든 열에 대해 무조건 보완 로깅을 활성화합니다.

또한 이 설정을 사용하면 이 스키마에 생성된 새 객체가 적절한 보완 로깅을 갖게 됩니다.

업데이트 또는 삭제를 수행할 때 변경된 열뿐 아니라 모든 열 값이 확인되는 양방향 및 활성-활성 구성에 사용됩니다. 이렇게 하면 더 많은 리소스가 필요하지만, 이를 통해 최고 레벨의 실시간 데이터 검증을 수행할 수 있으므로 충돌 감지가 가능합니다.

이 메소드는 초기 로드에 HANDLECOLLISIONS 매개변수를 사용할 경우에도 사용해야 합니다.

스키마 레벨 보완 로깅, 최소 설정 ADD SCHEMATRANDATA 및 NOSCHEDULINGCOLS 옵션

기본 키와 스키마에 있는 모든 테이블의 모든 유효한 고유 인덱스의 무조건 보완 로깅을 활성화합니다.

또한 이 설정을 사용하면 이 스키마에 생성된 새 객체가 적절한 보완 로깅을 갖게 됩니다.

비통합 Replicat에만 사용합니다. 필요한 최소 스키마 레벨 로깅입니다.

통합 Replicat에 대한 기본 지원 기능을 갖춘 테이블 레벨 보완 로깅

테이블 레벨 보완 로깅 사용을 참조하십시오.

ADD TRANDATA 테이블의 고유 키와 외래 키에 대한 기본 키 및 조건부 보완 로깅의 무조건 보완 로깅을 사용으로 설정합니다. 이러한 모든 키를 함께 예약 열이라고 합니다. 스키마 레벨 보완 로깅이 사용되지 않는 한 모든 Oracle GoldenGate 사용 사례에 필요합니다. 소스 및 대상에서 기본 키, 고유 키 및 외래 키 열이 동일하지 않은 경우 ALLCOLS를 사용합니다.
지원되는 모든 열에 대해 무조건 로깅을 사용하는 테이블 레벨 보완 로깅입니다. (지원되지 않는 열 유형은 테이블 레벨 추가 로깅 사용을 참조하십시오.) ADD TRANDATA 및 ALLCOLS 옵션 테이블의 모든 열에 대해 무조건 보완 로깅을 활성화합니다.

업데이트 또는 삭제를 수행할 때 변경된 열뿐 아니라 모든 열 값이 확인되는 양방향 및 활성-활성 구성에 사용됩니다. 이렇게 하면 더 많은 리소스가 필요하지만, 이를 통해 최고 레벨의 실시간 데이터 검증을 수행할 수 있으므로 충돌 감지가 가능합니다.

또한 소스와 대상 기본, 고유 및 외래 키가 동일하지 않거나 소스와 대상 간에 지속적으로 변경되는 경우에도 사용할 수 있습니다.

테이블 레벨 보완 로깅, 최소 설정 ADD TRANDATA 및 NOSCHEDULINGCOLS 옵션 Primary Key 및 테이블의 모든 유효한 고유 인덱스에 대한 무조건 보완 로깅을 활성화합니다. 비통합 Replicat 및 비병렬 Replicat에 사용합니다. 이는 필요한 최소 테이블 레벨 로깅입니다.
JSON 관계형 이중성 뷰 및 JSON 수집 테이블에 대한 테이블 레벨 보완 로깅입니다. ADD TRANDATA(Duality View name 및 Collection Table name 포함) 지정된 이중성 뷰 및 수집 테이블에 대한 보완 로깅을 사용으로 설정합니다. 자세한 내용은 JSON Relational Duality Views and JSON Collection Tables에 대한 보완 로깅 사용을 참조하십시오. 자세한 내용은 JSON 관계형 이중성 뷰 및 JSON 모음 테이블 지원 세부정보를 참조하십시오.

부분 집합 데이터베이스 복제 로깅 사용

Oracle은 Oracle 소스 데이터베이스를 강제 로깅 모드로 설정할 것을 적극 권장합니다. 강제 로깅 모드는 모든 트랜잭션 및 로드에 대한 로깅을 강제하며, 이와 반대되는 모든 사용자 또는 스토리지 설정을 무효화합니다. 그러면 Extract 구성의 소스 데이터가 누락되지 않습니다.

모든 Oracle GoldenGate 및 XStream 클라이언트에 대해 기본 권장 모드인 LogMiner에서 사용할 수 있는 부분 집합 데이터베이스 복제라는 세분화된 데이터베이스 보완 로깅 모드가 있습니다. 이 모드는 이전에 사용된 최소 보완 로깅 모드를 대체합니다.

부분 집합 데이터베이스 복제 로깅은 현재 CDB$ROOT(및 모든 사용자-PDB가 이를 상속함)에서 사용으로 설정됩니다.

주: 데이터베이스 레벨 PK(기본 키) 및 고유 인덱스(UI) 로깅은 테이블의 하위 세트를 복제하는 경우에만 권장되지 않습니다. Live Standby와 함께 사용하거나, Oracle GoldenGate가 마이그레이션 또는 업그레이드의 다운타임을 줄이기 위해 모든 테이블을 복제하려는 경우 사용할 수 있습니다.

다음 단계를 수행하여 필요한 경우 부분 집합 데이터베이스 복제 로깅 및 강제 로깅을 확인하고 사용으로 설정합니다.

  1. ALTER SYSTEM 권한을 가진 사용자로 SQL*Plus에 로그인합니다.

  2. 다음 명령을 실행하여 데이터베이스가 보완 로깅 모드와 강제 로깅 모드인지 확인합니다. 두 질의에 대한 결과가 YES인 경우 데이터베이스는 Oracle GoldenGate 요구사항을 충족합니다.

    SELECT SUPPLEMENTAL_LOG_DATA_MIN, FORCE_LOGGING FROM V$DATABASE;
  3. 둘 중 하나 또는 둘 다에 대한 결과가 NO인 경우 다음 단계를 계속하여 필요에 따라 사용으로 설정합니다.

    ALTER PLUGGABLE DATABASE *pdbname* ADD SUPPLEMENTAL LOG DATA SUBSET DATABASE REPLICATION;
    ALTER DATABASE FORCE LOGGING;
  4. 다음 명령을 실행하여 이러한 등록 정보가 사용으로 설정되었는지 확인합니다.

    SELECT SUPPLEMENTAL_LOG_DATA_MIN, FORCE_LOGGING FROM V$DATABASE;

    두 속성에 대한 질의 출력은 YES여야 합니다.

  5. 로그 파일을 전환합니다.

    ALTER SYSTEM SWITCH LOGFILE;

스키마 레벨 보완 로깅 사용

Oracle GoldenGate는 스키마 레벨 보완 로깅을 지원합니다. 스키마 레벨 로깅은 Oracle GoldenGate DDL 복제 기능을 사용하는 경우 Oracle 소스 및 대상 데이터베이스에 필요하고, 복제 중인 테이블에서 DDL을 수행(또는 실행할 수 있는 경우) 소스 데이터베이스에서 필요합니다. 다른 모든 사용 사례에서는 선택 사항이지만 대신 테이블 레벨 로깅을 사용해야 합니다(테이블 레벨 보완 로깅 사용 참조).

기본적으로 스키마 레벨 로깅은 기본 키의 무조건 보완 로깅과 스키마에 있는 모든 테이블의 고유 키와 외래 키의 조건부 보완 로깅을 자동으로 활성화합니다. 이 옵션을 사용하면 필요에 따라 로깅을 변경할 수 있습니다.

주: Oracle은 스키마에 추가된 새 테이블이 와일드카드 사양을 충족하는 경우 캡처되도록 하기 때문에 테이블 레벨 로깅 대신 스키마 레벨 로깅을 사용할 것을 강력히 권장합니다. 키 열에 대한 변경 사항은 보완 로그 데이터에도 자동으로 반영되므로 이 방식도 권장됩니다. 예를 들어, 키가 변경될 경우 ADD TRANDATA를 실행할 필요가 없습니다.

소스 시스템에서 다음 단계를 수행하여 스키마 레벨 보완 로깅을 활성화합니다.

  1. 소스 시스템에서 명령줄을 시작합니다.

  2. 스키마 레벨 보완 로깅을 사용으로 설정할 권한이 있는 인증서 저장소의 사용자 별칭과 함께 DBLOGIN 명령을 실행합니다.

    DBLOGIN USERIDALIAS *alias*

    USERIDALIAS 및 추가 옵션에 대한 자세한 내용은 Oracle GoldenGate용 매개변수 및 함수 참조의 USERIDALIAS를 참조하십시오.

  3. 다중 테넌트 데이터베이스에서 ADD SCHEMATRANDATA 또는 ADD TRANDATA를 사용하는 경우 PDB에 직접 로그인하여 명령을 수행할 수 있습니다. 또는 루트 레벨(C## 사용자 사용)에서 로그인하는 경우 PDB를 포함해야 합니다. Oracle GoldenGate로 데이터 변경사항을 캡처할 각 스키마에 대해 ADD SCHEMATRANDATA 명령을 실행합니다.

    ADD SCHEMATRANDATA pdb.schema [ALLCOLS | NOSCHEDULINGCOLS]

    설명:

    • 옵션을 사용하지 않을 경우 ADD SCHEMATRANDATA 스키마는 기본 키의 소스 시스템에 대한 무조건 보완 로깅과 지정된 스키마에 있는 모든 현재 및 미래 테이블의 모든 고유 키와 외래 키에 대한 조건부 보완 로깅을 사용으로 설정합니다. 무조건부 로깅은 현재 작업에서 키가 변경되었는지 여부에 관계없이 기본 키 값을 로그에 강제로 적용합니다. 조건부 로깅은 하나 이상이 현재 작업에서 변경된 경우 외래 또는 고유 키의 모든 열 값을 기록합니다. 비통합 Replicat를 지원하려면 기본값이 선택 사항이지만 통합 Replicat를 지원하려면 기본 키, 고유 키 및 외래 키를 모두 인바운드 서버에서 사용할 수 있어야 종속성을 계산할 수 있습니다.

    • ALLCOLS를 사용하여 테이블의 모든 열에 대한 무조건 보완 로깅을 활성화하고 지정된 스키마의 모든 현재 및 미래 테이블에 적용할 수 있습니다. 소스 및 대상 테이블에 서로 다른 예약 열이 있는 경우 통합 Replicat를 지원하는 데 사용됩니다. 일정 잡기 열은 기본 키, 고유 키 및 외래 키입니다.

    • NOSCHEDULINGCOLS는 기본 키 값과 스키마의 기존 테이블에 대한 모든 적합한 고유 인덱스 및 나중에 추가된 새 테이블만 기록합니다. 스키마 레벨 로깅의 최소 필수 레벨이며 비통합 모드의 Replicat에만 적합합니다.

    다음 예제에서 이 명령은 hr 스키마에 대해 기본 보완 로깅을 사용으로 설정합니다.

    ADD SCHEMATRANDATA pdbeast.hr ALLCOLS

    다음 예제에서 이 명령은 HR 스키마에 대한 기본 키 및 적합한 고유 인덱스에 대해서만 보완 로깅을 사용으로 설정합니다.

    ADD SCHEMATRANDATA pdbeast.hr NOSCHEDULINGCOLS

테이블 레벨 보완 로깅 사용

다음과 같은 경우 소스 시스템에서 테이블 레벨 보완 로깅을 활성화합니다.

소스 시스템에서 다음 단계를 수행하여 테이블 레벨 보완 로깅을 활성화하거나 명령의 선택적 기능을 사용합니다.

  1. 소스 시스템에서 명령줄을 실행합니다.

  2. 테이블 레벨 보완 로깅을 사용으로 설정할 권한이 있는 인증서 저장소의 사용자 별칭을 사용하여 DBLOGIN 명령을 실행합니다.

    DBLOGIN USERIDALIAS *alias*

    DBLOGIN 및 추가 옵션에 대한 자세한 내용은 Oracle GoldenGate에 대한 매개변수 및 함수 참조의 USERIDALIAS를 참조하십시오.

  3. ADD TRANDATA 명령을 실행합니다.

    ADD TRANDATA [*PDB*.]*schema.**table* [, COLS (*columns)*] [, NOKEY] [, ALLCOLS | NOSCHEDULINGCOLS]

    설명:

    • PDB는 테이블이 다중 테넌트 컨테이너 데이터베이스에 있는 경우 루트 컨테이너 또는 플러거블 데이터베이스의 이름입니다.

    • schema는 테이블을 포함하는 소스 스키마입니다.

    • table은 테이블의 이름입니다. 객체 이름 지정에 대한 지침은 Oracle GoldenGate 입력에서 객체 이름 지정을 참조하십시오.

    • ADD TRANDATA를 다른 옵션 없이 사용하면 기본 키의 무조건 보완 로깅과 테이블의 고유 키와 외래 키의 조건부 보완 로깅이 자동으로 사용으로 설정됩니다. 무조건부 로깅은 현재 작업에서 키가 변경되었는지 여부에 관계없이 기본 키 값을 로그에 강제로 적용합니다. 조건부 로깅은 하나 이상이 현재 작업에서 변경된 경우 외래 또는 고유 키의 모든 열 값을 기록합니다. 비통합 Replicat(NOSCHEDULINGCOLS 참조)를 지원하려면 기본값이 선택 사항이지만, 종속성을 계산하려면 인바운드 서버에서 기본 키, 고유 키 및 외래 키를 모두 사용할 수 있어야 하므로 통합 Replicat를 지원하려면 기본값이 필요합니다.

    • ALLCOLS는 테이블의 모든 열에 대해 무조건 보완 로깅을 사용으로 설정합니다. 소스 및 대상 테이블에 서로 다른 예약 열이 있는 경우 통합 Replicat를 지원하는 데 사용됩니다. 일정 잡기 열은 기본 키, 고유 키 및 외래 키입니다.

    • NOSCHEDULINGCOLS는 비통합 모드의 Replicat에만 적합합니다. 테이블에 대해 정의된 고유 제약 조건 유형 또는 고유 제약 조건이 없는 모든 열에 적합한 ADD SUPPLEMENTAL LOG DATA ALWAYS 절과 함께 ALTER TABLE 명령을 실행합니다. 이 명령은 스키마 레벨 로깅이 사용되지 않을 때 Oracle GoldenGate의 기본 테이블 레벨 로깅 요구사항을 충족합니다. Oracle GoldenGate에서 키 또는 인덱스를 선택하는 방법은 소스 및 대상 테이블에서 행 고유성 유지를 참조하십시오.

    • COLS 열은 KEYCOLS 절 또는 필터링 및 조작에 필요한 키가 아닌 열을 기록합니다. 괄호가 필요합니다. NOKEY 옵션이 없는 경우 이러한 열은 기본 키와 함께 기록됩니다.

    • NOKEY는 기본 키 또는 고유 키의 로깅을 방지합니다. 대체 KEYCOLS 열을 기록하려면 TABLE 및 MAP 매개변수의 KEYCOLS 절과 ADD TRANDATA 명령의 COLS 절이 필요합니다.

  4. ADD TRANDATA를 COLS 옵션과 함께 사용하는 경우 대상에서 해당 열에 대한 고유 인덱스를 생성하여 행 검색을 최적화합니다. 해당 열을 KEYCOLS 절의 대체 키로 로깅하는 경우 Oracle GoldenGate 프로세스를 구성할 때 TABLE 및 MAP 문에 KEYCOLS 절을 추가하는 것을 메모해 두십시오.

JSON 관계형 이중성 뷰 및 JSON 모음 테이블에 대한 보완 로깅 사용

JSON 관계형 이중성 뷰 및 JSON 모음 테이블을 복제하기 전에 Oracle GoldenGate에서 보완 로깅을 설정해야 합니다. 기본적으로 보완 로깅은 JSON 관계형 이중성 뷰 및 JSON 모음 테이블에 대해 사용으로 설정되지 않습니다. 이중성 뷰 및 컬렉션 테이블에 대한 보완 로깅을 사용으로 설정할 때 다음 지침을 사용할 수 있습니다.

테이블 레벨 보완 로깅을 설정하는 단계는 테이블 레벨 보완 로깅 사용을 참조하십시오.

테이블 레벨 보완 로깅 제거

Oracle GoldenGate에서 더 이상 테이블을 캡처할 필요가 없고 테이블에 대한 TABLE 매개변수가 Extract 매개변수 파일에서 제거되었거나, TABLEEXCLUDE를 사용하여 와일드카드 문에서 테이블을 제외하면 테이블에서 보완 로깅을 제거할 수 있습니다.

주: Extract가 보완 로깅이 사용으로 설정되지 않은 테이블을 분석하는 경우 DML 작업 유형에 따라 비정상 종료됩니다.

DELETE TRANDATA를 사용하여 보완 로깅을 제거하면 테이블의 Replicat ID 레벨이 NOTHING로 설정됩니다. 추가 로깅은 [관리 서비스], [구성] 페이지의 [마이크로 서비스 아키텍처] 웹 인터페이스를 사용하여 사용 안함으로 설정하거나, 소스 데이터베이스에 대해 생성된 인증서 아래에서 사용 안함으로 설정하거나, DELETE TRANDATA 명령을 사용하여 실행할 수 있습니다.

다음은 DELETE TRANDATA를 실행하기 위한 구문입니다.

DBLOGIN USERIDALIAS alias_name
DELETE TRANDATA schema.tablename

보완 로깅 레벨 확인

INFO TRANDATA schema.tablename