一、前言
DMHS 同步软件可实现以下功能:
1.对 Oracle 类型数据库数据进行抽取、转换、过滤,并映射到其他 Oracle数据库或其他类型数据库。
2.对 Oracle 数据库中的 DML、DDL 操作进行捕获,并同步到其它同构或异构数据库,即目标库。
3.将 Oracle 数据库中的数据操作实时同步到目标库,同步时间能够达到毫秒级。
二、环境准备
1实验环境配置基本信息
| 源端->目标端 | Orcacl -> DM8 |
OS版本 | OracleLinux-R7-U9-Server-x86_64-dvd.iso |
| CentOS-7-x86_64-DVD-2009.iso | |
达梦 HS版本 | 安装在Oracle用户下:dmhs_V4.1.1_oracle12c_rev99426_veri_20210506.zip |
| 安装在root用户下:dmhs_V4.1.1_dm8_rev99426_veri_20210506.zip | |
| LINUX.X64_193000_db_home.zip | |
| dm8_20210315_x86_rh6_64_ent_8.1.1.190.iso | |
| 源端IP | 192.168.3.12 |
| 目标端IP | 192.168.3.92 |
| 安装用户:Oracle | |
| DMHS_HOME=/u01/app/dmhs_orclpdb1 | |
| 安装用户:root | |
| DMHS_HOME=/opt/dmhs_orclpdb1 | |
| 同步用户 | scott |
2.源端数据库基本信息
| 目的端IP | 192.168.3.12 |
| 主机名 | yuanzjora19c |
| 安装用户 | Oracle |
| 数据库版本 | LINUX.X64_193000_db_home.zip |
| ORACLE_HOME | /u01/app/oracle/product/19.0.0/dbhome_1 |
| db_block_size | 8K |
| NLS_CHARACTERSET | AL32UTF8 |
| 是否归档 | 是 |
| 传输用户 | c##dmhs |
3.目标端数据库基本信息
| 源端IP | 192.168.3.92 |
| 主机名 | yuanzjdm8 |
| 安装用户 | dmdba |
| 数据库版本 | dm8_20210315_x86_rh6_64_ent_8.1.1.190.iso |
| DM_HOME | /opt/dmdbms |
| 簇大小 | 16 |
| 页大小 | 8K |
| 字符集 | utf8 |
| 大小写敏感 | 是 |
| 是否以字符为单位 | 否 |
| 是否归档 | 是 |
| 传输用户 | c##dmhs |
三、配置环境
1.安装Oracle数据库(略)
2.安装DM8数据库(略)
3.源端Oracle环境配置
1.开启归档(已开启):
SQL> archive log listDatabase log mode Archive ModeAutomatic archival EnabledArchive destination oraarchOldest online log sequence 6Next log sequence to archive 8Current log sequence 8
2.开启最小补充日志和全列日志
SQL> alter database add supplemental log data;Database altered.SQL> alter database add supplemental log data (all) columns;Database altered.SQL> select supplemental_log_data_min,supplemental_log_data_all from v$database;SUPPLEMENTAL_LOG SUPPLE---------------- ------YES YES
3.关闭回收站功能
SQL> alter system set recyclebin=off defered;
4.查看oracle数据库字符集
SQL> select userenv('language') from dual;USERENV('LANGUAGE')---------------------------------------------------------------------------AMERICAN_AMERICA.AL32UTF8
5.源端配置DDL支持
A)源端数据库必须允许 DDL 触发器的触发动作,即数据库参数_system_trig_enabled为 TRUE 或者未设置。查看该参数的命令如下
SQL> show parameter _system_trig_enabled;
B)需要在源端数据库以 sys 用户,在 sys 模式下创建 DDL 触发器及 DDL 记录表,详细参照 dmhs_ddl.sql 脚本,oracle12c版本以上数据库需要在cdb和pdb都执行此脚本
C)需要日志捕获模块对 ddl_mask 进行设置。例如<ddl_mask>op:obj<ddl_mask>。ddl_mask 可对同步对象进行过滤,详细参数请参照 ddl_mask 参数说明。
6.创建C##DMHS数据库用户
A)在cdb数据库创建DMHS表空间
SYS@orcl> create tablespace dmhs datafile '/oradata/ORCL/dmhs01.dbf' size 50m autoextend on next 50m maxsize 30g extent management local;Tablespace created.SYS@orcl> create temporary tablespace dmhs_temp tempfile '/oradata/ORCL/dmhs_temp01.dbf' size 50m reuse autoextend on next 10m maxsize 30g;Tablespace created.
B)在pdb数据库创建DMHS表空间
SYS@orclpdb1> create tablespace dmhs datafile '/oradata/ORCL/orclpdb1/dmhs01.dbf' size 50m autoextend on next 50m maxsize 30g extent management local;Tablespace created.SYS@orclpdb1> create temporary tablespace dmhs_temp tempfile '/oradata/ORCL/orclpdb1/dmhs_temp01.dbf' size 50m reuse autoextend on next 10m maxsize 30g;Tablespace created.
C)创建C##DMHS公共用
SYS@orcl> create user c##dmhs identified by dmhs123 default tablespace dmhs temporary tablespace dmhs_temp;User created.
7.创建DDL授权的相关信息
1. 创建DDL表和授权
注意:需要在cdb和pdb中授权,只要增加数据库都需要授权
A)在cdb数据库中执行脚本ddl_sql_ora.sql
SYS@orcl> set define offSYS@orcl> @ddl_sql_ora.sqlTable created.Trigger created.
B)在cdb数据库中授权C##DMHS,执行脚本ddl_grant_user.sql
SYS@orcl> @ddl_grant_user.sqlGrant succeeded.。。。。。。Grant succeeded.SYS@orcl>
C)在pdb中执行DDL脚本ddl_sql_ora.sql
如第1步所示
D)在pdb中授权C##DMHS,执行脚本ddl_grant_user.sql
如第2步所示
其中grant connect to c##dmhs container=all;只能在cdb中执行,所以禁用这一个sql。
E)脚本
链接:https://pan.baidu.com/s/1Loev8v0fWiDgVXHeE99QHQ提取码:w0r3复制这段内容后打开百度网盘手机App,操作更方便哦
8.创建测试数据
[oracle@yuanzj19c:/home/oracle]$ find u01 -name utlsampl.sql/u01/app/oracle/product/19.0.0/dbhome_1/rdbms/admin/utlsampl.sql[oracle@yuanzj19c:/home/oracle]$ vim u01/app/oracle/product/19.0.0/dbhome_1/rdbms/admin/utlsampl.sql[oracle@yuanzj19c:/home/oracle]$ sqlplus sys/oracle@orclpdb1 as sysdbaSQL*Plus: Release 19.0.0.0.0 - Production on Sat May 15 21:53:10 2021Version 19.3.0.0.0Copyright (c) 1982, 2019, Oracle. All rights reserved.Connected to:Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - ProductionVersion 19.3.0.0.0SYS@orclpdb1> @/u01/app/oracle/product/19.0.0/dbhome_1/rdbms/admin/utlsampl.sql
其中utlsampl.sql脚本修改pdb服务名,如下图所示:

