자동 충돌 감지 및 해상도
Oracle GoldenGate가 Oracle 데이터베이스 간에 변경사항을 복제할 때 Oracle 데이터베이스에서 Oracle GoldenGate 자동 충돌 감지 및 해결을 구성하고 관리할 수 있습니다. 주: 자동 충돌 감지 및 해결 기능은 Oracle Database 12c 릴리스 2(12.2) 이상에서 사용할 수 있으며 Oracle GoldenGate 12c(12.3.0.1) 및 이후 릴리스에서 사용할 수 있습니다. Oracle GoldenGate CDR(충돌 감지 및 해결)이라고 하는 수동 충돌 감지 및 해결 기능이 있습니다. Oracle GoldenGate CDR은 Replicat 매개변수 파일에 구성됩니다. Oracle GoldenGate CDR에 대한 자세한 내용은 수동 충돌 감지 및 해결을 참조하십시오.
자동 충돌 감지 및 해상도 정보
Oracle GoldenGate가 Oracle 데이터베이스 간에 변경사항을 복제할 때 이러한 데이터베이스에서 Oracle GoldenGate 충돌 감지 및 해결을 자동으로 구성하고 관리할 수 있습니다.
이 기능은 Oracle GoldenGate가 동일한 데이터 세트를 포함하는 여러 데이터베이스 간의 데이터 동기화를 유지 관리해야 하는 활성-활성 구성에서 사용하기 위한 것입니다.
주: Oracle AI Database에서 Oracle GoldenGate를 사용할 때만 사용할 수 있는 자동 충돌 감지 및 해결(ACDR) 기능입니다. 비Oracle 데이터베이스의 경우 Oracle GoldenGate와 함께 사용할 수 있는 CDR(수동 충돌 감지 및 해결) 기능이 있습니다. Oracle GoldenGate CDR은 Replicat 매개변수 파일에 구성됩니다.
자동 충돌 감지 및 해상도
Oracle 데이터베이스 간에 테이블을 복제하는 Oracle GoldenGate 구성에서 자동 충돌 감지 및 해결을 구성할 수 있습니다. 테이블에 대한 자동 충돌 감지 및 해결을 구성하려면 DBMS_GOLDENGATE_ADM 패키지에서 ADD_AUTO_CDR 프로시저를 호출해야 합니다. 자동 충돌 감지 및 해결을 설정하기 위한 필요 조건인 Oracle GoldenGate 사용자에게 적합한 권한이 있어야 합니다. 사용자 권한에 대한 자세한 내용은 Oracle AI Database 26ai 및 Higher에 대한 사용자 권한 부여 및 Oracle Database 21c 및 Lower에 대한 사용자 권한 부여를 참조하십시오.
관리자 사용자는 ADD_AUTO_CDR를 호출할 때 해당 PDB에 로그인해야 합니다. 이제 비트 플래그를 나타내는 다음 상수가 추가됩니다.
-
EARLIEST_TIMESTAMP_RESOLUTION는TOMBSTONE KEY VERSIONING를 자동으로 설정합니다. -
DELETE_ALWAYS_WINS는TOMBSTONE KEY VERSIONING를 자동으로 설정합니다. -
IGNORE_SITE_PRIORITY
다음 예에서는 HR.EMPLOYEES 테이블에 ALTER 명령을 사용합니다.
BEGIN
dbms_goldengate_adm.alter_auto_cdr
(schema_name => 'HR'
,table_name => 'EMPLOYEES'
,additional_options => DBMS_GOLDENGATE_ADM.ADDITIONAL_OPTIONS_ADD_KEY_VERSION );
END;
/
Oracle AI Database PL/SQL Packages and Types Reference의 ADD_AUTO_CDR Procedure에서 additional_options에 대한 설명을 참조하십시오.
Oracle GoldenGate가 Oracle AI Database에서 시작된 변경 사항을 캡처하면 각 변경 사항이 행 LCR(논리적 변경 레코드)에 캡슐화됩니다. 행 LCR은 DML 행 변경 사항을 구조적으로 표현한 것입니다. 각 행 LCR에는 작업 유형, 이전 열 값 및 새 열 값이 포함됩니다. 다중 행 LCR은 단일 데이터베이스 트랜잭션의 일부가 될 수 있습니다.
두 개 이상의 테이블 복제본이 테이블 변경을 허용하는 경우, 두 개의 서로 다른 데이터베이스에서 동일한 행이 거의 동시에 변경될 때 충돌이 발생할 수 있습니다. Oracle GoldenGate는 행 LCR을 사용하여 변경 사항을 복제합니다. 원본 데이터베이스의 초기 변경 사항에 대해 행 LCR의 이전 값을 키 열로 식별된 대상 데이터베이스의 해당 테이블 행의 현재 값과 비교하여 충돌을 감지합니다. 열 값이 일치하지 않으면 충돌이 발생합니다.
충돌이 감지되면 Oracle GoldenGate는 행의 값을 행 LCR의 일부 값으로 겹쳐쓰거나, 행 LCR의 값을 무시하거나, 행 값을 갱신하기 위해 델타를 계산하여 충돌을 해결할 수 있습니다.
자동 충돌 감지 및 해결에서는 다음과 같은 이유로 응용 프로그램을 변경할 필요가 없습니다.
-
Oracle AI Database는 보이지 않는 시간 기록 열을 자동으로 생성하고 유지 관리합니다.
-
삽입, 갱신 및 삭제는 삭제 묘비 로그 테이블을 사용하여 행이 삭제되었는지 확인합니다.
-
LOB 열 충돌을 감지할 수 있습니다.
-
Oracle AI Database는 필수 열에 대한 보완 로깅을 자동으로 구성합니다.
참고:
보완 로깅에 대한 자세한 내용은 Oracle AI Database Utilities를 참조하십시오.
자동 충돌 감지 및 해상도 요구 사항
다음은 Oracle GoldenGate에서 자동 CDR을 구성하기 위한 주요 요구 사항입니다.
-
각 행 LCR이 충돌을 감지하고 해결하는 데 필요한 정보를 갖도록 하려면 보완 로깅이 필요합니다. 보완 로깅은 테이블에 대해 DML 작업이 수행될 때 테이블의 열에 대한 추가 정보를 리두 로그에 배치합니다. Oracle GoldenGate 충돌 감지 및 해결을 위해 테이블을 구성하는 경우 테이블의 모든 열에 대해 보완 로깅이 자동으로 구성됩니다. 테이블 변경 사항이 복제되면 리두 로그의 추가 정보가 LCR에 저장됩니다.
추출은 캡처에 사용해야 합니다. 통합 모드의 통합 Replicat 또는 병렬 Replicat는 적용 측면에서 사용해야 합니다.
LOGALLSUPCOLS가 기본값으로 유지되어야 합니다. -
선택적으로
DELETE TOMBSTONE테이블에 추가되는 유형 시간기록의 숨겨진 필드KEYVER$$가 있습니다. 이 필드는EARLIEST TIMESTAMP,DELETE ALWAYS WINS및SITE PRIORITY확인에 필요하며 기본 테이블에도 존재합니다. 기본 테이블에 필드 존재 여부를 추적 파일 메타데이터에 플래그 또는 토큰으로 제공해야 합니다.기본 키 업데이트는
DELETE TOMBSTONE테이블에서도 지원됩니다. 항목이 원래 키 값(이전 이미지)의 행에 대한DELETE TOMBSTONE테이블에 삽입됩니다.DELETE TOMBSTONE테이블의 INSERTS를 DELETES와 일치시키는 Extract의 논리는 PK 업데이트와 일치하거나, PK가 없는 경우 널이 불가능한 필드가 하나 이상 있는 고유 키(UK)와 일치해야 합니다. -
SITE PRIORITY는 매개변수가 구현되고 설정이 Replicat에 전달되기 전에 Replicat의 지원이 필요합니다. -
자동 CDR은 다른
MAP레벨 예외 및 오류 처리 구성(예:REPERROR,MAPEXCEPTION)에서 작동하지 않습니다. 자동 CDR 또는REPERROR/MAPEXCEPTION중 하나만 동일한 테이블에 사용할 수 있습니다. 자세한 내용은TABLE \| MAP및REPERROR를 참조하십시오.
호환성 및 이전
소스 데이터베이스의 기본 테이블에 KEYVER$$ 열이 포함되어 있지 않지만 대상 기본 테이블에 DELETE 및 기본 키 업데이트가 있으면 대상 데이터베이스에서 EARLIEST TIMESTAMP, DELETE ALWAYS WINS 및 SITE PRIORITY 해상도에 대한 오류가 발생합니다.
KEYVER$$가 있는 기본 테이블에서 대상 테이블로 복제하는 경우 KEYVER$$ 열은 무시됩니다.
열 그룹
열 그룹은 복제된 테이블에 있는 하나 이상의 열에 대한 논리적 그룹입니다. 열 그룹을 추가하면 열 그룹의 열에 대해 테이블의 다른 열과 별도로 충돌 감지 및 해결이 수행됩니다.
Oracle GoldenGate 충돌 감지 및 해결을 위해 테이블을 ADD_AUTO_CDR 프로시저로 구성하면 테이블의 모든 스칼라 열이 기본 열 그룹에 추가됩니다. 테이블에 대한 다른 열 그룹을 정의하려면 ADD_AUTO_CDR_COLUMN_GROUP 프로시저를 실행합니다. 유저 정의 열 그룹의 일부가 아닌 테이블의 열은 테이블의 기본 열 그룹에 남아 있습니다.
열 그룹을 사용하면 서로 다른 데이터베이스에서 충돌을 일으키지 않고 거의 동시에 동일한 행의 다른 열을 갱신할 수 있습니다. 테이블에 대해 열 그룹이 구성된 경우 서로 다른 데이터베이스에서 테이블의 동일한 행을 갱신하더라도 충돌을 방지할 수 있습니다. 갱신 시 다른 열 그룹의 열 값이 변경될 경우 충돌이 감지되지 않습니다.
그림 1: 열 그룹

