达梦DMHS中Oracle到达梦veri数据对比


前言

已经安装好Oracle11g单机到达梦8单机的dmhs数据同步


一、规划

1、源端是Oracle11g,目的端是DM8
2、两端需要为数据对比各开一个agent服务,然后在其中一端开一个对比服务
3、数据对比服务启动在源端Oracle所在的服务器上

二、源端配置ODBC

1.ODBC安装

1、上传ODBC软件 unixODBC-2.3.0.tar.gz
2、解压

[root@qzodb1 unixODBC-2.3.0]#tar -zxvf  unixODBC-2.3.0.tar.gz

3、进入解压目录安装

[root@qzodb1 unixODBC-2.3.0]#./configure

4、编译

[root@qzodb1 unixODBC-2.3.0]#make && make install

2.配置文件

因配置odbc需要lib包,源端没有安装DM,所以需要把目的端dm的bin目录复制到源端Oracle
查看odbc配置文件路劲及信息

[root@qzodb1 ~]# odbcinst -j
unixODBC 2.3.0
DRIVERS............: /usr/local/etc/odbcinst.ini
SYSTEM DATA SOURCES: /usr/local/etc/odbc.ini
FILE DATA SOURCES..: /usr/local/etc/ODBCDataSources
USER DATA SOURCES..: /root/.odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8

vi /usr/local/etc/odbcinst.ini

[Oracle in OraDb11g_home1]
Description = ODBC DRIVER FOR ORACLE
Driver = /oracle/app/oracle/product/11.2.0/db_1/lib/libsqora.so.11.1
threading = 0

[DM8ODBCDRIVER]
Description = ODBC DRIVER FOR DM8
Driver = /home/oracle/dm/bin/libdodbc.so	#dm的bin在源端Oracle的路劲
threading = 0

vi /usr/local/etc/odbc.ini

[DM8]
Description = DM ODBC DSN
Driver = DM8ODBCDRIVER
SERVER = 192.168.1.132
UID = SYSDBA
PWD = dameng123
TCP_PORT = 5237

[oracle11g]
Description = ORACLE ODBC DSN
Driver =Oracle in OraDb11g_home1 
SERVER = localhost
UID = dmhs
PWD = dmhs

三、创建配置文件

1.Oracle源端agent配置文件

在dmhs的bin目录下创建agent.xml文件
vi agent.xml
代码如下:

<?xml version="1.0" encoding="utf-8"?>
<agent>
        <port>9666</port>
        <lang>en</lang>
        <max_session>50</max_session>
  <database>
        <server>192.168.1.111/qzdb</server>
        <uid>dmhs</uid>
        <psw>dmhs</psw>
        <char_code>PG_18030</char_code>
        <type>ORACLE11g</type>
  </database>
</agent>

在bin目录下用刚才的配置文件启动代理服务

./dmhs_veri_agent_ora  agent.xml

2.DM目的端agent配置文件

在dmhs的bin目录下创建agent.xml文件
vi agent.xml
代码如下:

<?xml version="1.0" encoding="utf-8"?>
<agent>
        <port>6666</port>
        <lang>en</lang>
        <max_session>250</max_session>
  <database>
        <server>127.0.0.1:5237</server>	<!--如果自定义的端口,可以在这后面加上-->
        <uid>SYSDBA</uid>
        <psw>dameng123</psw>
        <!--char_code>PG_18030</char_code-->
        <type>DM8</type>
  </database>
</agent>

在bin目录下用刚才的配置文件启动代理服务

./dmhs_veri_agent_dm8  agent.xml

3.Oracle源端配置veri对比文件

在dmhs的bin目录下创建veri.xml文件
vi veri.xml
代码如下:

