1. 首页 > Oracle教程 > 正文

Oracle教程FG224-GoldenGate初始数据加载

本文档详细介绍Oracle GoldenGate的初始数据加载方法和最佳实践,风哥教程参考Oracle官方文档GoldenGate部分。更多视频教程www.fgedu.net.cn

Part01-基础概念与理论知识

1.1 初始数据加载概述

初始数据加载是Oracle GoldenGate实施过程中的重要步骤,用于将源数据库中的现有数据同步到目标数据库,为后续的实时数据复制做准备。学习交流加群风哥微信: itpux-com

初始数据加载的特点:

  • 一次性操作:只在实施初期执行
  • 数据量大:通常涉及整个表或数据库的所有数据
  • 时间敏感:需要在尽可能短的时间内完成
  • 数据一致性:确保源和目标数据的一致性

1.2 加载方法

GoldenGate支持多种初始数据加载方法:

  • 使用Extract和Replicat进程:通过GoldenGate自身的进程进行加载
  • 使用Oracle Data Pump:利用Oracle的数据泵工具进行加载
  • 使用SQL*Loader:利用Oracle的SQL*Loader工具进行加载
  • 使用第三方工具:如Oracle GoldenGate Director或其他ETL工具

1.3 加载策略

初始数据加载的策略:

  • 全量加载:加载整个表或数据库的所有数据
  • 增量加载:只加载特定时间段或条件的数据
  • 并行加载:使用多个进程并行加载数据,提高效率
  • 分批次加载:将大表分成多个批次进行加载,避免资源不足

Part02-生产环境规划与建议

2.1 加载前准备

加载前的准备工作:

  • 确认源和目标数据库结构一致
  • 确保目标数据库有足够的存储空间
  • 配置适当的网络连接
  • 准备必要的权限和用户
  • 测试加载过程,确保无错误

2.2 性能优化

性能优化建议:

  • 使用并行加载:配置多个Extract和Replicat进程
  • 优化网络连接:使用高速网络,启用压缩
  • 调整数据库参数:优化源和目标数据库的参数
  • 使用直接路径加载:提高加载速度
  • 避免在业务高峰期进行加载

2.3 数据一致性

确保数据一致性的措施:

  • 在加载期间暂停源数据库的DML操作
  • 使用一致性导出:确保数据的一致性
  • 验证加载结果:比较源和目标数据
  • 处理冲突:配置适当的冲突解决策略

Part03-生产环境项目实施方案

GoldenGate初始数据加载的实施步骤:

  1. 准备源和目标数据库
  2. 选择加载方法
  3. 配置GoldenGate进程
  4. 执行初始加载
  5. 验证加载结果
  6. 启动实时数据复制

Part04-生产案例与实战讲解

4.1 使用Extract和Replicat进程进行初始加载

# 配置源数据库
sqlplus / as sysdba

# 创建测试表并插入数据
CREATE TABLE fgedu.emp (
empno NUMBER(4),
ename VARCHAR2(10),
job VARCHAR2(9),
mgr NUMBER(4),
hiredate DATE,
sal NUMBER(7,2),
comm NUMBER(7,2),
deptno NUMBER(2)
);

# 输出日志
Table created.

INSERT INTO fgedu.emp VALUES (7369, ‘SMITH’, ‘CLERK’, 7902, SYSDATE, 800, NULL, 20);
INSERT INTO fgedu.emp VALUES (7499, ‘ALLEN’, ‘SALESMAN’, 7698, SYSDATE, 1600, 300, 30);
INSERT INTO fgedu.emp VALUES (7521, ‘WARD’, ‘SALESMAN’, 7698, SYSDATE, 1250, 500, 30);
INSERT INTO fgedu.emp VALUES (7566, ‘JONES’, ‘MANAGER’, 7839, SYSDATE, 2975, NULL, 20);
INSERT INTO fgedu.emp VALUES (7654, ‘MARTIN’, ‘SALESMAN’, 7698, SYSDATE, 1250, 1400, 30);
COMMIT;

# 输出日志
1 row created.
1 row created.
1 row created.
1 row created.
1 row created.
Commit complete.

4.2 配置初始加载Extract进程

# 配置初始加载Extract进程
./ggsci

# 创建初始加载Extract进程参数文件
EDIT PARAMS EXTLOAD

# 添加以下内容
EXTRACT EXTLOAD
USERID ggsadmin, PASSWORD ggsadmin
EXTTRAIL /oracle/gg19/dirdat/el
TABLE fgedu.emp;

# 保存并退出

# 添加初始加载Extract进程
ADD EXTRACT EXTLOAD, SOURCEISTABLE

# 输出日志
EXTRACT added.

# 添加Trail文件
ADD EXTTRAIL /oracle/gg19/dirdat/el, EXTRACT EXTLOAD, MEGABYTES 100

# 输出日志
EXTTRAIL added.

4.3 配置初始加载Replicat进程

# 在目标系统上配置初始加载Replicat进程
./ggsci

# 创建初始加载Replicat进程参数文件
EDIT PARAMS REPLOAD