9.验证数据
[oracle@yuanzj19c:/home/oracle]$ sqlplus scott/tiger@orclpdb1SQL*Plus: Release 19.0.0.0.0 - Production on Sat May 15 22:04:09 2021Version 19.3.0.0.0Copyright (c) 1982, 2019, Oracle. All rights reserved.Last Successful login time: Sat May 15 2021 22:02:43 +08:00Connected to:Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - ProductionVersion 19.3.0.0.0SCOTT@orclpdb1> col table_name for a45;SCOTT@orclpdb1> select table_name from tabs;TABLE_NAME---------------------------------------------DEPTEMPBONUSSALGRADESCOTT@orclpdb1> select count(*) from emp;COUNT(*)----------14
4.目的端DM配置
1.开启归档
[dmdba@yuanzjdm8 ~]$ disql SYSDBA/SYSDBA123open fail! path:./libcrypto.so服务器[LOCALHOST:5236]:处于普通打开状态登录使用时间 : 2.117(ms)disql V8SQL> select arch_mode from v$database;行号 ARCH_MODE---------- ---------1 Y已用时间: 0.512(毫秒). 执行号:6901.SQL>
2.开启逻辑日志
已用时间: 0.512(毫秒). 执行号:6901.SQL> SELECT PARA_VALUE FROM SYS.V$DM_INI WHERE PARA_NAME = 'RLOG_APPEND_LOGIC';行号 PARA_VALUE---------- ----------1 0已用时间: 3.253(毫秒). 执行号:6902.SQL> sp_set_para_value(1,'RLOG_APPEND_LOGIC',1);DMSQL 过程已成功完成已用时间: 5.952(毫秒). 执行号:6903.SQL> SELECT PARA_VALUE FROM SYS.V$DM_INI WHERE PARA_NAME = 'RLOG_APPEND_LOGIC';行号 PARA_VALUE---------- ----------1 1已用时间: 2.388(毫秒). 执行号:6904.
3.创建c##dmhs用户和scott用户,并授权dba角色
SQL> create user scott identified by tiger1234 default tablespace main default index tablespace main;操作已执行已用时间: 3.044(毫秒). 执行号:502.SQL> grant dba to scott;操作已执行已用时间: 1.986(毫秒). 执行号:503.
四、安装web客户端
1.上传dmhs安装软件到/root/soft目录(略)
2.安装DMHS软件(只安装web客户端)
[root@yuanzjdm8 soft]# chmod 775 dmhs_V3.1.3_dm8_rev95241_rh6_64_veri_20201119.bin[root@yuanzjdm8 soft]# ./dmhs_V3.1.3_dm8_rev95241_rh6_64_veri_20201119.bin -iExtract install files.........1.英文(English)2.简体中文(简体中文)请选择安装语言[2.简体中文(简体中文)]:2/tmp/DMHSInstall/install.log1.免费试用达梦数据实时同步2.使用已申请的Key文件验证许可证文件[1.免费试用达梦数据实时同步]:2Key文件路径:/root/soft/dmhs.keyKey文件限制信息如下:有效日期:2022-03-25用户名称:达梦公司产品试用服务器颁布类型:试用版发布类型:企业版Key类型:企业版授权用户数:无限制并发连接数:无限制1.精简版2.完整版(web客户端)3.自定义安装类型[1.精简版]:31.实时同步软件服务器2.远程部署工具3.实时同步软件客户端4.内置数据库5.ODBC驱动6.实时同步软件配置助手7.手册输入选择安装组件的序号,以','分隔:3,41.实时同步软件客户端2.内置数据库所需磁盘空间:611 MB安装目录: [/opt/dmhs]正在安装default start ... default finished.webmanager start ... webmanager finished.db start ... db finished.doc start ... doc finished.postinstall start ... postinstall finished.正在创建快捷方式安装成功内置数据库服务1.自动2.手动启动方式:[2.手动]1正在创建内置数据库服务初始化内置数据库web服务1.自动2.手动启动方式:[2.手动]1正在创建web服务正在启动服务 DmServiceHSDB正在启动服务 DmhsWebService达梦数据实时同步 V4.0 安装完成更多安装信息,请查看安装日志文件:/opt/dmhs/log/install.log
3.升级HSEM内置库为DM8数据库
[root@yuanzjdm8 db]# mv bin bin_bak[root@yuanzjdm8 db]# mv data data_bak[root@yuanzjdm8 db]# mkdir ./{bin,data}[root@yuanzjdm8 db]# lsbin bin_bak data data_bak log[root@yuanzjdm8 db]# cp -r opt/dmdbms/bin/* ./bin/[root@yuanzjdm8 db]# cp bin_bak/Dm* ../bincp:是否覆盖"../bin/DmAuditMonitorService"?ncp:是否覆盖"../bin/DmInstanceMonitorService"?ncp:是否覆盖"../bin/DmJobMonitorService"?n
4.初始化HSEM内置数据库
[root@yuanzjdm8 bin]# ./dminit path=/opt/dmhs/db/data PAGE_SIZE=16 INSTANCE_NAME=HSDB PORT_NUM=15236initdb V8db version: 0x7000cfile dm.key not found, use default license!License will expire on 2022-03-26Normal of FASTNormal of DEFAULTNormal of RECYCLENormal of KEEPNormal of ROLLlog file path: /opt/dmhs/db/data/DAMENG/DAMENG01.loglog file path: opt/dmhs/db/data/DAMENG/DAMENG02.logwrite to dir [/opt/dmhs/db/data/DAMENG].create dm database success. 2021-05-16 07:02:03
5.初始化hsem数据库(数据库初始化脚本在manager.war里面,解压即可获取)

