OCI GoldenGate 是 Oracle Cloud Infrastructure 提供的托管数据复制与集成服务。与本地部署的 Oracle GoldenGate 相比,它把部署、补丁、高可用和扩容工作交给云平台,用户只需要关注源端与目标端的连接和复制映射。入门时最常遇到的困惑不是某个参数多难,而是不知道先做什么、后做什么。本文按配置顺序梳理一条可执行路径。

一、OCI GoldenGate的核心能力与部署形态
OCI GoldenGate 支持异构数据库之间的实时数据复制,例如从本地 Oracle 到云上 Autonomous Database、从 MySQL 到 Kafka、从 PostgreSQL 到 Object Storage 等。它的核心组件仍然沿用经典 Extract 和 Replicat 模型:Extract 从源端读取日志并输出 Trail 文件,Replicat 消费 Trail 文件并应用到目标端。只不过在云服务中,这些组件的安装、进程守护、日志轮转和补丁升级都由 OCI 托管完成。
部署时,用户需要在 OCI 控制台创建一个 GoldenGate Deployment,也就是一个独立的运行实例。创建过程中要选择 OCPU 数量、存储大小、网络所在的子网,以及是否为生产环境启用自动伸缩。生产型部署通常建议至少 2 个 OCPU,并将 Is Auto Scaling 设置为 true,以便在复制负载上升时自动扩容。开发测试环境可以选择 1 个 OCPU 和较小的存储,成本更可控。
部署完成后,控制台会提供一个公共或私有端点。公共端点可以通过互联网访问,私有端点只能从同一 VCN 或已打通的网络访问。对于本地数据库到云端的同步场景,一般会使用 FastConnect 或 VPN 建立专线,再配合私有端点,避免将数据库暴露在公网。
二、源端准备与网络打通
源端数据库需要先开启补充日志,否则 Extract 无法从日志中提取完整行数据。对于 Oracle 数据库,可以在 SQL Plus 中以 SYSDBA 身份执行数据库级补充日志,再对需要复制的表开启表级全字段补充日志。下面这条 SQL 是开启数据库级最小补充日志的示例。
ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
表级补充日志可以在创建复制任务前统一开启。如果业务表数量很多,可以只对主键或者全部字段开启。全字段日志会增大日志量,因此只建议对确实需要完整变更记录的表开启。示例如下。
ALTER TABLE sales.orders ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS; ALTER TABLE sales.order_items ADD SUPPLEMENTAL LOG DATA (PRIMARY KEY) COLUMNS;
源端用户权限也经常被忽略。数据库账号不能只有普通查询权限,还需要具备 GoldenGate 抽取所需的一组系统权限。Oracle 提供了一个授权助手包,可以一次性完成权限分配。以 Oracle 19c 为例,可以执行以下命令。
BEGIN
DBMS_GOLDENGATE_AUTH.GRANT_ADMIN_PRIVILEGE(
grantee => 'GGADMIN',
privilege_type => 'CAPTURE',
grant_select_privileges => TRUE);
END;
/
网络打通方面,如果源端是本地 Oracle,需要先完成 FastConnect 或 Site-to-Site VPN 的配置,并确认 OCI 子网路由表能够回程到本地网络。如果源端也在 OCI 上,则需要检查安全列表是否放行数据库端口和 GoldenGate 通信端口。数据库默认端口 1521,OGG Admin Client 使用 443 或指定的 WebSocket 端口,都要在安全列表中加入相应的 ingress 规则。
三、创建连接与复制链路
在 GoldenGate Deployment 中,连接对象用来保存源端和目标端的网络地址、数据库服务名、端口、用户名和密码。控制台的 Connections 页面可以创建 Oracle、MySQL、PostgreSQL、Kafka 等多种连接。Oracle 连接需要填写 hostname、port、service name 或 SID,并选择加密方式。如果源端开启了 TCPS,还需要上传对应钱包或证书。
连接创建完成后,可以测试连接是否正常。测试成功并不代表权限到位,因此建议紧接着在目标连接上执行一次小额数据读取验证。这个验证可以通过控制台自带的 Test Connection 和 SQL 预览功能完成。
复制链路可以通过 OCI 控制台创建,也可以使用 Admin Client 命令行。控制台方式更适合入门,它会引导用户选择源连接、目标连接、表映射和启动时间。命令行方式则更灵活,适合批量维护。下面是通过 Admin Client 添加 Extract 的示例,登录信息使用创建 Deployment 时设置的 oggadmin 账号。
CONNECT http://localhost:443 AS oggadmin PASSWORD your_password ADD EXTRACT extora, INTEGRATED TRANLOG, BEGIN NOW ADD EXTTRAIL /u02/trails/ea, EXTRACT extora
上面的命令创建了一个集成抽取进程,并指定 Trail 文件输出目录为 /u02/trails/ea。随后还需要创建 Replicat 进程,指定从 Trail 文件读取并应用到目标表。Replicat 的映射关系可以通过 MAP 参数控制,例如将源端 sales.orders 映射到目标端 reporting.orders。
ADD REPLICAT repora, EXTTRAIL /u02/trails/ea MAP sales.orders, TARGET reporting.orders; MAP sales.order_items, TARGET reporting.order_items;
实际生产环境中,表和字段映射往往更复杂,需要处理大小写、列顺序、过滤条件等。OCI GoldenGate 控制台提供了可视化的映射编辑器,可以在创建复制任务时逐表调整目标 schema 和表名,不需要手写全部参数。
四、验证同步结果与常见排查
复制任务启动后,先不要急着接入业务,应该做一次端到端验证。可以在源端插入一条带唯一标识的测试数据,观察目标端是否在几秒内出现该记录。延迟可以通过 Deployment 的 Metrics 页面查看,主要关注 Lag 指标。如果 Lag 持续上涨,说明 Extract 或 Replicat 消费速度跟不上源端变更速度。
同步失败最常见的原因是目标表结构不一致。例如源端新增了一个字段,但目标端没有同步更新表结构,Replicat 会因为列不匹配而 Abend。此时可以通过修改目标表结构后重启 Replicat 解决。另一个常见问题是 OCI 网络策略过严,导致 GoldenGate 无法访问源端数据库监听。控制台日志会给出明确的错误码,例如 OGG-01234 常见于连接被拒绝。
对于需要长期运行的复制链路,建议创建心跳表并配置自动清理。心跳表可以让 GoldenGate 在业务低峰期写入时间戳,帮助判断链路是否真正活跃,而不仅仅依赖进程状态。还可以在 OCI 中设置 Events 和 Alarms,当 Lag 超过阈值或进程停止时自动发送邮件或触发函数处理。
入门阶段不用追求一次配置完美。可以先完成一个简单的表级同步,理解连接、Extract、Trail、Replicat 之间的数据流,再逐步加入过滤、转换、多目标分发等高级能力。OCI GoldenGate 把底层运维复杂度降低了不少,但数据复制本身的设计仍然需要认真对待源端权限、日志量和目标端写入策略。
OCI GoldenGate数据复制实时同步修改时间:2026-09-20 19:57:25