Oracle GoldenGate 문제 해결 - Amazon Relational Database Service

Oracle GoldenGate 문제 해결

이 섹션에서는 Amazon RDS for Oracle과 함께 Oracle GoldenGate를 사용할 때 가장 자주 발생하는 문제를 설명합니다.

온라인 다시 실행 로그를 여는 중 발생하는 오류

보관된 다시 실행 로그를 유지하도록 소스 데이터베이스를 구성했는지 확인합니다. 다음 지침을 참고하세요.

  • 로그 보존 기간을 시간 단위로 지정합니다. 최소값은 1시간입니다.

  • 소스 DB 인스턴스의 잠재적 가동 중지 시간, 잠재적 통신 시간, 소스 DB 인스턴스의 네트워킹 문제가 발생할 잠재적 기간보다 긴 기간을 설정합니다. 이러한 기간을 통해 Oracle GoldenGate는 필요에 따라 소스 DB 인스턴스에서 로그를 복구할 수 있습니다.

  • 인스턴스에 파일을 저장할 스토리지가 충분한지 확인합니다.

로그 보존을 활성화하지 않거나 보존 값이 너무 작으면 다음과 비슷한 오류 메시지가 표시됩니다.

2022-03-06 06:17:27 ERROR OGG-00446 error 2 (No such file or directory) opening redo log /rdsdbdata/db/GGTEST3_A/onlinelog/o1_mf_2_9k4bp1n6_.log for sequence 1306 Not able to establish initial position for begin time 2022-03-06 06:16:55.

Oracle GoldenGate는 제대로 구성된 것으로 보이나 복제가 작동하지 않음

기존 테이블의 경우 Oracle GoldenGate이 작동할 SCN을 지정해야 합니다.

이 문제를 해결하려면
  1. 소스 데이터베이스에 로그인하고 Oracle GoldenGate 명령줄 인터페이스(ggsci)를 시작합니다. 다음 예제에서는 로그인 형식을 보여 줍니다.

    dblogin userid oggadm1@OGGSOURCE
  2. ggsci 명령줄을 사용하여 EXTRACT 프로세스에 대한 시작 SCN을 설정합니다. 다음 예제에서는 EXTRACT을 위한 SCN을 223274로 설정합니다.

    ALTER EXTRACT EABC SCN 223274 start EABC
  3. 대상 데이터베이스에 로그인합니다. 다음 예제에서는 로그인 형식을 보여 줍니다.

    dblogin userid oggadm1@OGGTARGET
  4. ggsci 명령줄을 사용하여 REPLICAT 프로세스에 대한 시작 SCN을 설정합니다. 다음 예제에서는 REPLICAT을 위한 SCN을 223274로 설정합니다.

    start RABC atcsn 223274

SYS."_DBA_APPLY_CDR_INFO"에 대한 쿼리 때문에 통합 REPLICAT가 느려집니다.

Oracle GoldenGate 충돌 감지 및 해결(CDR) 기능은 기본적인 충돌 해결 루틴을 제공합니다. 예를 들어 CDR은 INSERT 문의 고유한 충돌 문제를 해결할 수 있습니다.

CDR이 충돌을 해결할 때, 일시적으로 예외 테이블 _DBA_APPLY_CDR_INFO에 레코드를 삽입할 수 있습니다. 통합 REPLICAT는 나중에 이러한 레코드를 삭제합니다. 드문 경우에, 통합 REPLICAT는 많은 수의 충돌을 처리할 수 있지만 새로운 통합 REPLICAT는 이를 대체하지 않습니다. _DBA_APPLY_CDR_INFO의 기존 행은 제거되지 않고 분리됩니다. 새로운 통합 REPLICAT 프로세스는 _DBA_APPLY_CDR_INFO에서 분리된 행을 쿼리하기 때문에 속도가 느려집니다.

_DBA_APPLY_CDR_INFO에서 모든 행을 제거하려면 Amazon RDS 프로시저 rdsadmin.rdsadmin_util.truncate_apply$_cdr_info를 사용합니다. 이 프로시저는 2020년 10월 릴리스 및 패치 업데이트의 일부로 릴리스되었습니다. 이 프로시저는 다음 데이터베이스 버전에서 사용할 수 있습니다.

다음 예제에서는 _DBA_APPLY_CDR_INFO 테이블을 자릅니다.

SET SERVEROUTPUT ON SIZE 2000 EXEC rdsadmin.rdsadmin_util.truncate_apply$_cdr_info;