注册
达梦数据复制软件DMDRS同步环境准备指南:以DM7为源数据库
专栏/数+融合专栏/ 文章详情 /

达梦数据复制软件DMDRS同步环境准备指南:以DM7为源数据库

达梦数+数据融合软件(DMDF)产品团队 2026/07/28 171 0 0
摘要 以源数据库DM7为例,介绍搭建DMDRS同步环境时,数据库和DMDRS的准备工作。

1 数据库准备工作

在运行DMDRS服务前,数据库管理员需要对数据库做如下准备工作。

配置服务 准备工作
源DMDRS
  • 除数据迁移场景外,其他应用场景均需要开启源数据库的归档和逻辑日志。
  • 除数据迁移场景外,其他应用场景均需要配置DDL同步。
  • 创建源数据库同步用户DMDRS。
  • 配置源数据库同步用户最小权限。
目标DMDRS
  • 创建目标数据库同步用户DMDRS。
  • 配置目标数据库同步用户最小权限。
DMDSS

1.1 开启源数据库的归档和逻辑日志

为了保证源DMDRS服务运行中数据的一致性,源DMDRS服务需要读源数据库的归档和逻辑日志,因此源数据库需要开启归档和逻辑日志功能。数据库管理员可按下列方式之一进行配置。

注意

源数据库未开启归档和逻辑日志或者参数配置不正确,将无法进行同步。

方式一:静态配置

  1. 设置DM7数据库配置文件“dm.ini”中ARCH_INI参数值为1,根据实际需求配置RLOG_APPEND_LOGIC的参数值,参数配置说明如下所示。

    • 1:如果有主键列,记录UPDATE和DELETE操作时只包含主键列信息,若没有主键列则包含所有列信息。

    • 2:不论是否有主键列,记录UPDATE和DELETE操作时都包含所有列的信息。

    #configuration file
    ARCH_INI = 1
    
    #redo log
    RLOG_APPEND_LOGIC = 1
    
  2. 在与“dm.ini”相同目录下,新建配置文件“dmarch.ini”,并添加归档配置参数。配置示例如下:

    [ARCHIVE_LOCAL1]
    ARCH_TYPE = LOCAL
    ARCH_DEST = /dm7/data/arch
    ARCH_FILE_SIZE = 512
    ARCH_SPACE_LIMIT = 10240
    
  3. 重启数据库服务,使配置生效。

方式二:动态配置

  1. 开启数据库归档。

    SQL> alter database mount; executed successfully used time: 00:00:01.144. Execute id is 0. SQL> alter database add archivelog 'DEST=/dm7/data/arch,TYPE=LOCAL,FILE_SIZE=512,SPACE_LIMIT=10240'; executed successfully used time: 7.437(ms). Execute id is 0. SQL> alter database archivelog; executed successfully used time: 10.277(ms). Execute id is 0. SQL> alter database open; executed successfully used time: 00:00:01.262. Execute id is 0.
  2. 调用系统过程SP_SET_PARA_VALUE配置DM7数据库配置文件“dm.ini”中RLOG_APPEND_LOGIC参数值。此系统过程的定义请参考《DM7_SQL语言使用手册》。根据实际需求配置RLOG_APPEND_LOGIC的参数值,参数配置说明如下所示,以参数值设置为1为例。

    • 1:如果有主键列,记录UPDATE和DELETE操作时只包含主键列信息,若没有主键列则包含所有列信息。

    • 2:不论是否有主键列,记录UPDATE和DELETE操作时都包含所有列的信息。

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

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

  • 检查ARCH_INI参数配置是否生效。

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

    查询结果如下:

    行号 PARA_NAME PARA_VALUE SESS_VALUE FILE_VALUE ---------- --------- ---------- ---------- ---------- 1 ARCH_INI 1 1 1 已用时间: 4.117(毫秒). 执行号:13307.

    如果存在以上查询结果,表示ARCH_INI参数配置已生效。

  • 检查RLOG_APPEND_LOGIC参数配置是否生效。

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

    查询结果如下:

    行号 PARA_NAME PARA_VALUE SESS_VALUE FILE_VALUE ---------- ----------------- ---------- ---------- ---------- 1 RLOG_APPEND_LOGIC 1 1 1 已用时间: 3.857(毫秒). 执行号:13308.

    如果存在以上查询结果,表示RLOG_APPEND_LOGIC参数配置已生效。

