DMHS同步(Oracle11g-DM8)

DMHS数据同步(Oracle11g 到 dm8)

本文详细介绍了Oracle 11g 到 dm8 的数据同步安装部署过程。

建议虚拟机内存30G。

规划端口

ip地址数据库版本端口号备注
192.168.100.5Oracle11g1521源端
192.168.100.9DM85236目的端

1安装前准备(Oracle11g 源端)

1.1 开启归档

切换用户(尽量使用以下带 - 的方式切换用户)

su – oracle

创建目录

mkdir /home/oracle/archivelog

连接数据库

sqlplus / as sysdba

关闭数据库服务

SQL> shutdown immediate

以 mount 方式启动 oracle 数据库

SQL> startup mount

开启归档

SQL> alter database archivelog;

在这里插入图片描述

设置归档文件路径(如果使用本地路径存放归档日志,需要将 db_recovery_file_dest 参数置空,然后设置 log_archive_dest 参数

SQL> alter system set db_recovery_file_dest=’’;
SQL> alter system set log_archive_dest=’’/home/oracle/app/oracle/archivelog’;

恢复为 open 状态

SQL> alter database open;

再次检查归档

SQL> archive log list;

在这里插入图片描述

1.2 开启附加日志

附加日志(supplemental log)指数据库在日志中添加额外信息到日志流中,以支持基于日志的工具,进行数据的分析。

检查附加日志

SQL> select SUPPLEMENTAL_LOG_DATA_MIN min,SUPPLEMENTAL_LOG_DATA_PK  pk,SUPPLEMENTAL_LOG_DATA_UI ui,SUPPLEMENTAL_LOG_DATA_FK fk, SUPPLEMENTAL_LOG_DATA_ALL "all" from v$database;

开启数据库最小附加日志级全列日志

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;

在这里插入图片描述

1.3 关闭 oracle 的回收机制

检查 oracle 回收机制 on/off

SQL> show parameter recyclebin;

在这里插入图片描述

如果是on,需要关闭oracle回收机制

SQL> alter system set recyclebin=off deferred;

需要重启数据库后才生效。

1.4 检查字符集是否一致

查询 oracle 数据库的字符集:(AMERICAN_AMERICA.ZHS16GBK)

SQL> select userenv(language) from dual;

在根目录下执行

vi ~/.bash_profile

export NLS_LANG=”AMERICAN_AMERICA.ZHS16GBK”

source ~/.bash_profile

1.5 创建同步用户及授权

启动 oracle 数据库创建DMHS用户密码为DMHS并授权。

SQL> create user DMHS identified by "DMHS" default tablespace  USERS temporary tablespace TEMP profile DEFAULT;
SQL> grant connect to DMHS;
SQL> grant create any table to DMHS;
SQL> grant select any table to DMHS;
SQL> grant select any dictionary to DMHS;
SQL> grant create session to DMHS;
SQL> grant lock any table to DMHS;
SQL> grant execute on dbms_flashback to DMHS;
SQL> grant unlimited tablespace to DMHS;

1.6 安装 odbc

切换到root用户下

查看是否安装 odbc

rpm -qa|grep unixODBC

在这里插入图片描述

添加 odbc 环境变量

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib

安装 odbc

yum -y install unixODBC unixODBC-devel

安装完成后,执行以下命令:

odbcinst -j

配置 unixODBC

新增 odbc.ini 文件

vim /etc/odbc.ini

写入以下内容:

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

配置 odbcinst.ini 文件

vim /etc/odbcinst.ini

增加以下内容:

[Oracle in OraDb11g_home1]
Description = ODBC DRIVER FOR ORACLE
Driver = /home/oracle/app/oracle/product/11.2.0/dbhome_1/lib/libsqora.so.11.1
Threading = 0

查看是否缺少依赖:

ldd /home/oracle/app/oracle/product/11.2.0/dbhome_1/lib/libsqora.so.11.1
在这里插入图片描述

如果发现缺少依赖文件。

查找系统其他位置是否存在依赖文件:

find / -name libodbcinst*

复制相应文件到依赖路径下:

cp /usr/lib64/libodbcinst.so.2 /lib64/libodbcinst.so.1

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

isql -v ORACLE DMHS DMHS
在这里插入图片描述

2安装前准备(DM8 目的端)

2.1 开启归档

连接数据库

disql SYSDBA/SYSDBA@192.168.100.9:5236

在这里插入图片描述

查询归档是否开启,Y/N

SQL> select arch_mode from v$database;

在这里插入图片描述

开启归档

如果查询结果为N需要开启归档

alter database mount;
alter database archivelog;
ALTER DATABASE ADD ARCHIVELOG 'DEST = /home/dm/dmdbms/arch, TYPE = local, FILE_SIZE = 1024, SPACE_LIMIT = 2048';
alter database open;

再次查询归档是否开启,Y/N

select arch_mode from v$database;

2.2 开启逻辑日志

执行数据库后重启数据库服务生效

SQL> SP_SET_PARA_VALUE(2,'RLOG_APPEND_LOGIC',1);
SQL> exit
DmServiceDMSERVER restart;

查询逻辑日志是否开启:1/0

SQL> SELECT PARA_VALUE FROM SYS.V$DM_INI WHERE PARA_NAME=‘RLOG_APPEND_LOGIC’;
在这里插入图片描述

dm.ini 配置参数中“FAST_COMMIT”必须为 0,否则会导致逻辑日志不全而影响同步。

SQL> select para_value from v$dm_ini where para_name = 'FAST_COMMIT';

在这里插入图片描述

输出为 0 则正常。

2.3 创建同步用户及授权

创建用户

SQL> create user DMHS identified by "DMHS" default tablespace MAIN temporary tablespace TEMP;

给用户授权

SQL> grant resource to DMHS;
SQL> grant select any table to DMHS;
SQL> grant dba to DMHS;
SQL> grant unlimited tablespace to DMHS;

3 DMHS 服务部署(dm8 目的端)

3.1 部署 dmhs 服务

选择正确版本的dmhs安装包安装

修改配置文件

在安装目录的bin目录下

vim  dmhs.hs

文件内容:

<?xml version="1.0" encoding="GB2312"?>
<dmhs>
 <base>
<lang>en</lang>
 <mgr_port>5345</mgr_port>
 <ckpt_interval>60</ckpt_interval>
 <siteid>1</siteid>
<version>2.0</version>
 </base>
  <exec>
        <recv>
            <data_port>5346</data_port>
        </recv>
        <db_type>dm8</db_type>
        <db_server>192.168.100.9</db_server>
        <db_user>SYSDBA</db_user>
        <db_pwd>SYSDBA</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.2启动dmhs服务

在dmhs安装目录下bin路径执行

./dmhs_server dmhs.hs

在开一个终端执行

./dmhs_console

启动 exec 模块

DMHS> start exec

4 DMHS 服务部署(Oracle11g 源端)

4.1 部署 dmhs 服务

选择正确版本的dmhs安装包安装

修改配置文件

在安装目录的bin目录下

vim dmhs.hs

文件内容:(注意修改俩 ip 地址)

<?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>100</siteid><!-- 站点ID,这个ID配置时要注意,全局唯一,最小值0,最大值65535 -->
                <version>2.0</version><!-- 版本号-->
        </base>
        <cpt><!-- 这项配置可以配置多个,也就是可以配置多个捕获模块,如果该节点只作为执行端,该节点需要删除 -->
                <db_type>oracle11g</db_type><!-- Oracle数据库类型,限定值Oracle10g,Oracle11g,dm6,dm7 -->
                <db_server>192.168.100.5/orcl</db_server><!-- 数据库实例名-->
                <db_user>DMHS</db_user><!-- 需要同步的数据库用户名,默认为SYSDBA -->
                <db_pwd>DMHS</db_pwd><!-- 数据库用户口令,默认为SYSDBA -->
                <db_port>1521</db_port><!-- Oracle数据库端口号-->
                <ddl_mask>0</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.100.9</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>
~                                                                                                                                    

4.2 启动dmhs服务

在dmhs安装目录下bin路径执行

./dmhs_server dmhs.hs

在开一个终端执行

./dmhs_console
DMHS> clear exec lsn
DMHS> load 0  "sch.name='DMHS'" CREATE|INSERT|DICT
DMHS> start cpt

5 验证同步效果

5.1登录 Oracle 创建表及添加数据

使用 oracle 用户登录 Oracle 数据库,创建数据表,并添加数据。

查看表记录
在这里插入图片描述

5.2登录 DM 验证同步结果

在 SYSDBA用户下执行命令,连接数据库

查看系统表,确定数据表 “A” 在达梦数据库中已创建

SQL> select table_name from A;

查询表记录,数据跟 Oracle 数据库中数据表记录一致

SQL> select * from A;
在这里插入图片描述

至此,Oracle 11g 到 DM8 的数据同步部署成功!

若要退出,则先于源端执行 stop cpt ,再于目的端执行 stop exec 。

5.3DDL验证

使用SYSDBA连接登录数据库执行DMHS安装目录下script子目录的“ddl_sql_ora.sql”脚本。(如果使用disql工具执行,需要先执行set define off和set char_code utf8来设置关闭本地变量和设置字符集编码,然后使用"start /xx/xx.sql"执行该脚本,如果是使用DM管理工具连接的数据库,可以直接复制SQL脚本内容到查询框执行即可)。

在这里插入图片描述

在这里插入图片描述

查看表数据

在这里插入图片描述

修改表结构

在这里插入图片描述

查看目的端表结构:可以看到ddl已经同步过来了

在这里插入图片描述

分区表同步

修改Oracle源端dmhs.hs 中ddl_mask参数

启动目的端dmhs

启动源端dmhs

源端创建分区表

CREATE TABLE INFO(
	NAME VARCHAR(50),
	PRICE INT
)
PARTITION BY RANGE(PRICE)(
	PARTITION P1 VALUES LESS THAN (10),
	PARTITION P2 VALUES LESS THAN (100),
	PARTITION P3 VALUES LESS THAN (1000),
	PARTITION P4 VALUES LESS THAN (MAXVALUE)
);

插入数据

insert into DMHS.INFO values('铅笔',1);
insert into DMHS.INFO values('笔记本',22);
insert into DMHS.INFO values('蓝牙耳机',868);
insert into DMHS.INFO values('电脑',4599);
insert into DMHS.INFO values('牙刷',8);
insert into DMHS.INFO values('水杯',15);
insert into DMHS.INFO values('书包',35);

目的端查询INFO_P1表

在这里插入图片描述

6问题

6.1 dmhs.key 缺失或失效

问题描述:

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

解决办法:

在DMHS 安装bin目录下增加一个在有效使用期限内的 dmhs.key 文件。

6.2 目的端 exec 模块加载失败

问题描述:

DMHS> start exec
CSL[ERROR]: load execute module failure

解决办法:

ldd libdmhs_exec.so

发现缺少 libmoci.so 文件,执行以下命令查找:

find / -name libmoci.so
找到文件后复制到 /home/dmdba/dmdbms/bin 目录下即可。
重新启动控制台,启动 exec 模块成功。

总结

Oracle 11g 到 dm8 的数据同步安装部署过程基本如上。其难点主要在于选择合适的dmhs版本的安装、环境变量的配置(如环境变量和字符集设置)、dmhs.hs的配置,odbc的配置和相关依赖的缺失解决。

如果报错找不到相关依赖文件,先到 dmhs 的 bin 目录下查看相关文件是否存在。若存在,则是 LD_LIBRARY_PATH 环境变量未配置好,没有添加 dmhs 的 bin 目录为环境变量;若不存在,则执行 find / -name lib*.so,将其中一份复制到 /dmhs/bin 目录下或者系统可读依赖目录下即可。

查找DMHS依赖命令

ldd dmhs_server

ldd dmhs_console

在配置过程中,出现了磁盘空间不够的情况也会报错,在配置虚拟机环境时候建议配置内存大于等于30G。

达梦社区:https://eco.dameng.com

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值