Oracle GoldenGate(OGG)部署文档:Oracle 19C 至 SQL Server 2022 数据同步

文档说明

本文档用于指导基于 Oracle GoldenGate(以下简称 OGG)实现 源端单机 Oracle 19C 到 目标端单机 SQL Server 2022 的数据同步部署,涵盖环境准备、软件安装、配置步骤及验证方法,适用于单向数据同步场景。

一、环境规划与前置要求

1.1 服务器环境

角色数据库版本操作系统(示例)IP 地址(示例)主机名(示例)OGG 版本
源端Oracle 19C 单机RedHat 7.9192.168.1.100oracle-srcOGG 21.3.0.0.0
目标端SQL Server 2022Windows Server 2019192.168.1.200mssql-tgtOGG 21.3.0.0.0

1.2 前置条件

  1. 数据库要求
    • 源端 Oracle 19C:已安装并正常运行,开启归档模式(ARCHIVELOG)、强制日志(FORCE LOGGING)和附加日志(SUPPLEMENTAL LOGGING)。
    • 目标端 SQL Server 2022:已安装并正常运行,启用 CDC(变更数据捕获)或允许 OGG 对目标表执行 DML 操作。
  2. 账户权限
    • 源端 Oracle:创建 OGG 专用用户(如 ogg),授予 DBA 权限或 CONNECTRESOURCESELECT ANY TABLEFLASHBACK ANY TABLE 等权限。
    • 目标端 SQL Server:创建 OGG 专用登录名(如 ogg),授予 sysadmin 权限或目标库的 db_owner 权限。
  3. 网络要求:源端与目标端服务器之间开放 OGG 通信端口(默认 7809,可自定义),确保双向网络连通。
  4. 软件准备
    • 源端(Linux):下载 OGG for Oracle 21.3 安装包(如 fbo_ggs_Linux_x64_Oracle_64bit.tar)。
    • 目标端(Windows):下载 OGG for SQL Server 21.3 安装包(如 fbo_ggs_Windows_x64_SQLServer_64bit.zip)。

二、源端(Oracle 19C)配置

2.1 数据库参数配置

  1. 开启归档模式(若未开启):

    -- 登录 SQL*Plus(sysdba 权限)
    sqlplus / as sysdba
    -- 关闭数据库
    shutdown immediate
    -- 启动到 mount 状态
    startup mount
    -- 开启归档
    alter database archivelog;
    -- 打开数据库
    alter database open;
    -- 验证:返回 ARCHIVELOG 即为成功
    archive log list;
    
  2. 开启强制日志

    alter database force logging;
    -- 验证:返回 YES 即为成功
    select force_logging from v$database;
    
  3. 开启附加日志

    -- 数据库级主键附加日志
    alter database add supplemental log data (primary key) columns;
    -- (可选)对需要同步的表开启全列附加日志(无主键表必需)
    alter table CUX.CUX_TEMP_FOR_OGG_KEY add supplemental log data (all) columns;
    

2.2 OGG 软件安装与初始化

  1. 创建安装目录并解压

    mkdir -p /u01/ogg
    chown oracle:oinstall /u01/ogg
    su - oracle
    cd /u01/ogg
    tar -xvf fbo_ggs_Linux_x64_Oracle_64bit.tar
    
  2. 初始化 OGG 环境

    # 进入 OGG 目录
    cd /u01/ogg
    # 启动 GGSCI 工具
    ./ggsci
    # 创建 OGG 子目录(dirprm、dirdef 等)
    GGSCI> create subdirs
    # 退出 GGSCI
    GGSCI> exit
    
  3. 配置 Oracle 环境变量(在 .bash_profile 中添加):

    export OGG_HOME=/u01/ogg
    export PATH=$OGG_HOME:$PATH
    export ORACLE_HOME=/u01/app/oracle/product/19c/dbhome_1
    export ORACLE_SID=orcl
    