이 예제는 데이터베이스 A 및 데이터베이스 B에서 복제되는 행을 보여줍니다. 각 데이터베이스에서 복제된 테이블에 대해 다음 두 개의 열 그룹이 구성됩니다.
-
하나의 열 그룹에는
Office열이 포함됩니다. 이 열 그룹에 대한 보이지 않는 시간 기록 열은TS1입니다. -
다른 열 그룹에는
Title및Salary열이 포함됩니다. 이 열 그룹에 대한 보이지 않는 시간 기록 열은TS2입니다.
이러한 열 그룹을 사용하면 데이터베이스 A와 데이터베이스 B가 충돌을 일으키지 않고 거의 동시에 동일한 행을 갱신할 수 있습니다. 특히 다음과 같은 변경 사항이 적용됩니다.
-
데이터베이스 A에서
Office의 값이1080에서1030로 변경되었습니다. -
데이터베이스 B에서
Title의 값이MTS1에서MTS2로 변경되었습니다.
Office 열과 Title 열은 서로 다른 열 그룹에 있으므로 충돌이 감지되지 않고 변경 사항이 복제됩니다. 결과적으로 각 변경 사항이 복제된 후 행의 값이 두 데이터베이스에서 동일합니다.
조각 방식 LOB 갱신
LOB WRITE, LOB ERASE 및 LOB TRIM로 구성된 LOB 작업 집합은 조각 방식 LOB 업데이트입니다. LOB 열을 포함하는 테이블이 충돌 감지 및 해결을 위해 구성된 경우 각 LOB 열은 자체 열 그룹에 배치되고 열 그룹은 자체의 숨겨진 시간 기록 열을 가집니다. 시간 기록 열은 첫번째 조각 방식 LOB 작업에서 갱신됩니다.
LOB 열의 경우 충돌이 감지되어 다음과 같은 방식으로 해결됩니다.
-
LOB의 열 그룹에 대한 시간 기록이 행의 해당 LOB 열 그룹보다 이후인 경우 조각 방식 LOB 갱신이 적용됩니다.
-
LOB 열 그룹의 시간 기록이 행의 해당 LOB 열 그룹보다 이전이면 테이블 행의 LOB가 보존됩니다.
-
테이블에 행이 없으면 오류가 발생합니다.
가장 이른 시간 기록 충돌 감지 및 해결
CDRTS$ column group 및 CDRTS$ROW 형식의 이름을 가진 열은 열 그룹 및 행에 대한 수정 시간을 반영하는 시간 기록을 포함하는 데 사용됩니다.
주: $ 또는 $$ 기호가 있는 테이블은 내부 또는 숨겨진 테이블입니다.
DBMS_GOLDENGATE_ADM에는 가장 이른 시간 및 최신 시간 기록 해상도를 구성하기 위한 다음 절차가 포함되어 있습니다.
-
ADD_AUTO_CDR() -
ADD_AUTO_CDR_COLUMN_GROUP() -
REMOVE_AUTO_CDR() -
REMOVE_AUTO_CDR_COLUMN_GROUP() -
ALTER_AUTO_CDR() -
ALTER_AUTO_CDR_COLUMN_GROUP()
ADD_AUTO_CDR() 및 ALTER_AUTO_CDR()의 ADDITIONAL_OPTIONS 필드는 가장 이른 시간 기록 사용을 설정합니다. 가장 이른 시간기록을 설정하면 자동으로 버전 지정이 켜져서 시간기록 유형의 숨겨진 새 열 KEYVER$$(버전 번호)이 추가됩니다. 가장 이른 시간 기록 사용을 나타내는 새 플래그 값이 추가됩니다. 이 필드는 DELETE TOMBSTONE 테이블에도 추가됩니다. 삭제 충돌은 버전 번호가 필요한 이유입니다. 가장 빠른 시간 기록 해결 방법을 사용하면 투명할 수 있는 삭제 충돌이 잘못 성공할 뿐만 아니라 새 버전의 행 삽입을 방지할 수 있습니다. 버전 타임스탬프를 사용하면 동일한 행 버전의 행 DML에 대해 삭제를 올바르게 해결할 수 있습니다.
행의 원래 삽입은 기본값에서 현재 시간 기록을 수신합니다. 그런 다음 이 행을 삭제하면 삭제 시 버전 번호와 이 행이 삽입된 시간이 삭제 표시자 테이블에 삽입됩니다. 새 삽입에서 기본적으로 버전 번호는 현재 시간 기록을 다시 수신하므로 묘비 테이블의 현재 삭제 항목과 거짓 충돌이 발생하지 않습니다.
예제
사이트 1의 데이터베이스와 사이트 2의 데이터베이스 간에 전역적으로 일관된 테이블 tab1가 있다고 가정합니다.
이 테이블에는 (기본) 키가 포함되어 있습니다. ACDR은 기본 테이블(숨김) 및 묘비 테이블에 대한 열로 키 버전(kv) 및 시간 기록(ts)을 자동으로 유지 관리합니다. 주요 버전 kv 및 시간 기록 ts
데이터베이스 1: insert tab1 key1 kv1 ts1
데이터베이스 2: delete tab1 key1 kv1 ts1
DELETE TOMBSTONE 테이블 삽입 key1 kv1 ts1
데이터베이스 1: insert tab1 key1 kv2 ts2
키 버전을 사용하지 않으면 삽입이 무시되고 삭제 시간기록이 이전입니다. 키 버전을 사용하면 kv2가 삭제된 행의 버전이 아니므로 삽입이 성공합니다.
최신 시간기록 충돌 감지 및 해결
DBMS_GOLDENGATE_ADM 패키지에서 ADD_AUTO_CDR 프로시저를 실행하여 자동 Oracle GoldenGate 충돌 감지 및 해결을 위한 테이블을 구성하면 숨겨진 시간 기록 열이 테이블에 추가됩니다. 이 숨겨진 시간 기록 열은 행 변경 시간을 기록하며 이 정보는 충돌을 감지하고 해결하는 데 사용됩니다.
행 LCR이 적용되면 INSERT, UPDATE 또는 DELETE 작업에 대해 충돌이 발생할 수 있습니다. 다음 표에서는 각 충돌 유형 및 해결 방법에 대해 설명합니다.
| 작업 | 충돌 감지 | 충돌 해결 |
|---|---|---|
INSERT |
테이블이 행 LCR의 새 값과 키 열에 대해 동일한 값을 갖는 경우 충돌이 감지됩니다. | 행 LCR의 시간 기록이 테이블 행의 시간 기록보다 이후인 경우 행 LCR의 값이 테이블의 값을 바꿉니다. 행 LCR의 시간 기록이 테이블 행의 시간 기록보다 이전이면 행 LCR이 폐기되고 테이블 값이 유지됩니다. |
UPDATE |
다음 각 경우에 충돌이 감지됩니다.
|
값 불일치가 있고 행 LCR의 시간 기록이 테이블 행의 시간 기록보다 이후인 경우 행 LCR의 값은 테이블의 값을 대체합니다. 값 불일치가 있고 행 LCR의 시간 기록이 테이블 행의 시간 기록보다 이전인 경우 행 LCR이 폐기되고 테이블 값이 유지됩니다. 테이블 행이 없고 행 LCR의 시간 기록이 묘비 테이블 행의 시간 기록보다 이후인 경우 행 LCR은 테이블 행이 없고 행 LCR의 시간 기록이 묘비 테이블 행의 시간 기록보다 이전인 경우 행 LCR은 폐기됩니다. 테이블 행이 없고 묘비 테이블에 해당 행이 없는 경우 행 LCR이 |
DELETE |
다음 각 경우에 충돌이 감지됩니다.
|
행 LCR의 시간 기록이 테이블의 시간 기록보다 이후인 경우 테이블에서 행을 삭제합니다. 행 LCR의 시간 기록이 테이블의 시간 기록보다 이전이면 행 LCR이 폐기되고 테이블 값이 유지됩니다. 삭제가 성공하면 행 LCR을 tombstone 테이블에 삽입하여 LCR을 기록하십시오. 테이블 행이 존재하지 않으면 행 LCR을 tombstone 테이블에 삽입하여 기록하십시오. |
다음 이미지는 데이터베이스 A와 데이터베이스 B 간의 충돌 해결을 보여줍니다. 
이 예제는 데이터베이스 A 및 데이터베이스 B에서 복제되는 행을 보여줍니다. 데이터베이스 열은 Name, RowTS, Office, Title 및 Salary입니다. RowTS 열은 두 데이터베이스의 보이지 않는 열입니다. 데이터베이스 A의 Office 열에 업데이트가 있으며 동시에 데이터베이스 B의 Title 열에 업데이트가 있습니다. 이렇게 하면 충돌이 발생하고 이 충돌에 대한 해결이 최신 시간 기록 메소드를 적용하여 수행됩니다.
-
데이터베이스 A에서
Office열의 값이 1080에서 1103으로 업데이트되고 RowTS 값이 @TS10에서 @TS20로 변경됩니다. 화살표는 이 변경 사항이 데이터베이스 B에 복제됨을 나타냅니다. -
데이터베이스 B에서
Title열의 값이 MTS1에서 MTS2로 변경되고 RowTS 값이 @TS10에서 @TS22로 변경됩니다. -
이 충돌을 해결하기 위해 데이터베이스 B에 있는 최신 시간 기록이 승리합니다. 즉, 데이터베이스 A의 변경 사항이 적용되지 않습니다. 데이터베이스 A 및 데이터베이스 B에 적용된 최종 값은 Scott, @TS22, 1080, MTS2, 100입니다.
델타 충돌 해결
델타 충돌 감지를 사용하면 LCR 행의 이전 열 리스트에 있는 값이 테이블의 해당 행에 대한 값과 다를 때 충돌이 발생합니다.
테이블에 대한 델타 충돌 감지 및 해결을 구성하려면 DBMS_GOLDENGATE_ADM 패키지에서 ADD_AUTO_CDR_DELTA_RES 프로시저를 실행합니다. 델타 해상도 방법은 시간 기록 또는 추가 해상도 열에 종속되지 않습니다. 델타 충돌 해결을 사용하면 행 LCR의 새 값과 이전 값 간의 차이를 테이블의 값에 추가하여 충돌을 해결합니다. 이 해결 방법은 일반적으로 계정 잔액과 같은 재무 데이터에 사용됩니다. 예를 들어 두 사이트에서 동시에 은행 잔액이 업데이트되는 경우 컨버지드 값은 모든 차변 및 대변에 대해 계상됩니다.
다음 그림은 델타 충돌 감지 및 해결 방법을 보여 주는 예를 제공합니다.
그림 2: 델타 충돌 감지 및 해결

