ADD TRANDATA

ADD TRANDATA를 통해 Oracle GoldenGate를 사용으로 설정하여 트랜잭션 레코드에서 필요한 트랜잭션 정보를 획득할 수 있습니다.

이 명령을 사용하기 전에 DBLOGIN 명령을 사용하여 데이터베이스 접속을 설정합니다.

ADD TRANDATA는 여기 나열된 데이터베이스에 대해 적합합니다.

지원되는 기타 데이터베이스의 경우 이 기능은 이미 있는 것일 수 있으며 데이터베이스 인터페이스를 통해 구성되어야 합니다.

ADD TRANDATA를 사용할 때 다양한 데이터베이스와 연관된 와일드 카드 문자 사용에 대해 알아보려면 다음 표를 참조하십시오.

데이터베이스 와일드 카드 문자 사용
Db2 LUW, Db2 z/OS 와일드 카드 문자를 테이블 이름에만 사용할 수 있습니다. 스키마 이름에는 사용할 수 없습니다.
Oracle 와일드 카드 문자를 스키마와 테이블 이름에 사용할 수 있습니다. PDB 이름에는 사용할 수 없습니다.
PostgreSQL 및 SQL Server 와일드 카드 문자를 스키마와 테이블 이름에 사용할 수 있습니다.

Db2 for i

ADD TRANDATA를 사용하여 데이터 저널 작성을 시작할 수 없습니다. ADD TRANDATA 명령은 STRJRNPF를 호출하며 테이블에 대한 저널 작스를 시작하는데 권장되는 방법입니다. 이 명령은 필요한 저널 이미지 속성 Record Images (IMAGES): *BOTH가 STRJRNPF 명령에서 설정되기 때문입니다.

Db2 LUW

ADD TRANDATA를 사용하여 지정된 테이블에서 DATA CAPTURE CHANGES를 사용으로 설정합니다. 기본적으로 ADD TRANDATA는 데이터베이스에 다음 명령을 실행합니다.

ALTER TABLE name DATA CAPTURE CHANGES INCLUDE LONGVAR COLUMNS;

EXCLUDELONG 옵션과 함께 ADD TRANDATA를 사용하여 LONGVAR 절을 제외할 수 있습니다.

Db2 z/OS

ADD TRANDATA를 사용하여 지정된 테이블에서 DATA CAPTURE CHANGES를 사용으로 설정합니다. 기본적으로 ADD TRANDATA는 데이터베이스에 다음 명령을 실행합니다.

ALTER TABLE name DATA CAPTURE CHANGES;

Oracle Database

Oracle AI Database 26ai 이상용 Oracle GoldenGate 26ai(JSON 관계형 이중성 뷰 및 JSON 모음 테이블)에 대한 복제를 지원합니다. ADD TRANDATA 명령은 JSON 관계형 이중성 뷰 및 JSON 모음 테이블에 대한 보완 로깅을 사용으로 설정합니다. 단, ADD TRANDATA는 JSON 이중성 뷰 기본 테이블에 영향을 미치지 않으며, 기본 테이블에 대한 트랜잭션 데이터를 추가하지 않습니다. 자세한 내용은 Oracle GoldenGate 마이크로서비스 설명서의 JSON DV 및 JSON 수집 테이블에 대한 복제 설정 필요 조건을 참조하십시오.

다음과 유사한 명령을 사용하면 테이블에만 적용되고 JSON 관계형 이중성 뷰와 JSON 모음 테이블에 적용되지 않습니다.

ADD TRANDATA HR.*

JSON 이중성 뷰와 JSON 모음 테이블에서 캡처하려면 복제해야 할 각 OracleJSON 이중성 뷰와 JSON 모음에 대해 ADD TRANDATA 명령을 실행해야 합니다. 그러면 시스템 오버로드가 발생하지 않도록 복제에 대해 설정하려는 JSON 이중성 뷰와 JSON 모음 테이블을 파악할 수 있습니다.

주: ADD TRANDATA를 사용하여 JSON 이중성 뷰에 대해 논리적 복제를 사용으로 설정하는 경우 와일드카드가 지원되지 않습니다. 그러나 JSON 컬렉션 테이블은 일반 테이블과 마찬가지로 와일드카드를 지원하므로 TABLE/MAP 문도 와일드카드를 사용할 수 있습니다.