6.升级web
1.上传升级包manager.war到/opt/dmhs/web/webapps目录下(过程略)
2.开启web客户端
[root@yuanzjdm8 bin]# pwd/opt/dmhs/web/bin[root@yuanzjdm8 bin]# ./DmhsWebService startUsing CATALINA_BASE: opt/dmhs/webUsing CATALINA_HOME: opt/dmhs/webUsing CATALINA_TMPDIR: opt/dmhs/web/tempUsing JRE_HOME: opt/dmhs/jdk/jreUsing CLASSPATH: opt/dmhs/web/bin/bootstrap.jar:/opt/dmhs/web/bin/tomcat-juli.jarUsing CATALINA_PID: opt/dmhs/web/bin/pids/DmhsWebService.pidTomcat started.
3.登录管理端
在浏览器中输入:http://192.168.3.92:8080/manager/,账户名:admin,密码:888888

登录进去之后,如下图所示:

五、安装目的端HS
1.上传最新版本的dmhs安装包到/root/soft目录
2.解压dmhs安装包到规划的目录下:/opt/dmhs_orclpdb1
[root@yuanzjdm8 soft]# unzip dmhs_V4.1.1_dm8_rev99426_beta_veri_20210506.zip -d opt/dmhs_orclpdb1/[root@yuanzjdm8 soft]# cd opt/dmhs_orclpdb1/[root@yuanzjdm8 dmhs_orclpdb1]# lsdmhs_V4.1.1_dm8_rev99426_beta_veri_20210506[root@yuanzjdm8 dmhs_orclpdb1]# mv dmhs_V4.1.1_dm8_rev99426_beta_veri_20210506/* .[root@yuanzjdm8 dmhs_orclpdb1]# lsdebug dmhs_V4.1.1_dm8_rev99426_beta_veri_20210506[root@yuanzjdm8 dmhs_orclpdb1]# rm -rf dmhs_V4.1.1_dm8_rev99426_beta_veri_20210506/[root@yuanzjdm8 dmhs_orclpdb1]# mv debug/ bin[root@yuanzjdm8 dmhs_orclpdb1]# lsbin[root@yuanzjdm8 dmhs_orclpdb1]# mv bin/hs_agent/ .[root@yuanzjdm8 dmhs_orclpdb1]# pwd/opt/dmhs_orclpdb1[root@yuanzjdm8 dmhs_orclpdb1]# ll总用量 8drwxr-xr-x 4 root root 4096 5月 16 07:21 bindrwxr-xr-x 2 root root 4096 5月 15 18:09 hs_agent
注意:
也可以先创建/opt/dmhs_orclpdb1目录,然后在本地解压dmhs安装包,上传文件到此目录下。
3. 升级dmhs
用新的升级包解压出来的文件,替换/opt/dmhs/对应的目录下的文件即可(过程略)
4.编辑环境并使之重新生效
[root@yuanzjdm8 ~]# cat .bash_profile# .bash_profile# Get the aliases and functionsif [ -f ~/.bashrc ]; then. ~/.bashrcfi# User specific environment and startup programsPATH=$PATH:$HOME/binexport PATHexport DMHS_HOME=/opt/dmhsexport LD_LIBRARY_PATH=/opt/dmhs/bin:/opt/dmhs/db/bin:/opt/dmhs_orclpdb1/:/opt/dmhs_orclpdb1/hs_agent:$LD_LIBRARY_PATH[root@yuanzjdm8 ~]# export LD_LIBRARY_PATH=""[root@yuanzjdm8 ~]# . .bash_profile
5.编辑dmhs_agent.xml文件
[root@yuanzjdm8 hs_agent]# pwd/opt/dmhs_orclpdb1/hs_agent[root@yuanzjdm8 hs_agent]# cat dmhs_agent.xml<?xml version="1.0" encoding="GB2312"?><hs_agent><name>HsAgent</name><server_ip>192.168.3.92</server_ip><lsn_port>5456</lsn_port><status_interval>3</status_interval><status_server>192.168.3.92</status_server><status_port>15236</status_port><status_user>SYSDBA</status_user><status_pwd>SYSDBA</status_pwd><dmhs_support>1</dmhs_support><veri_support>1</veri_support><lang>ch</lang></hs_agent>
注意:其中<server_ip>是本机ip,<status_server>是HSEM内置数据库ip
6. 启动hs_agent,编辑启动脚本
[root@yuanzjdm8 hs_agent]# cp TemplateDmhsAgentService DmhsAgentService[root@yuanzjdm8 hs_agent]# vim DmhsAgentService

