1 准备工作
搭建oracle11g-->dm8同步对比,需要先搭建oracle11g-->dm8的单向/双向同步,这一部分见本人上一篇博客
在搭建完同步工作后,在oracle11g所在虚拟机也安装下载dm8,无需初始化实例
2 修改配置
源端:
修改tnsnames.ora配置,tnsnames.ora位于$ORACLE_HOME/network/admin目录下,其中IP地址为源端IP地址
LISTENER_ORCL =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.237.164)(PORT = 1521))
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.237.164)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
修改odbcinst.ini
vim /etc/odbcinst.ini
[DM8 ODBC DRIVER]
Description = ODBC DRIVER FOR DB=DM8
DRIVER = /dm8/bin/libdodbc.so
[Oracle in OraDb11g_home1]
Description = Oracle ODBC driver for Oracle 11g
Driver = /opt/oracle/app/oracle/product/11.2.0/dbhome_1/lib/libsqora.so.11.1
Threading = 0
修改odbc.ini
vim /etc/odbc.ini
[ORACLE]
Description = ORACLE ODBC DSN
Driver = Oracle in OraDb11g_home1
SERVER = localhost
UID=system
PWD = 123456
Servername = orcl
PORT = 1521
[dm8]
Description = DM ODBC DSND
Driver = DM8 ODBC DRIVER
SERVER = localhost
UID = SYSDBA
PWD = SYSDBA
TCP_PORT = 5236
修改oracle用户环境变量:
vim .bash_profile
Export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/dmhs/bin:$ORACLE_HOME:$ORACLE_BASE:/etc:/dm8/bin
在dmhs/bin目录下
vim veri.xml
<?xml version="1.0" encoding="utf-8"?>
<veri>
<lang>en</lang>
<max_thr>40</max_thr>
<!-- <dmhs>
<server_name>192.168.238.134</server_name>
<port>5345</port>
<site_id>1</site_id>
</dmhs> --> <!-- 动态对比时,添加该部分 -->
<src> <!-- 源端agent的配置 -->
<agent_server>192.168.237.164</agent_server>
<port>5347</port> <!-- 这是agent的端口 -->
<db_type>ORACLE11g</db_type>
<odbc_str>
<!-- <dsn>ORACLE</dsn> -->
<db_server>192.168.237.164:/orcl</db_server>
<db_user>system</db_user>
<db_pwd>123456</db_pwd>
</odbc_str>
</src>
<dest> <!-- 目的端agent的配置 -->
<agent_server>192.168.237.165</agent_server>
<port>5347</port> <!-- 这是agent的端口 -->
<db_type>DM8</db_type>
<odbc_str>
<!-- <dsn>DM8</dsn> -->
<db_server>192.168.237.165</db_server>
<db_user>SYSDBA</db_user>
<db_pwd>SYSDBA</db_pwd>
<db_port>5236</db_port>
</odbc_str>
</dest>
</veri>
Vim agent.xml
<?xml version="1.0" encoding="utf-8"?>
<agent>
<port>5347</port> <!-- 这是agent的端口 -->
<lang>en</lang>
<max_session>100</max_session>
<!-- <mode>0</mode> --> <!-- 动态对比时,需要添加mode控制参数。0:动态对比锁表模式;1:动态对比闪回查询模式。仅仅在Oracle中有效。 -->
<database>
<type>Oracle11g</type>
<server>orcl</server>
<uid>system</uid>
<psw>123456</psw>
<!-- <port></port> 默认端口时可以不写数据库端口,不是默认时写 -->
</database>
</agent>
目的端:
在dmhs/bin目录下
vim agent.xml
<?xml version="1.0" encoding="utf-8"?>
<agent>
<port>5347</port> <!-- 这是agent的端口 -->
<lang>en</lang>
<max_session>100</max_session>
<!-- <mode>0</mode> --> <!-- 这是动态对比时,需要添加mode控制参数。0:动态对比锁表模式;1:动态对比闪回查询模式。仅仅在Oracle中有效。 -->
<database>
<type>DM8</type>
<server>192.168.237.165</server>
<uid>SYSDBA</uid>
<psw>SYSDBA</psw>
<port>5236</port> <!-- 此处port是dm8的监听端口 -->
</database>
</agent>
3 开始同步对比
启动服务
源端:
到dmhs/bin目录下
./dmhs_veri_agent_ora agent.xml
目的端:
到dmhs/bin目录下
./dmhs_veri_agent_dm8 agent.xml
在源端另启端口,到dmhs/bin目录下:
./dmhs_veri "TABLE=(SYSTEM.TEST1==TEST.TEST1)" mode=normal
查看对比报告:
可以看到对比结果两者一致
测试不一致的结果,在源端往test1测试表插入新数据,然后进行同步对比并查看新的对比报告
可以看到对比发现两者不一致
以上为使用对比工具veri进行静态对比
若要进行动态对比,还需启动dmhs服务,且将veri、agent配置文件中动态对比部分注释符删除
#动态对比
./dmhs_veri "TABLE=(SYSTEM.*==SYSTEM.*)" mode=dyn
请上达梦社区了解 https://eco.dameng.com