# 添加以下内容
REPLICAT REPLOAD
USERID ggsadmin, PASSWORD ggsadmin
ASSUMETARGETDEFS
MAP fgedu.emp, TARGET fgedu.emp;

# 保存并退出

# 添加初始加载Replicat进程
ADD REPLICAT REPLOAD, EXTTRAIL /oracle/gg19/dirdat/el, CHECKPOINTTABLE ggsadmin.checkpoint

# 输出日志
REPLICAT added.

4.4 执行初始加载

# 启动初始加载Extract进程
./ggsci
START EXTLOAD

# 输出日志
Sending START request to MANAGER …
EXTRACT EXTLOAD starting

# 监控Extract进程状态
INFO EXTLOAD

# 输出日志
EXTRACT EXTLOAD Last Started 2026-04-01 10:00:00 Status RUNNING
Checkpoint Lag 00:00:00 (updated 00:00:02 ago)
Process ID 12345
Log Read Checkpoint Table fgedu.emp
2026-04-01 10:00:00 Record 5

# 启动初始加载Replicat进程
./ggsci
START REPLOAD

# 输出日志
Sending START request to MANAGER …
REPLICAT REPLOAD starting

# 监控Replicat进程状态
INFO REPLOAD

# 输出日志
REPLICAT REPLOAD Last Started 2026-04-01 10:01:00 Status RUNNING
Checkpoint Lag 00:00:00 (updated 00:00:01 ago)
Process ID 67890
Log Read Checkpoint File /oracle/gg19/dirdat/el000001
2026-04-01 10:00:30 RBA 123456

4.5 验证加载结果

# 在目标系统上验证数据
sqlplus ggsadmin/ggsadmin
SELECT * FROM fgedu.emp;

# 输出日志
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
—– ———- ——— ———- ——— ———- ———- ———-
7369 SMITH CLERK 7902 01-APR-26 800 20
7499 ALLEN SALESMAN 7698 01-APR-26 1600 300 30
7521 WARD SALESMAN 7698 01-APR-26 1250 500 30
7566 JONES MANAGER 7839 01-APR-26 2975 20
7564 MARTIN SALESMAN 7698 01-APR-26 1250 1400 30

# 比较源和目标数据行数
# 在源系统上
sqlplus ggsadmin/ggsadmin
SELECT COUNT(*) FROM fgedu.emp;

# 输出日志
COUNT(*)
———-
5

# 在目标系统上
sqlplus ggsadmin/ggsadmin
SELECT COUNT(*) FROM fgedu.emp;

# 输出日志
COUNT(*)
———-
5

4.6 使用Oracle Data Pump进行初始加载

# 使用Oracle Data Pump导出数据
# 在源系统上
expdp ggsadmin/ggsadmin DIRECTORY=DATA_PUMP_DIR DUMPFILE=emp.dmp TABLES=fgedu.emp

# 输出日志
Export: Release 19.0.0.0.0 – Production on Fri Apr 1 10:00:00 2026
Version 19.3.0.0.0

Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved.