21c 릴리스부터 이 명령은 Oracle 데이터베이스용 자동 캡처에 대해서도 테이블을 사용으로 설정합니다.

기본적으로 Oracle용 ADD TRANDATA는 기본 키의 무조건부 로깅 및 지정된 테이블에 대한 모든 고유 키와 외래 키의 조건부 보완 로깅을 사용으로 설정합니다. Oracle GoldenGate가 Oracle AI Database에 대한 보완 로깅을 처리하는 방식에 관련된 자세한 내용은 소스 및 대상 테이블의 행 고유성 유지를 참조하십시오.

가능한 경우 ADD TRANDATA 명령 대신 ADD SCHEMATRANDATA 명령을 사용하십시오. ADD SCHEMATRANDATA 명령을 사용하면 DML이 방금 수행된 객체에서 복제 연속성이 발생합니다. 제외 매개변수를 사용하여 스키마 지정에서 객체를 제외할 수 있습니다.

Oracle GoldenGate DDL 복제 기능을 사용하려면 ADD SCHEMATRANDATA 명령을 사용해서 필요한 보완 데이터를 기록해야 합니다.

ADD SCHEMATRANDATA를 사용하는 경우 TABLE 및 MAP 매개변수의 FILTER 문과 KEYCOLS 절에 필요한 열과 같이 ADD TRANDATA를 COLS 옵션과 함께 사용하여 비키 열을 기록할 수 있습니다.

주: `ADD를 사용할 수 있습니다.

           TRANDATA` for Oracle when DDL support is enabled, but only if you can stop DML on all tables before DDL is performed on them or, if that is not possible, you can guarantee that no users or applications will issue DDL that adds new tables whose names satisfy an object specification in a `TABLE` or `MAP` statement. There must be no possibility that users or applications will issue DDL that changes the key definitions of any tables that are already in the Oracle GoldenGate configuration.
           {: .infoboxnote}

Oracle은 소스 데이터베이스를 강제 로깅 모드로 전환하고 Oracle GoldenGate를 사용할 때 데이터베이스 레벨에서 최소 보완 로깅을 사용으로 설정할 것을 권장합니다. 그러면 행 체인화 정보(존재하는 경우)가 업데이트 작업을 위해 리두 로그에 추가됩니다.

Oracle AI Database에 ADD TRANDATA를 사용할 때는 다음을 고려하십시오.

PostgreSQL

ADD TRANDATA 명령을 사용하여 테이블의 REPLICA IDENTITY 설정이 변경됩니다. REPLICA IDENTITY 설정은 UPDATE 및 DELETE 작업에 대한 트랜잭션 로그에 기록되어야 하는 테이블 열의 이전 이미지를 제어합니다.

SQL Server

ADD TRANDATA를 사용하여 Oracle GoldenGate가 SQL 작업을 재구성하는 데 필요한 확장된 로깅 정보를 제공합니다. SQL Server 트랜잭션 로그는 기본적으로 충분한 정보를 제공하지 않습니다.

TRANDATA를 사용으로 설정하여 Oracle GoldenGate는 데이터베이스에 대한 SQL Server 변경 데이터 캡처 기능을 사용할 수 있도록 설정하고 TRANDATA를 통해 사용으로 설정된 각 인스턴스에 대한 변경 데이터 수집 테이블을 생성합니다.

구문

ADD TRANDATA container.owner.table]
[, FILEGROUP filegroup-name]
[, NOSCHEDULINGCOLS | ALLCOLS]
[, ALLOWNONVALIDATEKEYS]
[, PARTIALJSON]
[, PREPARECSN  {WAIT | LOCK | NOWAIT | NONE}]

[container.]owner.table

Db2 LUW, Db2 z/OS, Oracle, PostgreSQL 및 SQL Server의 경우 적합합니다.

두 부분으로 구성되거나 세 부분으로 구성된 이름 지정입니다. Oracle 다중 테넌트 컨테이너 데이터베이스를 제외하고 지원되는 모든 데이터베이스에 대해 두 부분으로 구성된 이름인 owner.table을 사용합니다.

