DMHS数据对比工具之Oracle到dm7的对比

        在进行数据库数据的实时同步的时候,需要了解同步的结果是否正确,因此需要有数据对比工具进行数据的对比,并生成详细的对比报告,提供用户参考。

        DMHS对比工具由三部分组成:源端 AGENT 服务器、目的端 AGENT 服务器和 VERI对比进程。每个 AGENT 服务器对应一个 Oracle 或 DM7 数据库实例。每次对比都会启动一个 VERI 对比进程,对比完成后自动退出,并生成对比报告。

        运行对比工具之前,需要配置 AGENT 和 VERI,各配置项的详细说明如下:

        AGENT 配置文件使用 XML 文件格式,默认文件为 agent.xml,配置示例如下:

<?xml version="1.0" encoding="utf-8"?> 
<agent> 
<port>5347</port>
<lang>ch</lang> 
<max_session>50</max_session>     #最大连接数,范围为[1, 10000]
<mode>0</mode>                    #0:动态对比锁表模式;1:动态对比闪回查询模式。仅仅在Oracle中有效。

<lock_nowait>1</lock_nowait>       #动态对比上锁模式中对表上锁是否使用 nowait,1 表示使用;0 表示不使用。

<pwd_encipher>0</pwd_encipher>    #配置连接数据库口令是否加密:1 表示密文;0:表示明文。密文通过 dmhs_console 工具的命令 pwd “xx”获得。

<dyn_wait_time>100</dyn_wait_time>     #动态对比时,agent 和 DMHS 连接等待的时间,有效值:[0, 36000000], 单位:秒,默认为 100

<ignore_fetch_error>0</ignore_fetch_error>   #从数据库查询表数据时,会报“快照过旧”的错误,导致表对比停止。该参数配置为 1,则可以忽略该报错继续取数据对比。仅对DM7/8 有效。0 表示关闭,默认为 0,有效值为 0 和 1。

<database>    #Agent连接的数据库配置
<server>ora92</server> 
<uid>test</uid> 
<psw>数据库密码</psw>
<db_ssl_path></db_ssl_path>
<db_ssl_pwd></db_ssl_pwd> 
<type>ORACLE11g</type>
</database>

</agent>

        VERI 配置文件使用 xml 格式进行配置,默认文件为 veri.xml,配置示例如下:

<?xml version="1.0" encoding="utf-8"?>
<veri>
 <lang>ch</lang> <!-- language: en or ch -->

 <max_thr>40</max_thr>           #最大线程对数,范围为[1, 10000]
 <max_obj_thr>1</max_obj_thr>    #最大对象对比线程个数,范围为[1, 10000]

 <retry_times>0</retry_times>    #AGENT 与 VERI 断连后重试次数,范围 [0, 100]
 <gen_html>0</gen_html>          #是否生成 html 报告:1 表示是,0 表示否。

 <max_out_sync>100000</max_out_sync>    #最大允许出错的行数,范围为[1, 10000000]
 <pwd_encipher>0</pwd_encipher>    #配置连接数据库口令是否加密:1 表示密文;0:表示明文。
 <col_opt>0</col_opt>            #是否对指定 jobfile 的情况进行取列优化,1:是;0:否。设置为 1之后,从数据库查询表的对比列的操作将放在对比线程中处理,提升并发性能。

 <log_mode>0</log_mode>            #是否生成单独的错误日志对比报告,1:是;0:否。
 <sort_buf_size>1024</sort_buf_size>    #排序缓冲区大小,有效值:[32, 262144],单位:MB。

 <report_mode>0</report_mode>      #对比报告的显示格式,0:列式显示;1:行式显示,默认为 0
 <report_dir>F:\veri\report</report_dir>

 <use_conn_pool>1</use_conn_pool>    #是否启用连接池,1:是;0:否。设置为1表示数据库连接会缓存起来重复使用。
 <max_conn_num>100</max_conn_num>    #连接池最大连接数

 <dmhs> <!-- dmhs_server for destination -->

 <server_name>192.168.0.103</server_name>#执行端 IP
 <port>5345</port>
 <site_id>1</site_id>                #DMHS 执行端对应的源端 CPT 的站点号
 </dmhs>

 <src>

 <agent_server>192.168.0.104</agent_server>
 <port>5347</port>
 <db_type>ORACLE11g</db_type>
 <trim_space>1</trim_space>

 <odbc_str>
 <driver> </driver>
 <db_server>ora92</db_server>        #数据库的服务名
 <db_port></db_port> 
 <db_user>test</db_user>
 <db_pwd>数据库密码</db_pwd>
 </odbc_str>

 </src> 

 <dest> 

 <agent_server>192.168.0.103</agent_server>
 <port>5347</port>
 <db_type>DM7</db_type>
 <trim_space>1</trim_space>

 <odbc_str>
 <driver> </driver> 
 <db_server>192.168.0.103</db_server>
 <db_port></db_port> 
 <db_user>SYSDBA</db_user>
 <db_pwd>数据库密码</db_pwd>
 <db_ssl_path></db_ssl_path>          #ssl加密
 <db_ssl_pwd></db_ssl_pwd>
 </odbc_str>

 </dest>