Connected to: Oracle Database 19c Enterprise Edition Release 19.3.0.0.0 – Production
Starting “GGSADMIN”.”SYS_EXPORT_TABLE_01″: ggsadmin/******** DIRECTORY=DATA_PUMP_DIR DUMPFILE=emp.dmp TABLES=fgedu.emp
Processing object type TABLE_EXPORT/TABLE/TABLE_DATA
Processing object type TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
Processing object type TABLE_EXPORT/TABLE/STATISTICS/MARKER
. . exported “FGEDU”.”EMP” 5.625 KB 5 rows
Master table “GGSADMIN”.”SYS_EXPORT_TABLE_01″ successfully loaded/unloaded
******************************************************************************
Dump file set for GGSADMIN.SYS_EXPORT_TABLE_01 is:
/oracle/admin/fgedudb/dpdump/emp.dmp
Job “GGSADMIN”.”SYS_EXPORT_TABLE_01″ successfully completed at Fri Apr 1 10:01:00 2026 elapsed 0 00:00:30

# 将dump文件传输到目标系统
scp /oracle/admin/fgedudb/dpdump/emp.dmp ggsuser@192.168.1.2:/oracle/dpdump/

# 在目标系统上导入数据
impdp ggsadmin/ggsadmin DIRECTORY=DATA_PUMP_DIR DUMPFILE=emp.dmp TABLES=fgedu.emp

# 输出日志
Import: Release 19.0.0.0.0 – Production on Fri Apr 1 10:05:00 2026
Version 19.3.0.0.0

Copyright (c) 1982, 2019, Oracle and/or its affiliates. All rights reserved.

Connected to: Oracle Database 19c Enterprise Edition Release 19.3.0.0.0 – Production
Master table “GGSADMIN”.”SYS_IMPORT_TABLE_01″ successfully loaded/unloaded
Starting “GGSADMIN”.”SYS_IMPORT_TABLE_01″: ggsadmin/******** DIRECTORY=DATA_PUMP_DIR DUMPFILE=emp.dmp TABLES=fgedu.emp
Processing object type TABLE_EXPORT/TABLE/TABLE_DATA
Processing object type TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
Processing object type TABLE_EXPORT/TABLE/STATISTICS/MARKER
. . imported “FGEDU”.”EMP” 5.625 KB 5 rows
Job “GGSADMIN”.”SYS_IMPORT_TABLE_01″ successfully completed at Fri Apr 1 10:06:00 2026 elapsed 0 00:00:35

4.7 启动实时数据复制

# 配置实时数据复制Extract进程
./ggsci
EDIT PARAMS EXT1

# 添加以下内容
EXTRACT EXT1
USERID ggsadmin, PASSWORD ggsadmin
EXTTRAIL /oracle/gg19/dirdat/et
TABLE fgedu.emp;

# 保存并退出

# 添加实时数据复制Extract进程
ADD EXTRACT EXT1, TRANLOG, BEGIN NOW

# 输出日志
EXTRACT added.

# 添加Trail文件
ADD EXTTRAIL /oracle/gg19/dirdat/et, EXTRACT EXT1, MEGABYTES 100

# 输出日志
EXTTRAIL added.

# 配置Data Pump进程
EDIT PARAMS DP1

# 添加以下内容
EXTRACT DP1
USERID ggsadmin, PASSWORD ggsadmin
RMTHOST 192.168.1.2, MGRPORT 7809
RMTTRAIL /oracle/gg19/dirdat/rt
TABLE fgedu.emp;

# 保存并退出

# 添加Data Pump进程
ADD EXTRACT DP1, EXTTRAILSOURCE /oracle/gg19/dirdat/et

# 输出日志
EXTRACT added.

# 添加远程Trail文件
ADD RMTTRAIL /oracle/gg19/dirdat/rt, EXTRACT DP1, MEGABYTES 100

# 输出日志
RMTTRAIL added.

# 配置实时数据复制Replicat进程
./ggsci
EDIT PARAMS REP1

# 添加以下内容
REPLICAT REP1
USERID ggsadmin, PASSWORD ggsadmin
ASSUMETARGETDEFS
MAP fgedu.emp, TARGET fgedu.emp;

# 保存并退出

# 添加实时数据复制Replicat进程
ADD REPLICAT REP1, EXTTRAIL /oracle/gg19/dirdat/rt, BEGIN NOW

# 输出日志
REPLICAT added.

# 启动所有进程
START EXT1
START DP1
START REP1

# 检查进程状态
INFO ALL

# 输出日志
Program Status Group Lag at Chkpt Time Since Chkpt
MANAGER RUNNING
EXTRACT RUNNING EXT1 00:00:00 00:00:05
EXTRACT RUNNING DP1 00:00:00 00:00:03
REPLICAT RUNNING REP1 00:00:00 00:00:02

4.8 测试实时数据复制

# 在源系统上插入新数据
sqlplus ggsadmin/ggsadmin
INSERT INTO fgedu.emp VALUES (7698, ‘BLAKE’, ‘MANAGER’, 7839, SYSDATE, 2850, NULL, 30);
COMMIT;

# 输出日志
1 row created.
Commit complete.

# 在目标系统上验证数据
sqlplus ggsadmin/ggsadmin
SELECT * FROM fgedu.emp;

# 输出日志
EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
—– ———- ——— ———- ——— ———- ———- ———-
7369 SMITH CLERK 7902 01-APR-26 800 20
7499 ALLEN SALESMAN 7698 01-APR-26 1600 300 30
7521 WARD SALESMAN 7698 01-APR-26 1250 500 30
7566 JONES MANAGER 7839 01-APR-26 2975 20
7564 MARTIN SALESMAN 7698 01-APR-26 1250 1400 30
7698 BLAKE MANAGER 7839 01-APR-26 2850 30

Part05-风哥经验总结与分享

5.1 初始数据加载最佳实践

  • 选择合适的加载方法:根据数据量和系统资源选择最适合的加载方法
  • 优化加载性能:使用并行加载、高速网络和直接路径加载
  • 确保数据一致性:在加载期间暂停源数据库的DML操作或使用一致性导出
  • 验证加载结果:比较源和目标数据,确保数据一致性
  • 合理安排时间:在业务低峰期进行初始加载,减少对业务的影响

5.2 常见问题与解决方案

  • 加载速度慢:使用并行加载,优化网络和数据库参数
  • 数据不一致:检查源和目标数据库结构,确保一致
  • 存储空间不足:确保目标数据库有足够的存储空间
  • 权限问题:确保GoldenGate用户有足够的权限
  • 网络连接问题:检查网络配置和防火墙设置

5.3 经验分享

  • 提前规划:在实施前充分了解数据量和系统资源
  • 测试验证:在测试环境中充分测试,确保加载过程顺利
  • 文档管理:建立完善的文档,记录加载过程和结果
  • 培训人员:对运维人员进行培训,提高技术水平
  • 持续监控:在加载过程中密切监控系统状态,及时发现和解决问题

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息