注册
DMDRS-DM/ORACLE到DM
技术分享/ 文章详情 /

DMDRS-DM/ORACLE到DM

少年 2025/08/15 84 0 0

达梦数据复制软件(简称 DMDRS)是一种用于同构数据库、异构数据库以及各种数据管理系统之间的数据复制软件。用户可以通过安装DMDRS使用达梦数据融合管理平台(DMDFM)搭建数据同步链路,也可以直接在服务器上搭建数据同步链路,本次是如何通过达梦数据融合管理平台(DMDFM)搭建DM8(单机)到DM8(单机)/Oracle-到dm8的数据同步。

1环境规划

1.1软件环境

image.png

2DMDRS安装部署

2.1目的端DM8

在DM8目的端使用dmdba用户安装DMDRS代理及管理平台DMDFM。
2.1.1创建安装目录
DMDRS默认安装目录在home目录下,用户可根据需要是否自定义安装目录,本次以创建DMDRS安装目录为例。

[root@localhost /]# mkdir -p /data/dmdrs5 [root@localhost /]# chown dmdba:dinstall -R /data/dmdrs5/ [root@localhost /]# chmod -R 755 /data/dmdrs5/

2.1.2上传安装包
上传DMDRS安装包到opt目录,并修改权限,本次为以安装dmdrs_v5.0.0.05***为例。

[root@localhost opt]# chown dmdba:dinstall dmdrs_rev176693_x86_rh6_64***.bin [root@localhost opt]# chmod -R 755 dmdrs_rev176693_x86_rh6_64***.bin

image.png

2.1.3启动安装程序

使用dmdba用户启动安装文件。
[dmdba@localhost opt]$ ./dmdrs_rev176693_x86_rh6_64***.bin -i
image.png

2.1.4指定安装目录

DMDRS默认安装在安装用户的home目录下,用户可自定义安装目录,本次选择已创建好的安装目录进行安装。
image.png

2.1.5指定安装组件
根据提示选择1 2安装两个组件。
image.png
2.1.6指定许可证文件
在指定许可证文件时可选择免费试用或使用许可证文件。免费试用DMDRS时间为3个月且必须在试用期范围内使用,这次采用的是免费试用三个月。
2.1.7安装环境配置
1、依赖环境
DMDRS会自动选择已安装好的dm数据库bin目录作为数据库动态库路径,用户也可自定义动态库路径,本次指定动态库路径为:/home/dmdba/dmdbms/bin
2、配置代理IP及端口
代理ip不允许设置为127.0.0.1,可指定本机IP,端口默认为19345,也可指定其它端口。
3、达梦数据融合管理平台
达梦数据融合管理平台端口默认为8080,也可指定其它端口。
4、外置库
可指定使用外置库,默认不使用外置库,使用内置库。
本次以使用内置库为例,示例截图如下:
image.png

确认安装后安装程序开始安装DMDRS
image.png

2.1.8配置服务

1、内置数据库
注册内置数据库系统服务,服务器发生重启后内置数据库自动重启。

image.png
2、达梦数据融合管理平台
注册内置数据库系统服务,服务器发生重启后达梦数据融合管理平台自动重启。
image.png
3、达梦数据融合管理平台代理服务
注册内置数据库系统服务,服务器发生重启后达梦数据融合管理平台代理自动重启。
image.png
4、注册服务
根据提示使用root用户执行执行脚本注册系统服务。

[root@localhost ~]#/data/dmdrs5/scripts/root/root_installer.sh

image.png

2.1.9安装结束
服务注册成功后将自动启动。在安装窗口中,请根据提示输入“Y”以完成安装。需要注意的是后续版本安装完成后不会像下图一样提示密码,因此建议用户妥善保管相关凭证。
根据安装总结的提示,输入指定地址即可登录DMDFM,但请注意将地址中的IP替换为DMDFM部署机器的实际IP。
2.1.105登录DMDFM
输入DMDFM部署机器IP及端口进入登录界面,登录界面如下:
image.png
登录成功,DMDRS软件安装成功。

2.2源端DM8