注意:
其中当前路径使用$PWD替换,HS_NLS_LANG=“源端Oracle数据库字符集”
启动脚本
[root@yuanzjdm8 hs_agent]# chmod -R 775 opt/dmhs_orclpdb1/[root@yuanzjdm8 hs_agent]# ./DmhsAgentService startStarting DmhsAgentService: [ FAILED ]/opt/dmhs_orclpdb1/hs_agent/dmhs_agent: error while loading shared libraries: libdmoci.so: cannot open shared object file: No such file or directory
注意:上传dmoci到/opt/dmhs/db/bin目录下,此时有坑,dmoci可以放置到任何目录下,不能把数据库的库文件放到hs里面,只把dmoci的放到数据库里面,如果本机装装数据库了,扔数据库bin目录下,dmhs环境指向一下,如果没有装的话,就扔hs内置数据库bin目录下。
[root@yuanzjdm8 bin]# pwd/opt/dmhs/db/bin[root@yuanzjdm8 bin]# ./DmServiceHSDB restartStopping DmServiceHSDB: [ OK ]Starting DmServiceHSDB: [ OK ][root@yuanzjdm8 bin]# cd opt/dmhs_orclpdb1/hs_agent/[root@yuanzjdm8 hs_agent]# ./DmhsAgentService start
7.此时观察浏览器,会发现目的端agent注册到平台

六、安装源端hs
1. 上传最新版本的dmhs安装包到/root/soft目录
2. 解压dmhs安装包
[oracle@yuanzj19c:/home/oracle/soft]$ mkdir u01/app/dmhs_orclpdb1[oracle@yuanzj19c:/home/oracle/soft]$ unzip dmhs_V4.1.1_oracle12c_rev99426_beta_veri_20210506.zip -d u01/app/dmhs_orclpdb1/[oracle@yuanzj19c:/home/oracle/soft]$ cd u01/app/dmhs_orclpdb1/[oracle@yuanzj19c:/u01/app/dmhs_orclpdb1]$ lsdmhs_V4.1.1_oracle12c_rev99426_beta_veri_20210506[oracle@yuanzj19c:/u01/app/dmhs_orclpdb1]$ mv dmhs_V4.1.1_oracle12c_rev99426_beta_veri_20210506/debug/ .[oracle@yuanzj19c:/u01/app/dmhs_orclpdb1]$ lsdebug dmhs_V4.1.1_oracle12c_rev99426_beta_veri_20210506[oracle@yuanzj19c:/u01/app/dmhs_orclpdb1]$ rm -rf dmhs_V4.1.1_oracle12c_rev99426_beta_veri_20210506/[oracle@yuanzj19c:/u01/app/dmhs_orclpdb1]$ mv debug/ bin[oracle@yuanzj19c:/u01/app/dmhs_orclpdb1]$ lsbin[oracle@yuanzj19c:/u01/app/dmhs_orclpdb1]$ mv bin/hs_agent/ .[oracle@yuanzj19c:/u01/app/dmhs_orclpdb1]$ lsbin hs_agent
3. 上传dmoci到/u01/app/dmhs_orclpdb1/hs_agent目录下
过程略
4. 编辑oracle用户环境变量,其中主要定义DMHS_HOME的环境变量,具体如下
# .bash_profile# Get the aliases and functionsif [ -f ~/.bashrc ]; then. ~/.bashrcfi# User specific environment and startup programsPATH=$PATH:$HOME/.local/bin:$HOME/binexport PATH#Use for oracle12c install added by jt&&yzjPS1=[`whoami`@`hostname`:'$PWD]$ '; export PS1TMP=/tmp; export TMPTMPDIR=$TMP; export TMPDIRORACLE_BASE=/u01/app/oracle; export ORACLE_BASEORACLE_HOME=$ORACLE_BASE/product/19.0.0/dbhome_1; export ORACLE_HOMEORACLE_SID=orcl; export ORACLE_SIDORACLE_TERM=xterm; export ORACLE_TERMDMHS_HOME=/u01/app/dmhs_orclpdb1PATH=/usr/sbin:/usr/local/bin:$PATH:$ORACLE_HOME/bin:$PATH; export PATHLD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib:$DMHS_HOME/bin:$DMHS_HOME/hs_agent:$LD_LIBRARY_PATH; export LD_LIBRARY_PATHCLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATHNLS_LANG=AMERICAN_AMERICA.AL32UTF8; export NLS_LANGalias sqlplus='rlwrap sqlplus'alias rman='rlwrap rman'
5.编辑dmhs_agent.xml文件
[oracle@yuanzj19c:/u01/app/dmhs_orclpdb1/hs_agent]$ pwd/u01/app/dmhs_orclpdb1/hs_agent[oracle@yuanzj19c:/u01/app/dmhs_orclpdb1/hs_agent]$ cat dmhs_agent.xml<?xml version="1.0" encoding="GB2312"?><hs_agent><name>HsAgent</name><server_ip>192.168.3.12</server_ip><lsn_port>5456</lsn_port><status_interval>3</status_interval><status_server>192.168.3.92</status_server><status_port>15236</status_port><status_user>SYSDBA</status_user><status_pwd>SYSDBA</status_pwd><dmhs_support>1</dmhs_support><veri_support>1</veri_support><lang>ch</lang></hs_agent>
6.启动dmhs_agent,编辑脚本,脚本内容和目的端脚本内容一致
[oracle@yuanzj19c:/u01/app/dmhs_orclpdb1]$ chmod -R 775 ../dmhs_orclpdb1/[oracle@yuanzj19c:/u01/app/dmhs_orclpdb1]$ lsbin hs_agent[oracle@yuanzj19c:/u01/app/dmhs_orclpdb1]$ cd hs_agent/[oracle@yuanzj19c:/u01/app/dmhs_orclpdb1/hs_agent]$ cp TemplateDmhsAgentService DmhsAgentService[oracle@yuanzj19c:/u01/app/dmhs_orclpdb1/hs_agent]$ vim DmhsAgentService

