트랜잭션 로그 설정 및 요구사항
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 옵션 |
스키마에 있는 모든 테이블에 대해 테이블의 모든 열에 대해 무조건 보완 로깅을 활성화합니다. 또한 이 설정을 사용하면 이 스키마에 생성된 새 객체가 적절한 보완 로깅을 갖게 됩니다. |
업데이트 또는 삭제를 수행할 때 변경된 열뿐 아니라 모든 열 값이 확인되는 양방향 및 활성-활성 구성에 사용됩니다. 이렇게 하면 더 많은 리소스가 필요하지만, 이를 통해 최고 레벨의 실시간 데이터 검증을 수행할 수 있으므로 충돌 감지가 가능합니다. 이 메소드는 초기 로드에 |
| 스키마 레벨 보완 로깅, 최소 설정 | 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가 마이그레이션 또는 업그레이드의 다운타임을 줄이기 위해 모든 테이블을 복제하려는 경우 사용할 수 있습니다.
다음 단계를 수행하여 필요한 경우 부분 집합 데이터베이스 복제 로깅 및 강제 로깅을 확인하고 사용으로 설정합니다.
-
ALTER SYSTEM권한을 가진 사용자로 SQL*Plus에 로그인합니다. -
다음 명령을 실행하여 데이터베이스가 보완 로깅 모드와 강제 로깅 모드인지 확인합니다. 두 질의에 대한 결과가
YES인 경우 데이터베이스는 Oracle GoldenGate 요구사항을 충족합니다.SELECT SUPPLEMENTAL_LOG_DATA_MIN, FORCE_LOGGING FROM V$DATABASE; -
둘 중 하나 또는 둘 다에 대한 결과가
NO인 경우 다음 단계를 계속하여 필요에 따라 사용으로 설정합니다.ALTER PLUGGABLE DATABASE *pdbname* ADD SUPPLEMENTAL LOG DATA SUBSET DATABASE REPLICATION; ALTER DATABASE FORCE LOGGING; -
다음 명령을 실행하여 이러한 등록 정보가 사용으로 설정되었는지 확인합니다.
SELECT SUPPLEMENTAL_LOG_DATA_MIN, FORCE_LOGGING FROM V$DATABASE;두 속성에 대한 질의 출력은
YES여야 합니다. -
로그 파일을 전환합니다.
ALTER SYSTEM SWITCH LOGFILE;
스키마 레벨 보완 로깅 사용
Oracle GoldenGate는 스키마 레벨 보완 로깅을 지원합니다. 스키마 레벨 로깅은 Oracle GoldenGate DDL 복제 기능을 사용하는 경우 Oracle 소스 및 대상 데이터베이스에 필요하고, 복제 중인 테이블에서 DDL을 수행(또는 실행할 수 있는 경우) 소스 데이터베이스에서 필요합니다. 다른 모든 사용 사례에서는 선택 사항이지만 대신 테이블 레벨 로깅을 사용해야 합니다(테이블 레벨 보완 로깅 사용 참조).
기본적으로 스키마 레벨 로깅은 기본 키의 무조건 보완 로깅과 스키마에 있는 모든 테이블의 고유 키와 외래 키의 조건부 보완 로깅을 자동으로 활성화합니다. 이 옵션을 사용하면 필요에 따라 로깅을 변경할 수 있습니다.
주: Oracle은 스키마에 추가된 새 테이블이 와일드카드 사양을 충족하는 경우 캡처되도록 하기 때문에 테이블 레벨 로깅 대신 스키마 레벨 로깅을 사용할 것을 강력히 권장합니다. 키 열에 대한 변경 사항은 보완 로그 데이터에도 자동으로 반영되므로 이 방식도 권장됩니다. 예를 들어, 키가 변경될 경우 ADD TRANDATA를 실행할 필요가 없습니다.
소스 시스템에서 다음 단계를 수행하여 스키마 레벨 보완 로깅을 활성화합니다.
-
소스 시스템에서 명령줄을 시작합니다.
-
스키마 레벨 보완 로깅을 사용으로 설정할 권한이 있는 인증서 저장소의 사용자 별칭과 함께
DBLOGIN명령을 실행합니다.DBLOGIN USERIDALIAS *alias*USERIDALIAS및 추가 옵션에 대한 자세한 내용은 Oracle GoldenGate용 매개변수 및 함수 참조의USERIDALIAS를 참조하십시오. -
다중 테넌트 데이터베이스에서
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 -
테이블 레벨 보완 로깅 사용
다음과 같은 경우 소스 시스템에서 테이블 레벨 보완 로깅을 활성화합니다.
-
스키마 레벨 로깅을 사용하지 않을 때 필요한 로깅 레벨을 사용으로 설정합니다(스키마 레벨 보완 로깅 사용 참조). 스키마 레벨 로깅이나 테이블 레벨 로깅을 사용해야 합니다. 기본적으로 테이블 레벨 로깅은 테이블의 고유 키와 외래 키에 대한 조건부 보완 로깅과 기본 키의 무조건부 보완 로깅을 자동으로 활성화합니다. 이 옵션을 사용하면 필요에 따라 로깅을 변경할 수 있습니다.
-
주어진 테이블에 대해 primary key가 기록되지 않도록 합니다.
-
필터링 및 충돌 감지, 해결 논리와 같은 특정 Oracle GoldenGate 기능을 지원하기 위해 테이블 레벨에서 키가 아닌 열 값을 기록합니다.
-
테이블 레벨 보완 로깅만 있는 테이블에 대한 키 열이 변경되면 테이블에 대한 DML 작업을 허용하기 전에 테이블에 대해
ADD TRANDATA를 수행해야 합니다. -
JSON 관계형 이중성 뷰(JSON DV) 및 JSON 모음 테이블에 대한 보완 로깅을 사용으로 설정하려면 Enable Supplemental Logging for JSON Relational Duality Views and JSON Collection Tables의 지침을 따라야 합니다.
소스 시스템에서 다음 단계를 수행하여 테이블 레벨 보완 로깅을 활성화하거나 명령의 선택적 기능을 사용합니다.
-
소스 시스템에서 명령줄을 실행합니다.
-
테이블 레벨 보완 로깅을 사용으로 설정할 권한이 있는 인증서 저장소의 사용자 별칭을 사용하여
DBLOGIN명령을 실행합니다.DBLOGIN USERIDALIAS *alias*DBLOGIN및 추가 옵션에 대한 자세한 내용은 Oracle GoldenGate에 대한 매개변수 및 함수 참조의USERIDALIAS를 참조하십시오. -
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절이 필요합니다.
-
-
ADD TRANDATA를COLS옵션과 함께 사용하는 경우 대상에서 해당 열에 대한 고유 인덱스를 생성하여 행 검색을 최적화합니다. 해당 열을KEYCOLS절의 대체 키로 로깅하는 경우 Oracle GoldenGate 프로세스를 구성할 때TABLE및MAP문에KEYCOLS절을 추가하는 것을 메모해 두십시오.
JSON 관계형 이중성 뷰 및 JSON 모음 테이블에 대한 보완 로깅 사용
JSON 관계형 이중성 뷰 및 JSON 모음 테이블을 복제하기 전에 Oracle GoldenGate에서 보완 로깅을 설정해야 합니다. 기본적으로 보완 로깅은 JSON 관계형 이중성 뷰 및 JSON 모음 테이블에 대해 사용으로 설정되지 않습니다. 이중성 뷰 및 컬렉션 테이블에 대한 보완 로깅을 사용으로 설정할 때 다음 지침을 사용할 수 있습니다.
-
논리적 복제 사용: 이중성 뷰 및 수집 테이블에 대한 변경 사항을 캡처하려면
ADD TRANDATA를 사용하여 논리적 복제를 사용으로 설정해야 합니다. 이 프로세스를 통해 JSON 문서 레벨에서 변경사항을 추적하는 데 필요한 보완 로깅을 사용할 수 있습니다.자세한 내용은
ADD TRANDATA을 참조하십시오.Oracle AI Database 측에서는 JSON Relational Duality Views 및 JSON Collection Tables용 절이
CREATE/ALTER DDL에 추가되었습니다. 이 절은 뷰 레벨에서 보완 로깅을 활성화합니다. 이 로깅은 기본 테이블의 기존 로깅에 더해집니다.자세한 내용은
CREATE TABLE/CREATE JSON RELATIONAL DUALITY VIEW의 logical_replication_clause 절과 Oracle AI Database SQL Language Reference의ALTER TABLE/ALTER JSON RELATIONAL DUALITY VIEWS명령을 참조하십시오. -
JSON 이중성 뷰 및 JSON 모음 테이블에 대한 DML 변경 사항:
INSERT및UPDATE작업의 경우 전체 JSON 문서 및_id키 속성이 보완 로깅됩니다. DELETE 작업의 경우 키_id속성만 기록됩니다. -
Transaction Commit Logging for JSON Relational Duality Views: 이중성 뷰에 대한 추가 로깅은 커밋 시 발생합니다. Net 변경 사항만 기록됩니다.
예를 들어, JSON 이중성 뷰를 포함하는 트랜잭션에서 레코드를
INSERT하고 이 레코드를 두 번UPDATE하는 경우 업데이트된 레코드가 있는INSERT를 포함하는 논리적 변경은 하나만 있습니다. -
기본 테이블을 사용하여 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