1.2 配置DDL同步

DMDRS服务支持DDL同步功能。当应用场景中需要DDL同步时,数据库管理员可按下列方式之一进行配置。

说明
  • 源数据库为DM7时,支持触发器方式和系统表方式配置DDL同步。级联同步和环形同步建议使用系统表方式配置DDL同步,具体的操作限制请参考《DMDRS产品介绍》
  • 表级同步不支持系统表方式同步DDL。
注意
  • 创建DDL触发器和辅助表时,请使用具有DBA权限的用户。
  • 如果触发器或辅助表无效或缺失,会导致DDL同步失败,甚至会影响数据库。

方式一:触发器方式(推荐)

  1. 在源数据库执行“ddl_sql_dm7.sql”脚本创建触发器和辅助表,脚本默认位置在DMDRS执行程序目录下的scripts子目录中。

    SQL> set define off; SQL> start ddl_sql_dm7.sql
  2. 检查创建的触发器和辅助表是否有效。

    • 检查创建的触发器。

      SQL> select owner, trigger_name from dba_triggers where owner = 'SYSDBA' and trigger_name like 'DRS_$%' and status = 'Y';

      查询结果如下:

      行号 OWNER TRIGGER_NAME ---------- ----------- ---------------- 1 SYSDBA DRS_$DDL_TRIGGER_AFTER 2 SYSDBA DRS_$DDL_TRIGGER_BEFORE 3 SYSDBA DRS_$DDL_TRIGGER_GRANT 4 SYSDBA DRS_$DDL_TRIGGER_REVOKE 已用时间: 12.147(毫秒). 执行号:16.

      如果存在以上查询结果,表示DMDRS触发器创建有效。

    • 检查创建的辅助表。

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

      查询结果如下:

      行号 OWNER TABLE_NAME ---------- ----------- ---------------- 1 SYSDBA DRS_$DDL_COL 2 SYSDBA DRS_$DDL_SQL 3 SYSDBA DRS_$DDL_CONS 4 SYSDBA DRS_$DDL_IDX 5 SYSDBA DRS_$DDL_RENAME 6 SYSDBA DRS_$DDL_SEQ 7 SYSDBA DRS_$DDL_PART 8 SYSDBA DRS_$DDL_COMMENT 9 SYSDBA DRS_$DDL_LOG 9 rows got 已用时间: 197.302(毫秒). 执行号:7.

      如果存在以上查询结果,表示DMDRS辅助表创建成功。

方式二:系统表方式

  1. 设置源数据库配置文件“dm.ini”中RLOG_APPEND_SYSTAB_LOGIC参数。

    • 静态配置

      1. 设置源数据库配置文件“dm.ini”中RLOG_APPEND_SYSTAB_LOGIC参数值为1。

        #redo log RLOG_APPEND_SYSTAB_LOGIC = 1
      2. 重启数据库服务,使配置生效。

    • 动态配置

      调用系统过程SP_SET_PARA_VALUE将源数据库配置文件“dm.ini”中RLOG_APPEND_SYSTAB_LOGIC参数值设置为1。此系统过程的定义请参考《DM7_SQL语言使用手册》

      SQL> call sp_set_para_value(1,'RLOG_APPEND_SYSTAB_LOGIC',1);
  2. 检查RLOG_APPEND_SYSTAB_LOGIC参数配置是否生效。

    SQL> select para_name, para_value, sess_value, file_value from V$DM_INI where para_name = 'RLOG_APPEND_SYSTAB_LOGIC';

    查询结果如下:

    行号 PARA_NAME PARA_VALUE SESS_VALUE FILE_VALUE ---------- ------------------------ ---------- ---------- ---------- 1 RLOG_APPEND_SYSTAB_LOGIC 1 1 1 已用时间: 3.708(毫秒). 执行号:506.

    如果存在以上查询结果,表示RLOG_APPEND_SYSTAB_LOGIC参数配置已生效。

