Oracle GoldenGate 12.2跨平台同步:Windows源库+Linux目标端实战指南

发布时间:2026/10/27 19:42:50
Oracle GoldenGate 12.2跨平台同步:Windows源库+Linux目标端实战指南 简介本资源是一份面向Oracle数据库管理员与数据同步工程师的实战部署指南聚焦Windows环境Oracle源库到Linux环境Oracle目标库的GoldenGateOGG跨平台实时数据同步全流程。内容覆盖归档与强制日志配置、附加日志启用、goldengate用户权限授予、enable_goldengate_replication参数设置、OGG 12.2.0.2可视化安装、Manager/Extract/Replicat组件初始化及checkpoint表配置等关键环节附带完整SQL与Shell命令示例兼顾原理说明与排错提示。资源为单文件PDF文档共1个文件大小496KB结构清晰、步骤翔实适合作为现场部署参考或中级DBA进阶学习材料。目前已有296人下载学习可直接用于生产环境迁移验证、灾备方案搭建及OGG异构同步能力实操训练。1. OGG 12.2.0.2 跨平台同步Windows 到 Linux装错一个参数就卡在「MGR 启不来」你不是第一个被 Oracle GoldenGate 卡住的人——尤其当源端是 Windows、目标端是 Linux而你手头只有官网下载的122022_fbo_ggs_Linux_x64_shiphome.zip。别急着点setup.exeOGG 12.2 这个版本有个反直觉的硬伤它不支持 Windows 作为 Extract 源端直接安装运行。你看到的 Windows 安装包比如ggs_Windows_x64_shiphome.zip只含客户端工具和配置界面真正跑 Extract 的进程必须部署在 Oracle 数据库所在的操作系统上。所以所谓「Windows 同步到 Linux」本质是Windows 上的 Oracle 数据库源库 Linux 上的 OGG Manager/Extract/DataPump源端 OGG 实例 Linux 上的目标库与 Replicat。三端物理分离但逻辑连通。一旦你误把 Linux 版 OGG 解压到 Windows、或在 Windows 上强行启动ggsci执行add extract轻则报ORA-12154: TNS could not resolve重则MGR 进程反复启停、日志里满屏Failed to bind socket on port 7809——这不是网络不通是二进制不兼容。本文全程基于真实踩坑复现用ogg12.2.0.2在某高校模拟项目 X 中完成跨平台同步覆盖从 Windows 源库归档开启、Linux 源端 OGG 部署、DDL 捕获启用、初始化 SCN 对齐到最终truncate 都能实时落地的全链路。适合正在搭建灾备通道、做异构迁移验证、或被 DBA 催着交同步报告的中高级 DBA 和运维工程师。别信“一键脚本”OGG 是个黑匣子但每个开关你都得亲手拧紧。2. 环境准备与 OGG 二进制部署先确认 Oracle 版本再解压最后用对用户OGG 不是独立运行的中间件它深度绑定 Oracle 数据库内核。12.2.0.2 版本虽标称支持 Oracle 11gR212cR2但实际部署时Oracle 主版本号如 11.2.0.4 vs 11.2.0.1和 OGG 的 patch level 必须严格匹配否则dblogin会静默失败add trandata报ORA-30075: supplemental logging is not enabled。我们按「数据库环境 → OGG 安装包 → 用户权限 → 目录结构」四步走一步错后面全翻车。2.1 确认源库与目标库的 Oracle 版本及位数先登录 Windows 源库假设实例名为ORCL执行SQL SELECT BANNER FROM V$VERSION;输出必须包含类似Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production注意11.2.0.4.0是关键。如果你的源库是11.2.0.1.0OGG 12.2.0.2 无法捕获其 redo log必须升级数据库或降级 OGG如用 12.1.2.1。同理Linux 目标库也需确认版本。位数64bit必须一致混用 32/64 会导致libggjava.so加载失败。2.2 下载并校验 OGG 安装包本文使用的是官方介质122022_fbo_ggs_Linux_x64_shiphome.zip注意文件名中的fbo表示 Full Build Only即完整版非补丁包。不要下载ggs_Windows_x64_shiphome.zip试图在 Windows 上跑 Extract——它不含extract可执行文件仅含ggsci和defgen。下载后务必校验 SHA256# Linux 目标机执行假设包已上传至 /tmp $ sha256sum /tmp/122022_fbo_ggs_Linux_x64_shiphome.zip a1b2c3d4e5f6... /tmp/122022_fbo_ggs_Linux_x64_shiphome.zip提示Oracle 官网下载页会提供该 ZIP 的 SHA256 值必须完全一致。曾有团队因 CDN 缓存导致下载包损坏解压后runInstaller直接 Segmentation Fault。2.3 创建专用 oracle 用户并设置环境变量OGG 必须以 Oracle 数据库软件所有者身份运行通常是oracle用户且不能用root。创建前确认# 检查 oracle 用户主目录和 shell $ id oracle uid500(oracle) gid501(oinstall) groups501(oinstall),502(dba) $ grep ^oracle: /etc/passwd oracle:x:500:501::/home/oracle:/bin/bash关键点/home/oracle必须存在且oracle用户的umask应为022确保 OGG 生成的文件可被其他进程读取。若为077后续MGR启动会因无法写mgr.prm而失败。然后以oracle用户登录设置基础环境.bash_profile# 编辑 /home/oracle/.bash_profile export ORACLE_HOME/u01/app/oracle/product/11.2.0/db_1 export ORACLE_SIDtest1 export NLS_LANGAMERICAN_AMERICA.AL32UTF8 export PATH$ORACLE_HOME/bin:$PATH export LD_LIBRARY_PATH$ORACLE_HOME/lib:/lib:/usr/lib # OGG 专用路径必须 export GG_HOME/u01/app/ogg export PATH$GG_HOME:$PATH逻辑说明GG_HOME是 OGG 的根目录PATH中前置$GG_HOME确保ggsci命令优先调用本目录下的二进制。LD_LIBRARY_PATH必须包含$ORACLE_HOME/lib否则dblogin时libclntsh.so找不到。2.4 解压安装包并执行静默安装切记OGG 12.2.0.2 不需要传统意义上的“安装”而是解压 初始化。runInstaller是图形化向导生产环境应避免 GUI改用响应文件静默安装# 以 oracle 用户操作 $ cd /tmp $ unzip 122022_fbo_ggs_Linux_x64_shiphome.zip $ cd fbo_ggs_Linux_x64_shiphome/Disk1 # 创建响应文件 response.rsp内容如下 [ENGINE] RESPONSEFILE_VERSION12.2.0 oracle.install.optionORA12c_GGS_SILENT_INSTALL INSTALL_OPTIONORA12c_GGS ggs.homeLocation/u01/app/ogg START_MANAGERfalse MANAGER_PORT7809 DATABASE_LOCATION/u01/app/oracle/product/11.2.0/db_1 INVENTORY_LOCATION/u01/app/oraInventory UNIX_GROUP_NAMEoinstall # 执行静默安装 $ ./runInstaller -silent -responseFile /tmp/response.rsp -ignoreSysPrereqs -ignorePrereq参数说明ggs.homeLocation: OGG 根目录必须与GG_HOME环境变量一致START_MANAGERfalse不自动启动 MGR留给我们手动配置后再启-ignoreSysPrereqs跳过部分系统检查如 swap 大小生产环境慎用但测试环境常见安装完成后/u01/app/ogg下应有ggsci,extract,replicat,mgr等可执行文件以及dirprm,dirdat等默认目录。2.5 验证 OGG 二进制完整性与基础命令安装完立刻验证$ cd /u01/app/ogg $ ./ggsci Oracle GoldenGate Command Interpreter for Oracle Version 12.2.0.2.2 OGGCORE_12.2.0.2.0_PLATFORMS_170630.0419_FBO Linux, x64, 64bit (optimized), Oracle 11g on Jun 30 2017 14:42:26 Copyright (C) 1995, 2017, Oracle and/or its affiliates. All rights reserved. GGSCI (test1) 1 info all Program Status Group Lag at Chkpt Time Since Chkpt Manager STOPPED现象解读Manager STOPPED是正常的因为我们没启动它。如果出现Segmentation fault或command not found90% 是LD_LIBRARY_PATH缺失ORACLE_HOME/lib或oracle用户无权读取$ORACLE_HOME/lib/libclntsh.so.11.1。3. 数据库端核心配置归档、附加日志、用户权限三者缺一不可OGG 同步的本质是读取 Oracle 的 redo log。没有归档ARCHIVELOGlog 切换后旧日志被覆盖没有附加日志Supplemental LogDML 的 before image 信息缺失没有正确权限OGG 连表结构都读不到。这三步必须在 OGG 配置前完成且顺序不能乱。3.1 源库Windows开启归档与强制日志在 Windows 源库上以SYSDBA登录 SQL*Plus-- 1. 检查当前模式 SQL ARCHIVE LOG LIST; -- 若显示 No Archive Mode则需重启 -- 2. 关库、启 mount、开归档、开库 SQL SHUTDOWN IMMEDIATE; SQL STARTUP MOUNT; SQL ALTER DATABASE ARCHIVELOG; SQL ALTER DATABASE OPEN; -- 3. 开启 FORCE LOGGING强制所有操作写 redo SQL ALTER DATABASE FORCE LOGGING; -- 4. 开启最小附加日志必须 SQL ALTER DATABASE ADD SUPPLEMENTAL LOG DATA; -- 5. 验证结果两列都必须为 YES SQL SELECT SUPPLEMENTAL_LOG_DATA_MIN, FORCE_LOGGING FROM V$DATABASE; SUPPLEME FOR -------- --- YES YES -- 6. 切换日志使配置生效 SQL ALTER SYSTEM SWITCH LOGFILE;为什么必须SWITCH LOGFILEOracle 的附加日志配置不会立即生效于当前日志组SWITCH强制生成新日志组确保后续 DML 写入的 redo 包含完整列信息。漏掉这步add trandata会成功但 Extract 进程启动后报ERROR OGG-01163: Failed to add supplemental log data for table TEST.T1。3.2 源库创建 GOLDENGATE 用户并授全权OGG 需要一个专用数据库用户该用户不仅是连接凭证更是 OGG 内部对象如 checkpoint 表的所有者。权限必须精确多给会安全风险少给则功能残缺-- 1. 创建表空间避免用 SYSTEM SQL CREATE TABLESPACE goldengate DATAFILE C:\app\oracle\oradata\ORCL\ogg01.dbf SIZE 300M AUTOEXTEND ON NEXT 100M MAXSIZE UNLIMITED; -- 2. 创建用户密码区分大小写 SQL CREATE USER goldengate IDENTIFIED BY GoldEngte123 DEFAULT TABLESPACE goldengate TEMPORARY TABLESPACE temp QUOTA UNLIMITED ON goldengate; -- 3. 授予基础权限CONNECT/RESOURCE 已过时显式授予 SQL GRANT CREATE SESSION, ALTER SESSION, CREATE TABLE, CREATE SEQUENCE TO goldengate; SQL GRANT SELECT ANY DICTIONARY TO goldengate; -- 必须读取数据字典 SQL GRANT FLASHBACK ANY TABLE TO goldengate; -- 必须初始化时用 AS OF SCN -- 4. 授予 OGG 管理员角色核心 SQL EXEC DBMS_GOLDENGATE_AUTH.GRANT_ADMIN_PRIVILEGE(GOLDENGATE); -- 5. 开启 Goldengate 复制开关11gR2 必须 SQL ALTER SYSTEM SET ENABLE_GOLDENGATE_REPLICATIONTRUE SCOPEBOTH;参数说明GRANT_ADMIN_PRIVILEGE不是普通 grant它在GGS_GGSUSER_ROLE角色下创建了 OGG 内部所需的 PL/SQL 包如DBMS_LOGMNR调用权限。ENABLE_GOLDENGATE_REPLICATION是 11gR2 引入的强制参数不设则 Extract 进程启动即报OGG-01223: Oracle GoldenGate replication is disabled。3.3 目标库Linux配置权限比源库更激进目标库不需归档和附加日志但需要更强的 DML 权限因为 Replicat 要执行INSERT/UPDATE/DELETE/TRUNCATE-- 1. 创建相同表空间路径按 Linux 改 SQL CREATE TABLESPACE goldengate DATAFILE /u01/app/oracle/oradata/test1/ogg01.dbf SIZE 300M AUTOEXTEND ON NEXT 100M MAXSIZE UNLIMITED; -- 2. 创建用户密码必须与源库一致OGG 配置中明文写 SQL CREATE USER goldengate IDENTIFIED BY GoldEngte123 DEFAULT TABLESPACE goldengate TEMPORARY TABLESPACE temp QUOTA UNLIMITED ON goldengate; -- 3. 授予基础权限同源库 SQL GRANT CREATE SESSION, ALTER SESSION, CREATE TABLE TO goldengate; SQL GRANT SELECT ANY DICTIONARY TO goldengate; -- 4. 授予 OGG 管理员角色同源库 SQL EXEC DBMS_GOLDENGATE_AUTH.GRANT_ADMIN_PRIVILEGE(GOLDENGATE); -- 5. 开启复制开关同源库 SQL ALTER SYSTEM SET ENABLE_GOLDENGATE_REPLICATIONTRUE SCOPEBOTH; -- 6. 【关键区别】授予任意表 DML 权限Replicat 必需 SQL GRANT INSERT ANY TABLE, UPDATE ANY TABLE, DELETE ANY TABLE TO goldengate; SQL GRANT DROP ANY TABLE TO goldengate; -- 如果需同步 DROP 操作为什么ANY TABLE权限Replicat 进程不预知目标表名它通过 Trail 文件中的元数据动态解析MAP test.* TARGET test.*。没有ANY TABLE遇到新表就报OGG-01296: Error mapping from TEST.T1 to TEST.T1: OCI Error for operation INSERT。3.4 避坑数据库配置常见问题排查OGG 同步失败70% 根源在数据库端。以下是血泪经验总结的 4 个高频坑按「现象 → 原因 → 解决」给出可执行方案现象 1dblogin成功但add trandata TEST.T1报ORA-30075: supplemental logging is not enabled原因V$DATABASE中SUPPLEMENTAL_LOG_DATA_MINNO即最小附加日志未开启。解决-- 源库执行必须 SYSDBA SQL ALTER DATABASE ADD SUPPLEMENTAL LOG DATA; SQL ALTER SYSTEM SWITCH LOGFILE; -- 再次切换 SQL SELECT SUPPLEMENTAL_LOG_DATA_MIN FROM V$DATABASE; -- 确认返回 YES现象 2add extract extgsxf tranlog, begin now后start extgsxf进程状态为ABENDED日志ggserr.log显示ERROR OGG-01223: Oracle GoldenGate replication is disabled原因ENABLE_GOLDENGATE_REPLICATION参数未设或设为FALSE。解决-- 源库和目标库均执行 SQL SHOW PARAMETER enable_goldengate_replication; -- 若为 FALSE 或空则 SQL ALTER SYSTEM SET ENABLE_GOLDENGATE_REPLICATIONTRUE SCOPEBOTH; SQL ALTER SYSTEM ARCHIVE LOG CURRENT; -- 强制刷参数到 spfile现象 3add checkpointtable goldengate.ggschkpt报ORA-00942: table or view does not exist原因goldengate用户无权访问DBA_TABLESPACES或DBA_USERSggsci内部建表语句失败。解决-- 源库/目标库以 SYSDBA 执行 SQL GRANT SELECT_CATALOG_ROLE TO goldengate; SQL GRANT SELECT ANY TABLE TO goldengate; -- 临时授权建完可收回 -- 然后在 ggsci 中重试 GGSCI dblogin userid goldengate password GoldEngte123 GGSCI add checkpointtable goldengate.ggschkpt现象 4add extract成功但start extract后状态为STOPPED日志显示ERROR OGG-01224: Cannot connect to database原因TNSNAMES.ORA中服务名配置错误或ORACLE_HOME环境变量指向错误的 Oracle Home。解决# Linux 源端检查 $ echo $ORACLE_HOME /u01/app/oracle/product/11.2.0/db_1 $ ls $ORACLE_HOME/network/admin/tnsnames.ora # 确认其中存在源库的服务名如 ORCL (DESCRIPTION (ADDRESS (PROTOCOL TCP)(HOST 10.0.100.100)(PORT 1521)) (CONNECT_DATA (SERVER DEDICATED) (SERVICE_NAME ORCL)) $ tnsping ORCL # 必须返回 OK4. OGG 实例初始化与核心进程配置从create subdirs到start mgrOGG 不是装完就能跑它需要一套自洽的目录体系和进程拓扑。create subdirs是起点GLOBAL参数是骨架CHECKPOINTTABLE是心脏MGR是大脑。任何一环缺失进程都无法持久化状态。4.1 创建子目录结构源端与目标端均需进入 OGG 根目录启动ggsci$ cd /u01/app/ogg $ ./ggsci GGSCI (test1) 1 create subdirs输出解读Parameter files /u01/app/ogg/dirprm: already exists——dirprm存在说明之前创建过Checkpoint files /u01/app/ogg/dirchk: already exists——dirchk是 checkpoint 表的本地缓存目录若某目录报Permission denied说明oracle用户对该路径无写权限执行$ chown -R oracle:oinstall /u01/app/ogg $ chmod -R 755 /u01/app/ogg4.2 配置全局参数文件./GLOBALSGLOBALS是 OGG 实例的全局配置影响所有进程。它必须放在 OGG 根目录下文件名全大写无扩展名GGSCI (test1) 2 edit params ./GLOBALS输入以下内容# 全局参数指定 checkpoint 表所有者和表名 GGSCHEMA goldengate CHECKPOINTTABLE goldengate.ggschkpt # 关闭 syslog避免日志污染系统日志 SYSLOG NONE # 【可选】启用加密生产环境建议 ENCKEYS ./dirwlt/ENCKEYS逻辑说明GGSCHEMA告诉 OGG所有内部对象如 checkpoint 表都归goldengate用户所有CHECKPOINTTABLE指定 checkpoint 表名为ggschkpt该表由add CHECKPOINTTABLE命令创建SYSLOG NONE是关键否则ggserr.log会被系统日志轮转策略清空排查时找不到线索。4.3 创建 checkpoint 表源端与目标端均需checkpoint 表是 OGG 的“记忆体”记录每个进程处理到哪条 redo 记录。没有它进程重启后会从头拉日志造成重复或丢失。GGSCI (test1) 3 dblogin userid goldengate password GoldEngte123 Successfully logged into database. GGSCI (test1 as goldengatetest1) 4 add CHECKPOINTTABLE goldengate.ggschkpt Successfully created checkpoint table goldengate.ggschkpt.验证登录数据库确认表存在且结构正确SQL DESC goldengate.ggschkpt; Name Null? Type ----------------------------------------- -------- ---------------------------- CHECKPOINT_NAME NOT NULL VARCHAR2(128) CHECKPOINT_ID NOT NULL NUMBER CHECKPOINT_TIME DATE ... -- 共 20 列OGG 自动创建4.4 配置并启动 Manager 进程MGR是 OGG 的守护进程负责监听端口、启动/停止其他进程、管理 Trail 文件生命周期。它的参数文件mgr.prm必须手工创建GGSCI (test1 as goldengatetest1) 5 edit params mgr输入# Manager 端口与动态端口池 PORT 7809 DYNAMICPORTLIST 7800-7810 # 数据库连接必须否则无法管理 checkpoint USERID goldengate, PASSWORD GoldEngte123 # 自动重启策略生产环境必备 AUTORESTART ER *, RETRIES 3, WAITMINUTES 5, RESETMINUTES 60 # 延迟监控单位分钟 LAGREPORTMINUTES 10 LAGCRITICALMINUTES 10 # Trail 文件自动清理防磁盘爆满 PURGEOLDEXTRACTS ./dirdat/*, USECHECKPOINTS, MINKEEPHOURS 12 # DDL 历史清理OGG 12.2 新增 PURGEDDLHISTORY MINKEEPDAYS 7, MAXKEEPDAYS 14, FREQUENCYHOURS 3 PURGEMARKERHISTORY MINKEEPDAYS 7, MAXKEEPDAYS 14, FREQUENCYHOURS 3参数详解DYNAMICPORTLIST为 DataPump 和 Replicat 分配临时端口避免端口冲突AUTORESTARTER *表示对所有 Extract/Replicat 进程启用自动重启RESETMINUTES 60是重置计数器时间防止连续失败被永久禁用PURGEOLDEXTRACTSUSECHECKPOINTS表示只删已提交到 checkpoint 的 Trail 文件MINKEEPHOURS 12保证至少保留 12 小时为人工干预留窗口。启动MGRGGSCI (test1 as goldengatetest1) 6 start mgr Manager started. GGSCI (test1 as goldengatetest1) 7 info mgr Manager is running (port 7809).验证检查端口是否监听$ netstat -tuln | grep 7809 tcp 0 0 :::7809 :::* LISTEN4.5 配置 Extract 进程捕获 Windows 源库的 redoExtract 进程部署在 Linux 源端但它连接的是 Windows 上的 Oracle 数据库。因此SETENV必须精准指向 Windows 源库的ORACLE_HOME和TNSNAMES。GGSCI (test1 as goldengatetest1) 8 edit param extgsxf输入EXTRACT extgsxf -- 连接 Windows 源库关键ORACLE_HOME 是 Windows 路径但 Extract 运行在 Linux此处仅作连接参数 SETENV (ORACLE_HOME/u01/app/oracle/product/11.2.0/db_1) -- 此处是 Linux 上的 ORACLE_HOME用于加载 libclntsh SETENV (ORACLE_SIDORCL) -- Windows 源库 SID SETENV (NLS_LANGAMERICAN_AMERICA.AL32UTF8) USERID goldengate, PASSWORD GoldEngte123 -- Trail 文件输出路径本地 Linux 文件系统 EXTTRAIL ./dirdat/gs -- 关键禁用 LOGRETENTION避免 Oracle 归档日志被提前删除 TRANLOGOPTIONS LOGRETENTION DISABLED -- 提升性能增大缓冲区 TRANLOGOPTIONS BUFSIZE 2048000 GETREPLICATES CACHEMGR CACHESIZE 2GB -- DDL 捕获必须启用否则建表/改表不同步 DDL INCLUDE MAPPED, OBJTYPE TABLE INCLUDE MAPPED OBJTYPE INDEX DDLOPTIONS ADDTRANDATA RETRYOP RETRYDELAY 10 MAXRETRIES 10 DDLOPTIONS REPORT -- 错误处理 DISCARDFILE ./dirrpt/extgsxf.dsc, APPEND, MEGABYTES 1000 DISCARDROLLOVER AT 6:00 REPORTROLLOVER AT 6:00 REPORTCOUNT EVERY 1 HOURS, RATE -- 长事务监控 FETCHOPTIONS FETCHPKUPDATECOLS STATOPTIONS REPORT FETCHWARNLONGTRANS 1H, CHECKINTERVAL 10m -- 捕获所有 TEST 模式下的表 TABLE test.*;为什么SETENV ORACLE_HOME指 Linux 路径Extract 进程是 Linux 二进制它通过 Oracle Clientlibclntsh.so连接 Windows 数据库。ORACLE_HOME必须指向 Linux 上安装的 Oracle Client 目录而非 Windows 的路径。ORACLE_SID和TNSNAMES.ORA中的服务名才指向 Windows 源库。添加并启动GGSCI (test1 as goldengatetest1) 9 add extract extgsxf tranlog, begin now EXTRACT added. GGSCI (test1 as goldengatetest1) 10 add exttrail ./dirdat/gs, extract extgsxf, megabytes 1024 EXTTRAIL added. GGSCI (test1 as goldengatetest1) 11 start extgsxf验证GGSCI info extgsxf EXTRACT EXTGSXF Last Started 2023-10-05 10:20 Status RUNNING Checkpoint Lag 00:00:05 (updated 2023-10-05 10:25)5. DDL 同步与表级附加日志让CREATE TABLE和ALTER COLUMN也能实时同步OGG 默认只同步 DMLINSERT/UPDATE/DELETEDDL数据定义语言需显式启用。否则你在源库CREATE TABLE t2目标库永远不会有t2。而表级附加日志Trandata是 DML 同步的前提——没有它OGG 不知道哪列是主键无法生成唯一标识。5.1 在源库启用 DDL 同步WindowsDDL 同步依赖数据库内部触发器和存储过程。OGG 提供了四个脚本必须按顺序、以 SYSDBA 身份执行-- 1. 创建 marker 表标记 DDL 事件 SQL C:\app\oracle\product\11.2.0\db_1\gg\marker_setup.sql -- 2. 创建 DDL 捕获触发器核心 SQL C:\app\oracle\product\11.2.0\db_1\gg\ddl_setup.sql -- 3. 创建角色GGS_GGSUSER_ROLE SQL C:\app\oracle\product\11.2.0\db_1\gg\role_setup.sql -- 4. 将角色授予 goldengate 用户 SQL GRANT GGS_GGSUSER_ROLE TO goldengate; -- 5. 启用 DDL 触发器 SQL C:\app\oracle\product\11.2.0\db_1\gg\ddl_enable.sql执行要点所有脚本路径必须是 Windows 源库上的绝对路径ddl_setup.sql会创建GGS_DDL_EVENTS表ddl_enable.sql会启用GGS_DDL_TRIGGER触发器执行后在dba_triggers中应看到GGS_DDL_TRIGGER状态为ENABLED。5.2 添加表级附加日志Trandataadd trandata告诉 OGG“这张表的哪些列变化了我需要记录”。它要求表有主键或唯一索引GGSCI (test1 as goldengatetest1) 12 dblogin userid goldengate password GoldEngte123 GGSCI (test1 as goldengatetest1) 13 add trandata test.t1输出Logging of supplemental redo data enabled for table TEST.T1.TRANDATA for scheduling columns has been added on table TEST.T1.TRANDATA for instantiation CSN has been added on table TEST.T1.验证SQL SELECT OWNER, TABLE_NAME, LOG_GROUP_TYPE FROM DBA_LOG_GROUPS WHERE TABLE_NAMET1; OWNER TABLE_NAME LOG_GROUP_TYPE ------ ----------- ---------------- TEST T1 SUPPLEMENTAL LOG GROUP5.3 性能优化执行ddl_pin脚本ddl_pin将 DDL 相关的 PL/SQL 包常驻共享池避免每次 DDL 解析时硬解析提升性能-- 在 Windows 源库执行SYSDBA SQL C:\app\oracle\product\11.2.0\db_1\gg\ddl_pin.sql goldengate效果v$db_object_cache中GGS_DDL_*包的KEPT列变为YES。5.4 配置 DataPump 进程将 Trail 从 Linux 源端投递到 Linux 目标端DataPump 是 Extract 和 Replicat 之间的“快递员”它读取本地./dirdat/gs通过网络发送到目标端./dirdat/gs。GGSCI (test1 as goldengatetest1) 14 edit param dpgskfEXTRACT dpgskf PASSTHRU -- 不查源库纯转发 DYNAMICRESOLUTION -- 目标端 Manager 地址Linux 目标机 IP RMTHOST 10.0.100.141, MGRPORT 7809 -- 输出 Trail 名称与 Extract 的 EXTTRAIL 一致 RMTTRAIL ./dirdat/gs -- 错误处理 DISCARDFILE ./dirrpt/dpgskf.dsc, APPEND, MEGABYTES 100 DISCARDROLLOVER AT 6:00 REPORTROLLOVER AT 6:00 REPORTCOUNT EVERY 1 HOURS, RATE -- 投递所有表 TABLE test.*;添加并启动GGSCI (test1 as goldengatetest1) 15 add extract dpgskf, exttrailsource ./dirdat/gs GGSCI (test1 as goldengatetest1) 16 add rmttrail ./dirdat/gs, extract dpgskf, megabytes 1024 GGSCI (test1 as goldengatetest1) 17 start dpgskf验证在目标端./dirdat/gs目录下应出现gs000000000类似文件且大小随源库 DML 增长。6. 初始化同步与端到端验证从 SCN 对齐到TRUNCATE实时落地同步不是启动进程就结束初始数据必须对齐。OGG 提供两种方式传统 expdp本文还有配套的精品资源点击获取

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询