一、前言
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 list
Database log mode Archive Mode
Automatic archival Enabled
Archive destination oraarch
Oldest online log sequence 6
Next log sequence to archive 8
Current 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 off
SYS@orcl> @ddl_sql_ora.sql
Table created.
Trigger created.
复制
B)在cdb数据库中授权C##DMHS,执行脚本ddl_grant_user.sql
SYS@orcl> @ddl_grant_user.sql
Grant 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 sysdba
SQL*Plus: Release 19.0.0.0.0 - Production on Sat May 15 21:53:10 2021
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle. All rights reserved.
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
SYS@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@orclpdb1
SQL*Plus: Release 19.0.0.0.0 - Production on Sat May 15 22:04:09 2021
Version 19.3.0.0.0
Copyright (c) 1982, 2019, Oracle. All rights reserved.
Last Successful login time: Sat May 15 2021 22:02:43 +08:00
Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.3.0.0.0
SCOTT@orclpdb1> col table_name for a45;
SCOTT@orclpdb1> select table_name from tabs;
TABLE_NAME
---------------------------------------------
DEPT
EMP
BONUS
SALGRADE
SCOTT@orclpdb1> select count(*) from emp;
COUNT(*)
----------
14
复制
4.目的端DM配置
1.开启归档
[dmdba@yuanzjdm8 ~]$ disql SYSDBA/SYSDBA123
open fail! path:./libcrypto.so
服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 2.117(ms)
disql V8
SQL> 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 -i
Extract install files.........
1.英文(English)
2.简体中文(简体中文)
请选择安装语言[2.简体中文(简体中文)]:2
/tmp/DMHSInstall/install.log
1.免费试用达梦数据实时同步
2.使用已申请的Key文件
验证许可证文件[1.免费试用达梦数据实时同步]:2
Key文件路径:/root/soft/dmhs.key
Key文件限制信息如下:
有效日期:2022-03-25
用户名称:达梦公司产品试用
服务器颁布类型:试用版
发布类型:企业版
Key类型:企业版
授权用户数:无限制
并发连接数:无限制
1.精简版
2.完整版(web客户端)
3.自定义
安装类型[1.精简版]:3
1.实时同步软件服务器
2.远程部署工具
3.实时同步软件客户端
4.内置数据库
5.ODBC驱动
6.实时同步软件配置助手
7.手册
输入选择安装组件的序号,以','分隔:3,4
1.实时同步软件客户端
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]# ls
bin bin_bak data data_bak log
[root@yuanzjdm8 db]# cp -r opt/dmdbms/bin/* ./bin/
[root@yuanzjdm8 db]# cp bin_bak/Dm* ../bin
cp:是否覆盖"../bin/DmAuditMonitorService"?n
cp:是否覆盖"../bin/DmInstanceMonitorService"?n
cp:是否覆盖"../bin/DmJobMonitorService"?n
复制
4.初始化HSEM内置数据库
[root@yuanzjdm8 bin]# ./dminit path=/opt/dmhs/db/data PAGE_SIZE=16 INSTANCE_NAME=HSDB PORT_NUM=15236
initdb V8
db version: 0x7000c
file dm.key not found, use default license!
License will expire on 2022-03-26
Normal of FAST
Normal of DEFAULT
Normal of RECYCLE
Normal of KEEP
Normal of ROLL
log file path: /opt/dmhs/db/data/DAMENG/DAMENG01.log
log file path: opt/dmhs/db/data/DAMENG/DAMENG02.log
write 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 start
Using CATALINA_BASE: opt/dmhs/web
Using CATALINA_HOME: opt/dmhs/web
Using CATALINA_TMPDIR: opt/dmhs/web/temp
Using JRE_HOME: opt/dmhs/jdk/jre
Using CLASSPATH: opt/dmhs/web/bin/bootstrap.jar:/opt/dmhs/web/bin/tomcat-juli.jar
Using CATALINA_PID: opt/dmhs/web/bin/pids/DmhsWebService.pid
Tomcat 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]# ls
dmhs_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]# ls
debug 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]# ls
bin
[root@yuanzjdm8 dmhs_orclpdb1]# mv bin/hs_agent/ .
[root@yuanzjdm8 dmhs_orclpdb1]# pwd
/opt/dmhs_orclpdb1
[root@yuanzjdm8 dmhs_orclpdb1]# ll
总用量 8
drwxr-xr-x 4 root root 4096 5月 16 07:21 bin
drwxr-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 functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin
export PATH
export DMHS_HOME=/opt/dmhs
export 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 start
Starting 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 restart
Stopping 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]$ ls
dmhs_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]$ ls
debug 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]$ ls
bin
[oracle@yuanzj19c:/u01/app/dmhs_orclpdb1]$ mv bin/hs_agent/ .
[oracle@yuanzj19c:/u01/app/dmhs_orclpdb1]$ ls
bin hs_agent
复制
3. 上传dmoci到/u01/app/dmhs_orclpdb1/hs_agent目录下
过程略
4. 编辑oracle用户环境变量,其中主要定义DMHS_HOME的环境变量,具体如下
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/.local/bin:$HOME/bin
export PATH
#Use for oracle12c install added by jt&&yzj
PS1=[`whoami`@`hostname`:'$PWD]$ '; export PS1
TMP=/tmp; export TMP
TMPDIR=$TMP; export TMPDIR
ORACLE_BASE=/u01/app/oracle; export ORACLE_BASE
ORACLE_HOME=$ORACLE_BASE/product/19.0.0/dbhome_1; export ORACLE_HOME
ORACLE_SID=orcl; export ORACLE_SID
ORACLE_TERM=xterm; export ORACLE_TERM
DMHS_HOME=/u01/app/dmhs_orclpdb1
PATH=/usr/sbin:/usr/local/bin:$PATH:$ORACLE_HOME/bin:$PATH; export PATH
LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib:$DMHS_HOME/bin:$DMHS_HOME/hs_agent:$LD_LIBRARY_PATH; export LD_LIBRARY_PATH
CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlib; export CLASSPATH
NLS_LANG=AMERICAN_AMERICA.AL32UTF8; export NLS_LANG
alias 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]$ ls
bin 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 start
Starting DmhsAgentService: [ OK ]
复制
7. 此时观察浏览器,会发现源端agent注册到平台
其中192.168.3.12的HsAgent是失败的,不管怎么刷新都是失败的状态,看日志
[root@yuanzj19c hs_agent]# tail -f log/dmhs_agent_202105.log
2021-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)_D64
2021-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管理监听端口:5456
2021-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.log
2021-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_TABLE
2021-05-16 11:06:44 EXE[WARN]: create table: DMHS_DTYPE_MAP
2021-05-16 11:06:45 EXE[WARN]: create table: DMHS_ERROR_TSK_TABLE
2021-05-16 11:06:45 EXE[WARN]: create table: DMHS_TABLE_SEQID
2021-05-16 11:06:45 EXE[WARN]: create table: DMHS_CHECKPOINT_TABLE
2021-05-16 11:06:45 EXE[WARN]: create table: DMHS_ERROR_TABLE
2021-05-16 11:06:45 EXE[INFO]: EXEC_V3.1.2_D64
2021-05-16 11:06:45 REV[INFO]: exec server data receiving thread created successfully, listening data port : 5346
2021-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 start
Starting DmhsServiceorclpdb1_cpt: [ OK ]
[oracle@yuanzj19c:/u01/app/dmhs_orclpdb1/INST_HS/orclpdb1_cpt]$ tail -f log/dmhs_202105.log
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-25
2021-05-16 11:13:23 MGR[INFO]: load config file successful,site no:5, manager port :5345, poll interval:3
2021-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]$ ./DmhsService
Stopping 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-25
2021-05-16 11:13:23 MGR[INFO]: load config file successful,site no:5, manager port :5345, poll interval:3
2021-05-16 11:13:24 MGR[INFO]: manager listening port:5345
2021-05-16 11:13:36 MGR[INFO]: monitor 192.168.3.12 's login
2021-05-16 11:13:36 MGR[INFO]: monitor 192.168.3.12 's login
2021-05-16 11:13:36 MGR[INFO]: monitor 192.168.3.12 's login
2021-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-25
2021-05-16 11:22:05 MGR[INFO]: load config file successful,site no:5, manager port :5345, poll interval:3
2021-05-16 11:22:05 MGR[INFO]: manager listening port:5345
2021-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 login
2021-05-16 11:22:36 MGR[INFO]: monitor 192.168.3.12 's login
2021-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_console
DMHS console tool: V4.1.1-Build(2021.05.06-99426trunc)_D64
Copyright (c) 2020, DMHS. All rights reserved.
Type ? or "help" for help, type "quit" to quit console.
Connected to DMHS: 127.0.0.1:5345
execute success
Dameng HS Server V4.1.1-Build(2021.05.06-99426trunc)_D64
DMHS> clear exec lsn
execute success
DMHS> load 0 "sch.name='SCOTT'" clear|PDB|"ORCLPDB1“|dict
CSL[WARN]: Detect the CLEAR mask, the mask will empty all dict file, please confirm whether to continue?(Y/N)
Y
copy mask is : |CLEAR|REP
execute finish, please look up log file of exec module to check data load result
DMHS>
DMHS> load 0 "sch.name='SCOTT'" drop|create|insert|alter|PDB|"ORCLPDB1"|dict
CSL[WARN]: Detect the DROP mask, this mask will drop target table, confirm to continue?(Y/N)
Y
copy mask is : |CREATE|DROP|INSERT|ALTER|TABLE|DICT|OBJID|REP
execute finish, please look up log file of exec module to check data load result
DMHS>
DMHS> start cpt
execute 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 restart
Stopping 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.ora
SQLNET.ALLOWED_LOGON_VERSION_SERVER=11;
SQLNET.ALLOWED_LOGON_VERSION_CLIENT=11;
②在服务器端,管理员身份登录,修改密码
sqlplus as sysdba
alter 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 found
2021-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 DSN
Driver = Oracle in OraDB12home1
SERVER = 127.0.0.1
PORT = 1521
ServerName = orcl
[root@yuanzj19c odbc]# cat etc/odbcinst.ini
# Example driver definitions
# Example driver definitions
[Oracle in OraDB12home1]
Description = ODBC for Oracle
Driver = u01/app/oracle/product/19.0.0/dbhome_1/lib/libsqora.so.19.1
Threading = 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 found
2021-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/dmdbms
export PATH=$PATH:$HOME/.local/bin:$HOME/bin:$DM_HOME/bin:$DM_HOME/tool
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$DM_HOME/bin
复制
odbc配置信息如下:
[root@yuanzj19c hs_agent]# cat etc/odbc.ini
[ORACLE]
Description = ORACLE ODBC DSN
Driver = Oracle in OraDB12home1
SERVER = 127.0.0.1
PORT = 1521
ServerName = orcl
[DM8]
Description = DM8 ODBC DSN
Driver = DM8 ODBC DRIVER
SERVER = 192.168.3.92
TCP_PORT = 5236
[root@yuanzj19c hs_agent]# cat etc/odbcinst.ini
# Example driver definitions
# Example driver definitions
[Oracle in OraDB12home1]
Description = ODBC for Oracle
Driver = u01/app/oracle/product/19.0.0/dbhome_1/lib/libsqora.so.19.1
Threading = 0
[DM8 ODBC DRIVER]
Description = ODBC for DM8
Driver = u01/app/dmhs_orclpdb1/hs_agent/libdodbc.so
Threading = 0
复制
12.再次执行数据对比
B.假设在目的端部署Veri客户端
1.选择目的端部署Veri
出现如下报错:
2.修改源端oracle协议
①在oracle 12C服务器端$oracle_home/network/admin目录下 新建文件sqlnet.ora
SQLNET.ALLOWED_LOGON_VERSION_SERVER=11;
SQLNET.ALLOWED_LOGON_VERSION_CLIENT=11;
②在服务器端,管理员身份登录,修改密码
sqlplus as sysdba
alter 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.rpm
oracle-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_64
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: oracle-instantclient19.11-odbc-19.11.0.0.0-1.x86_64
oracle-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-1
oracle-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.ora
ORCL =
(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
已加载插件:ulninfo
OS-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 DSN
Driver = Oracle in OraDB12home1
ServerName = orclpdb1
[root@yuanzjdm8 ~]# cat /etc/odbcinst.ini
# Example driver definitions
[Oracle in OraDB12home1]
Description = ODBC for Oracle
Driver = /usr/lib/oracle/19.11/client64/lib/libsqora.so.19.1
Threading = 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 found
2021-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 error
2021-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 DSN
Driver = Oracle in OraDB12home1
ServerName = orclpdb1
[DM8]
Description = DM8 ODBC DSN
Driver = DM8 ODBC DRIVER
SERVER = 192.168.3.92
TCP_PORT = 5236
[root@yuanzjdm8 ~]# cat /etc/odbcinst.ini
# Example driver definitions
[Oracle in OraDB12home1]
Description = ODBC for Oracle
Driver = /usr/lib/oracle/19.11/client64/lib/libsqora.so.19.1
Threading = 0
[DM8 ODBC DRIVER]
Description = ODBC for DM8
Driver = /opt/dmdbms/bin/libdodbc.so
Threading = 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
这几个是相关参数的文件的表
评论