1.3 创建数据库同步用户DMDRS

请源数据库管理员和目标数据库管理员分别创建数据库同步用户DMDRS,并赋予同步所需权限。建议源数据库DMDRS用户不赋予DBA权限,赋予同步所需的最小权限即可,建议目标数据库DMDRS用户赋予DBA权限,如果不能赋予DBA权限,为确保同步的正确性,需赋予DMDRS用户同步所需的最小权限,最小权限配置具体请参见3.4 配置数据库同步用户最小权限章节。

说明
  • 如果数据库管理员已赋予DMDRS同步用户DBA权限,则不需要配置数据库同步用户最小权限。
  • 数据库同步用户DMDRS创建完成后,如果需要在用户下进行DDL和DML操作,需要数据库管理员赋予相应的操作权限。

1.4 配置数据库同步用户最小权限

DMDRS服务运行过程中,使用的数据库同步用户需要一定的权限访问数据库数据,如果不能赋予DMDRS同步用户DBA权限,为确保同步的正确性,数据库管理员可根据应用场景配置数据库同步用户的最小权限。

1.4.1 源数据库同步用户最小权限

赋予DM7源数据库同步用户最小权限的脚本示例请参见8.1.1 DM7源数据库同步用户最小权限脚本示例,具体的权限说明如下表所示。

权限类别 权限说明 权限
基础权限 DM7数据库用户默认具有PUBLIC角色权限。 需要赋予如下权限:
PUBLIC
源DMDRS在启动、数据装载及同步过程中需要使用数据库数据字典表来查询如附加日志信息、日志信息、数据库实例名和表定义等相关信息。 需要赋予如下权限:
SOI、VTI
源DMDRS在启动时需要同步用户有创建会话的权限。 需要赋予如下权限:
CREATE SESSION
装载相关权限 装载时,数据库用户需要具有装载表的查询权限。
如果待装载的表或序列在当前用户下,不需要额外赋予任何查询权限。
如果待装载的表或序列在其他用户下,则需要赋予待装载表的查询权限。
需要赋予如下权限:
SELECT ON <待装载表/序列的模式名>.<待装载表/序列的表名>
当需要进行备份还原装载时,数据库用户需要具有备份权限。 需要赋予如下权限:
BACKUP DATABASE
同步相关权限 DM7触发器同步时,如果数据库用户不是SYSDBA用户,需要对SYSDBA.DRS_$DDL_LOG具有查询权限。 需要赋予如下权限:
SELECT ON SYSDBA.DRS_$DDL_LOG
说明
  • 对于旧版本DM7无SOI、VTI权限的情况,使用同等权限的对象查询权限即可。
    SYS.V$RLOG
    SYS.V$DM_INI
    SYS.V$RLOGFILE
    SYS.V$DM_ARCH_INI
    SYS.V$VERSION
    SYS.V$ARCH_FILE
    SYS.V$IFUN
  • 对于旧版本DM7无CREATE SESSION权限的情况,删除该权限即可。

1.4.2 目标数据库同步用户最小权限

DM7目标数据库同步用户最小权限

赋予DM7目标数据库同步用户最小权限的脚本示例请参见8.1.2 DM7目标数据库同步用户最小权限脚本示例,具体的权限说明如下表所示。

