文档说明
本文档用于指导基于 Oracle GoldenGate(以下简称 OGG)实现 源端单机 Oracle 19C 到 目标端单机 SQL Server 2022 的数据同步部署,涵盖环境准备、软件安装、配置步骤及验证方法,适用于单向数据同步场景。
一、环境规划与前置要求
1.1 服务器环境
| 角色 | 数据库版本 | 操作系统(示例) | IP 地址(示例) | 主机名(示例) | OGG 版本 |
|---|---|---|---|---|---|
| 源端 | Oracle 19C 单机 | RedHat 7.9 | 192.168.1.100 | oracle-src | OGG 21.3.0.0.0 |
| 目标端 | SQL Server 2022 | Windows Server 2019 | 192.168.1.200 | mssql-tgt | OGG 21.3.0.0.0 |
1.2 前置条件
- 数据库要求:
- 源端 Oracle 19C:已安装并正常运行,开启归档模式(
ARCHIVELOG)、强制日志(FORCE LOGGING)和附加日志(SUPPLEMENTAL LOGGING)。 - 目标端 SQL Server 2022:已安装并正常运行,启用
CDC(变更数据捕获)或允许 OGG 对目标表执行 DML 操作。
- 源端 Oracle 19C:已安装并正常运行,开启归档模式(
- 账户权限:
- 源端 Oracle:创建 OGG 专用用户(如
ogg),授予DBA权限或CONNECT、RESOURCE、SELECT ANY TABLE、FLASHBACK ANY TABLE等权限。 - 目标端 SQL Server:创建 OGG 专用登录名(如
ogg),授予sysadmin权限或目标库的db_owner权限。
- 源端 Oracle:创建 OGG 专用用户(如
- 网络要求:源端与目标端服务器之间开放 OGG 通信端口(默认 7809,可自定义),确保双向网络连通。
- 软件准备:
- 源端(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)。
- 源端(Linux):下载 OGG for Oracle 21.3 安装包(如
二、源端(Oracle 19C)配置
2.1 数据库参数配置
-
开启归档模式(若未开启):
-- 登录 SQL*Plus(sysdba 权限) sqlplus / as sysdba -- 关闭数据库 shutdown immediate -- 启动到 mount 状态 startup mount -- 开启归档 alter database archivelog; -- 打开数据库 alter database open; -- 验证:返回 ARCHIVELOG 即为成功 archive log list; -
开启强制日志:
alter database force logging; -- 验证:返回 YES 即为成功 select force_logging from v$database; -
开启附加日志:
-- 数据库级主键附加日志 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 软件安装与初始化
-
创建安装目录并解压:
mkdir -p /u01/ogg chown oracle:oinstall /u01/ogg su - oracle cd /u01/ogg tar -xvf fbo_ggs_Linux_x64_Oracle_64bit.tar -
初始化 OGG 环境:
# 进入 OGG 目录 cd /u01/ogg # 启动 GGSCI 工具 ./ggsci # 创建 OGG 子目录(dirprm、dirdef 等) GGSCI> create subdirs # 退出 GGSCI GGSCI> exit -
配置 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 进程配置(数据捕获)
-
添加检查点表(记录断点,确保中断后可续传):
# 进入 GGSCI ggsci # 连接源端 Oracle 数据库 GGSCI> dblogin userid ogg, password ogg # 创建检查点表(建议在源库创建,名称如 ogg.checkpoint) GGSCI> add checkpointtable ogg.checkpoint -
编辑 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; # 需要同步的表(可添加多个) -
添加并启动 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 文件发送到目标端。
-
编辑 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 同步的表一致 -
添加并启动 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,需生成表结构定义文件供目标端解析。
-
编辑 defgen 参数文件:
GGSCI> edit param def_ora参数内容如下:
DEFSFILE ./dirdef/ora_def.def # 生成的 .def 文件路径 USERID ogg, PASSWORD ogg TABLE CUX.CUX_TEMP_FOR_OGG_KEY; # 需要同步的表 -
生成 .def 文件:
# 退出 GGSCI,在 Linux 终端执行 cd /u01/ogg ./defgen paramfile ./dirprm/def_ora.prm生成的
ora_def.def文件位于./dirdef目录,需复制到目标端 OGG 的dirdef目录。
三、目标端(SQL Server 2022)配置
3.1 数据库配置
-
启用 SQL Server 远程连接:
- 打开 “SQL Server 配置管理器”,确保 “TCP/IP” 协议已启用。
- 重启 SQL Server 服务(如
MSSQLSERVER)。
-
创建 OGG 专用登录名:
- 在 SQL Server Management Studio(SSMS)中,新建登录名
ogg,授予sysadmin服务器角色(或目标库的db_owner权限)。
- 在 SQL Server Management Studio(SSMS)中,新建登录名
3.2 OGG 软件安装与初始化
-
解压安装包:
- 将
fbo_ggs_Windows_x64_SQLServer_64bit.zip解压至C:\ogg目录。
- 将
-
初始化 OGG 环境:
- 打开 “命令提示符”(管理员权限),进入
C:\ogg,执行ggsci.exe。 - 在 GGSCI 中创建子目录:
plaintext
GGSCI> create subdirs
- 打开 “命令提示符”(管理员权限),进入
3.3 目标端 Manager 进程配置
Manager 进程是 OGG 的控制进程,负责管理其他进程。
-
编辑 Manager 参数文件:
GGSCI> edit param mgr参数内容如下:
PORT 7809 # 监听端口(需与源端 Data Pump 配置一致) DYNAMICPORTLIST 7810-7900 # 动态端口范围 AUTORESTART EXTRACT *, RETRIES 5, WAITMINUTES 3 # 自动重启进程 PURGEOLDEXTRACTS ./dirdat/*, USECHECKPOINTS, MINKEEPDAYS 7 # 自动清理旧 trail 文件 -
启动 Manager 进程:
GGSCI> start mgr GGSCI> info mgr # 验证状态(RUNNING 即为正常)
3.4 目标端 Replicat 进程配置(数据应用)
Replicat 进程用于将 trail 文件中的数据变更应用到 SQL Server。
-
编辑 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 下) -
添加并启动 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 # 验证状态
四、同步验证
-
源端插入测试数据:
-- 在 Oracle 中执行 insert into CUX.CUX_TEMP_FOR_OGG_KEY (ID, NAME) values (1, 'test_ogg'); commit; -
目标端查询验证:
-- 在 SQL Server 中执行 select * from dbo.CUX_TEMP_FOR_OGG_KEY;若查询到 ID=1、NAME='test_ogg' 的记录,说明同步成功。
-
日志排查:
- 源端 Extract 日志:
./dirrpt/ext_ora.rpt - 目标端 Replicat 日志:
C:\ogg\dirrpt\rep_mssql.rpt若同步失败,可通过日志定位错误(如权限不足、表结构不匹配等)。
- 源端 Extract 日志:
五、注意事项
- 表结构一致性:目标端 SQL Server 表需提前创建,字段类型需与源端兼容(如 Oracle 的
VARCHAR2对应 SQL Server 的VARCHAR)。 - 性能优化:
- 源端:调整 trail 文件大小(
MEGABYTES),避免频繁 I/O。 - 目标端:关闭 SQL Server 索引维护(同步期间),减少锁竞争。
- 源端:调整 trail 文件大小(
- 灾备与监控:
- 定期备份 OGG 配置文件(
dirprm目录)和检查点表。 - 通过
info all命令监控进程状态,或集成第三方工具(如 Zabbix)告警。
- 定期备份 OGG 配置文件(
六、附录:常用命令
| 操作 | 源端(Linux GGSCI) | 目标端(Windows GGSCI) |
|---|---|---|
| 查看所有进程状态 | info all | info all |
| 启动 Extract 进程 | start ext_ora | - |
| 启动 Replicat 进程 | - | start rep_mssql |
| 查看进程详情 | info ext_ora, detail | info rep_mssql, detail |
| 停止进程 | stop ext_ora | stop rep_mssql |
| 查看日志 | view report ext_ora | view report rep_mssql |
通过以上步骤,可完成 Oracle 19C 到 SQL Server 2022 的 OGG 数据同步部署。若需同步更多表,只需在 Extract、Data Pump、Replicat 参数文件中添加对应表名,并重新生成 .def 文件即可。
1690

被折叠的 条评论
为什么被折叠?