启动脚本
[oracle@yuanzj19c:/u01/app/dmhs_orclpdb1/hs_agent]$ ./DmhsAgentService startStarting DmhsAgentService: [ OK ]
7. 此时观察浏览器,会发现源端agent注册到平台

其中192.168.3.12的HsAgent是失败的,不管怎么刷新都是失败的状态,看日志
[root@yuanzj19c hs_agent]# tail -f log/dmhs_agent_202105.log2021-05-16 10:44:54 HS_AGENT[INFO]: 正在加载监控数据库接口模块...2021-05-16 10:44:54 HS_AGENT[INFO]: 注册主机(192.168.3.92:15236)数据对比工具VERI远程控制工具.2021-05-16 10:44:54 HS_AGENT[ERROR]: cannot bind port: 5456, errno: 98.2021-05-16 10:44:54 PUB[ERROR]: can not create socket or bind port.2021-05-16 10:45:28 HS_AGENT[INFO]: DMHS AGENT开启,版本号:V4.1.1-Build(2021.05.06-99426trunc)_D642021-05-16 10:45:28 HS_AGENT[INFO]: 正在加载监控数据库接口模块...2021-05-16 10:45:28 HS_AGENT[INFO]: 注册主机(192.168.3.92:15236)数据对比工具VERI远程控制工具.2021-05-16 10:45:28 HS_AGENT[INFO]: DMHS AGENT管理监听端口:54562021-05-16 10:45:28 HS_AGENT[INFO]: DMHS AGENT IS READY.
说明端口未开,可以选择关闭防火墙

七、配置DMHS链路
1.配置目的端服务
1.鼠标右键HsAgent(192.168.3.92),点击添加HS实例,按如下填写

其中实例名是:数据库名_exec
2.点击确定
2.配置源端服务
1.鼠标右键HsAgent(192.168.3.12),点击添加HS实例,按如下填写:

其中实例名是:数据库名_cpt,然后点击确定
2.右键点击cpt,修改配置并保存:

其中:
过滤规则为:ORCLPDB1.SCOTT.*
映射规则为:ORCLPDB1.SCOTT.*==SCOTT.*
3.启动目的端实例服务,可以选择前台启动,也可以选择后台脚本服务名启动
1.目的端选择前台启动,右键HS-orclpdb1_exec(5345),点击启动

2.启动exec执行模块

查看日志:
[root@yuanzjdm8 orclpdb1_exec]# pwd/opt/dmhs_orclpdb1/INST_HS/orclpdb1_exec[root@yuanzjdm8 orclpdb1_exec]# tail log/dmhs_202105.log2021-05-16 11:06:44 EXE[INFO]: CONNECT: SERVER=192.168.3.92;DRIVER=DM8 ODBC DRIVER;UID=c##dmhs;PWD=******;TCP_PORT=5236;2021-05-16 11:06:44 EXE[WARN]: create table: DMHS_TRXID_TABLE2021-05-16 11:06:44 EXE[WARN]: create table: DMHS_DTYPE_MAP2021-05-16 11:06:45 EXE[WARN]: create table: DMHS_ERROR_TSK_TABLE2021-05-16 11:06:45 EXE[WARN]: create table: DMHS_TABLE_SEQID2021-05-16 11:06:45 EXE[WARN]: create table: DMHS_CHECKPOINT_TABLE2021-05-16 11:06:45 EXE[WARN]: create table: DMHS_ERROR_TABLE2021-05-16 11:06:45 EXE[INFO]: EXEC_V3.1.2_D642021-05-16 11:06:45 REV[INFO]: exec server data receiving thread created successfully, listening data port : 53462021-05-16 11:06:45 MGR[INFO]: connection from 192.168.3.92 has broken!
4.启动源端实例服务,可以选择前台启动,也可以选择后台脚本服务名启动
1.源端选择后台启动
2.服务正常启动,如果没有连接到c##dmhs用户,选择配置odbc,使dmhs可以正常连接数据库
[oracle@yuanzj19c:/u01/app/dmhs_orclpdb1/INST_HS/orclpdb1_cpt]$ ./DmhsServiceorclpdb1_cpt startStarting DmhsServiceorclpdb1_cpt: [ OK ][oracle@yuanzj19c:/u01/app/dmhs_orclpdb1/INST_HS/orclpdb1_cpt]$ tail -f log/dmhs_202105.log2021-05-16 11:13:23 MGR[INFO]: DMHS start up, current version: V4.1.1-Build(2021.05.06-99426trunc)_D64(Enterprise Edition)2021-05-16 11:13:23 MGR[WARN]: License will expire on 2022-03-252021-05-16 11:13:23 MGR[INFO]: load config file successful,site no:5, manager port :5345, poll interval:32021-05-16 11:13:24 MGR[INFO]: manager listening port:5345

