当前位置: 首页 > article >正文

使用GoldenGate完成SQLserver到Oracle的数据实时同步

一、环境准备

*项目**源环境**目标环境*
操作系统CentOS Linux release 7.6CentOS Linux release 7.6
IP地址192.168.3.92192.168.3.168
数据库及版本SQLserver 2016Oracle 11.2.0.4.0
GoldenGate用户oggogg
GoldenGate版本12.3.0.2.012.3.0.2.0

二、OGG架构

GoldenGate v11 能够在异构平台之间实现事务级的复制。它支持 Oracle Database、IBM DB2、Microsoft SQL Server、MySQL、Teradata 以及众多其他平台。(它还支持通过通用 ODBC 驱动程序进行访问)

我们需要熟悉的最重要的组件是 Extract 和 Replicat 进程。Extract 进程运行在源系统上,负责捕获数据更改。Replicat 运行在目标计算机上,负责将更改应用于目标数据库。

在这里插入图片描述

以上是 Extract 进程的两个常见配置。所谓的“初始加载”用于用源数据的精确副本填充目标数据库(即 Extract 从源数据库提取所有数据并且通常只运行一次)。然后就可以进行“更改同步”。在“更改同步”配置中,Extract 不间断地监视源数据库并即时捕获所有更改。

三、OGG安装

在Oracle用户下新建gg目录,

[oracle@szzf-----0024 oracle]$ mkdir gg

[oracle@szzf-----0024 gg]$ export GGATE=$ORACLE_BASE/gg

[oracle@szzf-----0024 gg]$ export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$ORACLE_BASE/gg

新建完成后设置环境变量:

完成该操作后,需要设置 PATH 和 LD_LIBRARY_PATH 环境变量。

在这里插入图片描述

查看环境变量参数:[oracle@szzf-----0024 ~]$ cat .bash_profile

在这里插入图片描述

上传安装包至服务器:

[oracle@szzf-----0024 opt]$ tar -xvf fbo_ggs_Linux_x64_ora11g_64bit.tar -C /u01/oracle/gg

进入相应的目录:

[oracle@szzf-----0024 gg]$ ./ggsci

在这里插入图片描述

GGSCI (szzf-----0024.novalocal) 2> create subdirs

在这里插入图片描述

配置manager端口号

在这里插入图片描述

启动mgr进程:

在这里插入图片描述

查看进程是否正常:

在这里插入图片描述

源端replicat进程配置

在这里插入图片描述

SPECIALRUN 参数定义一个初始加载进程(这是不使用检查点的一次性加载)。文件中的下一行指示 Replicat 进程在加载完成后终止。

接下来提供了数据库用户和口令、提取文件以及表定义。最后一个参数 MAP 指示 Replicat 将表 dbo.* 重新映射到 GG.*。

四、初始提取和加载

源端:

C:\Users\Administrator\Desktop\V34342-01>extract paramfile dirprm\inext.prm reportfile dirrpt\inext.rpt

 

***********************************************************************

**       Running with the following parameters          **

***********************************************************************

 

2025-02-26 09:46:55  INFO   OGG-03035  Operating system character set identifie

d as GBK. Locale: zh_Hans_CN, LC_ALL:.

 

2025-02-26 09:46:55  INFO   OGG-02696  NON-ANSI SQL parameter syntax is used fo

r parameter parsing.

 

2025-02-26 09:46:55  INFO   OGG-01017  Wildcard resolution set to IMMEDIATE bec

ause SOURCEISTABLE is used.

 

2025-02-26 09:46:55  INFO   OGG-03036  Database character set identified as win

dows-936. Locale: zh_Hans_CN.

 

2025-02-26 09:46:55  INFO   OGG-03037  Session character set identified as GBK.

 

Wildcard TABLE resolved (entry dbo.*):

 TABLE dbo.systranschemas;

Using the following key columns for source table dbo.systranschemas: startlsn.

 

Wildcard TABLE resolved (entry dbo.*):

 TABLE dbo.t1;

Using the following key columns for source table dbo.t1: id.

 

 

22025-02-26 09:46:55  INFO   OGG-01815  Virtual Memory Facilities for: COM

  anon alloc: MapViewOfFile  anon free: UnmapViewOfFile

  file alloc: MapViewOfFile  file free: UnmapViewOfFile

  target directories:

  c:\gg\dirtmp.

 

CACHEMGR virtual memory values (may have been adjusted)

CACHESIZE:                 2G

CACHEPAGEOUTSIZE (normal):         4M

PROCESS VM AVAIL FROM OS (min):     3.94G

CACHESIZEMAX (strict force to disk):  3.36G

 

2025-02-26 09:46:55  WARNING OGG-01842  CACHESIZE PER DYNAMIC DETERMINATION (2G)

 LESS THAN RECOMMENDED: 64G (64bit system)

vm found: 3.94G

Check swap space. Recommended swap/extract: 128G (64bit system).

 

Database Version:

Microsoft SQL Server

Version 10.00.1600

ODBC Version 03.80.0000

 

Driver Information:

SQLSRV32.DLL

Version 06.01.7601

ODBC Version 03.52

 