이 예제는 데이터베이스 A 및 데이터베이스 B에서 복제되는 행을 보여줍니다. Balance 열은 델타 충돌 해결이 수행되는 열로 지정되고, RowTS 열은 Balance 열에 대한 각 변경 시간을 추적하는 보이지 않는 시간 기록 열입니다. 두 데이터베이스의 행에서 거의 동시에 Balance 값이 변경됩니다(데이터베이스 A의 경우 @T20, 데이터베이스 B의 경우 @T22). 이러한 변경은 충돌을 일으키며 델타 충돌 해결은 다음과 같은 방식으로 충돌을 해결하는 데 사용됩니다.
-
데이터베이스 A에서
Balance의 값이1000에서1750로 변경되었습니다. 따라서 값이 750씩 증가했습니다. -
데이터베이스 B에서
Balance의 값이1000에서950로 변경되었습니다. 따라서 값이 50씩 감소했습니다. -
데이터베이스 A에서의 충돌을 해결하기 위해 행 LCR의 새 값과 이전 값과 테이블의 값 사이의 차이 값을 가집니다. LCR에서 새 값과 이전 값의 차이는 (1000+750-50=1700)입니다. 테이블의 현재 값이 700씩 증가하여 충돌 해결 후 값이 1700이 되도록 합니다.
-
데이터베이스 B에서 충돌을 해결하기 위해 행 LCR의 새 값과 이전 값과 테이블의 값 사이의 차이 값입니다. LCR의 새 값과 이전 값 간의 차이는 750(1000 - 50 + 750)=1700입니다. 따라서 테이블의 현재 값(950)이 750씩 증가하여 충돌 해결 후 값이 1700이 되도록 합니다.
델타 충돌 해결 후 Balance 열의 값은 데이터베이스 A와 데이터베이스 B의 행에 대해 동일합니다.
사이트 우선순위 CDR
주: SITE PRIORITY 해상도는 모든 COLUMN GROUP 해상도 설정보다 우선합니다.
주: SITE PRIORITY Replicat 매개변수가 매개변수 파일의 해당 맵 문 앞에 배치되지 않으면 작동하지 않습니다. 이 매개변수는 적용 가능한 맵 문 앞에 배치해야 합니다.
충돌 해결을 위해 소스와 대상 간의 Replicat 매개변수 파일에 우선순위 해결이 지정됩니다.
SITE PRIORITY는 테이블에 대해 SITE PRIORITY 분석을 설정하도록 지정된 매개변수 ACDR SITE_PRIORITY {source_db_name}{OVERWRITE | IGNORE }를 사용하여 Replicat 매개변수 파일의 데이터베이스 또는 PDB에 대해 사용으로 설정됩니다.
OVERWRITE 옵션이 지정된 경우 소스 테이블이 우선적으로 적용되고 충돌이 OVERWRITE에 의해 해결됩니다. 반대로, IGNORE 옵션이 지정된 경우 대상 테이블이 우선 순위를 가지며 소스 테이블 변경 사항이 충돌 시 무시됩니다.
SITE PRIORITY 해상도는 DBMS_GOLDENGATE_ADM 패키지의 ADD_AUTO_CDR() 프로시저에 있는 ADDITIONAL_OPTIONS 필드와 IGNORE_SITE_PRIORITY를 설정하여 ALTER_AUTO_CDR() 필드에서 사용 안함으로 설정할 수 있습니다.
모든 Replicat 소스-대상 관계를 다르게 설정할 수 있으므로 수렴은 사용자 설정에 따라 달라집니다.
항상 수주 시간 기록 CDR 삭제
DELETE ALWAYS WINS는 DBMS_GOLDENGATE_ADM 프로시저 ADD_AUTO_CDR() 및 ALTER_AUTO_CDR()의 ADDITIONAL_OPTIONS 필드를 통해 사용으로 설정됩니다. 이것은 다시 최신 시간 기록 해결을 사용하지 않으므로 버전 지정이 필요한 삭제 충돌 해결 방법입니다. DELETE ALWAYS WINS을 설정하면 버전 지정이 자동으로 설정되어 시간 기록 유형의 숨겨진 새 열 KEYVER$$(버전 번호)이 추가됩니다. DELETE ALWAYS WINS 사용을 나타내기 위해 새 플래그 값이 acdrflags_kqldtvc에도 추가됩니다. 이 필드는 DELETE TOMBSTONE 테이블에도 추가됩니다. EARLIEST TIMESTAMP 해결 방법과 동일한 버전 지정 문제가 있습니다.
예제:
키 버전 kv 및 시간 기록 ts
데이터베이스 1: insert tab1 key1 kv1 ts1
데이터베이스 2: delete tab1 key1 kv1 ts1
DELETE TOMBSTONE 테이블 key1 kv1 ts1에 삽입
데이터베이스 1: insert tab1 key1 kv2 ts2
키 버전을 사용하지 않으면 삽입은 무시되고 삭제는 항상 성공합니다. 키 버전을 사용하면 kv2가 삭제된 행의 버전이 아니므로 삽입이 성공합니다.
DELETE TOMBSTONE 테이블
DELETE TOMBSTONE 테이블은 존재하지 않는 레코드와 구분하기 위해 삭제된 레코드에 대한 표시자입니다. DELETE TOMBSTONE 테이블에는 최소한 키 열과 작업 시간 기록이 포함됩니다. 일부 수신 업데이트 및 삽입이 다른 사이트에서 지연될 수 있고 수신 LCR이 적용되어야 하는지 여부를 확인하기 위해 삭제 수렴에 이 정보가 필요합니다.
삭제 표시기에서 기본 키 업데이트 추적
PK(기본 키) 업데이트를 완벽하게 지원하려면 키의 이전 이미지로 표시되는 행과 키의 다음 이미지로 표시되는 행에서 충돌을 처리해야 합니다. PK 업데이트는 독립 삭제 및 삽입이므로 PK 업데이트 충돌은 키의 이전 이미지와 충돌하는 경우 삭제로 지원되어야 하며 키(및 행)의 after 이미지와 삽입되어야 합니다.
키의 이전 이미지가 나타내는 행의 삭제로 PK 업데이트를 지원한다는 것은 삭제 묘비 테이블에 삭제로 삽입해야 한다는 것을 의미합니다. 갱신 내부 트리거는 PK가 갱신될 때 묘비 테이블에 삽입되도록 추가됩니다(실제로 행 식별 키, PK(있는 경우) 또는 선택한 UK(Null 불가능 열이 하나 이상 있는 경우). PK 업데이트로 인해 두 가지 충돌이 발생할 수 있으므로 행 레벨에서 최대 두 가지 해결을 시도하고, 원래 PK로 행을 삭제하고, 새 PK로 행을 삽입합니다.
예: 최신 시간 기록 해상도 사용
데이터베이스 1: tab1 key1 at ts1로 갱신
데이터베이스 2: tab1 key1 set key1 to key2 ts2로 업데이트
데이터베이스 3: tab1 key2 ts3로 갱신
이 시나리오에서는 key1가 있는 행 레벨 tab1 행에서 삭제해야 하고 데이터베이스 3 업데이트가 tab1 행 키의 최종 수정이어야 하는 것으로 나타납니다.
- 대신 데이터베이스 2가
ts3에 있고 데이터베이스 3이ts3에 있는 경우 데이터베이스 2의 PK 업데이트는tab1행key2의 최종 수정이 됩니다.
이제 데이터베이스 1이 ts3, 데이터베이스 2(ts2) 및 데이터베이스 3(ts1)에 있는 경우 데이터베이스 1의 tab1 행 key1에 대한 갱신이 성공하고 tab1 행 key2의 데이터베이스 2에서 PK 갱신이 성공해야 합니다. 이 시점에서 전체 해상도는 이전 이미지의 삭제와 이후 이미지의 삽입을 모두 별도로 분석해야 한다는 것입니다. 이것은 그들이 서로에 의존하지 않으며, 하나에 대한 손실이 둘 다에 대한 손실이 아니라는 것을 의미합니다.
델타 충돌 감지 및 해결 구성
DBMS_GOLDENGATE_ADM 패키지의 ADD_AUTO_CDR_DELTA_RES 프로시저는 델타 충돌 감지 및 해결을 구성합니다.
델타 충돌 해결을 사용하여 충돌이 감지되고 해결되는 하나의 열을 지정합니다. 행 LCR의 열 값이 테이블의 해당 값과 일치하지 않는 경우 충돌이 감지됩니다. 이 충돌은 행 LCR의 새 값과 이전 값 간의 차이를 테이블의 값에 더하여 해결됩니다.
DBMS_GOLDENGATE_ADM 패키지의 GRANT_ADMIN_PRIVILEGE 프로시저를 사용하여 Oracle GoldenGate 관리자를 구성할 수 있습니다.
-
Oracle GoldenGate 관리자로 인바운드 서버 데이터베이스에 접속합니다.
-
ADD_AUTO_CDR프로시저를 실행하고 최신 시간 기록 충돌 감지 및 해결을 위해 구성할 테이블을 지정합니다. -
ADD_AUTO_CDR_DELTA_RES프로시저를 실행하고 델타 충돌 감지 및 해결이 수행되는 열을 지정합니다. -
테이블을 복제하는 각 Oracle AI Database의 이전 단계를 반복합니다.
예 9-23 테이블에 대한 델타 충돌 감지 및 해결 구성
이 예에서는 oe.orders 테이블의 order_total 열에 대한 델타 충돌 감지 및 해결을 구성합니다.
BEGIN
DBMS_GOLDENGATE_ADM.ADD_AUTO_CDR(
SCHEMA_NAME => 'OE',
TABLE_NAME => 'ORDERS');
END;
/
BEGIN
DBMS_GOLDENGATE_ADM.ADD_AUTO_CDR_DELTA_RES(
SCHEMA_NAME => 'OE',
TABLE_NAME => 'ORDERS',
COLUMN_NAME => 'ORDER_TOTAL');
END;
/
최신 시간 기록 충돌 감지 및 해결 구성
DBMS_GOLDENGATE_ADM 패키지의 ADD_AUTO_CDR 프로시저는 최신 시간 기록 충돌 감지 및 해결을 구성합니다. ADD_AUTO_CDR_COLUMN_GROUP 프로시저는 선택적 열 그룹을 추가합니다.
Oracle AI Database 26ai 이상의 경우 ACDR 구성 테이블을 관리하고 유지 관리할 수 있는 추가 방법이 있습니다. 기본 AUTO-CDR 관련 열을 UNUSED 열로 유지하거나 REMOVE_AUTO_CDR 프로시저를 호출한 후 즉시 삭제할 수 있습니다.
테이블에 ADD_AUTO_CDR 프로시저를 적용하는 경우 기본적으로 내부 열은 AUTO_CDR가 제거된 경우 사용되지 않음으로 표시됩니다. REMOVE_AUTO_CDR를 호출한 후 사용되지 않은 열은 이후 단계에서 수동으로 삭제되거나 일부 추가 매개변수를 사용하여 즉시 제거할 수 있습니다. 자세한 내용은 테이블에서 충돌 감지 및 해결 제거를 참조하십시오.
자세한 내용은 Oracle AI Database PL/SQL Packages and Types Reference의 ADD_AUTO_CDR Procedure을 참조하십시오.
최신 시간 기록 충돌 감지 및 해결을 사용하면 행 LCR의 시간 기록 열이 해당 테이블 행의 시간 기록과 일치하지 않을 때 충돌이 감지됩니다. 해당 시간 기록이 나중에 나오면 행 LCR이 적용됩니다. 그렇지 않으면 행 LCR이 폐기되고 테이블 행이 변경되지 않습니다. ADD_AUTO_CDR 프로시저를 실행하면 지정된 테이블의 각 행에 대해 보이지 않는 시간 기록 열이 추가되고 시간 기록 충돌 감지 및 해결이 구성됩니다. ADD_AUTO_CDR_COLUMN_GROUP 프로시저를 사용하여 열 그룹을 하나 이상 추가하는 경우 열 그룹에 대한 시간 기록을 추가하고 열 그룹에 대한 시간 기록 충돌 감지 및 해결을 구성합니다.
DBMS_GOLDENGATE_ADM 패키지의 GRANT_ADMIN_PRIVILEGE 프로시저를 사용하여 Oracle GoldenGate 관리자를 구성할 수 있습니다.
-
Oracle GoldenGate 관리자로 인바운드 서버 데이터베이스에 접속합니다.
-
ADD_AUTO_CDR프로시저를 실행하고 최신 시간 기록 충돌 감지 및 해결을 위해 구성할 테이블을 지정합니다. -
ADD_AUTO_CDR_COLUMN_GROUP프로시저를 실행하고 테이블에 열 그룹을 하나 이상 지정합니다. -
테이블을 복제하는 각 Oracle AI Database의 이전 단계를 반복합니다.
예 9-24 테이블에 대한 최신 시간 기록 충돌 감지 및 해결 구성
이 예에서는 hr.employees 테이블에 대한 최신 시간 기록 충돌 감지 및 해결을 구성합니다.
BEGIN
DBMS_GOLDENGATE_ADM.ADD_AUTO_CDR(
SCHEMA_NAME => 'HR',
TABLE_NAME => 'EMPLOYEES');
END;
/
예 9-25 열 그룹 구성
이 예에서는 HR.EMPLOYEES 테이블에서 시간 기록 충돌 해결을 위해 다음 열 그룹을 구성합니다.
-
JOB_IDENTIFIER_CG열 그룹에는JOB_ID,DEPARTMENT_ID및MANAGER_ID열이 포함됩니다. -
COMPENSATION_CG열 그룹에는SALARY및COMMISSION_PCT열이 포함됩니다.
BEGIN
DBMS_GOLDENGATE_ADM.ADD_AUTO_CDR_COLUMN_GROUP(
SCHEMA_NAME => 'HR',
TABLE_NAME => 'EMPLOYEES',
COLUMN_LIST => 'JOB_ID, DEPARTMENT_ID, MANAGER_ID',
COLUMN_GROUP_NAME => 'JOB_IDENTIFIER_CG');
END;
/
BEGIN
DBMS_GOLDENGATE_ADM.ADD_AUTO_CDR_COLUMN_GROUP(
SCHEMA_NAME => 'HR',
TABLE_NAME => 'EMPLOYEES',
COLUMN_LIST => 'SALARY, COMMISSION_PCT',
COLUMN_GROUP_NAME => 'COMPENSATION_CG');
END;
/
델타 충돌 감지 및 해결 구성
DBMS_GOLDENGATE_ADM 패키지의 ADD_AUTO_CDR_DELTA_RES 프로시저는 델타 충돌 감지 및 해결을 구성합니다.
델타 충돌 해결을 사용하여 충돌이 감지되고 해결되는 하나의 열을 지정합니다. 행 LCR의 열 값이 테이블의 해당 값과 일치하지 않는 경우 충돌이 감지됩니다. 이 충돌은 행 LCR의 새 값과 이전 값 간의 차이를 테이블의 값에 더하여 해결됩니다.
DBMS_GOLDENGATE_ADM 패키지의 GRANT_ADMIN_PRIVILEGE 프로시저를 사용하여 Oracle GoldenGate 관리자를 구성할 수 있습니다.
-
Oracle GoldenGate 관리자로 인바운드 서버 데이터베이스에 접속합니다.
-
ADD_AUTO_CDR프로시저를 실행하고 최신 시간 기록 충돌 감지 및 해결을 위해 구성할 테이블을 지정합니다. -
ADD_AUTO_CDR_DELTA_RES프로시저를 실행하고 델타 충돌 감지 및 해결이 수행되는 열을 지정합니다. -
테이블을 복제하는 각 Oracle AI Database의 이전 단계를 반복합니다.
예 9-26 테이블에 대한 델타 충돌 감지 및 해결 구성
이 예에서는 oe.orders 테이블의 order_total 열에 대한 델타 충돌 감지 및 해결을 구성합니다.
BEGIN
DBMS_GOLDENGATE_ADM.ADD_AUTO_CDR(
SCHEMA_NAME => 'OE',
TABLE_NAME => 'ORDERS');
END;
/
BEGIN
DBMS_GOLDENGATE_ADM.ADD_AUTO_CDR_DELTA_RES(
SCHEMA_NAME => 'OE',
TABLE_NAME => 'ORDERS',
COLUMN_NAME => 'ORDER_TOTAL');
END;
/
자동 충돌 감지 및 해상도 관리
DBMS_GOLDENGATE_ADM 패키지를 사용하여 Oracle AI Database에서 Oracle GoldenGate 자동 충돌 감지 및 해결을 관리할 수 있습니다.
테이블에 대한 충돌 감지 및 해결 변경
DBMS_GOLDENGATE_ADM 패키지의 ALTER_AUTO_CDR 프로시저는 테이블에 대한 충돌 감지 및 해결 방법을 변경합니다.
테이블에 대해 Oracle GoldenGate 자동 충돌 감지 및 해결을 구성해야 합니다.
-
Oracle GoldenGate 관리자로 인바운드 서버 데이터베이스에 접속합니다.
-
ALTER_AUTO_CDR프로시저를 실행하고 최신 시간 기록 충돌 감지 및 해결을 위해 구성할 테이블을 지정합니다. -
테이블을 복제하는 각 Oracle AI Database의 이전 단계를 모두 반복합니다.
예제 9-27 테이블에 대한 충돌 감지 및 해결 변경
이 예제에서는 HR.EMPLOYEES 테이블에 대한 충돌 감지 및 해결 방법을 변경하여 삭제 충돌이 삭제 표시자 테이블에서 추적되도록 지정합니다.
BEGIN
DBMS_GOLDENGATE_ADM.ALTER_AUTO_CDR(
SCHEMA_NAME => 'HR',
TABLE_NAME => 'EMPLOYEES',
TOMBSTONE_DELETES => TRUE);
END;
/
열 그룹 변경
ALTER_AUTO_CDR_COLUMN_GROUP 프로시저는 열 그룹을 변경합니다.
-
Oracle GoldenGate 관리자로 인바운드 서버 데이터베이스에 접속합니다.
-
ALTER_AUTO_CDR_COLUMN_GROUP프로시저를 실행하고 테이블에 열 그룹을 하나 이상 지정합니다. -
테이블을 복제하는 각 Oracle AI Database의 이전 단계를 모두 반복합니다.
예제 9-28 열 그룹 변경
이 예에서는 HR.EMPLOYEES 테이블에 대한 JOB_IDENTIFIER_CG 열 그룹에서 MANAGER_ID 열을 제거합니다.
BEGIN
DBMS_GOLDENGATE_ADM.ALTER_AUTO_CDR_COLUMN_GROUP(
SCHEMA_NAME => 'HR',
TABLE_NAME => 'EMPLOYEES',
COLUMN_GROUP_NAME => 'JOB_IDENTIFIER_CG',
REMOVE_COLUMN_LIST => 'MANAGER_ID');
END;
/
주: 열이 두 개 이상 있는 경우 콤마로 구분된 목록을 사용하십시오.
삭제 표시자 행
PURGE_TOMBSTONES 프로시저는 지정된 날짜 및 시간 전에 기록된 묘비 행을 제거합니다. 이 프로시저는 데이터베이스의 충돌 해결을 위해 구성된 모든 테이블의 삭제 표시자 행을 제거합니다.
묘비 로그가 시간이 지남에 따라 너무 커지지 않도록 주기적으로 묘비 행을 지워야 할 수 있습니다.
-
Oracle GoldenGate 관리자로 인바운드 서버 데이터베이스에 접속합니다.
-
PURGE_TOMBSTONES프로시저를 실행하고 날짜 및 시간을 지정합니다.
예제 9-29 묘비 행 비우기
이 예제에서는 2015년 12월 1일 동부 표준시 오후 3시 이전에 기록된 모든 묘비 행을 지웁니다. 시간 기록은 TIMESTAMP WITH TIME ZONE 형식으로 입력해야 합니다.
EXEC DBMS_GOLDENGATE_ADM.PURGE_TOMBSTONES('2015-12-01 15:00:00.000000 EST');
ACDR 테이블의 온라인 재정의
Oracle AI Database를 사용하면 DBMS_REDEFINITION 패키지를 사용하여 테이블 또는 열을 재구성할 때 애플리케이션 상호 작용을 완화할 수 있습니다. DBMS_REDEFINITION 패키지는 다음 작업을 수행하는 데 사용할 수 있습니다.
-
사용되지 않은 열을 제거합니다.
-
재구성, 테이블스페이스 재설계 및 분할
DBMS_REDFINITION.START_REDEF_TABLE는 중간 테이블에 대한 숨겨진 시간 기록 열을 자동으로 관리합니다.
DBMS_REDFINITION 패키지에 대한 자세한 내용은 Oracle AI Database PL/SQL Packages and Types Reference의 DBMS_REDEFINITION을 참조하십시오.
테이블에서 충돌 감지 및 해결 제거
Oracle AI Database 이상을 사용하면 AUTO_CDR가 제거될 경우 AUTO_CDR 관련 열이 UNUSED로 표시되므로 테이블에서 완전히 ACDR(Automatic Conflict Detection and Resolution)을 제거하면 테이블에 미치는 영향이 줄어듭니다.
REMOVE_AUTO_CDR 프로시저를 호출한 후 사용되지 않은 열은 유지 관리 창에서 수동으로 삭제할 수 있습니다. 이는 ALTER TABLE ... DROP COLUMN 작업이 리소스를 많이 사용하는 대형 테이블에 유용합니다.
REMOVE_AUTO_CDR 프로시저를 호출할 때 모든 AUTO_CDR 내부 열을 즉시 제거하려면 먼저 ADD_AUTO_CDR 또는 ALTER_AUTO_CDR 프로시저에 대해 additional_options 매개변수 REMOVE_HIDDEN_COLUMNS를 사용하여 테이블을 표시해야 합니다.
DBMS_GOLDENGATE_ADM 패키지의 REMOVE_AUTO_CDR 프로시저를 사용하여 테이블에 차단을 최소화하는 UNUSED 태그를 지정합니다. 열을 삭제하거나 이후 단계에서 유지할 수 있습니다.
-
Oracle GoldenGate 관리자로 인바운드 서버 데이터베이스에 접속합니다.
-
REMOVE_AUTO_CDR프로시저를 실행하고 테이블을 지정합니다. -
테이블을 복제하는 각 Oracle AI Database 인스턴스의 이전 단계를 모두 반복합니다.
예 9-30 테이블에 대한 충돌 감지 및 해결 제거
이 예에서는 HR.EMPLOYEES 테이블에 대한 충돌 감지 및 해결을 제거합니다.
BEGIN
DBMS_GOLDENGATE_ADM.REMOVE_AUTO_CDR(
SCHEMA_NAME => 'HR',
TABLE_NAME => 'EMPLOYEES');
END;
/
ADD_AUTO_CDR 프로시저에서 ADD_AUTO_CDR.REMOVE_HIDDEN_COLUMNS 플래그를 additional_flags 매개변수로 사용하여 열을 삭제하도록 선택할 수 있습니다.
다음은 테이블의 숨겨진 열을 보는 데 사용할 수 있는 예제입니다.
다음 질의는 DBA_UNUSED_COL_TABS 패키지를 사용하여 EMPLOYEES 테이블에 사용되지 않은 열이 있는지 확인합니다.
SELECT OWNER, TABLE_NAME, COUNT
FROM DBA_UNUSED_COL_TABS
WHERE OWNER = 'HR'
AND TABLE_NAME = 'EMPLOYEES'
ORDER BY OWNER, TABLE_NAME;
출력은 다음과 같이 표시됩니다.
OWNER TABLE_NAME COUNT
-------- ------------ ----------
HR EMPLOYEES 1
다음 질의는 EMPLOYEES 테이블의 열 그룹에 대해 ACDR이 제거되었을 때 시스템에서 태그가 지정된 숨겨진 열을 나열합니다.
SELECT OWNER, TABLE_NAME, COLUMN_ID, COLUMN_NAME, DATA_TYPE, HIDDEN_COLUMN
FROM DBA_TAB_COLS
WHERE OWNER = 'HR'
AND TABLE_NAME = 'EMPLOYEES'
AND HIDDEN_COLUMN = 'YES' AND USER_GENERATED= 'NO'
ORDER BY OWNER, TABLE_NAME, COLUMN_ID;
출력은 다음과 같이 표시됩니다.
OWNER TABLE_NAME COLUMN_ID COLUMN_NAME DATA_TYPE HIDDEN_COLUMN
------------ ------------ ---------- ------------- ------------ ---------------
HR EMPLOYEES SYS_C00014_22092220:30:52$ TIMESTAMP(6) YES
열 그룹 제거
Oracle AI Database 26ai 이상에서는 열 그룹에서 ACDR(Automatic Conflict Detection and Resolution)을 제거하면 ACDR 관련 열이 UNUSED로 표시되므로 테이블에 미치는 영향이 줄어듭니다. 열을 삭제하거나 이후 단계에서 유지할 수도 있습니다.
DBMS_GOLDENGATE_ADM 패키지의 REMOVE_AUTO_CDR_COLUMN_GROUP 프로시저를 사용하여 차단을 최소화하는 테이블에 태그를 지정합니다. 테이블에서 충돌 감지 및 해결 제거의 예를 참조하십시오.
-
Oracle GoldenGate 관리자로 인바운드 서버 데이터베이스에 접속합니다.
-
REMOVE_AUTO_CDR_COLUMN_GROUP프로시저를 실행하고 열 그룹의 이름을 지정합니다. -
테이블을 복제하는 각 Oracle AI Database의 이전 단계를 모두 반복합니다.
예제 9-31 열 그룹 제거
이 예에서는 HR.EMPLOYEES 테이블에서 COMPENSATION_CG 열 그룹을 제거합니다.
BEGIN
DBMS_GOLDENGATE_ADM.REMOVE_AUTO_CDR_COLUMN_GROUP(
SCHEMA_NAME => 'HR',
TABLE_NAME => 'EMPLOYEES',
COLUMN_GROUP_NAME => 'COMPENSATION_CG');
END;
델타 충돌 감지 및 해결 제거
DBMS_GOLDENGATE_ADM 패키지의 REMOVE_AUTO_CDR_DELTA_RES 프로시저는 열에 대한 델타 충돌 감지 및 해결을 제거합니다.
지정된 열에 대해 델타 충돌 감지 및 해결을 구성해야 합니다.
-
Oracle GoldenGate 관리자로 인바운드 서버 데이터베이스에 접속합니다.
-
REMOVE_AUTO_CDR_DELTA_RES프로시저를 실행하고 열을 지정합니다. -
테이블을 복제하는 각 Oracle AI Database의 이전 단계를 모두 반복합니다.
예 9-32 테이블에 대한 델타 충돌 감지 및 해결 제거
이 예에서는 OE.ORDERS 테이블의 ORDER_TOTAL 열에 대한 델타 충돌 감지 및 해결을 제거합니다.
BEGIN
DBMS_GOLDENGATE_ADM.REMOVE_AUTO_CDR_DELTA_RES(
SCHEMA_NAME => 'OE',
TABLE_NAME => 'ORDERS',
COLUMN_NAME => 'ORDER_TOTAL');
END;
자동 충돌 감지 및 해상도 모니터링
데이터 딕셔너리 뷰를 질의하여 Oracle AI Database에서 Oracle GoldenGate 자동 충돌 감지 및 해결을 모니터링할 수 있습니다.
충돌에 대해 구성된 테이블에 대한 정보 표시
ALL_GG_AUTO_CDR_TABLES 뷰에는 Oracle GoldenGate 자동 충돌 감지 및 해결을 위해 구성된 테이블에 대한 정보가 표시됩니다.
-
데이터베이스에 접속.
-
ALL_GG_AUTO_CDR_TABLES뷰를 질의합니다.
예제 9-33 충돌 감지 및 해결을 위해 구성된 테이블에 대한 정보 표시
이 query는 충돌 감지 및 해결을 위해 구성된 테이블에 대해 다음 정보를 표시합니다.
-
각 테이블의 테이블 소유자입니다.
-
각 테이블의 테이블 이름입니다.
-
테이블에 대한 삭제 표시자 테이블이 구성된 경우 갱신 삭제 충돌에 대해 삭제된 행을 저장하는 데 사용되는 삭제 표시자 테이블입니다.
-
각 테이블의 충돌 해결에 사용되는 숨겨진 시간 기록 열입니다.
COLUMN TABLE_OWNER FORMAT A15
COLUMN TABLE_NAME FORMAT A15
COLUMN TOMBSTONE_TABLE FORMAT A15
COLUMN ROW_RESOLUTION_COLUMN FORMAT A25
SELECT TABLE_OWNER,
TABLE_NAME,
TOMBSTONE_TABLE,
ROW_RESOLUTION_COLUMN
FROM ALL_GG_AUTO_CDR_TABLES
ORDER BY TABLE_OWNER, TABLE_NAME;
출력이 다음과 같이 표시됩니다.
TABLE_OWNER TABLE_NAME TOMBSTONE_TABLE ROW_RESOLUTION_COLUMN
--------------- --------------- --------------- -------------------------
HR EMPLOYEES DT$_EMPLOYEES CDRTS$ROW
OE ORDERS DT$_ORDERS CDRTS$ROW
충돌 해결 열에 대한 정보 표시
ALL_GG_AUTO_CDR_COLUMNS 뷰에는 Oracle GoldenGate 자동 충돌 감지 및 해결을 위해 구성된 열에 대한 정보가 표시됩니다.
행 또는 열 자동 충돌 감지 및 해결을 위해 열을 구성할 수 있습니다. 열 그룹의 최신 시간 기록 충돌 해결을 위해 열을 구성할 수 있습니다. 또한 델타 충돌 해결을 위해 열을 구성할 수 있습니다.
-
Oracle GoldenGate 관리자로 데이터베이스에 접속합니다.
-
ALL_GG_AUTO_CDR_COLUMNS뷰를 질의합니다.
예제 9-34 열 그룹에 대한 정보 표시
이 query는 충돌 감지 및 해결을 위해 구성된 테이블에 대해 다음 정보를 표시합니다.
-
각 테이블의 테이블 소유자입니다.
-
각 테이블의 테이블 이름입니다.
-
열이 열 그룹에 있는 경우 열 그룹의 이름입니다.
-
열 이름입니다.
-
열이 최신 시간 기록 충돌 해결을 위해 구성된 경우 열에 대한 숨겨진 시간 기록 열의 이름입니다.
COLUMN TABLE_OWNER FORMAT A10
COLUMN TABLE_NAME FORMAT A10
COLUMN COLUMN_GROUP_NAME FORMAT A17
COLUMN COLUMN_NAME FORMAT A15
COLUMN RESOLUTION_COLUMN FORMAT A23
SELECT TABLE_OWNER,
TABLE_NAME,
COLUMN_GROUP_NAME,
COLUMN_NAME,
RESOLUTION_COLUMN
FROM ALL_GG_AUTO_CDR_COLUMNS
ORDER BY TABLE_OWNER, TABLE_NAME;
출력은 다음과 유사합니다.
TABLE_OWNE TABLE_NAME COLUMN_GROUP_NAME COLUMN_NAME RESOLUTION_COLUMN
---------- ---------- ----------------- --------------- -----------------------
HR EMPLOYEES COMPENSATION_CG COMMISSION_PCT CDRTS$COMPENSATION_CG
HR EMPLOYEES COMPENSATION_CG SALARY CDRTS$COMPENSATION_CG
HR EMPLOYEES JOB_IDENTIFIER_CG MANAGER_ID CDRTS$JOB_IDENTIFIER_CG
HR EMPLOYEES JOB_IDENTIFIER_CG JOB_ID CDRTS$JOB_IDENTIFIER_CG
HR EMPLOYEES JOB_IDENTIFIER_CG DEPARTMENT_ID CDRTS$JOB_IDENTIFIER_CG
HR EMPLOYEES IMPLICIT_COLUMNS$ PHONE_NUMBER CDRTS$ROW
HR EMPLOYEES IMPLICIT_COLUMNS$ LAST_NAME CDRTS$ROW
HR EMPLOYEES IMPLICIT_COLUMNS$ HIRE_DATE CDRTS$ROW
HR EMPLOYEES IMPLICIT_COLUMNS$ FIRST_NAME CDRTS$ROW
HR EMPLOYEES IMPLICIT_COLUMNS$ EMAIL CDRTS$ROW
HR EMPLOYEES IMPLICIT_COLUMNS$ EMPLOYEE_ID CDRTS$ROW
OE ORDERS IMPLICIT_COLUMNS$ ORDER_MODE CDRTS$ROW
OE ORDERS IMPLICIT_COLUMNS$ ORDER_ID CDRTS$ROW
OE ORDERS IMPLICIT_COLUMNS$ ORDER_DATE CDRTS$ROW
OE ORDERS IMPLICIT_COLUMNS$ CUSTOMER_ID CDRTS$ROW
OE ORDERS DELTA$ ORDER_TOTAL
OE ORDERS IMPLICIT_COLUMNS$ PROMOTION_ID CDRTS$ROW
OE ORDERS IMPLICIT_COLUMNS$ ORDER_STATUS CDRTS$ROW
OE ORDERS IMPLICIT_COLUMNS$ SALES_REP_ID CDRTS$ROW
이 예제에서 열 그룹 이름에 대해 IMPLICIT_COLUMNS$가 있는 열은 행 충돌 감지 및 해결을 위해 구성되지만 열 그룹의 일부가 아닙니다. 열 그룹 이름에 대해 DELTA$가 있는 열은 델타 충돌 감지 및 해결을 위해 구성되며 이러한 열에는 해결 열이 없습니다.
열 그룹에 대한 정보 표시
ALL_GG_AUTO_CDR_COLUMN_GROUPS 뷰에는 Oracle GoldenGate 자동 충돌 감지 및 해결을 위해 구성된 열 그룹에 대한 정보가 표시됩니다.
DBMS_GOLDENGATE_ADM 패키지의 ADD_AUTO_CDR 프로시저를 사용하여 Oracle GoldenGate 자동 충돌 감지 및 해결을 구성할 수 있습니다. DBMS_GOLDENGATE_ADM 패키지의 ADD_AUTO_CDR_COLUMN_GROUP 프로시저를 사용하여 열 그룹을 구성할 수 있습니다.
-
Oracle GoldenGate 관리자로 데이터베이스에 접속합니다.
-
ALL_GG_AUTO_CDR_COLUMN_GROUPS뷰를 질의합니다.
예제 9-35 열 그룹에 대한 정보 표시
이 query는 충돌 감지 및 해결을 위해 구성된 테이블에 대해 다음 정보를 표시합니다.
-
테이블 소유자입니다.
-
테이블 이름입니다.
-
열 그룹의 이름입니다.
-
각 열 그룹에 대한 충돌 해결에 사용되는 숨겨진 시간 기록 열입니다.
COLUMN TABLE_OWNER FORMAT A15
COLUMN TABLE_NAME FORMAT A15
COLUMN COLUMN_GROUP_NAME FORMAT A20
COLUMN RESOLUTION_COLUMN FORMAT A25
SELECT TABLE_OWNER,
TABLE_NAME,
COLUMN_GROUP_NAME,
RESOLUTION_COLUMN
FROM ALL_GG_AUTO_CDR_COLUMN_GROUPS
ORDER BY TABLE_OWNER, TABLE_NAME;
출력은 다음과 유사합니다.
TABLE_OWNER TABLE_NAME COLUMN_GROUP_NAME RESOLUTION_COLUMN
--------------- --------------- -------------------- -------------------------
HR EMPLOYEES COMPENSATION_CG CDRTS$COMPENSATION_CG
HR EMPLOYEES JOB_IDENTIFIER_CG CDRTS$JOB_IDENTIFIER_CG