权限类别 权限说明 权限
基础权限 目标DMDRS在执行DML时需要数据操作权限。 需要赋予如下权限:
PUBLIC
目标DMDRS在启动时需要在目标数据库中创建辅助表和辅助存储过程。 需要赋予如下权限:
RESOURCE
目标DMDRS在启动时需要查询数据库的相关参数信息、系统表字典信息。 需要赋予如下权限:
SOI、VTI
目标DMDRS在启动时需要同步用户有创建会话的权限。 需要赋予如下权限:
CREATE SESSION
装载与同步相关权限 若需要同步在非同步用户模式下已存在的表/序列的数据,需要赋予在待同步表/序列上的DML权限或查询权限。 需要赋予如下权限:
INSERT|UPDATE|DELETE ON <目标表的模式名>.<目标表名>
SELECT ON <目标序列的模式名>.<目标序列名>
若需要同步在非同步用户模式下未存在的表/序列的数据,可以先在装载时使用CREATE掩码同步创建表/序列DDL语句,然后赋予该表/序列的DML权限或查询权限。也可为同步用户赋予在所有表/序列上的DML权限或查询权限。 需要赋予如下权限:
INSERT|UPDATE|DELETE|SELECT ANY TABLE
SELECT ANY SEQUENCE
若需要同步在非同步用户模式下表的注释,需要赋予创建表注释的权限。 需要赋予如下权限:
COMMENT ANY TABLE
若需要同步在非同步用户模式下的对象的DDL语句,需要赋予相应的DDL权限。
注:装载表时需要赋予TABLE和INDEX的权限。授予ANY权限前,需先执行语句“ALTER SYSTEM SET 'ENABLE_DDL_ANY_PRIV'=1 BOTH;”开启ANY的授权权限。
需要赋予如下权限:
CREATE|ALTER|DROP ANY <对象类型>
若需要非模式对象(表空间、用户、角色和公共同义词)的DDL操作权限,需要赋予同步用户相应的DDL权限。其中角色和公共同义词不需要ALTER权限。 需要赋予如下权限:
CREATE|ALTER|DROP <对象类型>
若需要同步在非同步用户模式下的非表对象的DDL语句或源DMDRS的DDL_MASK配置SQL掩码情况下同步对象的DDL语句,需要赋予同步用户辅助存储过程的执行权限以及非同步用户下模式所属用户的存储过程的创建权限。 需要赋予如下权限:
EXECUTE ON PROCEDURE "DRS_$DDL_SQL_PROC"
CREATE PROCEDURE TO <非同步用户下模式所属的用户>
说明
  • 对于旧版本DM7无SOI、VTI权限的情况,使用同等权限的对象查询权限即可。
    SYS.V$DM_INI
    V$IFUN
    SYS.V$LOCK
    SYS.V$SESSIONS
  • 对于旧版本DM7无CREATE SESSION权限的情况,删除该权限即可。

DM8目标数据库同步用户最小权限

赋予DM8目标数据库同步用户最小权限的脚本示例请参见8.1.3 DM8目标数据库同步用户最小权限脚本示例,具体的权限说明如下表所示。

权限类别 权限说明 权限
基础权限 目标DMDRS在执行DML时需要数据操作权限。 需要赋予如下权限:
PUBLIC
目标DMDRS在启动时需要在目标数据库中创建辅助表和辅助存储过程。 需要赋予如下权限:
RESOURCE
目标DMDRS在启动时需要查询数据库的相关参数信息、系统表字典信息。 需要赋予如下权限:
SOI、VTI
目标DMDRS在启动时需要同步用户有创建会话的权限。 需要赋予如下权限:
CREATE SESSION
装载与同步相关权限 若需要同步在非同步用户模式下已存在的表/序列的数据,需要赋予在待同步表/序列上的DML权限或查询权限。 需要赋予如下权限:
INSERT|UPDATE|DELETE ON <目标表的模式名>.<目标表名>
SELECT ON <目标序列的模式名>.<目标序列名>
若需要同步在非同步用户模式下未存在的表/序列的数据,可以先在装载时使用CREATE掩码同步创建表/序列DDL语句,然后赋予该表/序列的DML权限或查询权限。也可为同步用户赋予在所有表/序列上的DML权限或查询权限。 需要赋予如下权限:
INSERT|UPDATE|DELETE|SELECT ANY TABLE
SELECT ANY SEQUENCE
若需要同步在非同步用户模式下表的注释,需要赋予创建表注释的权限。 需要赋予如下权限:
COMMENT ANY TABLE
若需要同步在非同步用户模式下的对象的DDL语句,需要赋予相应的DDL权限。
注:装载表时需要赋予TABLE和INDEX的权限。授予ANY权限前,需先执行语句“ALTER SYSTEM SET 'ENABLE_DDL_ANY_PRIV'=1 BOTH;”开启ANY的授权权限。
需要赋予如下权限:
CREATE|ALTER|DROP ANY <对象类型>
若需要非模式对象(表空间、用户、角色和公共同义词)的DDL操作权限,需要赋予同步用户相应的DDL权限。其中角色和公共同义词不需要ALTER权限。 需要赋予如下权限:
CREATE|ALTER|DROP <对象类型>
若需要同步在非同步用户模式下的非表对象的DDL语句或源DMDRS的DDL_MASK配置SQL掩码情况下同步对象的DDL语句,需要赋予同步用户辅助存储过程的执行权限以及非同步用户下模式所属用户的存储过程的创建权限。 需要赋予如下权限:
EXECUTE ON PROCEDURE "DRS_$DDL_SQL_PROC"
CREATE PROCEDURE TO <非同步用户下模式所属的用户>
说明
  • 对于旧版本DM8无SOI、VTI权限的情况,使用同等权限的对象查询权限即可。
    SYS.V$DM_INI
    V$IFUN
    SYS.V$LOCK
    SYS.V$SESSIONS
  • 对于旧版本DM8无CREATE SESSION权限的情况,删除该权限即可。

