

# Oracle GoldenGate 문제 해결
<a name="Appendix.OracleGoldenGate.Troubleshooting"></a>

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

**Topics**
+ [온라인 다시 실행 로그를 여는 중 발생하는 오류](#Appendix.OracleGoldenGate.Troubleshooting.Logs)
+ [Oracle GoldenGate는 제대로 구성된 것으로 보이나 복제가 작동하지 않음](#Appendix.OracleGoldenGate.Troubleshooting.Replication)
+ [SYS."\$1DBA\$1APPLY\$1CDR\$1INFO"에 대한 쿼리 때문에 통합 REPLICAT가 느려집니다.](#Appendix.OracleGoldenGate.IR)

## 온라인 다시 실행 로그를 여는 중 발생하는 오류
<a name="Appendix.OracleGoldenGate.Troubleshooting.Logs"></a>

보관된 다시 실행 로그를 유지하도록 소스 데이터베이스를 구성했는지 확인합니다. 다음 지침을 참고하세요.
+ 로그 보존 기간을 시간 단위로 지정합니다. 최소값은 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는 제대로 구성된 것으로 보이나 복제가 작동하지 않음
<a name="Appendix.OracleGoldenGate.Troubleshooting.Replication"></a>

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

**이 문제를 해결하려면**

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

   ```
   dblogin userid oggadm1@OGGSOURCE
   ```

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

   ```
   ALTER EXTRACT EABC SCN 223274
   start EABC
   ```

1. 대상 데이터베이스에 로그인합니다. 다음 예제에서는 로그인 형식을 보여 줍니다.

   ```
   dblogin userid oggadm1@OGGTARGET
   ```

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

   ```
   start RABC atcsn 223274
   ```

## SYS."\$1DBA\$1APPLY\$1CDR\$1INFO"에 대한 쿼리 때문에 통합 REPLICAT가 느려집니다.
<a name="Appendix.OracleGoldenGate.IR"></a>

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월 릴리스 및 패치 업데이트의 일부로 릴리스되었습니다. 이 프로시저는 다음 데이터베이스 버전에서 사용할 수 있습니다.
+ [ 버전 21.0.0.0.ru-2022-01.rur-2022-01.r1](https://docs.aws.amazon.com/AmazonRDS/latest/OracleReleaseNotes/oracle-version-21-0.html#oracle-version-RU-RUR.21.0.0.0.ru-2022-01.rur-2022-01.r1) 이상
+ [ 버전 19.0.0.0.ru-2020-10.rur-2020-10.r1](https://docs.aws.amazon.com/AmazonRDS/latest/OracleReleaseNotes/oracle-version-19-0.html#oracle-version-RU-RUR.19.0.0.0.ru-2020-10.rur-2020-10.r1) 이상

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

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