源端DM8部署DMDRS方式与目的端DM8部署DMDRS方式大致相同,但需关注如下不同点或注意点:
1、在源端DM8安装DMDRS时建议使用DM8数据库安装用户进行安装
2、在DM8目的端部署DMDRS代理及管理平台后,源端只需要在安装DMDRS时部署代理,根据安装提示指定DM8目的端的管理平台即可。

image.png

image.png

image.png
2.3完善代理信息
源端与目的端DMDRS部署完成后,登录DMDFM平台检查DMDRS代理是否正常运行,点击【运维】-【代理管理】,检查代理运行情况。
image.png
通过状态栏可以看到代理运行中,点击编辑完善代理信息。

image.png
主要完善“SSH端口”、“主机登录用户”、“主机登录密码”信息,建议选择DMDRS安装用户进行登录,示例如下:
image.png

image.png
DMDRS代理信息完善后示例截图如下:
image.png

3数据库准备

3.1源端DM8

3.1.1开启归档及逻辑日志

为了保证源DMDRS服务运行中数据的一致性,源DMDRS服务需要读源数据库的归档和逻辑日志,因此源数据库需要开启归档和逻辑日志功能。数据库管理员可按下列方式之一进行配置。
方式一:静态配置
1、设置DM8数据库配置文件“dm.ini”中ARCH_INI参数值为1,根据实际需求配置RLOG_APPEND_LOGIC的参数值,参数配置说明如下所示。
(1)如果有主键列,记录UPDATE和DELETE操作时只包含主键列信息,若没有主键列则包含所有列信息。
(2)不论是否有主键列,记录UPDATE和DELETE操作时都包含所有列的信息。
(3)记录UPDATE时包含更新列的信息以及ROWID,记录DELETE时只有ROWID。

#configuration file
ARCH_INI = 1 
#redo log
RLOG_APPEND_LOGIC = 1

2、在与“dm.ini”相同目录下,新建配置文件“dmarch.ini”,并添加归档配置参数。配置示例如下:

[ARCHIVE_LOCAL1]
ARCH_TYPE = LOCAL
ARCH_DEST = /dm8/data/arch
ARCH_FILE_SIZE = 512
ARCH_SPACE_LIMIT = 10240

重启数据库服务,使配置生效。
方式二:动态配置
1开启数据库归档。

SQL> alter database mount;
SQL> alter database add archivelog 'DEST=/dm8/data/arch,TYPE=LOCAL,FILE_SIZE=512,SPACE_LIMIT=10240';
SQL> alter database archivelog;
SQL> alter database open;

2调用系统过程SP_SET_PARA_VALUE配置DM8数据库配置文件“dm.ini”中RLOG_APPEND_LOGIC参数值根据实际需求配置RLOG_APPEND_LOGIC的参数值,参数配置说明如下所示,以参数值设置为1为例。
(1)如果有主键列,记录UPDATE和DELETE操作时只包含主键列信息,若没有主键列则包含所有列信息。
(2)不论是否有主键列,记录UPDATE和DELETE操作时都包含所有列的信息。
(3)记录UPDATE时包含更新列的信息以及ROWID,记录DELETE时只有ROWID。

SQL> call sp_set_para_value(1,'RLOG_APPEND_LOGIC',1);

3、通过静态配置或者动态配置开启源数据库的归档和逻辑日志后,检查ARCH_INI和RLOG_APPEND_LOGIC参数配置是否生效。
(1)检查ARCH_INI参数配置是否生效。

select para_name, para_value, sess_value, file_value from V$DM_INI where para_name = 'ARCH_INI';

image.png
如果存在以上查询结果,表示ARCH_INI参数配置已生效。
(2)检查RLOG_APPEND_LOGIC参数配置是否生效。

select para_name, para_value, sess_value, file_value from V$DM_INI where para_name = 'RLOG_APPEND_LOGIC';

image.png

3.1.2配置DDL同步

DMDRS服务支持DDL同步功能。当应用场景中需要DDL同步时,数据库管理员执行脚本创建触发器和辅助表。创建DDL触发器和辅助表时,请使用具有DBA权限的用户。如果触发器或辅助表无效或缺失,会导致DDL同步失败,甚至会影响数据库。
创建触发器和辅助表的“ddl_sql_dm8.sql”脚本,默认保存位置在DMDRS执行程序目录下的scripts子目录中。
image.png