2025-02-26 09:46:55  INFO   OGG-01478  Output file /u01/app/oracle/gg/dirdat/ex

 is using format RELEASE 11.2.

 

2025-02-26 09:46:55  INFO   OGG-01226  Socket buffer size set to 27985 (flush s

ize 27985).

 

Processing table dbo.systranschemas

 

Processing table dbo.t1

 

***********************************************************************

\*          ** Run Time Statistics **             *

***********************************************************************

 

 

Report at 2025-02-26 09:48:55 (activity since 2025-02-26 09:48:55)

 

Output to /u01/app/oracle/gg/dirdat/ex:

 

From Table dbo.t1:

​    \#          inserts:      4\#          updates:     0\#          deletes:      0\#          discards:     0

运行时统计信息显示已成功提取 4 行数据。

目标端:

[oracle@szzf-----0024 gg]$ ./replicat paramfile dirprm/inload.prm

 

***********************************************************************

​         Oracle GoldenGate Delivery for Oracle

 Version 11.2.1.0.3 14400833 OGGCORE_11.2.1.0.3_PLATFORMS_120823.1258_FBO

  Linux, x64, 64bit (optimized), Oracle 11g on 20:37:31

 

Copyright (C), Oracle and/or its affiliates. All rights reserved.

 

 

​          Starting at 2025-02-26 09:49:42

***********************************************************************

 

Operating System Version:

Linux

Version #1 SMP Release 3.10.0-957.el7.x86_64

Node: szzf-----0024.novalocal

Machine: x86_64

​             soft limit  hard limit

Address Space Size  :   unlimited   unlimited

Heap Size       :   unlimited   unlimited

File Size       :   unlimited   unlimited

CPU Time       :   unlimited   unlimited

 

Process id: 29131

 

Description: 

 

***********************************************************************

**       Running with the following parameters          **

***********************************************************************

 

2025-02-26 09:49:42  INFO   OGG-03035  Operating system character set identified as UTF-8. Locale: en_US, LC_ALL:.

SPECIALRUN

END RUNTIME

USERID gg, PASSWORD **

 

2025-02-26 09:49:42  INFO   OGG-03501  WARNING: NLS_LANG environment variable is invalid or not set. Using operating system character set value of AL32UTF8.

EXTFILE /u01/oracle/gg/dirdat/ex

SOURCEDEFS /u01/oracle/gg/dirdef/emp.def

 

Source Context :

 SourceModule       : [er.init]

 SourceID         : [/scratch/aime1/adestore/views/aime1_adc4150256/oggcore/OpenSys/src/app/er/init.cpp]

 SourceFunction      : [get_infile_params]

 SourceLine        : [1573]

 ThreadBacktrace     : [7] elements

​             : [/u01/oracle/gg/libgglog.so(CMessageContext::AddThreadContext()+0x1e) [0x7fc852d3270e]]: [/u01/oracle/gg/libgglog.so(CMessageFactory::CreateMessage(CSourceContext*, unsigned int, ...)+0x2cc) [0x7fc852d2b6ac]]: [/u01/oracle/gg/libgglog.so(_MSG_ERR_STARTUP_PARAMERROR_ERRORTEXT(CSourceContext*, char const*, CMessageFactory::MessageDisposition)+0x31) [0x7fc852d1eb8d]]: [./replicat(get_infile_params(time_elt_def*, time_elt_def*, char**)+0x3c23) [0x528a43]]: [./replicat(main+0x117) [0x54c5e7]]: [/lib64/libc.so.6(__libc_start_main+0xf5) [0x7fc84d10c3d5]]: [./replicat(__gxx_personality_v0+0x31a) [0x4c0c6a]]

在这里插入图片描述

查看情况:

SQL> select id, first_name from t1;

 

ID FIRST_NAME
---------- --------------------------------------------------
   1 Dave
   2 Chris
   3 David
   4 Shawn

EMP 表现在包含原先在 SQL Server 上插入的所有记录的副本。

通过上面的配置source端和target的数据完全一致。

五、实时数据捕获配置

源端:

Oracle Database 现在已有了 SQL Server 的 EMP 表的一个精确副本,可以创建实时捕获配置了。我们将 Extract 和 Replicat 进程配置成一直运行并不断传输/应用 EMP 表的更改。

为了实现这一新配置,需要为提取和复制创建新的参数文件。不过首先必须在 SQL Server 上另外执行两个步骤:确认数据库已设置为完全恢复,然后执行 EMP 数据库的完整数据库备份。如果执行完整备份失败,将阻碍 Extract 进程捕获实时数据更改。

通过右键单击 EMP 数据库,选择 属性 并检查 Recovery model 的值,可以轻松检查该数据库是否处于完全恢复模式。

在这里插入图片描述

执行完整备份也只需几次单击即可完成。右键单击 EMP 数据库,选择 任务,然后选择 备份。这将启动 Back Up Database 对话框。确认 Backup type 配置为 Full,然后单击 OK。

在这里插入图片描述

备份已完成:

在这里插入图片描述

创建一个挖掘事务日志的新 extract 组,将其命名为 MSEXT。然后设置数据更改应写入的目标 (/u01/app/oracle/gg/dirdat/ms)。