3.测试连通性
[root@yuanzj19c hs_agent]# su - oracle上一次登录:日 5月 16 11:13:58 CST 2021pts/1 上[oracle@yuanzj19c:/home/oracle]$ isql oracle c##dmhs dmhs123+---------------------------------------+| Connected! || || sql-statement || help [tablename] || quit || |+---------------------------------------+SQL>
4.重启源端脚本
[oracle@yuanzj19c:/u01/app/dmhs_orclpdb1/INST_HS/orclpdb1_cpt]$ ./DmhsServiceStopping DmhsServiceorclpdb1_cpt: [ OK ]Starting DmhsServiceorclpdb1_cpt: [ OK ]
5.查看日志
2021-05-16 11:13:23 MGR[INFO]: DMHS start up, current version: V4.1.1-Build(2021.05.06-99426trunc)_D64(Enterprise Edition)2021-05-16 11:13:23 MGR[WARN]: License will expire on 2022-03-252021-05-16 11:13:23 MGR[INFO]: load config file successful,site no:5, manager port :5345, poll interval:32021-05-16 11:13:24 MGR[INFO]: manager listening port:53452021-05-16 11:13:36 MGR[INFO]: monitor 192.168.3.12 's login2021-05-16 11:13:36 MGR[INFO]: monitor 192.168.3.12 's login2021-05-16 11:13:36 MGR[INFO]: monitor 192.168.3.12 's login2021-05-16 11:21:50 MGR[INFO]: DMHS server received exit, now is stopping!2021-05-16 11:22:05 MGR[INFO]: DMHS start up, current version: V4.1.1-Build(2021.05.06-99426trunc)_D64(Enterprise Edition)2021-05-16 11:22:05 MGR[WARN]: License will expire on 2022-03-252021-05-16 11:22:05 MGR[INFO]: load config file successful,site no:5, manager port :5345, poll interval:32021-05-16 11:22:05 MGR[INFO]: manager listening port:53452021-05-16 11:22:20 MGR[INFO]: connection from 192.168.3.92 has broken!2021-05-16 11:22:21 MGR[INFO]: monitor 192.168.3.12 's login2021-05-16 11:22:36 MGR[INFO]: monitor 192.168.3.12 's login2021-05-16 11:22:36 MGR[INFO]: monitor 192.168.3.12 's login
6.加载数据字典
[oracle@yuanzj19c:/u01/app/dmhs_orclpdb1/INST_HS/orclpdb1_cpt]$ ./dmhs_consoleDMHS console tool: V4.1.1-Build(2021.05.06-99426trunc)_D64Copyright (c) 2020, DMHS. All rights reserved.Type ? or "help" for help, type "quit" to quit console.Connected to DMHS: 127.0.0.1:5345execute successDameng HS Server V4.1.1-Build(2021.05.06-99426trunc)_D64DMHS> clear exec lsnexecute successDMHS> load 0 "sch.name='SCOTT'" clear|PDB|"ORCLPDB1“|dictCSL[WARN]: Detect the CLEAR mask, the mask will empty all dict file, please confirm whether to continue?(Y/N)Ycopy mask is : |CLEAR|REPexecute finish, please look up log file of exec module to check data load resultDMHS>DMHS> load 0 "sch.name='SCOTT'" drop|create|insert|alter|PDB|"ORCLPDB1"|dictCSL[WARN]: Detect the DROP mask, this mask will drop target table, confirm to continue?(Y/N)Ycopy mask is : |CREATE|DROP|INSERT|ALTER|TABLE|DICT|OBJID|REPexecute finish, please look up log file of exec module to check data load resultDMHS>DMHS> start cptexecute success
八、测试数据同步和DDL操作
1.查看目的端数据

2.源端创建新表

3.目的端验证新表是否存在

4.源端插入数据

5.目的端查看数据

6.查看日志如下,查看目的端日志

九、配置数据对比链路
1.查看链路状态

2.点击同步链路监控三角形

3.点击数据对比

4.出现如下窗口

5.出现如下报错

需要我们去后台修改脚本,启动Agent代理

6.重启Hsagent
[oracle@yuanzj19c:/u01/app/dmhs_orclpdb1/hs_agent]$ ./DmhsAgentService restartStopping DmhsAgentService: [ OK ]Starting DmhsAgentService: [ OK ]
7.继续点击数据对比
注意:
1.如果选择源端部署Veri,源端需要部署dm客户端,用来连接目的端达梦数据库,
2.如果在目的端部署Veri,目的端部署oracle客户端,用来连接oracle数据库
A.假设在源端部署Veri客户端
1.选择在源端部署Veri

出现如下错误

2.修改源端oracle协议
①在oracle 12C服务器端$oracle_home/network/admin目录下 新建文件sqlnet.oraSQLNET.ALLOWED_LOGON_VERSION_SERVER=11;SQLNET.ALLOWED_LOGON_VERSION_CLIENT=11;②在服务器端,管理员身份登录,修改密码sqlplus as sysdbaalter user 服务名 identified by 密码;alter user c##dmhs identified by dmhs123;注意:配置完服务器端的sqlnet.ora文件后,务必要重新修改密码,否则仍登录失败
3. 选择要对比的对象scott,点击下一步

4.勾选对话框,点击下一步

5.选择不获取原始数据点击执行