Oracle 다중 테넌트 컨테이너 데이터베이스에 대해 세 부분으로 구성된 이름인 container.owner.table을 사용합니다. 구성요소에 와일드 카드 문자를 사용할 수 있습니다. 와일드 카드 문자와 함께 사용할 경우 ADD TRANDATA는 시스템 객체의 이름과 일치하는 이름을 필터링합니다. 시스템 객체가 아니지만 와일드 카드 문자 패턴에서 시스템 객체의 이름과 일치하는 객체에 대해 ADD TRANDATA를 사용하려면 와일드 카드 문자를 사용하지 않은 상태에서 해당 객체에 대해 ADD TRANDATA를 실행합니다.

cdb$root에서 명령을 실행하는 경우 데이터베이스 측에서 다음 사용자 권한도 설정해야 합니다.

ALTER USER userID SET CONTAINER_DATA = ALL  CONTAINER = CURRENT;

schema.table [JOURNAL library/journal] | library/file [JOURNAL library/journal]

Db2 for i의 경우 적합합니다.

SQL 스키마와 테이블 이름 또는 고유 라이브러리와 파일 이름을 지정합니다. DEFAULTJOURNAL 명령으로 기본 저널이 설정된 경우 JOURNAL 옵션을 생략할 수 있습니다. 그렇지 않은 경우 필수입니다.

FILEGROUP filegroup-name

SQL Server의 경우 적합합니다.

(선택사항) 기존 파일 그룹 이름과 함께 FILEGROUP 옵션을 사용하여 SQL Server 변경 데이터 캡처 스테이지 테이블이 배치될 파일 그룹을 지정할수 있습니다.

ADD TRANDATA owner.table FILEGROUP cdctables

TRANDATA를 사용으로 설정한 상태에서 각 테이블에 대해 동일한 FILEGROUP을 사용해야 하는 경우에도 GLOBALS 파일에서 FILEGROUP 옵션을 사용합니다.

다음 예에서는 GLOBALS 파일에 있는 FILEGROUP myFileGroup의 설정을 보여줍니다.

FILEGROUP myFileGroup

출력은 다음과 같습니다.

Logging of supplemental log data is enabled for table dbo.test1 in filegroup
myFileGroup

이 경우 ADD TRANDATA 명령은 모든 테이블에 대해 myFileGroup를 사용합니다.

FILEGROUP 매개변수와 함께 ADD TRANDATA 매개변수를 사용하는 경우 해당 명령이 GLOBALS 파일에 정의된 파일 그룹 이름을 무효화합니다.

예를 들어, GLOBALS 파일에서 FILEGROUP myFileGroup을 설정한 경우 다음 ADD TRANDATA 명령을 실행합니다.

ADD TRANDATA dbo.* FILEGROUP yourFileGroup

출력은 다음과 같습니다.

Logging of supplemental log data is enabled for table dbo.test1 in filegroup
yourFileGroup

이 경우 ADD TRANDATA는 모든 테이블에 대해 myFileGroup 대신 yourFileGroup를 사용합니다.

FILEGROUP을 GLOBALS에서 지정하지 않거나 ADD TRANDATA를 사용하여 지정하거나 지정하지 않을 경우 명령행은 테이블의 TRANDATA를 추가하는 동안 데이터베이스의 기본 FILEGROUP을 고려합니다. 예를 들어, ADD TRANDATA dbo.*를 실행하는 경우 출력은 다음과 같습니다.

Logging of supplemental log data is enabled for table dbo.test1 in filegroup
PRIMARY

이 경우 기본 FILEGROUP은 Primary입니다. INFO TRANDATA 명령을 실행하면 FILEGROUP 이름이 PRIMARY로 표시됩니다.

NOSCHEDULINGCOLS | ALLCOLS

Oracle 및 PostgreSQL의 경우 적합합니다.

Oracle GoldenGate 21c 이후부터 NOSCHEDULINGCOLS는 Oracle Database 21c 및 이후 단계에서 더 이상 사용되지 않습니다(현 중인 데이터베이스가 자동 캡처 기능을 지원하는 경우).

해당 옵션은 ADD TRANDATA로 지정하려는 테이블을 처리할 통합 Replicat의 로깅 요구사항을 충족합니다.

