

# Oracle GoldenGate 问题排查
<a name="Appendix.OracleGoldenGate.Troubleshooting"></a>

本节说明 Oracle GoldenGate 与 Amazon RDS for Oracle 结合使用时的最常见问题。

**Topics**
+ [打开联机重做日志时出错](#Appendix.OracleGoldenGate.Troubleshooting.Logs)
+ [Oracle GoldenGate 似乎配置正确，但复制不起作用](#Appendix.OracleGoldenGate.Troubleshooting.Replication)
+ [由于 SYS 上的查询，集成 REPLICAT 速度缓慢。"\$1DBA\$1APPLY\$1CDR\$1INFO"](#Appendix.OracleGoldenGate.IR)

## 打开联机重做日志时出错
<a name="Appendix.OracleGoldenGate.Troubleshooting.Logs"></a>

确保将数据库配置为保留存档的重做日志。请考虑以下准则：
+ 以小时为单位指定日志保留的持续时间。最小值为一小时。
+ 设置持续时间以超过源数据库实例的任何可能的停机时间、任何可能的通信时间以及源数据库实例的任何可能的联网问题期间。指定这样的持续时间后，可允许 Oracle GoldenGate 根据需要从源数据库实例恢复日志。
+ 确保您的实例上有足够的文件存储空间。

如果未启用日志保留，或者保留值太小，则将收到类似以下内容的错误消息。

```
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 上的查询，集成 REPLICAT 速度缓慢。"\$1DBA\$1APPLY\$1CDR\$1INFO"
<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;
```