Oracle GoldenGate용 Db2 z/OS 트랜잭션 로그 준비

Oracle GoldenGate Extract의 데이터 캡처를 지원하도록 Db2 트랜잭션 로깅을 구성하는 방법을 알아봅니다.

Oracle GoldenGate는 활성 및 아카이브된 로그에서 Db2 트랜잭션 데이터를 캡처할 수 있습니다. 다음 지침에 따라 Extract가 데이터를 캡처할 수 있도록 로그를 구성합니다.

Db2 z/OS용 Oracle GoldenGate에 대한 변경 사항 캡처를 사용으로 설정하려면 비Oracle 데이터베이스에 대해 TRANDATA 사용을 참조하십시오.

로그 레코드에 대한 접근 사용

Db2에서 Extract가 활성 로그를 읽을 수 있도록 Db2 모니터 추적 클래스 1("TRACE(MONITOR) CLASS(1) ")을 활성화합니다. Oracle GoldenGate는 대상을 사용하지 않으므로 OPX의 기본 대상으로도 충분합니다.

수동으로 추적 시작

  1. Db2에 TRACE 권한 또는 SYSOPR 권한 이상의 Db2 사용자로 로그온합니다.

  2. 다음 명령을 실행합니다.

start trace(monitor) class(1) scope(group)

Db2가 시작될 때 자동으로 추적 시작

다음 작업을 수행합니다.

주: ODBC 계획 실행기의 기본 권한 부여 ID 또는 보조 권한 부여 ID 중 하나에도 MONITOR2 권한이 있어야 합니다.

로그 크기 조정 및 유지

테이블이 DATA CAPTURE NONE로 정의된 경우보다 DATA CAPTURE CHANGES로 정의된 경우 더 많은 데이터가 기록됩니다. 다음 중 하나에 해당하는 경우 활성 및 아카이브된 로그의 수와 크기를 늘려야 할 수 있습니다.

DSNTIJUZ 설치 작업의 DSN6LOGP MAXARCH 시스템 매개변수를 사용하여 로그 보존을 제어합니다.

Extract가 정지한 후 또는 계획되지 않은 운용중단 후 해당 체크포인트에서 다시 시작할 수 있도록 충분한 로그 데이터를 보존합니다. Extract는 가장 오래된 커밋되지 않은 작업 단위의 시작과 그 이후의 모든 로그를 포함하는 로그에 액세스할 수 있어야 합니다.

처리 중 Extract에 필요한 데이터가 온라인 또는 아카이브된 로그에 보존되지 않은 경우 다음 해결 조치 중 하나가 필요할 수 있습니다.

테이프에 아카이브 로그 사용

Oracle GoldenGate는 테이프에서 Db2 아카이브 로그를 읽을 수 있으므로 성능이 저하됩니다. 예를 들어, Db2는 단일 복구 작업에 대해 테이프 아카이브를 예약하므로 Extract가 복구가 완료될 때까지 테이블을 복구하는 데 사용되는 아카이브 테이프를 읽을 수 없습니다. DFHSM 또는 동등한 도구를 사용하여 아카이브 로그를 온라인 DASD 스토리지와 테이프 간에 원활하게 이동할 수 있지만 Extract는 전송이 완료될 때까지 기다려야 합니다. 추출 처리 지연으로 인해 소스 데이터와 대상 데이터 사이의 대기 시간이 늘어납니다.

Oracle GoldenGate Extract가 테이프(물리적 테이프 또는 가상 테이프)에서 읽을 수 있거나 읽을 경우 다음 ZPARMs을 고려하는 것이 좋습니다.

분담금

DEALLCT 부속 시스템 매개변수는 아카이브 읽기 테이프 장치가 할당 해제되기 전에 사용되지 않은 상태로 유지될 수 있는 시간을 결정합니다.

업데이트: 패널 DSNTIPB에 옵션 43

DSNZPxxx: DSN6LOGP DEALLCT

Oracle은 DEALLCT를 0, 1(1초 할당 해제 지연)로 설정할 것을 권장합니다. 기본값은 즉시 할당 해제입니다. 그러면 Db2가 Extract의 읽기 간에 테이프를 즉시 재할당하지 못하게 됩니다.

MAXRTU

MAXRTU 부속 시스템 매개변수는 동시에 읽은 아카이브 로그 테이프 볼륨에 할당할 수 있는 최대 전용 테이프 단위 수를 지정합니다.

업데이트: 패널 DSNTIPB에 옵션 43

DSNZPxxx: DSN6LOGP MAXRTU

기본값은 테이프 장치 2개이지만 테이프+1에서 동시에 읽을 수 있는 예상 프로세스 수로 설정해야 합니다. 예를 들어, 4개의 Extracts 및 2개의 다른 응용 프로그램이 테이프에서 읽을 수 있는 경우 MAXRTU는 7(4 + 2 + 1) 이상이어야 합니다.

테이프에서 읽을 때 최상의 성능과 지연 최소화를 위해 Oracle GoldenGate Extract는 다음을 사용해야 합니다.

TRANLOGOPTIONS BUFSIZE 33554432

그러면 Extract가 트랜잭션 로그에서 한 번에 최대 32MB까지 읽을 수 있으며, 읽기당 기본값은 1MB가 아닙니다. 이 설정은 Oracle GoldenGate가 z/OS에서 사용하는 메모리 할당(ECSA(64바이트) 또는 64비트 공유 메모리(1MB)를 늘리지 않습니다. Extract가 큰 버퍼를 읽는 동안 Db2 임시 메모리 할당이 증가할 수 있습니다.

또한 Extract 매개변수 파일에서 DBLOGIN 매개변수 이전에 Db2 드라이버 TCP 통신 버퍼링을 추가로 조정하는 기능을 제공하기 위해 다음을 사용할 수도 있습니다. 예:

SETENV(DB2SOSNDBUF='524288')
SETENV(DB2SORCVBUF='524288')

그러면 Db2 드라이버가 전송 및 수신기 버퍼에 512KB를 사용하도록 알립니다. 다른 값을 사용할 수 있으며 각 설치에 대해 조정할 수 있습니다.

제어 로그 비우기

트랜잭션 로그를 읽을 때 Extract는 커밋 레코드를 캡처할 때까지 트랜잭션을 처리하지 않습니다. 커밋 레코드가 가득 차지 않은 데이터 블록에 있는 경우 해당 블록을 완료하기 위해 더 많은 로그 작업이 생성될 때까지 커밋 레코드를 캡처할 수 없습니다. Extract가 로그를 읽는 데 사용하는 API는 전체 물리적 데이터 블록만 검색합니다.

커밋이 포함된 블록의 수신이 지연되면 소스 데이터와 대상 데이터 사이의 대기 시간이 발생할 수 있습니다. 응용 프로그램이 블록을 채울 충분한 로그 레코드를 생성하지 않는 경우 Extract는 블록이 한쪽 방향 또는 다른 쪽을 채우고 해제될 때까지 SAVEPOINT 및 COMMIT 문을 실행하여 로그 레코드를 생성합니다.

데이터 공유 그룹에서 각 API 호출로 인해 Db2가 모든 활성 멤버의 데이터 블록을 비우므로 Extract가 비우기를 수행할 필요가 없습니다.

Extract가 플러시를 수행하지 못하도록 하려면 Extract 매개변수 TRANLOGOPTIONS을 NOFLUSH 옵션과 함께 사용합니다.