GGSCI (szzf-----0026) 1> ADD EXTRACT MSEXT, TRANLOG, BEGIN NOW

EXTRACT added.

 

GGSCI (szzf-----0026) 2> ADD RMTTRAIL /u01/oracle/gg/dirdat/ms, EXTRACT MSEXT

RMTTRAIL added.

在这里插入图片描述

添加一个新的配置文件:

GGSCI (szzf-----0026) 3> EDIT PARAMS MSEXT

GGSCI (szzf-----0026) 4> view PARAMS MSEXT

EXTRACT MSEXT

SOURCEDB db01 userid sa,password 123

TRANLOGOPTIONS MANAGESECONDARYTRUNCATIONPOINT

RMTHOST 10.211.3.168, MGRPORT 7809

RMTTRAIL /u01/oracle/gg/dirdat/ms

TABLE dbo.*;

 

GGSCI (szzf-----0026) 5>

在这里插入图片描述

目标端:

这里不同的是我们省略了 SOURCEISTABLE 参数并引入一个新参数:TRANLOGOPTIONS MANAGESECONDARYTRUNCATIONPOINT。此选项告诉 Extract 进程定期检查和删除 CDC 捕获作业,从而提高性能并减小捕获数据所占用的空间。

源计算机上所需要的配置就是这些。我们转到目标计算机去配置复制。

在 Linux 系统上,首先需要创建一个检查点表。检查点用于存储 Extract 和 Replicat 进程的当前读/写位置。它们可以防止数据丢失并确保进程可以进行故障恢复(例如,如果源和目标计算机之间的网络暂时中断)。通过在目标机上发出 ADD CHECKPOINT 命令创建一个表,用来保存检查点信息。

GGSCI (szzf-----0024.novalocal) 3> DBLOGIN USERID gg, PASSWORD gg

Successfully logged into database.

 

GGSCI (szzf-----0024.novalocal) 4> 

 

GGSCI (szzf-----0024.novalocal) 4> ADD CHECKPOINTTABLE gg.chkpt

 

Successfully created checkpoint table gg.chkpt.

 

GGSCI (szzf-----0024.novalocal) 5>

在这里插入图片描述

GGSCI (szzf-----0024.novalocal) 5> ADD REPLICAT MSREP, EXTTRAIL /u01/oracle/gg/dirdat/ms, CHECKPOINTTABLE gg.chkpt

REPLICAT added.

在这里插入图片描述

配置现已完成。下面我们来启动 Extract 和 Replicat 执行一些测试

六、启动并测试联机事务复制

源端:

GGSCI (szzf-----0026) 5> START EXTRACT MSEXT

 

Sending START request to MANAGER ('GGSMGR') ...

EXTRACT MSEXT starting

GGSCI (szzf-----0026) 6> info all

 

Program   Status    Group    Lag at Chkpt  Time Since Chkpt

 

MANAGER   RUNNING

EXTRACT   STOPPED   MSEXT    00:00:00    00:09:34

GGSCI (szzf-----0026) 7>

 

GGSCI (szzf-----0026) 7>

在这里插入图片描述

目标端:

GGSCI (szzf-----0024.novalocal) 8> START REPLICAT MSREP

Sending START request to MANAGER ...

REPLICAT MSREP starting

GGSCI (szzf-----0024.novalocal) 9> info all

Program   Status    Group    Lag at Chkpt  Time Since Chkpt

MANAGER   RUNNING                      

REPLICAT   STOPPED   MSREP    00:00:00    00:03:48   

GGSCI (szzf-----0024.novalocal) 10>

在这里插入图片描述


http://www.kler.cn/a/588453.html

相关文章:

  • Django项目之订单管理part3
  • Markdig:强大的 .NET Markdown 解析器详解
  • 【AI时代移动端安全开发实战:从基础防护到智能应用】
  • 责任链模式:优雅处理请求的设计艺术
  • k8s 网络基础解析
  • 织梦dedecmsV5.7提示信息提示框美化(带安装教程和效果展示)
  • python中print函数的flush如何使用
  • kubernetes|云原生|部署单master的kubernetes 1.25.5版本集群完全记录(使用contained 运行时)
  • 【VUE2】第五期——VueCli创建项目、Vuex多组件共享数据、json-server——模拟服务端api
  • CSS3学习教程,从入门到精通,CSS3 文字样式语法知识点及案例代码(7)
  • 消息队列的特性与使用场景:Kafka、ActiveMQ、RabbitMQ与RocketMQ的深度剖析
  • 图论之cruskal算法(克鲁斯卡尔)
  • Bash语言的进程管理
  • 数字化转型 - 数据驱动
  • 出现缓存雪崩、缓存穿透、缓存预热、缓存更新和缓存降级的场景,以及如何解决
  • 【数据结构与算法】Java描述:第四节:二叉树
  • DVWA 命令注入从 Low 到 Impossible 教程及源码分析
  • 监控易对各类服务器硬件的广泛支持和深入监控能力
  • pybind11出现的问题
  • 每天五分钟深度学习框架pytorch:常见神经网络层的维度信息总结