1、在源端使用SYSDBA用户执行脚本“ddl_sql_dm8.sql”创建DDL触发器和辅助表。
2、检查创建的触发器是否有效

image.png
如果存在以上查询结果,表示DMDRS触发器创建有效。
3、检查创建的辅助表

select owner, table_name from dba_tables where owner = 'SYSDBA' and table_name like 'DRS_$%' and status = 'VALID';

image.png
如果存在以上查询结果,表示DMDRS辅助表创建成功。
3.1.3步用户及权限设置
创建数据库同步用户DMDRS。
CREATE USER DMDRS IDENTIFIED BY *********(用户请自定义密码);
DMDRS服务运行过程中,使用的数据库同步用户需要一定的权限访问数据库数据。数据库管理员可根据应用场景配置数据库用户的最小权限,授予最小权限模板如下:

grant "DBA" to DMDRS;
[dmdba@localhost bin]$ vi ~/.bash_profile
##加入或修改为DM数据库中查询到的字符集。
export LANG=zh_CN.UTF-8
##使环境变量生效。
[dmdba@localhost bin]$ source ~/.bash_profile

2、配置动态库文件依赖路径,源DMDRS服务,需要使用DPI驱动文件访问DM8源数据库数据,用户需要在源DMDRS服务器的环境变量中添加DPI驱动文件路径。

dmdba@localhost ~]$ vi ~/.bash_profile
##加入或修改动态库文件依赖路径,示例如下:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/dmdba/dmdbms/bin:/home/dmdba/dmdbms/drivers/dpi
##使环境变量生效。
[dmdba@localhost ~]$ source ~/.bash_profile

3.2目的端DM8
3.2.1同步用户及权限设置
创建数据库同步用户DMDRS。
–创建表空间

create tablespace DMDRS datafile '/data/dmdata/DAMENG/DMDRS.DBF' size 256 autoextend on CACHE = NORMAL;
--创建用户
create user DMDRS identified by "Dameng123" default tablespace "DMDRS";

授予DMDRS用户DBA权限

grant "DBA" to DMDRS;

3.2.2环境变量设置
1、设置DM用户字符集,当数据库数据包含中文字符时,需将 DRS运行所在窗口的LANG设置为对应的字符集,与数据库字符集保持一致。
检查DM数据库字符集,0表示 GB18030,1表示UTF-8。

SQL>SELECT SF_GET_UNICODE_FLAG ();

image.png

[dmdba@localhost bin]$ vi ~/.bash_profile
##加入或修改为DM数据库中查询到的字符集。
export LANG=zh_CN.UTF-8
##使环境变量生效。
[dmdba@localhost bin]$ source ~/.bash_profile

2、配置动态库文件依赖路径,目标DMDRS服务需要使用与目标数据库对应的驱动文件访问目标数据库数据,用户需要在目标DMDRS服务器的环境变量中添加达梦数据库对应的DPI驱动文件路径。

[dmdba@localhost bin]$ vi ~/.bash_profile
##加入或修改动态库文件依赖路径,示例如下:
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/home/dmdba/dmdbms/bin:/home/dmdba/dmdbms/drivers/dpi"
##使环境变量生效。
[dmdba@localhost bin]$ source ~/.bash_profile

4创建DMDRS同步工程
登录DMDFM创建DM8(单机)-DM8(单机)的同步工程。
4.1配置数据源
点击【数据源】-【数据源管理】配置源端与目的端数据库。

image.png

4.1.1源端DM8
1、配置“数据源名称”,选择“数据库厂商”和“数据库版本”。

image.png
4.1.2目的端DM8
DM数据源基本配置如下,其他配置项未做修改。
image.png

5数据装载

5.1启动服务

启动服务时,先启动目的端,待目的端成功启动变蓝后,再启动源端,否则会因为源端先启动,目的端未启动报错“连接失败”。
1、首先启动目的端DMDRS服务,将鼠标箭头移动至dm8数据源方块右上方按钮,点击“启动”。
image.png

image.png

5.2启动装载

将鼠标移动到链路“link1”上,出现按钮后点击,点击按钮后出现“装载”选项,再点击“装载”进行装载配置。

image.png
image.png
image.png

