처리를 위해 테이블 준비

Db2 z/OS용 Oracle GoldenGate 환경에서 사용할 테이블을 준비하려면 다음 작업을 수행해야 합니다.


트리거 비활성화 및 제약 조건 연쇄화

트리거를 사용 안함으로 설정하고, 제약 조건을 캐스케이드하고, 대상 테이블에서 업데이트 제약 조건을 캐스케이드하거나, Oracle GoldenGate 데이터베이스 사용자가 변경한 사항을 무시하도록 변경합니다. Oracle GoldenGate는 트리거 또는 캐스케이드 제약 조건에서 발생하는 DML을 복제합니다. 대상 테이블에서 동일한 트리거 또는 제약 조건이 활성화되면 복제된 버전으로 인해 중복되고 데이터베이스가 오류를 반환합니다. 다음 예제를 살펴보십시오. 여기서 소스 테이블은 emp_src 및 salary_src이고 대상 테이블은 emp_targ 및 salary_targ입니다.

테이블에 대한 행 고유성 확인

Oracle GoldenGate에는 복제된 업데이트 및 삭제를 위한 올바른 대상 행을 찾기 위해 소스 및 대상 테이블에 고유한 행 식별자가 필요합니다.

KEYCOLS 절이 TABLE 또는 MAP 문에 존재하지 않는 한 Oracle GoldenGate는 다음 우선 순위 순서로 사용할 행 식별자를 선택합니다.

  1. 기본 키

  2. 시간 기록 또는 비구체화된 계산 열을 포함하지 않는 첫 번째 고유 키 영숫자.

  3. 앞의 키 유형이 없는 경우(테이블에 정의된 다른 유형의 키가 있더라도) Oracle GoldenGate는 모든 열의 의사 키를 생성합니다. Oracle GoldenGate가 키 또는 Oracle GoldenGate 구성에서 제외된 키에서 지원되지 않는 데이터베이스를 제외하고 고유 키에서 사용할 수 있습니다.

주: 테이블에 사용할 수 없는 다른 키가 있거나 테이블에 키가 없는 경우 Oracle GoldenGate는 적절한 메시지를 보고서 파일에 기록합니다. 모든 열에서 키를 구성하면 소스 시스템에서 Oracle GoldenGate의 성능이 저하됩니다. 대상에서 이 키로 인해 Replicat는 보다 광범위하고 효율성이 낮은 WHERE 절을 사용합니다.

  1. 테이블에 적절한 키가 없거나 기존 키가 사용되지 않도록 하려는 경우 테이블에 항상 고유한 값을 포함하는 열이 있는 경우 대체 키를 정의할 수 있습니다. Extract TABLE 및 Replicat MAP 매개변수 내에 KEYCOLS 절을 포함하여 이 대체 키를 정의합니다. 지정된 키는 Oracle GoldenGate가 찾은 기존 기본 또는 고유 키를 무효화합니다. Oracle GoldenGate에 대한 참조에서 TABLE | MAP를 참조하십시오.

KEYCOLS를 사용하여 커스텀 키 지정

테이블에 앞의 행 식별자 유형 중 하나가 없거나 이러한 식별자를 사용하지 않으려는 경우 테이블에 항상 고유한 값을 포함하는 열이 있는 경우 대체 키를 정의할 수 있습니다. Extract TABLE 및 Replicat MAP 매개변수 내에 KEYCOLS 절을 포함하여 이 대체 키를 정의합니다. 지정된 키는 Oracle GoldenGate가 찾은 기존 기본 또는 고유 키를 무효화합니다. 자세한 내용은 Oracle GoldenGate에 대한 참조를 참조하십시오.

ROWID 열로 테이블 처리

데이터 유형이 ROWID GENERATED ALWAYS(기본값)인 열을 포함하는 대상 테이블에 삽입하려는 시도는 다음 ODBC 오류와 함께 실패합니다.

ODBC error: SQLSTATE 428C9 native database error -798. {DB2 FOR OS/390}{ODBC DRIVER}{DSN08015} DSNT408I SQLCODE = -798, ERROR: YOU CANNOT INSERT A VALUE INTO A COLUMN THAT IS DEFINED WITH THE OPTION GENERATED ALWAYS. COLUMN NAME ROWIDCOL.

다음 중 하나를 수행하여 Oracle GoldenGate에서 처리할 ROWID 열이 있는 테이블을 준비할 수 있습니다.

임시해결책 ROWID GENERATE ALWAYS:

  1. 소스 테이블에 대해 Extract TABLE 문을 생성하고 해당 명령문에서 ROWID 열을 제외하는 COLSEXCEPT 절을 사용합니다. 예:

    TABLE tab1, COLSEXCEPT (rowidcol);

    COLSEXCEPT 절은 캡처되어 대상 테이블로 복제되는 ROWID 열을 제외합니다.

  2. 대상 테이블의 경우 Replicat가 ROWID 열을 키로 사용하지 않는지 확인합니다. 이 과정은 다음 방법 중 하나로 수행할 수 있습니다.

    • 대상 테이블 정의에서 기본 키를 지정합니다.

    • 키를 생성할 수 없는 경우 테이블에 대해 Replicat MAP 매개변수를 생성하고 ROWID 열을 제외한 모든 고유 열을 포함하는 해당 명령문에 KEYCOLS 절을 사용합니다. Replicat는 해당 열을 키로 사용합니다. 예:

      MAP tab1, TARGET tab1, KEYCOLS (num, ckey);

Materialized Query 테이블 유지 관리

소스 및 대상 구체화된 질의 테이블(MQT) 간의 패리티를 유지 관리하려면 MQT가 아닌 기본 테이블을 복제합니다. Target Database는 Replicat가 기본 테이블에 적용하는 변경 사항에 따라 MQT를 유지 관리합니다.

다음은 이러한 테이블을 구성하는 규칙입니다.