6.然后出现如下报错信息
2021-05-16 15:46:50 VERI[INFO]: veri odbc connect str: DBQ=192.168.3.12:1521/orclpdb1;DRIVER={Oracle in OraDB12home1};UID=c##dmhs;2021-05-16 15:46:50 VERI[ERROR]: state:01000 errmsg:[unixODBC][Driver Manager]Can't open lib 'Oracle in OraDB12home1' : file not found2021-05-16 15:46:50 VERI[ERROR]: connect to database fail: DBQ=192.168.3.12:1521/orclpdb1;DRIVER={Oracle in OraDB12home1};UID=c##dmhs;, try again after 30 second.
这就是没有在服务器上配置odbc,dmhs连接不到oracle数据库,因为是oracle数据库服务器,已经存在odbc,直接配置odbc即可。
7.配置ODBC
[root@yuanzj19c odbc]# cat etc/odbc.ini[ORACLE]Description = ORACLE ODBC DSNDriver = Oracle in OraDB12home1SERVER = 127.0.0.1PORT = 1521ServerName = orcl[root@yuanzj19c odbc]# cat etc/odbcinst.ini# Example driver definitions# Example driver definitions[Oracle in OraDB12home1]Description = ODBC for OracleDriver = u01/app/oracle/product/19.0.0/dbhome_1/lib/libsqora.so.19.1Threading = 0
8.测试连通性

9.继续观察报错日志,出现如下报错
2021-05-16 15:54:50 VERI[INFO]: veri odbc connect str: SERVER=192.168.3.92;DRIVER=DM8 ODBC DRIVER;UID=c##dmhs;2021-05-16 15:54:50 VERI[ERROR]: state:01000 errmsg:[unixODBC][Driver Manager]Can't open lib 'DM8 ODBC DRIVER' : file not found2021-05-16 15:54:50 VERI[ERROR]: connect to database fail: SERVER=192.168.3.92;DRIVER=DM8 ODBC DRIVER;UID=c##dmhs;, try again after 30 second.
10.安装达梦数据客户端
注意:
需要配置odbc连接达梦,此时需要安装达梦数据库客户端,然后配置odbc,安装达梦客户端(过程略)
11.配置odbc驱动
cp /opt/dmdbms/drivers/odbc/* /u01/app/dmhs_orclpdb1/hs_agent/
修改oracle环境变量增加如下参数
export DM_HOME=/opt/dmdbmsexport PATH=$PATH:$HOME/.local/bin:$HOME/bin:$DM_HOME/bin:$DM_HOME/toolexport LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$DM_HOME/bin
odbc配置信息如下:
[root@yuanzj19c hs_agent]# cat etc/odbc.ini[ORACLE]Description = ORACLE ODBC DSNDriver = Oracle in OraDB12home1SERVER = 127.0.0.1PORT = 1521ServerName = orcl[DM8]Description = DM8 ODBC DSNDriver = DM8 ODBC DRIVERSERVER = 192.168.3.92TCP_PORT = 5236[root@yuanzj19c hs_agent]# cat etc/odbcinst.ini# Example driver definitions# Example driver definitions[Oracle in OraDB12home1]Description = ODBC for OracleDriver = u01/app/oracle/product/19.0.0/dbhome_1/lib/libsqora.so.19.1Threading = 0[DM8 ODBC DRIVER]Description = ODBC for DM8Driver = u01/app/dmhs_orclpdb1/hs_agent/libdodbc.soThreading = 0
12.再次执行数据对比

B.假设在目的端部署Veri客户端
1.选择目的端部署Veri

出现如下报错:

2.修改源端oracle协议
①在oracle 12C服务器端$oracle_home/network/admin目录下 新建文件sqlnet.oraSQLNET.ALLOWED_LOGON_VERSION_SERVER=11;SQLNET.ALLOWED_LOGON_VERSION_CLIENT=11;②在服务器端,管理员身份登录,修改密码sqlplus as sysdbaalter user 服务名 identified by 密码;alter user c##dmhs identified by dmhs123;注意:配置完服务器端的sqlnet.ora文件后,务必要重新修改密码,否则仍登录失败
3.选择要对比的对象scott,点击下一步

4.勾选对话框,点击下一步

5.选择不获取原始数据点击执行

出现如下报错:

是因为没有连接到源端数据库,所以DMHS客户端卡着了,不会进行下一步,我们就需要配置oracle客户端和odbc连接oracle数据库
6.安装oracle客户端,并配置odbc
a.在oracle官网下载如下软件
oracle-instantclient19.11-odbc-19.11.0.0.0-1.x86_64.rpmoracle-instantclient19.11-basic-19.11.0.0.0-1.x86_64.rpm
b.在服务器上安装oracle客户端
[root@yuanzjdm8 soft]# yum -y install oracle-instantclient19.11-basic-19.11.0.0.0-1.x86_64.rpm oracle-instantclient19.11-odbc-19.11.0.0.0-1.x86_64.rpm已加载插件:ulninfo正在检查 oracle-instantclient19.11-basic-19.11.0.0.0-1.x86_64.rpm: oracle-instantclient19.11-basic-19.11.0.0.0-1.x86_64oracle-instantclient19.11-basic-19.11.0.0.0-1.x86_64.rpm 将被安装正在检查 oracle-instantclient19.11-odbc-19.11.0.0.0-1.x86_64.rpm: oracle-instantclient19.11-odbc-19.11.0.0.0-1.x86_64oracle-instantclient19.11-odbc-19.11.0.0.0-1.x86_64.rpm 将被安装正在解决依赖关系--> 正在检查事务---> 软件包 oracle-instantclient19.11-basic.x86_64.0.19.11.0.0.0-1 将被 安装---> 软件包 oracle-instantclient19.11-odbc.x86_64.0.19.11.0.0.0-1 将被 安装………………….已安装:oracle-instantclient19.11-basic.x86_64 0:19.11.0.0.0-1oracle-instantclient19.11-odbc.x86_64 0:19.11.0.0.0-1
c.配置tnsnames.ora文件
[root@yuanzjdm8 admin]# pwd/usr/lib/oracle/19.11/client64/lib/network/admin[root@yuanzjdm8 admin]# cat tnsnames.oraORCL =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.3.12)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = orcl)))ORCLPDB1 =(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.3.12)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = orclpdb1)))
d.安装配置odbc客户端
[root@yuanzjdm8 lib]# yum -y install unixODBC已加载插件:ulninfoOS-YUM | 3.6 kB 00:00:00正在解决依赖关系--> 正在检查事务---> 软件包 unixODBC.x86_64.0.2.3.1-14.0.1.el7 将被 安装--> 解决依赖关系完成依赖关系解决………………………….已安装:unixODBC.x86_64 0:2.3.1-14.0.1.el7完毕!
e.配置odbc客户端
[root@yuanzjdm8 ~]# cat /etc/odbc.ini[ORACLE]Description = ORACLE ODBC DSNDriver = Oracle in OraDB12home1ServerName = orclpdb1[root@yuanzjdm8 ~]# cat /etc/odbcinst.ini# Example driver definitions[Oracle in OraDB12home1]Description = ODBC for OracleDriver = /usr/lib/oracle/19.11/client64/lib/libsqora.so.19.1Threading = 0
f.测试连通性

7.浏览器有如下报错,继续解决报错:
2021-05-16 14:44:53 VERI[ERROR]: state:01000 errmsg:[unixODBC][Driver Manager]Can't open lib 'DM8 ODBC DRIVER' : file not found2021-05-16 14:44:53 VERI[ERROR]: connect to database fail: SERVER=192.168.3.92;DRIVER=DM8 ODBC DRIVER;UID=c##dmhs;, try again after 30 second.2021-05-16 14:44:53 VERI[ERROR]: after 5 minutes, connect to database is still failure: SERVER=192.168.3.92;DRIVER=DM8 ODBC DRIVER;UID=c##dmhs;.2021-05-16 14:44:53 VERI[ERROR]: connect the database error2021-05-16 14:44:53 VERI[ERROR]: the jobfile has some error
8. 配置odbc,使dmhs可以连接到目的端达梦数据库,配置如下所示
[root@yuanzjdm8 ~]# cat /etc/odbc.ini[ORACLE]Description = ORACLE ODBC DSNDriver = Oracle in OraDB12home1ServerName = orclpdb1[DM8]Description = DM8 ODBC DSNDriver = DM8 ODBC DRIVERSERVER = 192.168.3.92TCP_PORT = 5236[root@yuanzjdm8 ~]# cat /etc/odbcinst.ini# Example driver definitions[Oracle in OraDB12home1]Description = ODBC for OracleDriver = /usr/lib/oracle/19.11/client64/lib/libsqora.so.19.1Threading = 0[DM8 ODBC DRIVER]Description = ODBC for DM8Driver = /opt/dmdbms/bin/libdodbc.soThreading = 0
9.重新执行数据对比

十、dmhs.hs配置文件参考
1.源端
<?xml version="1.0" encoding="GB2312" standalone="no"?><dmhs><base><lang>en</lang><mgr_port>5345</mgr_port><name>orclpdb1_cpt</name><ckpt_interval>60</ckpt_interval><siteid>4</siteid><version>2.0</version></base><cpt><enable>1</enable><name>cpt</name><db_type>ORACLE12C</db_type><db_server>orcl</db_server><db_user>c##dmhs</db_user><db_pwd>dmhs123</db_pwd><db_port>1521</db_port><idle_time>300</idle_time><ddl_mask>OBJ:PTABLE:OP:DEFINE:PARTITION</ddl_mask><cpt_mask/><parse_thr>1</parse_thr><check_date>1</check_date><arch><clear_flag>0</clear_flag><clear_interval>600</clear_interval></arch><send><max_log_num>2000</max_log_num><ip>192.168.3.92</ip><mgr_port>5345</mgr_port><net_pack_size>256</net_pack_size><data_port>5346</data_port><timeout>0</timeout><filter><name_len>255</name_len><enable><item>ORCLPDB1.SCOTT.*</item></enable></filter><map><item>ORCLPDB1.SCOTT.*==SCOTT.*</item></map></send><send_delay_second>0</send_delay_second><start_scn>0</start_scn><supplement_log>0</supplement_log><rec_heap_size>16</rec_heap_size><vpool_size>8</vpool_size><enable_mview>0</enable_mview><send_lst>2</send_lst></cpt></dmhs>
2.目的端
<?xml version="1.0" encoding="GB2312" standalone="no"?><dmhs><base><lang>en</lang><mgr_port>5345</mgr_port><name>orclpdb1_exec</name><ckpt_interval>60</ckpt_interval><siteid>3</siteid><version>2.0</version></base><exec><recv><mgr_port>5345</mgr_port><data_port>5346</data_port></recv><enable>1</enable><name>exec</name><db_type>DM8</db_type><db_server>192.168.3.92</db_server><db_user>c##dmhs</db_user><db_pwd>dmhs12345</db_pwd><db_port>5236</db_port></exec></dmhs>
十一、修改参数重启不生效
注意:修改配置文件之后,重启相应的服务之后,参数没有生效,可以去hsem数据库里面修改相应的参数
(慎用)
DMHS_SERVER
VERI_AGENT_CONFIG
VERI_CONFIG
VERI_DMJOB
VERI_JOB
这几个是相关参数的文件的表