image.png
预检查全部通过后点击“立即装载”开始数据装载。
数据装载开始及完成后在同步链路下方的“装载”栏中可看到装载任务的进度及状态信息等。
image.png
6数据同步
将鼠标移动至“link1”上,点击“启动”,启动同步链路。

image.png
启动时可选LSN,用户可根据实际情况选择对应的LSN,本次示例使用默认LSN。
image.png
image.png

8同步测试

使用DMDRS用户在源端DM8中创建表和插入数据。


-- 创建表
CREATE TABLE empl1 (
    employee_id NUMBER(10) PRIMARY KEY,
    first_name VARCHAR2(50),
    last_name VARCHAR2(50),
    email VARCHAR2(100) UNIQUE,
    hire_date DATE,
    salary NUMBER(10, 2)
);

-- 插入数据
INSERT INTO empl1 (employee_id, first_name, last_name, email, hire_date, salary)
VALUES (1, 'John', 'Doe', 'john.doe@example.com', TO_DATE('2023-01-15', 'YYYY-MM-DD'), 50000);

INSERT INTO empl1 (employee_id, first_name, last_name, email, hire_date, salary)
VALUES (2, 'Jane', 'Smith', 'jane.smith@example.com', TO_DATE('2023-02-20', 'YYYY-MM-DD'), 60000);

INSERT INTO empl1 (employee_id, first_name, last_name, email, hire_date, salary)
VALUES (3, 'Michael', 'Brown', 'michael.brown@example.com', TO_DATE('2023-03-10', 'YYYY-MM-DD'), 55000);

-- 提交事务
COMMIT;

-- 创建索引
CREATE INDEX idx_employees_last_name ON empl(last_name);

源端DM8表、数据索引创建成功

image.png
检查目的端DM8端表结构及数据与源端DM8一致。
image.png
image.png

9目的端Oracle

9.1源端Oracle19c

9.1.1开启归档及附加日志

为保证源DMDRS服务运行中数据的一致性,源DMDRS服务需要读源数据库的归档和逻辑日志,因此源数据库需要开启归档和逻辑日志功能。
1、使用SQLPlus登录到源数据库。
sqlplus / as sysdba
2、查看数据库归档模式是否开启。若数据库已经开启归档模式,则跳过步骤3~步骤7。
SQL> archive log list;
image.png

3、暂停数据库服务。
SQL> shutdown immediate;
4、以mount方式启动Oracle数据库服务。
SQL> startup mount;
5、开启数据库归档,并设置归档文件路径。
SQL> alter database archivelog;
SQL> alter system set db_recovery_file_dest='';
SQL> alter system set log_archive_dest='/oracle/arch';
6、重启数据库,使归档路径生效。
SQL> shutdown immediate;
SQL> startup mount;
7、将数据库切换到正常的工作状态。
SQL> alter database open;
8、查看数据库最小附加日志及全列日志是否开启。若数据库已经开启最小附加日志及全列日志,则跳过步骤9。
SQL> select supplemental_log_data_min from v$database;
SQL> select supplemental_log_data_all from v$database;
9、开启数据库最小附加日志及全列日志。
SQL> alter database add supplemental log data;
SQL> alter database add supplemental log data (ALL) columns;

image.png

9.1.2关闭源数据库回收站

为了保证源DMDRS能正常解析DDL日志操作,需关闭源数据库回收站功能。
查看回收站的状态,如果返回值为ON,则表示回收站功能已开启;如果返回值为OFF,则表示已关闭。

SHOW PARAMETER recyclebin;
--如果回收站未关闭,需要执行以下命令关闭回收站。
alter system set recyclebin=off deferred;
--重启数据库生效。
SHUTDOWN IMMEDIATE;
STARTUP;

9.1.3同步用户及权限设置

切换到Oracle19cCDB模式。
创建数据库同步用户DMDRS。

CREATE USER DMDRS IDENTIFIED BY 123456;

本次直接授予同步用户DMDRS数据库DBA权限,及sys部分试图权限,示例如下:

GRANT CONNECT, RESOURCE, DBA TO DMDRS;
GRANT SELECT ON sys.type$ TO DMDRS;
GRANT SELECT ON sys.obj$ TO DMDRS;
GRANT SELECT ON sys.user$ TO DMDRS;

image.png
image.png

image.png

数据验证
image.png
image.png

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

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服