<veri>
        <lang>ch</lang>
        <max_thr>40</max_thr>
        <max_out_sync>100000</max_out_sync>
        <src>
                <agent_server>192.168.1.111</agent_server>
                <port>9666</port>
                <db_type>oracle11g</db_type>
		<multipe>1</multipe>
                <odbc_str>
                        <db_server>192.168.1.111/qzdb</db_server>
			<db_user>dmhs</db_user>
                        <db_pwd>dmhs</db_pwd>
			<driver>Oracle in OraDb11g_home1</driver>  <!--配置odbc的驱动名称-->
                </odbc_str>
        </src>
        <dest>
                <agent_server>192.168.1.132</agent_server>
                <port>6666</port>
                <db_type>DM8</db_type>
                <odbc_str>
                        <db_server>192.168.1.132:5237</db_server>
                        <db_user>SYSDBA</db_user>
                        <db_pwd>dameng123</db_pwd>
						<driver>DM8ODBCDRIVER</driver>  <!--配置odbc的驱动名称-->
                </odbc_str>
        </dest>
</veri>

4.查看依赖

1、在bin目录下 ldd dmhs_veri查看依赖是否有缺失

[oracle@qzodb1:/home/oracle/dmhs/bin]$ ldd dmhs_veri
	linux-vdso.so.1 =>  (0x00007fffe37ed000)
	libc.so.6 => /lib64/libc.so.6 (0x00007fb1ed875000)
	libm.so.6 => /lib64/libm.so.6 (0x00007fb1ed573000)
	librt.so.1 => /lib64/librt.so.1 (0x00007fb1ed36b000)
	libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fb1ed14f000)
	libdl.so.2 => /lib64/libdl.so.2 (0x00007fb1ecf4b000)
	libdmhs_pub.so => ./libdmhs_pub.so (0x00007fb1ecc1f000)
	libdmhs_xml.so => ./libdmhs_xml.so (0x00007fb1eca10000)
	libdmhs_lic.so => ./libdmhs_lic.so (0x00007fb1ec804000)
	libodbc.so.2 => /lib64/libodbc.so.2 (0x00007fb1ec59c000)
	/lib64/ld-linux-x86-64.so.2 (0x00007fb1edc42000)
	libltdl.so.7 => /lib64/libltdl.so.7 (0x00007fb1ec392000)

如果 libodbc.so.2 没有启动对比则会报找不到驱动

2、如果按照odbc是默认路劲安装,这个文件在/usr/local/lib/目录下

ls -l /usr/local/lib/libodbc.so.2

3、查看如果没有这个包的话用libodbc.so.1.0.0包做个软连接,软连接的名称改为dmhs_veri依赖需要的名字

ln -s /usr/local/lib/libodbc.so.1.0.0  /usr/local/lib/libodbc.so.2

4、在修改环境变量,在环境变量LD_LIBRARY_PATH中添加lib包所在路径 /usr/local/lib
vi ~/.bash_profile

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib

5.启动对比

例如:我这里对比DMHS模式下所有的表

[oracle@qzodb1:/home/oracle/dmhs/bin]$./dmhs_veri jobname=job1 "table=(DMHS.*==DMHS.*)" mode=normal
VERI[INFO]: VERI start up, current version: V4.1.1-Build(2021.05.11-99507trunc)_D64
VERI[INFO]: CONNECT: DBQ=192.168.1.111/qzdb;DRIVER=Oracle in OraDb11g_home1;UID=dmhs;PWD=******;
VERI[INFO]: CONNECT: SERVER=192.168.1.132:5237;DRIVER=DM8ODBCDRIVER;UID=SYSDBA;PWD=******;TCP_PORT=5236;
MGR[WARN]: License 将在 2022-03-25 过期
VERI[INFO]: veri odbc connect str: DBQ=192.168.1.111/qzdb;DRIVER=Oracle in OraDb11g_home1;UID=dmhs;
VERI[INFO]: veri odbc connect str: SERVER=192.168.1.132:5237;DRIVER=DM8ODBCDRIVER;UID=SYSDBA;
VERI[INFO]: (DMHS.*==DMHS.*)对象解析线程个数:1
VERI[INFO]: veri odbc connect str: DBQ=192.168.1.111/qzdb;DRIVER=Oracle in OraDb11g_home1;UID=dmhs;
VERI[INFO]: veri odbc connect str: SERVER=192.168.1.132:5237;DRIVER=DM8ODBCDRIVER;UID=SYSDBA;
VERI[INFO]: 添加DMHS.TEST1==DMHS.TEST1到对比队列中 
VERI[INFO]: 添加DMHS.TEST2==DMHS.TEST2到对比队列中 
VERI[INFO]: 添加DMHS.TT1==DMHS.TT1到对比队列中 
VERI[INFO]: (DMHS.*==DMHS.*)等待对象解析线程完成...
VERI[INFO]: (DMHS.*==DMHS.*)对象解析线程完成退出.
VERI[INFO]: job1的任务开始
VERI[INFO]: 执行的模式为NORMAL
VERI[INFO]: 源AGENT为192.168.1.111:9666
VERI[INFO]: 目的AGENT为192.168.1.132:6666
VERI[INFO]: 组表对比开始: (1/3 : DMHS.TEST1==DMHS.TEST1)...
VERI[INFO]: 组表对比开始: (2/3 : DMHS.TEST2==DMHS.TEST2)...
VERI[INFO]: VERI接收到目的AGENT数据包(DMHS.TEST1, 2, 0)
VERI[INFO]: 表数据排序:(DMHS.TEST1)
VERI[INFO]: 组表对比开始: (3/3 : DMHS.TT1==DMHS.TT1)...
VERI[INFO]: VERI接收到目的AGENT数据包(DMHS.TEST2, 4, 0)
VERI[INFO]: VERI接收到目的AGENT数据包(DMHS.TT1, 6, 0)
VERI[INFO]: 表数据排序:(DMHS.TEST2)
VERI[INFO]: 表数据排序:(DMHS.TT1)
VERI[INFO]: VERI接收到源AGENT数据包(DMHS.TEST1, 1, 0)
VERI[INFO]: VERI接收到源AGENT数据包(DMHS.TT1, 5, 0)
VERI[INFO]: VERI接收到源AGENT数据包(DMHS.TEST2, 3, 0)
VERI[INFO]: 无主键对比开始: (DMHS.TEST1==DMHS.TEST1)
VERI[INFO]: (DMHS.TEST1==DMHS.TEST1) compare over, out_sync: 0, in_sync: 6, used time : 0.282(ms)
VERI[INFO]: 无主键对比开始: (DMHS.TEST2==DMHS.TEST2)
VERI[INFO]: (DMHS.TEST2==DMHS.TEST2) compare over, out_sync: 0, in_sync: 4, used time : 0.189(ms)
VERI[INFO]: 无主键对比开始: (DMHS.TT1==DMHS.TT1)
VERI[INFO]: (DMHS.TT1==DMHS.TT1) compare over, out_sync: 0, in_sync: 0, used time : 0.154(ms)
VERI[INFO]: 退出Verify tool

6.查看对比报告

对比完成后生成的报告bin目录下面的report文件夹里面
用cat查看

[oracle@qzodb1:/home/oracle/dmhs/bin]$cat report/job1_20210822_002/veri_report_job1_20210822_002.txt 
******************************************************
      DM Verify Data Tool
版本     : V4.1.1-Build(2021.05.11-99507trunc)_D64
执行时间 : 2021-08-22 11:45:50
结束时间 : 2021-08-22 11:45:52                  
******************************************************
源端比目标端多出的表或视图如下:
目标端比源端多出的表或视图如下:
******************************************************
任务名称           : job1
执行模式           : NORMAL
源AGENT            : 192.168.1.111:9666
源AGENT数据库类型  : ORACLE11g
目的AGENT          : 192.168.1.132:6666
目的AGENT数据库类型: DM8
******************************************************
注意:在非主键对比情况下,UPDATE会以INSERT和DELETE显示,导致一致与不一致总和大于表总数
总共比较表数: 3

[OK] DMHS.TEST1 == DMHS.TEST1
源端表总行数 : 6
目的表总行数 : 6
同步成功     : 6
同步失败     : 0

[OK] DMHS.TEST2 == DMHS.TEST2
源端表总行数 : 4
目的表总行数 : 4
同步成功     : 4
同步失败     : 0

[OK] DMHS.TT1 == DMHS.TT1
源端表总行数 : 0
目的表总行数 : 0
同步成功     : 0
同步失败     : 0

总结

更多信息可前往达梦官网社区
https://eco.dameng.com/docs/zh-cn/start/index.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值