</veri>

        dmhs_veri 运行所在的机器必须安装 unixODBC,Oracle,DM7。

tnsnames.ora 的配置:

        tnsnames.ora 文件存放在$ORACLE_HOME/network/admin 下。

ORCL =
 (DESCRIPTION =
     (ADDRESS = (PROTOCOL = TCP)(HOST = CentOS)(PORT = 1521))
     (CONNECT_DATA =
          (SERVER = DEDICATED)
          (SERVICE_NAME = orcl)
     )
 )
unixODBC 配置:
配置 odbcinst
[ORACLE ODBC DRIVER]
Description = ODBC DRIVER FOR ORACLE
Driver = /home/oracle/app/oracle/product/11.2.0/dbhome_1/lib/libsqora.so.11.1
Setup =
threading = 0
[DM7 ODBC DRIVER]
Description = ODBC DRIVER FOR DM7
Driver = /opt/dmdbms/bin/libdodbc.so
Setup = /lib/libdmOdbcSetup.so
threading = 0
odbc.ini 配置参:
[dm7-1]
Description = DM ODBC DSN
Driver = DM7 ODBC DRIVER
SERVER = 192.168.0.103
UID = SYSDBA
PWD = 自定义,且真实可用的密钥
TCP_PORT = 5236
[ora92]
Description = DM ODBC DSN
Driver = ORACLE ODBC DRIVER
SERVER = localhost
UID = TEST
PWD = 自定义,且真实可用的密钥
odbc 连接串要与 odbc.ini 配置对应。
VERI 配置 veri.xml、源端 AGENT 配置 agent.xml、目的端 AGENT 配置 agent.xml均可参考上述配置解说完成,未用到参数可不配置;
启动 AGENT 服务器
源端检查环境变量:
参考命令:env|grep LD_LIBRARY_PATH
启动源端代理进程:
将配置好的 agent.xml文件  放置在 AGENT 应用程序所在的文件夹中并启动代理进程。
./dmhs_veri_agent_ora
目的端检查环境变量:
参考命令:env|grep LD_LIBRARY_PATH
检查 LD_LIBRARY_PATH 中是否存在 DM7 库。
启动目的端代理服务器:
将 已配置好的目的端  agent.xml 文件 放置到 AGENT 应用程序所在的文件夹中。
./dmhs_veri_agent_dm7
启动对比进程进行对比
veri.xml 放置在 dmhs_veri 所在文件中,并检查 unixODBC 和 oracle 库路径是否在 LD_LIBRARY_PATH 中。
进行全模式静态对比:
./dmhs_veri jobname=job1 “table=(TEST.*==SYSDBA.*)” mode=NORMAL
进行全模式 FAST 对比:
./dmhs_veri jobname=job1 “table=(TEST.*==SYSDBA.*)” mode=FAST
进行单表对比:
./dmhs_veri jobname=job1 “table=(TEST.T1==SYSDBA.T1)” mode=NORMAL
补充:
一、DMHS 对比工具支持的数据类型:数值类型;字符类型;二进制数据类型;时间日期类型;大对象类型;不支持的数据类型:时区数据类型。
二、DMHS 对比工具对比支持以下对比类别:
1) 按照对比模式分为:静态对比、动态对比、快速对比和二次对比;
2) 按照是否使用键值对比分为:键值对比和非键值对比;
3) 动态对比按照对比表之间是否存在关联分为:普通对比和组表对比,前者表示表之间的 对比没有关联,相互独立;后者表示表之间存在关联,如外键引用,对比时关联表会在 相同的 SCN 下比较。组表对比只支持源代理数据库为 Oracle 的情况,且不支持 LONG 和 LONG RAW 数据类型。
4) 动态对比按照执行方式不同分为:锁表动态对比和闪回查询动态对比。普通对比可以使 用其中任意一种执行方式,组表对比只能使用闪回查询动态对比。在不支持闪回查询的 数据库对比中,默认使用锁表动态对比。按照是否使用键值对比分为:键值对比和非键 值对比;
注意:二次对比时,需对比的表中无主键且唯一索引包含空值时对比结果会有误差;表中无
主键且没有唯一索引的情况下,二次对比不会对大对象再次进行比对。
更多有关达梦数据库相关内容,可通过以下链接查看
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值