文章目录
前言
已经安装好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