压缩Linux rh6 x86版本的达梦数据库bin目录,例如压缩文件为dmbin.tar.gz,将文件拷贝到Oracle服务器指定目录并解压(如:/home/oracle/dmbin),给目录/home/oracle/dmbin授予相关权限和用户组
chown -R oracle:oinstall /home/oracle/dmbin
(1)上传unixODBC源码文件,解压,编译安装(root用户)
tar -zxvf unixODBC-2.3.7.tar.gz
cd unixODBC-2.3.7
./configure --prefix=/usr/local/unixODBC-2.3.7 --includedir=/usr/include --libdir=/usr/lib --bindir=/usr/bin --sysconfdir=/etc --enable-gui=no
make
make install
ldconfig
#安装成功后,unixODBC所需的头文件都被安装到了/usr/inlucde下,编译好的库文件安装到了/usr/lib下,与unixODBC相关的可执行文件安装到了/usr/bin下,配置文件放到了/etc下。
(2)查看odbc版本,查看配置文件路径(root用户)
odbc_config --version
odbcinst -j
(3)配置odbc.ini和odbcinst.ini(root用户)
vi /etc/odbcinst.ini
[Oracle]
Description = ODBC DRIVER FOR ORACLE
Driver = /oracle/app/oracle/product/19.3.0/db/lib/libsqora.so.19.1
Threading = 0
#注意检查是否配置环境变量,主要为$ORACLE_HOME/lib是否配置
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib:/lib:/usr/lib
#查看动态库依赖关系,确保没有not found的依赖库,否则建议使用cp或做软链接的方式对缺失的动态依赖库进行补充,例如libclntsh.so.19.1和libodbcinst.so.2经常会找不到,ln -s source target创建软链接
ldd /oracle/app/oracle/product/19.3.0/db/lib/libsqora.so.19.1
linux-vdso.so.1 => (0x00007ffd3a095000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f86b275e000)
libm.so.6 => /lib64/libm.so.6 (0x00007f86b245c000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f86b2240000)
libnsl.so.1 => /lib64/libnsl.so.1 (0x00007f86b2026000)
librt.so.1 => /lib64/librt.so.1 (0x00007f86b1e1e000)
libaio.so.1 => /lib64/libaio.so.1 (0x00007f86b1c1c000)
libresolv.so.2 => /lib64/libresolv.so.2 (0x00007f86b1a02000)
libclntsh.so.19.1 => /oracle/app/oracle/product/19.3.0/db/lib/libclntsh.so.19.1 (0x00007f86ad9f4000)
libclntshcore.so.19.1 => /oracle/app/oracle/product/19.3.0/db/lib/libclntshcore.so.19.1 (0x00007f86ad454000)
libodbcinst.so.2 => /lib/libodbcinst.so.2 (0x00007f86ad239000)
libc.so.6 => /lib64/libc.so.6 (0x00007f86ace6b000)
/lib64/ld-linux-x86-64.so.2 (0x00007f86b2c1c000)
libnnz19.so => /oracle/app/oracle/product/19.3.0/db/lib/libnnz19.so (0x00007f86ac723000)
vi /etc/odbc.ini
[ORACLE19C]
Description = ORACLE ODBC DSN
Driver = Oracle
ServerName = pdb01
PORT = 1521
(4)测试连接(oracle用户)
isql -v ORACLE19C TEST TEST
(1)配置odbc.ini和odbcinst.ini(root用户)
vi /etc/odbcinst.ini
[DM ODBC DRIVER]
Description = ODBC DRIVER FOR DM
Driver = /home/oracle/dmbin/libdodbc.so
#注意检查是否配置环境变量,配置环境变量如下:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib:/lib:/usr/lib:/home/oracle/dmbin
vi /etc/odbc.ini
[DM8]
Description = DM ODBC DSN
Driver = DM ODBC DRIVER
SERVER = 192.168.10.100
UID = SYSDBA
PWD = SYSDBA
TCP_PORT = 5236
(2)测试连接(dmdba用户)
isql -v DM8 SYSDBA SYSDBA
(1)Oracle端创建目录/home/oracle/dmhs,安装到此目录,使用oracle用户安装
(2)达梦端创建目录/home/dmdba/dmhs,安装到此目录,使用dmdba用户安装
以上安装时均选择试用、完整版安装,其他一路回车即可,安装过程省略。
(1)Oracle端配置agent.xml(oracle用户)
vim /home/oracle/dmhs/bin/agent.xml
2347
en
50
1
5
5
4 #优化参数:单表计算md5的线程数,有效值:[1, 64], 默认为4.只对没有大字段和LONG类型的表有效
PG_GB18030
oracle19c
192.168.10.101
5236
SYSDBA
SYSDBA
(2)达梦端配置agent.xml(dmdba用户)
vim /home/dmdba/dmhs/bin/agent.xml
2347
en
50
5
5
4 #优化参数:单表计算md5的线程数,有效值:[1, 64], 默认为4.只对没有大字段和LONG类型的表有效
PG_GB18030
DM8
192.168.10.100
5236
SYSDBA
SYSDBA
(1)启动Oracle端Agent(oracle用户)
nohup /home/oracle/dmhs/bin/dmhs_veri_agent_ora /home/oracle/dmhs/bin/agent.xml -noconsole >> /home/home/oracle/dmhs/bin/log/dmhs_veri_agent_dm.log 2>&1 &
(2)启动达梦端Agent(dmdba用户)
nohup /home/dmdba/dmhs/bin/dmhs_veri_agent_dm8 /home/dmdba/dmhs/bin/agent.xml -noconsole >> /home/dmdba/dmhs/bin/log/dmhs_veri_agent_dm.log 2>&1 &
en
1 #最大线程对数,范围为[1, 10000]
10
100
1000
0
/home/oracle/report
/dmhs_temp_dir
0
30 #使用内存限制,默认10GB ;单位GB。
0 #记录差异比对记录的最大缓存容量;当设置为0时,不缓存;默认生效,默认值256MB;以MB为单位。
200
PG_GB18030
192.168.10.101
2347
oracle19c
dsn=ORACLE19C
192.168.10.101
TEST
TEST
5236
192.168.10.100
2347
DM8
dsn=DM8
192.168.10.100
SYSDBA
SYSDBA
5236
vim /home/oracle/dmhs/bin/job.xml
job
USERA.*==USERA.*
USERB.*==USERB.*
cd home/oracle/dmhs/bin/
(1)指定jobfile进行对比,对比指定用户下的所有表
./dmhs_veri conf=veri.xml jobfile=job.xml no_lob=1 mode=normal count=1
(2)指定jobfile进行对比,对比时指定单张表中满足条件的部分数据
--A.创建jobfile
vim /home/oracle/dmhs/bin/table1.xml
tab1
USERA.TABLE1==USERA.TABLE1
--B.执行数据对比
./dmhs_veri conf=veri.xml jobfile=TABLE1.xml no_lob=1 mode=normal cond="(ID>1 and NAME LIKE '刘%') or (JOIN_DATE>20231001 and EMP_NO<'1122334')"
#参数含义补充
COND:WHERE条件,同时加到源端数据库和目的端数据库
COND_SRC:WHERE条件,源端数据库
COND_DEST:WHERE条件,目的端数据库
(3)指定多张表,带where条件
--A.创建jobfile
vim /home/oracle/dmhs/bin/all_table.xml
all_table
USERA.TABLE1==USERA.TABLE1
3 #参数说明:列映射配置标记,0不进行列映射,3表示普通列映射,例如“C1==D1”
0 #参数说明:0表示表结构和表数据都对比;1表示只需对比表结构。
#参数说明:行分区功能,依据条件选取表中部分行进行对比。仅仅在静态对比模式下有效,此处控制源AGENT查询条件。
#参数说明:行分区功能,依据条件选取表中部分行进行对比。仅仅在静态对比模式下有效,此处控制目的AGENT查询条件。
#主键列,若没有可忽略
ID==ID
NAME==NAME
#列对比
SEX==GENDER
#列对比
USERA.TABLE2==USERA.TABLE2
3
0
--B.执行数据对比
./dmhs_veri conf=veri.xml jobfile=TABLE1.xml no_lob=1 mode=normal