目录
1 安装工作
1.1 源端
1.1.1 安装Oracle
(1)创建组、用户、设密:
[root@dmhs03 ~]# groupadd oinstall
[root@dmhs03 ~]# useradd -g oinstall -m -d /home/oracle -s /bin/bash oracle
[root@dmhs03 ~]# passwd oracle
(2)规划路径:Oracle用户下:
[oracle@dmhs03 ~]$ mkdir dmhs_oracle # 源端dmhs安装目录;
[oracle@dmhs03 ~]$ mkdir oriso # dmhs安装压缩包目录;
[oracle@dmhs03 ~]$ mkdir oracle11 # oracle数据库安装目录;
参考文章:静默安装Oracle数据库_ 咀个栗子
1.1.2 安装Oracle版本的DMHS
(1)上传安装包至目录oriso并解压:
[oracle@dmhs03 oriso]$ unzip dmhs_oracle11_rh6_64_veri_20220301_x86_rh7.zip
(2)将压缩文件中的release文件移至dmhs_oracle目录下,并改名为bin:
[oracle@dmhs03 oriso]$ mv release /home/oracle/dmhs_oracle
[oracle@dmhs03 oriso]$ cd /home/oracle/dmhs_oracle
[oracle@dmhs03 dmhs_oracle]$ mv release bin
1.2 目的端
1.2.1 安装DM8
(1)创建组、用户、设密:
[root@dmhs04 /]# groupadd dinstall
[root@dmhs04 /]# useradd -g dinstall -m -d /home/dmdba -s /bin/bash dmdba
[root@dmhs04 /]# passwd dmdba
(2)规划路径:dmdba用户下
[dmdba@dmhs04 ~]$ mkdir dmhs_dm8 # 目的端dmhs安装目录;
[dmdba@dmhs04 ~]$ mkdir dmiso # dmhs安装压缩包目录;
[dmdba@dmhs04 ~]$ mkdir dmdbms # dm8数据库安装目录;
参考文章:Linux Centos7 下的达梦数据库单机部署实践_idmon
1.2.2 安装DM8版本的DMHS
(1)上传安装包至目录dmiso并解压:
[dmdba@dmhs04 dmiso]# unzip dmhs_dm8_rh6_64_veri_20220301_x86_kylin10.zip
(2)将压缩文件中的release文件移至dmhs_dm8目录下,并改名为bin:
[dmdba@dmhs04 dmiso]# mv release /home/dmdba/dmhs_dm8
[dmdba@dmhs04 dmiso]# cd /home/dmdba/dmhs_dm8
[dmdba@dmhs04 dmhs_dm8]# mv release bin
2 系统配置
2.1 源端
2.1.1 修改环境变量
(1)oracle用户目录下
#在Oracle用户目录下vim .bash_profile:
[oracle@dmhs03 dmhs_oracle]$ cd
[oracle@dmhs03 ~]$ vim .bash_profile
#添加以下内容:
ORACLE_BASE=/home/oracle
ORACLE_HOME=$ORACLE_BASE/oracle11
ORACLE_SID=orcl
PATH=$PATH:$ORACLE_HOME/bin
export ORACLE_BASE ORACLE_HOME ORACLE_SID PATH
export DMHS_HOME=/home/oracle/dmhs_oracle/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/oracle/dmhs_dm8/bin
#保存后source执行:
[oracle@dmhs03 ~]$ source .bash_profile
(2)设置字符集环境变量
#进入Oracle数据库客户端:
[oracle@dmhs03 ~]$ sqlplus / as sysdba
#查看字符集类型:
SQL> select userenv('language') from dual;
#vim添加:
[oracle@dmhs03 ~]$ vim .bash_profile
export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK
#source执行:
[oracle@dmhs03 ~]$ source .bash_profile
2.1.2 配置数据库服务网络服务名
修改 tnsname.ora来配置数据库服务监听:
[oracle@dmhs03 ~]$ vi /home/oracle/oracle11/network/admin/tnsnames.ora
#修改以下内容:
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.50.141)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
2.1.3 开启归档及附加日志
(1)修改数据库归档模式
#进入Oracle数据库客户端
[oracle@dmhs03 ~]$ sqlplus / as sysdba
#开启归档
SQL> shutdown immediate --关闭数据库
SQL> startup mount --mount方式打开数据库
SQL> alter database archivelog; --开启数据库归档
#设置归档文件路径
SQL> alter system set db_recovery_file_dest='';
SQL> alter system set log_archive_dest='/home/oracle/archivelog';
#重启数据库
SQL> shutdown immediate
SQL> startup mount
SQL> alter database open;
#查看数据库归档模式
SQL> archive log list;
(2)开启最小附加日志及全列日志
SQL> alter database add supplemental log data;
SQL> alter database add supplemental log data (all) columns;
SQL> select supplemental_log_data_min, supplemental_log_data_all from v$database;
查询结果显示都为YES,即为开启日志成功:
2.1.4 创建数据库用户dmhs
SQL> create user dmhs identified by LBHA888; --创建dmhs用户,密码为LBHA888;
SQL> grant dba to dmhs; --赋权dba给dmhs用户;
SQL> grant create table to dmhs; --赋予创建表的权限;
SQL> grant select any table to dmhs; --赋予查询表的权限;
创建一个test1表,并插入数据
SQL> create table dmhs.test1(id number ,testname varchar2(12));
SQL> insert into dmhs.test1 values(01 ,'dm8');
SQL> insert into dmhs.test1 values(02 ,'dba');
SQL> commit ;
2.1.5 配置源端dmhs.hs文件
在dmhs安装路径的bin目录下,新建一个dmhs.hs文件
[oracle@dmhs03 bin]$ touch dmhs.hs
[oracle@dmhs03 bin]$ vim dmhs.hs
添加以下内容:
<?xml version="1.0" encoding="GB2312"?>
<dmhs>
<base><!-- 管理模块的基本配置 -->
<lang>en</lang><!-- 语言选项,ch为中文,en为英文 -->
<mgr_port>5355</mgr_port><!-- 管理端口号,默认为5345,最小值1000,最大值65535 -->
<ckpt_interval>60</ckpt_interval><!--执行端检查点间隔,默认60s,最小值10s,最大值65536s -->
<siteid>1</siteid><!-- 站点ID,这个ID配置时要注意,全局唯一,最小值0,最大值65535 -->
<version>2.0</version><!-- 版本号-->
</base>
<cpt><!-- 这项配置可以配置多个,也就是可以配置多个捕获模块,如果该节点只作为执行端,该节点需要删除 -->
<db_type>oracle11g</db_type><!-- Oracle数据库类型,限定值Oracle10g,Oracle11g,dm6,dm7 -->
<db_server>orcl</db_server><!-- 数据库实例名-->
<db_user>dmhs</db_user><!-- 需要同步的数据库用户名,默认为SYSDBA -->
<db_pwd>LBHA888</db_pwd><!-- 数据库用户口令,默认为SYSDBA -->
<db_port>1521</db_port><!-- Oracle数据库端口号-->
<ddl_mask>op:obj</ddl_mask><!-- 分析端是否支持DDL同步,可选项0(不支持DDL), 1(支持DDL),需要将安装脚本中对应的DDL脚本在源端执行-->
<arch>
<clear_interval>600</clear_interval><!-- 归档文件清理间隔,默认为600s,最小值60s,最大值2000000000s -->
<clear_flag>0</clear_flag><!-- 清除归档日志的方式,可选项0(无动作), 1(删除归档文件), 2(表示移走归档文件)-->
</arch>
<send><!-- 发送模块配置 -->
<ip>192.168.50.142</ip><!-- 目的端IP,默认127.0.0.1 -->
<mgr_port>5345</mgr_port><!-- 目的端管理端口,默认为5345,最小值1000,最大值65535 -->
<data_port>5346</data_port><!-- 目的端数据接收端口号,默认为5346,最小值1000,最大值65535 -->
<filter><!-- 过滤,必须指定,一定要注意大小写,要跟源库中的对像名大小写保持一致 -->
<enable>
<item>DMHS.*</item><!-- 需要同步的源端数据库对象 -->
</enable>
</filter>
<map>
<item>DMHS.*==SYSDBA.*</item><!-- 映射,将源端数据库对象映射到目的端的SYSDBA用户中 -->
</map>
</send>
</cpt>
</dmhs>
2.2 目的端
2.2.1 修改环境变量
dmdba用户目录下
#在dmdba用户目录下vim .bash_profile:
[dmdba@dmhs04 ~]$ vim .bash_profile
#添加以下内容:
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/home/dmdba/dmdbms/bin"
export DM_HOME="/home/dmdba/dmdbms"
export PATH="$PATH:/home/dmdba/dmdbms/bin"
export DMHS_HOME=/home/dmdba/dmhs_dm8/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/app/dmhs_dm8/bin
#保存后source执行:
[dmdba@dmhs04 ~]$ source .bash_profile
2.2.2 配置目的端dmhs.hs文件
在dmhs安装路径的bin目录下,新建一个dmhs.hs文件
[dmdba@dmhs04 bin]$ touch dmhs.hs
[dmdba@dmhs04 bin]$ vim dmhs.hs
添加以下内容:
<?xml version="1.0" encoding="GB2312"?>
<dmhs>
<base><!-- 管理模块的基本配置 -->
<lang>en</lang><!-- 语言选项,ch为中文,en为英文 -->
<mgr_port>5345</mgr_port><!-- 管理端口号,默认为5345,最小值1000,最大值65535 -->
<ckpt_interval>60</ckpt_interval><!--执行端检查点间隔,默认60s,最小值10s,最大值65536s -->
<siteid>2</siteid><!-- 站点ID,这个ID配置时要注意,全局唯一,最小值0,最大值65535 -->
<version>2.0</version><!-- 版本 -->
</base>
<exec>
<recv>
<data_port>5346</data_port><!-- 目的端数据接收端口号,默认为5346,最小值1000,最大值65535 -->
</recv>
<db_type>dm8</db_type><!-- 目的端数据库类型dm8 -->
<db_server>192.168.50.142</db_server><!-- 目的端数据库实例名-->
<db_user>SYSDBA</db_user><!-- 目的端数据库用户-->
<db_pwd>SYSDBA</db_pwd><!-- 目的端数据库用户口令-->
<db_port>5237</db_port><!-- 目的端数据库端口号-->
<db_name></db_name><!-- 目的端数据库名-->
<exec_thr>4</exec_thr>
<exec_sql>1024</exec_sql>
<exec_trx> 5000 </exec_trx>
<exec_rows>1000</exec_rows>
</exec>
</dmhs>
3 启动DMHS实现数据同步
3.1 目的端DM8启动
[dmdba@dmhs04 bin]$ ./dmhs_server dmhs.hs
start exec
3.2 源端Oracle启动
[oracle@dmhs03 bin]$ ./dmhs_server dmhs.hs
clear exec lsn
copy 0 "sch.name='DMHS'" CREATE|INSERT|DICT
start cpt
3.3 验证数据同步情况
(1)在源端开新的终端连接Oracle,执行select * from dmhs.test1;查询;
(2)在目的端使用disql连接DM8执行select * from test1;查询;
(3)实时同步验证
源端创建数据:
SQL> create table dmhs.test2(id number ,testname varchar2(12));
SQL> insert into dmhs.test2 values(01 ,'dmhs');
SQL> commit ;
目的端查询: