在Linux下,DMHS的搭建

一、概念

1.DMHS全称:

Heterogeneous database Synchronization for DM

达梦异构数据同步软件

2.工作模式

在Linux下,DMHS的搭建_第1张图片

捕获器:读取解析源端数据库管理系统的归档日志;

执行器:接收数据,并进行数据映射及事务的入库(目标端数据库)执行;

路由器:适用于捕获器和执行器被网关隔断的环境;

转发器:捕获器和执行器之间存在物理隔离网闸,无法通过网络直连需要文件中转的时候。

二、安装数据库ORACLE

设置ip:192.168.73.8-这是我配置的ip地址

1.创建系统用户

groupadd oinstall

groupadd dba

useradd -g oinstall -G dba oracle

passwd oracle

2.配置环境变量

vi .bash_profile

export ORACLE_SID=orcl
export ORACLE_BASE=/oracle
export ORACLE_HOME=/oracle/product/11.2.0/dbhome_2
export PATH=$ORACLE_HOME/bin:$PATH

使环境变量生效:source .bash_profile

3.开始安装Oracle,步骤省略

4.开启监听:lsnrctl start

5.检查是否开启归档日志

sqlplus / as sysdba

SQL>archive log list; -- 检查归档是否开启

如果Automatic archival为Disabled则没有开启

那么执行以下语句开启

SQL>alter database open;

        SQL>alter system set db_recovery_file_dest=’’;

        SQL>alter system set log_archive_dest=’’;--设置路径

重启数据库,使归档路径生效

       Shutdown immediate

       以mount方式启动数据库:

       startup mount

       alter database open;

       archive log list;

在Linux下,DMHS的搭建_第2张图片

6.检查附件日志

SQL> select SUPPLEMENTAL_LOG_DATA_MIN, SUPPLEMENTAL_LOG_DATA_ALL from v$database;

在Linux下,DMHS的搭建_第3张图片

 

如果是为no,就执行以下语句

SQL>ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;

SQL>ALTER DATABASE ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;

7.将Oracle的回收机制关闭

SQL>alter system set recyclebin=off deferred;

在Linux下,DMHS的搭建_第4张图片

8.关闭防火墙

Systemctl stop firewalld  --linux7

chkconfig iptables off; --linux6

9.检查字符集是否一致

先查询oracle数据库的字符集:

SQL> select userenv('language') from dual;

再查询系统字符集

echo $NLS_LANG

如果该变量值为空或者与查询结果不一致,请将该变量设置为查询结果的值

修改~/.bash_profile文件,增加export NLS_LANG=“sql查询结果值”

10.创建数据库用户dmhs

Create user dmhs identified by ‘123456’;

Grant dba to dmhs;--测试时直接赋予dba权限

现实环境最好赋予以下的权限

如果没有DBA权限,需要做如下赋权操作(例如用户是DMHS):

grant all on dmhs_ddl_sql 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;

grant connect to dmhs

11.安装odbc

下载 unixodbc2.3.2 源码 unixODBC-2.3.2.tar.gz;这里是2.3.2版本的,搭建DMHS最好要2.3.0以上的版本

 解压 unixodbc 源码

tar -zxvf unixODBC-2.3.2.tar.gz

进入 unixodbc 源码目录,编译源码

cd unixodbc-2.3.2

         export CC=gcc

         export CFLAGS="-maix64 -DBUILD_REAL_64_BIT_MODE" export OBJECT_MODE=64 –l系统为unix/linux 64bits才执行

./configure --enable-drivers=no --with-iconv-char-enc=GB18030 --enable-gui=no --enable-iconv=yes

make

make install

配置 UNIXODBC 将操作系统当前目录切换到“/usr/local/etc”目录,修改 odbc.ini 和 odbcinst.ini 参数。 odbc.ini 参数内容如下所示:

[ORACLE]

Description = ORACLE ODBC DSN

Driver = Oracle in OraDb11g_home1

SERVER = 127.0.0.1

UID = DMHS

PWD = 123456

Servername = ORCL

PORT = 1521

odbcinst.ini 参数内容如下所示:

[Oracle in OraDb11g_home1]

Description = ODBC DRIVER FOR ORACLE

Driver = oracle/product/11.2.0/db_home2/lib/libsqora.so.11.1 –安装oracle路径

Threading = 0

 配置完成之后,可使用 isql 命令测试配置是否正确。

        isql -v ORACLE DMHS 123456

 如果不成功,看是否缺乏依赖包

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

