DMHS同步Oracle11G数据到DM8

一、基础概念

1.1DMHS

达梦数据实时同步软件 DMHS 是达梦公司推出的新一代支持异构环境的高性能、高可靠和高可扩展的数据库实时同步系统。

DMHS 同步服务主要包括四个模块,分别是捕获模块(CPT)、装载模块(LOAD)、传输 模块(NET)以及执行模块(EXEC),这些模块统一由管理模块(MGR)进行管理执行。

1.2部署分配

源端目的端
ip地址192.168.198.128192.168.198.128
数据库OracleDM8
部署地址/home/oracle/dmhs/home/dmdba/dmhs
数据库端口号15215236
DMHS服务端口53455345
数据接收端口\5346

二、安装前准备

2.1oracle端(源端)前期准备

在安装 DMHS 之前,源端数据库管理员应当首先完成安装前的准备工作。

  1. 检查 ORACLE 数据库归档日志功能是否已开启;

  2. 检查 ORACLE 数据库最小附加日志功能是否已开启;

  3. 如果需要同步 DDL 操作,还需要检查 ORACLE 数据库回收站是否已关闭。

2.1.1检查系统信息

在安装 DMHS 前,需要检查当前操作系统的相关信息,确认 DMHS 安装程序与当 前操作系统匹配,以保证 DMHS 能够正确安装和运行。

getconf LONG_BIT         ##查看系统位数
cat /etc/redhat-release  ##查看release信息
uname -a                 ##查看系统名称

2.1.2检查系统内存与存储空间

为了保证 DMHS 的正确安装和运行,要尽量保证操作系统至少 1GB 的可用内存(RAM)。 如果可用内存过少,可能导致 DMHS 安装或启动失败。

1.检查内存

#获取内存总大小
grep MemTotal /proc/meminfo
 
#获取交换分区大小
grep SwapTotal /proc/meminfo
 
#获取内存使用详情
free

2.检查存储空间

DMHS 完全安装需要 1GB 的存储空间,用户需要提前规划好安装目录,预留足够 的存储空间。并且 DMHS 安装程序在安装时将产生临时文件,临时文件需要 1GB 的存储空间,临时文件目录默认为/tmp

df -h /opt  ##查看opt的容量
df -h /tmp  ##查看tmp的容量

2.1.3检查数据库管理系统

1.检查归档日志

检查源端数据库管理系统所在机器,是否开启数据库管理系统的归档日志、附加日志;如果需要 DDL 同步,还需要检查是否关闭数据库管理系统的回收站。

archive log list  ##查看归档信息
 
如果没有打开归档则执行以下命令打开归档
 
shutdown immediate  ## 关闭数据库
 
startup mount  ## 以mount方式开启数据库
 
alter database archivelog;  ## 开启归档
 
alter system set db_recovery_file_dest='';
alter system set log_archive_dest='/data/oracle/oradata/orcl/archlog';
 
alter database open;  ## 开启数据库

在这里插入图片描述

2.检查附加日志

##检查附加目录是否开启
select supplemental_log_data_min, supplemental_log_data_all from v$database;
 
 
##若未开启则执行以下命令开启附加目录
alter database add supplemental log data;
alter database add supplemental log data (all) columns;

在这里插入图片描述
在这里插入图片描述

3.检查回收站

##查看回收站是否关闭
show parameter recycle;  
##若回收站未关闭即recyclebin为on,则执行以下命令关闭
alter system set recyclebin=off deferred;

在这里插入图片描述

执行以上命令后需要重启数据库才能看到更改结果

在这里插入图片描述

4.检查同步用户权限

在 DMHS 捕获器中用于连接源端数据库管理系统的数据库用户,若没有 DBA 权限,则 至少应被赋予以下权限(SQL 执行)。

5.设置源端字符集

当数据库数据包含中文字符时,需将 DMHS 运作所在窗口的 NLS_LANG 设置为对应 的字符集,建议使用 AMERICAN_AMERICA.ZHS16GBK。

select userenv('language')from dual;  ##查询数据库字符集
 
echo $NLS_LANG  ##查询系统字符集
如果该变量值为空或者与查询结果不一致,请将改变量设置为查询结果的值修改 /.bash_profile或者/.profile,增加以下:

export NLS_LANG='AMERICAN_AMERICA.ZHS16GBK'
source ~/.bash_profile  ##更新

6.创建数据库用户dmhs

##创建dmhs用户
create user DMHS identified by "DMHS123456" default tablespace USERS temporary tablespace TEMP profile DEFAULT;
 ##密码需大于八位数,且有英文字母
 
##赋予dmhs以下权力
grant dba to DMHS;(用于测试时)
grant connect to DMHS;
grant select any table to DMHS;
grant select any dictionary to DMHS;
grant create session to DMHS;
grant lock any table to DMHS;
grant execute on dbms_flashback to DMHS;

在这里插入图片描述
在这里插入图片描述

  1. Root用户安装odbc

搭建DMHS最安装2.3.0以上的版本的odbc

rpm -qa|grep unixODBC  ##查看是否安装了ODBC
##添加ODBC环境变量
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib 
##安装ODBC
yum -y install unixODBC unixODBC-devel  
odbcinst -j
创建/ect/odbc.ini文件在odbc.ini添加以下内容:

vim /etc/odbc.ini

[ORACLE]
Description = Oracle ODBC driver for Oracle 11g
Driver= Oracle in OraDb11g_home1
SERVER = 192.168.198.128
ServerName = orcl
UserID = DMHS
Password = DMHS
Port = 1521

配置 odbcinst.ini 文件

[Oracle in OraDb11g_home1]
Description = ODBC DRIVER FOR ORACLE
Driver = /home/oracle/oracle_11g/product/11.2.0/lib/libsqora.so.11.1
Threading = 0
查看是否缺少依赖:

ldd /home/oracle/oracle_11g/product/11.2.0/lib/libsqora.so.11.1

如果缺少依赖则执行以下内容:

find / -name libclntsh* ##查找文件路径
cp /home/oracle/oracle_11g/product/11.2.0/lib/libsqora.so.11.1 /lib64/libclntsh.so.11.1 /lib64/libclntsh.so.11.1 ##将文件复制到lib64路径
再次查看依赖

ldd /data/oracle/product/11.2.0/lib/libsqora.so.11.1

所有依赖都已存在。

2.2DM8端(目的端)前期准备

先执行上面部分的2.1.1和2.1.2的前1、2点内容。

2.2.1开启归档

进入数据库,查看是否开启归档:

./disql SYSDBA/SYSDBA:5236
 
SQL> select arch_mode from v$database;

Y表示已开启

2.2.2开启逻辑日志

##查看逻辑日志是否开启
SELECT PARA_VALUE FROM SYS.V$DM_INI WHERE PARA_NAME='RLOG_APPEND_LOGIC'; 


未开启则执行以下命令开启逻辑日志: 

SP_SET_PARA_VALUE(2,'RLOG_APPEND_LOGIC',1);
执行完成后需要重启数据库服务器:

DmServicedmserver restart


 再次查询逻辑归档是否开启:

SELECT PARA_VALUE FROM SYS.V$DM_INI WHERE PARA_NAME='RLOG_APPEND_LOGIC';

2.2.3创建用户且授权

create user dmhs identified by "SYSDBA123456" default tablespace MAIN temporary tablespace TEMP;


grant dba to dmhs;
grant connect to dmhs;
grant select any table to dmhs;
grant resource to dmhs;

三、安装并部署DMHS服务器

3.1目的端(DM8)

3.1.1安装DMHS

mkdir /home/dmdba/dmhs  ##创建dmhs文件目录
将dmhs安装包上传至该目录并进行安装:
./dmhs_V4.3.06_dm8_rev124224_rh6_64_veri_20230214_sp2.bin

在dmhs安装目录/home/dmdba/dmhs/bin下新建dmhs.hs文件,并添加以下内容:

touch dmhs.hs
<?xml version="1.0" encoding="GB2312"?>
<dmhs>
    <base>
        <lang>en</lang>
        <mgr_port>5345</mgr_port>
        <chk_interval>2</chk_interval>
        <ckpt_interval>45</ckpt_interval>
        <siteid>4</siteid>
        <version>2.0</version>
    </base>
    <exec>
        <recv>
            <data_port>5346</data_port>
        </recv>
        <db_type>dm8</db_type>
        <db_server>192.168.198.128</db_server>
        <db_user>dmhs</db_user>
        <db_pwd>DMHS</db_pwd>
        <db_port>5236</db_port>
        <char_code>PG_UTF8</char_code>
        <db_name></db_name>
        <exec_thr>8</exec_thr>
        <exec_sql>1024</exec_sql>
        <exec_trx>2000</exec_trx>
        <exec_rows>2000</exec_rows>
        <msg_col_size>30000</msg_col_size>
        <ddl_continue>1</ddl_continue>
        <affect_row>0</affect_row>
        <exec_policy>2</exec_policy>
        <enable_rowid>0</enable_rowid>
        <clear_trx_file>1</clear_trx_file>
        <trx_max_file>8</trx_max_file>
    </exec>
</dmhs>

3.1.2配置服务文件

将模板文件,复制一份为正式服务并授权,并修改文件内容

cp TemplateDmhsService DmhsService

chmod +x DmhsService

vi DmhsService
#set execute environment
#REPLACE DMHS_HOME path
DMHS_HOME=/home/dmdba/dmhs/bin
#REPLACE program dir
PROG_DIR=/home/dmdba/dmhs/bin
#REPLACE program config path
CONF_PATH=/home/dmdba/dmhs/bin/dmhs.hs
#REPLACE need library path, LD_LIBRARY_PATH/LIBPATH
NEED_LIB_PATH=
HS_NLS_LANG="AMERICAN_AMERICA.ZHS16GBK"
将key 文件上传至安装目录并修改文件名文dmhs.key 

3.1.3启动dmhs服务器

cd至dmhs安装目录release:

./DmhsService start
./dmhs_console


DMHS> connect    ##连接
execute success
 
DMHS> start exec   ##开启exec工具
execute success

3.2源端(oracle)

3.2.1解压安装文件

以下配置最好使用oracle用户进行操作:

在目录创建文件夹dmhs,并运行安装程序

./dmhs_V4.3.06_oracle11g_rev124275_rh6_64_veri_20230220_sp3.bin

3.2.2配置文件

以下配置最好使用oracle用户进行操作:

在/opt/dmhs/release目录下创建dmhs.hs文件并添加以下内容:

touch dmhs.hs ##创建文件

<?xml version="1.0" encoding="GB2312"?>
<dmhs>
    <base>
        <lang>en</lang>
        <mgr_port>5345</mgr_port>
        <ckpt_interval>45</ckpt_interval>
        <siteid>1</siteid>
        <version>2.0</version>
    </base>
    <cpt>
        <db_type>oracle11g</db_type>
        <db_server>orcl</db_server>
        <db_user>DMSH</db_user>
        <db_pwd>DMHS</db_pwd>
        <ddl_mask>op:obj</ddl_mask>
        <char_code>PG_UTF8</char_code>
        <constraint>1</constraint>
        <arch>
            <clear_interval>600</clear_interval>
            <clear_flag>0</clear_flag>
        </arch>
        <send>
            <ip>192.168.37.130</ip>
            <mgr_port>5345</mgr_port>
            <data_port>5346</data_port>
            <filter>
                <enable>
                    <item>DMHS.*</item>
                </enable>
                <disable>
                </disable>
            </filter>
        </send>
    </cpt>
</dmhs>

复制模板文件为服务文件并进行授权

cp TemplateDmhsService DmhsService
chmod +x DmhsService
修改DmhsService文件的以下内容

#set execute environment
#REPLACE DMHS_HOME path
DMHS_HOME=/home/oracle/dmhs/bin
#REPLACE program dir
PROG_DIR=/home/oracle/dmhs/bin
#REPLACE program config path
CONF_PATH=/home/oracle/dmhs/bin/dmhs.hs
#REPLACE need library path, LD_LIBRARY_PATH/LIBPATH
NEED_LIB_PATH=
HS_NLS_LANG="AMERICAN_AMERICA.ZHS16GBK"

3.2.3连接dmhs服务器

当源端的文件配置完成后,可以在 /opt/dmhs/release 目录下执行以下语句进行连接:

./DmhsService start
./dmhs_console
connect 
 
clear exec lsn
 
copy 0 "sch.name='DMHS'"|CREATE
 
copy 0 "sch.name='DMHS'"|INSERT|THREAD|2
 
start cpt

官方网站:达梦数据库 - 新一代大型通用关系型数据库 | 达梦在线服务平台

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值