2.3 源端 Extract 进程配置(数据捕获)

  1. 添加检查点表(记录断点,确保中断后可续传):

    # 进入 GGSCI
    ggsci
    # 连接源端 Oracle 数据库
    GGSCI> dblogin userid ogg, password ogg
    # 创建检查点表(建议在源库创建,名称如 ogg.checkpoint)
    GGSCI> add checkpointtable ogg.checkpoint
    
  2. 编辑 Extract 参数文件

    GGSCI> edit param ext_ora
    

    参数内容如下:

    EXTRACT ext_ora
    SETENV (ORACLE_SID = "orcl")
    SETENV (ORACLE_HOME = "/u01/app/oracle/product/19c/dbhome_1")
    USERID ogg, PASSWORD ogg
    EXTTRAIL ./dirdat/et  # 本地 trail 文件路径(前缀为 et)
    TABLE CUX.CUX_TEMP_FOR_OGG_KEY;  # 需要同步的表(可添加多个)
    
  3. 添加并启动 Extract 进程

    # 添加 Extract 进程(指定检查点表)
    GGSCI> add extract ext_ora, tranlog, begin now, checkpointtable ogg.checkpoint
    # 添加本地 trail 文件(大小 50M)
    GGSCI> add exttrail ./dirdat/et, extract ext_ora, megabytes 50
    # 启动 Extract 进程
    GGSCI> start ext_ora
    # 验证进程状态(STATUS 为 RUNNING 即为正常)
    GGSCI> info ext_ora, detail
    

2.4 源端 Data Pump 进程配置(数据传输)

Data Pump 进程用于将本地 trail 文件发送到目标端。

  1. 编辑 Data Pump 参数文件

    GGSCI> edit param dp_ora
    

    参数内如下:

    EXTRACT dp_ora
    PASSTHRU  # 不解析数据,直接传输(跨库同步必需)
    RMTHOST 192.168.1.200, MGRPORT 7809  # 目标端 MGR 进程 IP 和端口
    RMTTRAIL ./dirdat/rt  # 目标端 trail 文件路径(前缀为 rt)
    TABLE CUX.CUX_TEMP_FOR_OGG_KEY;  # 与 Extract 同步的表一致
    
  2. 添加并启动 Data Pump 进程

    GGSCI> add extract dp_ora, exttrailsource ./dirdat/et, begin now
    GGSCI> add rmttrail ./dirdat/rt, extract dp_ora, megabytes 50
    GGSCI> start dp_ora
    GGSCI> info dp_ora, detail  # 验证状态
    

2.5 生成源端表结构定义文件(.def)

因源端为 Oracle、目标端为 SQL Server,需生成表结构定义文件供目标端解析。

  1. 编辑 defgen 参数文件

    GGSCI> edit param def_ora
    

    参数内容如下:

    DEFSFILE ./dirdef/ora_def.def  # 生成的 .def 文件路径
    USERID ogg, PASSWORD ogg
    TABLE CUX.CUX_TEMP_FOR_OGG_KEY;  # 需要同步的表
    
  2. 生成 .def 文件

    # 退出 GGSCI,在 Linux 终端执行
    cd /u01/ogg
    ./defgen paramfile ./dirprm/def_ora.prm
    

    生成的 ora_def.def 文件位于 ./dirdef 目录,需复制到目标端 OGG 的 dirdef 目录。

三、目标端(SQL Server 2022)配置

3.1 数据库配置

  1. 启用 SQL Server 远程连接

    • 打开 “SQL Server 配置管理器”,确保 “TCP/IP” 协议已启用。
    • 重启 SQL Server 服务(如 MSSQLSERVER)。
  2. 创建 OGG 专用登录名

    • 在 SQL Server Management Studio(SSMS)中,新建登录名 ogg,授予 sysadmin 服务器角色(或目标库的 db_owner 权限)。

3.2 OGG 软件安装与初始化

  1. 解压安装包

    • 将 fbo_ggs_Windows_x64_SQLServer_64bit.zip 解压至 C:\ogg 目录。
  2. 初始化 OGG 环境

    • 打开 “命令提示符”(管理员权限),进入 C:\ogg,执行 ggsci.exe
    • 在 GGSCI 中创建子目录:

      plaintext

      GGSCI> create subdirs
      

3.3 目标端 Manager 进程配置

Manager 进程是 OGG 的控制进程,负责管理其他进程。

  1. 编辑 Manager 参数文件

    GGSCI> edit param mgr
    

    参数内容如下:

    PORT 7809  # 监听端口(需与源端 Data Pump 配置一致)
    DYNAMICPORTLIST 7810-7900  # 动态端口范围
    AUTORESTART EXTRACT *, RETRIES 5, WAITMINUTES 3  # 自动重启进程
    PURGEOLDEXTRACTS ./dirdat/*, USECHECKPOINTS, MINKEEPDAYS 7  # 自动清理旧 trail 文件
    
  2. 启动 Manager 进程

    GGSCI> start mgr
    GGSCI> info mgr  # 验证状态(RUNNING 即为正常)
    

3.4 目标端 Replicat 进程配置(数据应用)

Replicat 进程用于将 trail 文件中的数据变更应用到 SQL Server。

  1. 编辑 Replicat 参数文件

    GGSCI> edit param rep_mssql
    

    参数内容如下:

    REPLICAT rep_mssql
    TARGETDB [目标库名], USERID ogg, PASSWORD ogg  # 连接 SQL Server(如目标库名为 mssql_db)
    SOURCEDEFS ./dirdef/ora_def.def  # 源端生成的 .def 文件路径
    DISCARDFILE ./dirrpt/rep_mssql.dsc, APPEND, MEGABYTES 10  # 错误日志文件
    MAP CUX.CUX_TEMP_FOR_OGG_KEY, TARGET dbo.CUX_TEMP_FOR_OGG_KEY;  # 源表到目标表的映射(SQL Server 表默认在 dbo  schema 下)
    
  2. 添加并启动 Replicat 进程

    # 连接 SQL Server(在 GGSCI 中)
    GGSCI> dblogin sourcedb [目标库名], userid ogg, password ogg
    # 添加 Replicat 进程(使用检查点表,默认在目标库创建)
    GGSCI> add replicat rep_mssql, exttrail ./dirdat/rt, nodbcheckpoint
    # 启动 Replicat 进程
    GGSCI> start rep_mssql
    GGSCI> info rep_mssql, detail  # 验证状态
    

四、同步验证

  1. 源端插入测试数据

    -- 在 Oracle 中执行
    insert into CUX.CUX_TEMP_FOR_OGG_KEY (ID, NAME) values (1, 'test_ogg');
    commit;
    
  2. 目标端查询验证

    -- 在 SQL Server 中执行
    select * from dbo.CUX_TEMP_FOR_OGG_KEY;
    

    若查询到 ID=1、NAME='test_ogg' 的记录,说明同步成功。

  3. 日志排查

    • 源端 Extract 日志:./dirrpt/ext_ora.rpt
    • 目标端 Replicat 日志:C:\ogg\dirrpt\rep_mssql.rpt若同步失败,可通过日志定位错误(如权限不足、表结构不匹配等)。

五、注意事项

  1. 表结构一致性:目标端 SQL Server 表需提前创建,字段类型需与源端兼容(如 Oracle 的 VARCHAR2 对应 SQL Server 的 VARCHAR)。
  2. 性能优化
    • 源端:调整 trail 文件大小(MEGABYTES),避免频繁 I/O。
    • 目标端:关闭 SQL Server 索引维护(同步期间),减少锁竞争。
  3. 灾备与监控
    • 定期备份 OGG 配置文件(dirprm 目录)和检查点表。
    • 通过 info all 命令监控进程状态,或集成第三方工具(如 Zabbix)告警。

六、附录:常用命令

操作源端(Linux GGSCI)目标端(Windows GGSCI)
查看所有进程状态info allinfo all
启动 Extract 进程start ext_ora-
启动 Replicat 进程-start rep_mssql
查看进程详情info ext_ora, detailinfo rep_mssql, detail
停止进程stop ext_orastop rep_mssql
查看日志view report ext_oraview report rep_mssql

通过以上步骤,可完成 Oracle 19C 到 SQL Server 2022 的 OGG 数据同步部署。若需同步更多表,只需在 Extract、Data Pump、Replicat 参数文件中添加对应表名,并重新生成 .def 文件即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值