linux-vdso.so.1 =>  (0x00007fff335ff000)

        libdl.so.2 => /lib64/libdl.so.2 (0x00007fc37d97e000)

        libm.so.6 => /lib64/libm.so.6 (0x00007fc37d6f9000)

        libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fc37d4dc000)

        libnsl.so.1 => /lib64/libnsl.so.1 (0x00007fc37d2c3000)

        libclntsh.so.11.1 => /opt/oracle/112/lib/libclntsh.so.11.1 (0x00007fc37ad92000)

        libodbcinst.so.1 => /lib64/libodbcinst.so.1 (0x00007fc37ab7b000)

        libc.so.6 => /lib64/libc.so.6 (0x00007fc37a7e7000)

        /lib64/ld-linux-x86-64.so.2 (0x0000003462a00000)

        libnnz11.so => /opt/oracle/112/lib/libnnz11.so (0x00007fc37a41a000)

        libaio.so.1 => /lib64/libaio.so.1 (0x00007fc37a219000)

 

这里格外要注意libodbcinst.so.1这个依赖,它依赖于/lib64/libodbcinst.so.1,但是UnixODBC某些版本和Oracle兼容的问题,这个指向有可能是错的。最后发现无法通过isql链接Oralce数据库。那么不妨在数据库中查找libodbcinst.so.2(find / -name libodbcinst*),将依赖改为libodbcinst.so.2的路径

以下是配置成功的截图

在Linux下,DMHS的搭建_第5张图片

三、安装DM

配置ip:192.168.73.3

1.创建dmdba用户脚本:

groupadd dinstall  --创建安装用户组dinstall

useradd -g dinstall -m -d /home/dmdba -s /bin/bash dmdba  --创建安装用户dmdba

passwd dmdba

2.安装DM,步骤省略

3.配置dm.ini文件

ARCH_INI=1   开启归档

RLOG_APPEND_LOGIC=1      开启逻辑附加日志

rlog_append_systab_logic=1         (如果要执行DDL脚本,则此参数设置为0)

4.配置dmarch.ini

[ARCHIVE_LOCAL1]

ARCH_TYPE = LOCAL

ARCH_DEST = /dm/dmdba/dmdata/DAMENG/arch

ARCH_FILE_SIZE = 1024

ARCH_SPACE_LIMIT = 1024000 --归档空间上限

5.创建用户dmhs

disql  sysdba/sysdba:5236

SQL>create user dmhs identified by “1234567890”;

SQL>grant dba to dmhs;

6.关闭防火墙

chkconfig iptables off;  linux6

systemctl stop firewalld  linux7

以上步骤是前期的准备

四、配置DMHS.XML文件

捕获端配置示例

vi.DMHS_CPT.XML

ch

5355

3

60

3

--捕获端

oracle11g

orcl

dmhs 用户

123456 密码

1521

300

TABLE:VIEW:FUN:PRO:OP

1

600

1

--发送 目的端

192.168.73.3

5355

5356

0

0

0

0

--过滤器

--允许同步的数据

DMHS*  --要同步数据的用户模式

--过滤掉的数据

执行端的配置示例

vi dmhs_exec.xml

 

ch

5355

2

45

4

5356

dm7

127.0.0.1

dmhs

1234567890

5236

1

1

512

5000

250

8000

0

五、启动DMHS

1.启动执行端,这里是DM作为执行端

在另外一个窗口执行以下命令

在Linux下,DMHS的搭建_第6张图片

这里报连接数据库失败,那么可以检查是否是用户和密码错误导致的,或者没有开启数据库数据库服务

这里没有启动达梦数据库服务

 在Linux下,DMHS的搭建_第7张图片

执行端已经启动成功

2.启动捕获端

打开另一个窗口

在Linux下,DMHS的搭建_第8张图片

LOAD 0 "SCH.NAME='DMHS'"CREATE|INSERT|DICT   --装载模式为DMHS的数据

 在Linux下,DMHS的搭建_第9张图片

测试:

在捕获端创建表插入数据

在Linux下,DMHS的搭建_第10张图片

在执行端查询是否有数据

 在Linux下,DMHS的搭建_第11张图片

 这里是oracle到dm7的同步,注意以下三点

①每次启动时,如果存在dmhs_exec.tmp/dmhs_cpt.tmp,先删除rm –rf 后启动

②装载数据字典时要clear exec lsn

③如果Oracle作为执行端的话,需要先安装unixodbc驱动。

 本文只是简单介绍Oracle到Dm7的同步,作为初学者,还需学习的地方很多。

 

 

你可能感兴趣的:(达梦数据库)