NOSCHEDULINGCOLS

Oracle의 경우에만 적합합니다.

일정 잡기 열의 로깅을 사용 안함으로 설정합니다. 기본적으로 ADD TRANDATA는 기본 키에 대한 무조건부 로깅 및 지정된 테이블의 모든 고유 키와 외래 키의 조건부 보완 로깅을 사용으로 설정합니다. 무조건부 로깅은 현재 작업에서 키가 변경되었는지 여부에 관계없이 기본 키 값을 로그에 강제로 적용합니다. 조건부 로깅은 하나 이상이 현재 작업에서 변경된 경우 외래 또는 고유 키의 모든 열 값을 기록합니다. 기본 키, 고유 키 및 외래 키는 종속성 계산을 위해 모두 인바운드 서버에 제공되어야 합니다.

ALLCOLS

테이블의 모든 키 및 비키 열의 무조건부 보완 로깅을 사용으로 설정합니다. 이 옵션은 종속성 계산에 필요한 키와 필터링, 충돌 해결 또는 기타 용도로 사용할 기타 모든 열의 로깅을 사용으로 설정합니다.


PostgreSQL의 경우 ALLCOLS는 테이블의 REPLICA IDENTITY를 FULL로 설정합니다. ALLCOLS는 UPDATE 및 DELETE 작업에 대한 모든 열의 로깅을 사용으로 설정하기 위해 ADD TRANDATA 명령의 일부로 지정됩니다. 해당 열이 수정되지 않은 경우에도 마찬가지 입니다.

기본 키나 고유 인덱스가 없는 테이블의 경우 ALLCOLS 옵션은 중복됩니다. 구문은 다음과 같습니다.

ADD TRANDATA table_name ALLCOLS

COLS (columns)

Oracle의 경우 적합합니다.

COLS 옵션을 사용하여 특정 비키 열을 기록할 수 있습니다. KEYCOLS 절에서 지정된 열을 기록하고 필터링 또는 조작 용도로 필요한 열을 기록하는 데 사용할 수 있습니다. 이는 TABLE 문에서 FETCHCOLS 절로 해당 값을 인출하는 것보다 효율적일 수 있으며, 다중 열을 콤마로 구분합니다(예: NAME, ID, DOB).

INCLUDELONG | EXCLUDELONG

Db2 LUW의 경우 적합합니다.

ADD TRANDATA이 실행한 ALTER TABLE이 INCLUDE LONGVAR COLUMNS 속성을 포함하는지 여부를 제어합니다. INCLUDELONG이 기본값입니다. ADD TRANDATA가 이 옵션과 함께 실행된 경우 Oracle GoldenGate는 다음 명령문을 실행합니다.

ALTER TABLE name DATA CAPTURE CHANGES INCLUDE LONGVAR COLUMNS;

EXCLUDELONG이 사용된 경우 명령은 다음과 같습니다.

ALTER TABLE name DATA CAPTURE CHANGES;

EXCLUDELONG이 사용된 경우 Oracle GoldenGate는 LONGVAR 열을 포함하는 테이블의 이전 이미지를 필요로 하는 기능을 지원하지 않습니다. GETUPDATEBEFORES 매개변수를 예로 들 수 없습니다. 이 기능을 지원하려면 트랜잭션 로그의 LONGVAR 열 변경사항에 열 값의 이전 이미지 및 이후 이미지가 포함되어야 합니다.

NOKEY

Db2 for i, Db2 LUW, Db2 z/OS, Oracle의 경우 적합합니다.

Oracle GoldenGate 21c 이후부터 NOKEY는 Oracle Database 21c 및 이후 단계에서 더 이상 사용되지 않습니다(현 중인 데이터베이스가 자동 캡처 기능을 지원하는 경우).

기본 키 열의 보완 로깅을 표시하지 않습니다. NOKEY를 사용하는 경우 COLS 옵션을 사용하여 키로 제공될 수 있는 대체 열을 기록하고 TABLE 또는 MAP 매개변수의 KEYCOLS 옵션을 사용하여 해당 열을 대체 키로 지정합니다.

NOVALIDATE

Db2 for i, Db2 LUW, Db2 z/OS, Oracle의 경우 적합합니다.