2 DMDRS准备工作

在配置和运行DMDRS服务前,需要对DMDRS做如下准备工作。

2.1 DMDRS服务管理规划

在配置DMDRS服务前,需规划DMDRS服务的Manager模块的端口号,包括源DMDRS、目标DMDRS服务和DMDSS服务的Manager模块的端口号。

注意

不同的应用场景,DMDRS所包括的DMDRS服务不同。如果在同一台服务器上部署不同的服务,必须确保这些服务的Manager模块的端口号的唯一性。

2.2 设置运行用户权限

说明

DMDRS的运行用户与安装用户使用同一个用户dmdrs,安装用户请参见《DMDRS安装手册》

DMDRS运行用户需要以下权限:

  • Windows:运行用户具有管理员权限。

  • Linux/Unix系统:运行用户具有DMDRS服务所在目录及子目录的读、写和执行权限。源DMDRS的运行用户应同数据库归档文件目录属同一用户组,该用户组对归档文件所在目录及子目录有读权限。

2.3 设置环境变量

DMDRS服务运行过程中,需要使用数据库的驱动文件访问数据库数据。

  • 源DMDRS服务:需要使用DMDPI驱动文件访问DM7源数据库数据,用户需要在源DMDRS服务器的环境变量中添加DMDPI驱动文件路径。

  • 目标DMDRS服务:需要使用目标数据库对应的驱动文件访问目标数据库数据,用户需要在目标DMDRS服务器的环境变量中添加各数据库对应的驱动文件路径。

不同数据库对应的驱动如下所示。

  • DM7数据库:DMDPI驱动

  • DM8数据库:DMDPI驱动

说明
  • 设置环境变量前,请确保源DMDRS与目标DMDRS服务器上已安装数据库的驱动,且驱动版本与数据库版本相匹配。
  • 设置环境变量前,请向数据库管理员获取数据库驱动路径。
  • 由于操作系统、终端不同,设置环境变量命令或操作步骤会略有差异。

以设置DM7数据库的DMDPI驱动的环境变量为例,介绍常用操作系统下设置环境变量的方法。

  • Linux系统

    在终端的配置文件中添加设置环境变量命令。

    export LD_LIBRARY_PATH=<DMDPI驱动路径>:$LD_LIBRARY_PATH
  • UNIX系统

    在终端的配置文件中添加设置环境变量命令。

    export LIBPATH=<DMDPI驱动路径>:$LIBPATH
  • Windows系统

    1. 在Windows桌面或“开始”菜单,右键单击“此电脑”,选择“属性”。

    2. 在打开的“设置”窗口中,选择“高级系统设置”。

    3. 在弹出的“系统属性”对话框的“高级”选项卡中,选择“环境变量”。

    4. 在“环境变量”对话框中,选择“系统变量”中系统变量“Path”,再选择“系统变量”下的“编辑”。

    5. 在“编辑环境变量”表格中,填写“DMDPI驱动路径”。

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服