테이블 처리 준비
다음 섹션의 테이블 속성은 Oracle GoldenGate 환경에서 처리해야 합니다.
대상 ID 열, 트리거 및 제약 조건에 대한 Replicat 고려 사항
ID 열, 트리거, 계단식 배열 및 검사 제약 조건이 있는 대상 SQL Server 데이터베이스에 데이터를 복제할 때는 다음 사항을 고려하십시오.
-
ID 열이 있는 열의 경우 Replicat는 테이블에 대해
IDENTITY_INSERT ON를 설정하여 전달 성능을 줄일 수 있습니다. -
트리거 또는 캐스케이드 제약 조건이 있는 테이블의 경우 트리거 또는 캐스케이드 작업을 실행하면 Replicat가 트리거 삽입 또는 캐스케이드 제약 조건이 업데이트 또는 삭제될 것과 동일한 데이터를 제공하도록 구성된 경우 Replicat 오류가 발생할 수 있습니다.
예를 들어, 소스의
TableA에는TableB에 레코드를 삽입하는 트리거가 있습니다. Extract는TableA및TableB에 대한 레코드를 수집하도록 구성됩니다. 대상에서 Replicat는 먼저TableA에 대한 레코드를 삽입한 다음TableA에 대한 트리거가TableB에 실행되고 삽입된 다음 Replicat가 동일한 레코드를TableB에 삽입하려고 시도하면 Replicat 오류가 발생합니다. -
전달 성능이 저하될 수 있는 외래 키 제약 조건도 적용되었는지 확인합니다.
-
트리거가 있는 대상 데이터베이스의 테이블에 대해
SET XACT_ABORT매개변수를 off로 설정하십시오. 이렇게 하면 트리거 작업을 실행해도 트랜잭션이 누락되지 않습니다.
이러한 상황을 극복하기 위해 복제 사용 사례를 기반으로 구현할 수 있는 몇 가지 옵션이 있습니다.
-
Replicat가 대상 테이블에 데이터를 기록하는 유일한 프로세스인 단방향 구현의 경우 대상 테이블의 ID 열, 트리거 및 제약 조건에 대해 다음 옵션을 고려하십시오.
-
대상 테이블에서 Identity 속성, 트리거 및 제약 조건을 비활성화하거나 삭제합니다.
-
ID 속성, 트리거 및 제약 조건을 수정하고 각각에 대해
NOT FOR REPLICATION옵션을 설정하고 Microsoft ODBC 드라이버가 버전 17.8.1 이상인지 확인합니다.
-
-
Replicat 및 응용 프로그램이 모두 대상 테이블에 데이터를 쓰고 트리거 및 제약 조건이 사용으로 설정된 다방향 구현의 경우 Identity 등록 정보, 트리거 및 제약 조건을 수정하고 각각에 대해
NOT FOR REPLICATION옵션을 설정하고 Microsoft ODBC 드라이버가 버전 17.8.1 이상인지 확인합니다.또한 다방향 복제 구성에서
IDENTITY열을 사용하려면 구성의 서버 수와 동일한 증분 값을 가지도록IDENTITY열을 정의하고 각각 다른 시드 값을 사용합니다.예를 들어, 세 개의 데이터베이스 구성은 다음과 같습니다.
Database1는 시드 값을 0으로 설정하고 증분 값은 3으로 설정합니다.
Database2는 시드 값을 1로 설정하고 증분 값을 3으로 설정합니다.
Database3는 시드 값을 2로 설정하고 증분 값을 3으로 설정합니다.
어레이 처리로 IDENTITY 복제 향상
세션당 하나의 테이블만 IDENTITY_INSERT를 ON로 설정할 수 있으므로 Replicat는 세션의 여러 테이블에 IDENTITY 데이터를 적용할 때 IDENTITY_INSERT를 계속 토글해야 합니다. 이 경우 Replicat의 성능을 향상시키려면 BATCHSQL 매개변수를 사용합니다. BATCHSQL는 Replicat가 한 번에 하나씩 SQL 문을 적용하는 대신 배열 처리를 사용하도록 합니다.
소스 테이블과 대상 테이블에서 행 고유성 보장
Oracle GoldenGate에는 복제된 업데이트 및 삭제를 위한 올바른 대상 행을 찾기 위해 소스 및 대상 테이블에서 특정 형식의 고유한 행 식별자가 필요합니다.
KEYCOLS 절이 TABLE 또는 MAP 문에 사용되지 않는 한 Oracle GoldenGate는 다음 우선 순위 순서로 사용할 행 식별자를 선택합니다.
-
기본 키
-
시간 기록 또는 비구체화된 계산 열을 포함하지 않는 첫 번째 고유 키 영숫자.
-
앞의 키 유형이 없는 경우(테이블에 정의된 다른 유형의 키가 있더라도) Oracle GoldenGate는 모든 열의 의사 키를 생성합니다. Oracle GoldenGate가 키 또는 Oracle GoldenGate 구성에서 제외된 키에서 지원하지 않는 데이터베이스를 제외하고 고유 키에서 사용할 수 있습니다. 주: 테이블에 사용할 수 없는 다른 키가 있거나 테이블에 키가 전혀 없는 경우 Oracle GoldenGate는 적절한 메시지를 보고서 파일에 기록합니다. 모든 열에서 키를 구성하면 소스 시스템에서 Oracle GoldenGate의 성능이 저하됩니다. 대상에서 이 키로 인해 Replicat는 더 크고 덜 효율적인
WHERE절을 사용합니다.
- 테이블에 적절한 키가 없거나 기존 키가 사용되지 않도록 하려는 경우 테이블에 항상 고유한 값을 포함하는 열이 있는 경우 대체 키를 정의할 수 있습니다. Extract
TABLE매개변수 및 ReplicatMAP매개변수 내에KEYCOLS절을 포함하여 이 대체 키를 정의합니다. 지정된 키는 Oracle GoldenGate가 찾은 기존 기본 또는 고유 키를 무효화합니다. Oracle GoldenGate에 대한 참조에서 TABLE | MAP를 참조하십시오.
KEYCOLS를 사용하여 커스텀 키 지정
테이블에 적용 가능한 행 식별자가 없거나 식별자를 사용하지 않으려는 경우 테이블에 항상 고유한 값을 포함하는 열이 있는 경우 대체 키를 정의할 수 있습니다. Extract TABLE 매개변수 및 Replicat MAP 매개변수 내에 KEYCOLS 절을 포함하여 이 대체 키를 정의합니다. 지정된 키는 Oracle GoldenGate가 찾은 기존 기본 또는 고유 키를 무효화합니다.