ADD TRANDATA가 처리 중인 테이블에 대한 추가 정보를 표시하지 않음. 기본적으로 이 옵션은 활성화되어 있습니다. 응답 시간을 늘리는 데 이 옵션이 사용될 수 있도록 처리 중인 추가 정보를 기반으로 명령 응답의 경과 시간이 생성됩니다.

ALLOWNONVALIDATEDKEYS

Db2 for i, Db2 LUW, Db2 z/OS, Oracle의 경우 적합합니다.

보완 로깅에 NON VALIDATED 및 NOT VALID 기본 키를 포함합니다. 해당 키는 Oracle GoldenGate에 사용되는 일반적인 키 선택 조건을 무효화합니다. GLOBALS 매개변수 ALLOWNONVALIDATEDKEYS가 사용되는 경우 지정 여부에 관계없이 ADD SCHEMATRANDATA와 함께 ALLOWNONVALIDATEDKEYS가 실행됩니다. 기본적으로 NON VALIDATED 및 NOT VALID 기본 키는 기록되지 않습니다.

PARTIALJSON

Oracle의 경우 적합합니다.

테이블 레벨에서 부분 JSON 업데이트를 인출합니다. 사용으로 설정할 경우 부분 JSON 레코드가 리두에 포함됩니다.

또한 TRANLOGOPTIONS FETCHPARTIALJSON 매개변수를 참조하십시오.

PREPARECSN {WAIT | LOCK | NOWAIT | NONE}

Oracle의 경우 DML과 DDL에 대해 적합합니다. Oracle 데이터 펌프 익스포트 덤프 파일이 인스턴스화 CSN을 포함하도록 소스에서 자동으로 테이블을 준비합니다. Replicat는 Oracle 데이터 펌프(임포트 시)로 설정된 테이블당 인스턴스화 CSN을 사용하여 필터링을 통해 추적 레코드를 제외합니다. 대상에서 데이터 펌프 임포트는 DBOPTIONS ENABLE_INSTANTIATION_FILTERING 매개변수를 사용하여 시스템 테이블과 뷰에 인스턴스화 SCN을 채워 테이블 레벨 인스턴스화 필터링을 사용으로 설정합니다.

WAIT

진행 중인 트랜잭션이 있을 경우 기다렸다가 테이블 인스턴스화를 준비합니다.

LOCK

테이블 인스턴스화 준비를 위해 테이블을 잠급니다.

NOWAIT

인스턴스화 준비가 즉시 수행됩니다(기본 동작).

NONE

인스턴스화 준비가 수행되지 않습니다.

예제


다음 예에서는 Oracle 테이블에 대해 기본 키가 기록되거나 SQL Server 또는 DB2 테이블에 대해 보완 데이터가 기록됩니다. 또한 자동 캡처에 대해 테이블을 사용으로 설정합니다.

ADD TRANDATA hr.employees

다음 예에서는 이름이 acct인 테이블에 대해 모든 키 및 비키 열의 무조건부 보완 로깅을 사용으로 설정할 수 있습니다. 또한 자동 캡처에 대해 테이블을 사용으로 설정합니다.

ADD TRANDATA hr.employees ALLCOLS

다음 Oracle AI Database 예에서는 기본 키가 기록되고 비키 열 이름과 주소도 기록합니다. 또한 자동 캡처에 대해 테이블을 사용으로 설정합니다.

ADD TRANDATA hr.employees, COLS (name, address)

다음 Oracle AI Database 예에서는 기본 키가 기록되는 것을 방지하지만 키가 아닌 열 name 및 pid 를 대신 기록합니다. 또한 자동 캡처에 대해 테이블을 사용으로 설정합니다.

ADD TRANDATA hr.employees, NOKEY, COLS (name, pid)

다음 예에서는 인스턴스화를 위해 테이블을 준비하지 않지만 로깅을 추가합니다. 또한 자동 캡처에 대해 테이블을 사용으로 설정합니다.

ADD TRANDATA hr.employees PREPARECSN NONE

다음 예에서는 추가 테이블 정보 처리를 숨깁니다. 또한 자동 캡처에 대해 테이블을 사용으로 설정합니다.

ADD TRANDATA hr.employees.*name NOVALIDATE