zcbus-8.1-16-20240906.tar.gz 版本兼容达梦DSC(集群)模式

1 源库配置

1.1 修改配置文件

1.1.1 修改dm.ini开启归档和附加日志

RLOG_APPEND_LOGIC   = 2
ARCH_INI            = 1             #dmarch.ini

参数说明
(1)RLOG_APPEND_LOGIC:是否启用在日志中记录逻辑操作的功能,取值范围0、1、2、3
      0:不启用;1、2、3启用。
      1:如果有主键列,记录UPDATE和DELETE操作时只包含主键列信息,若没有主键列则包含所有列信息;
      2:不论是否有主键列,记录UPDATE和DELETE操作时都包含所有列的信息;
      3:记录UPDATE时包含更新列的信息以及ROWID,记录DELETE时只有ROWID
(2)ARCH_INI:是否启用归档,0:不启用;1:启用

1.1.2 修改dmarch.ini,设置归档路径(若已经开启归档,忽略此配置)

[ARCHIVE_LOCAL1]
ARCH_TYPE                    = LOCAL                        #本地归档类型
ARCH_DEST                    = /opt/dmdbms/data/ARCH        #本地归档文件存放路径
ARCH_FILE_SIZE               = 128                          #单位 MB,本地单个归档文件最大值
ARCH_SPACE_LIMIT             = 10240                        #单位 MB,0 表示无限制,范围 1024~4294967294 MB

1.1.3 重启数据库

#重启数据库
service DmServiceDMSERVER restart
#检查数据库状态
systemctl status DmAgentService DmAPService DmServiceDMSERVER tomcat | grep Active

1.1.4 检查是否开启

select PARA_NAME,PARA_VALUE from V$DM_INI where PARA_NAME in ('RLOG_APPEND_LOGIC','ARCH_INI');
select * from V$DM_ARCH_INI;

1.1.5 检查DBMS系统包是否创建

  • 检查是否存在

    SELECT SF_CHECK_SYSTEM_PACKAGE('DBMS_LOGMNR');
  • 创建DBMS系统包命令

    SP_CREATE_SYSTEM_PACKAGES(1,'DBMS_LOGMNR');   ---创建指定DBMS包

1.1.6 检查sp_start_logmnr存储过程是否存在

  • 在达梦数据库中遇到 sp_start_logmnr 无法解析(unresolved)的问题,通常与存储过程调用方式、权限、版本支持或存储过程本身是否存在有关
    数据库版本不支持:达梦的日志挖掘功能(LogMiner)仅在特定版本(如 DM8 及以上)提供,低版本可能无此存储过程。
    • 检查存储过程是否存在命令
      SELECT * FROM SYSOBJECTS WHERE NAME = 'SP_START_LOGMNR' AND TYPE = 'P';
    • 解决方法:
      重新执行达梦数据库日志挖掘初始化脚本dmminer.sql(位于达梦安装目录script文件夹下),重建sp_start_logmnr等存储过程(具体操作:以SYSDBA身份登录达梦,执行start /path/to/dmminer.sql;)

1.2 创建用户及赋权

1.2.1 创建用户

CREATE USER ZCBUS IDENTIFIED BY "Zcbus@888";

注意:

密码默认长度不少于 9 位。

1.2.2 用户赋权

GRANT CREATE SESSION TO ZCBUS;
GRANT RESOURCE TO ZCBUS;
GRANT SELECT ANY TABLE TO ZCBUS;
GRANT SELECT ANY DICTIONARY TO ZCBUS;
GRANT SELECT ANY VIEW TO ZCBUS;
GRANT EXECUTE ON DBMS_LOGMNR TO ZCBUS;

2 补充说明

2.1 SQL参考

  • 用户权限查询
    col PRIVILEGE for a30;
    col GRANTOR for a30;
    col TABLE_NAME for a30;
    select PRIVILEGE from  dba_sys_privs where  grantee='ZCBUS';
    select granted_role from dba_role_privs where  grantee='ZCBUS';
    select PRIVILEGE,GRANTOR,TABLE_NAME from dba_tab_privs where  grantee='ZCBUS';

2.2 当节点空闲、无数据生成时,达梦的日志几乎不变化,建议添加以下几个参数,减小延迟

logmnr_scn_back=0
auto_update_table=ZCBUS.ZCBUS_UP_TB
auto_update_interval=10

注:

  • zcbus-8.1-16-20240907.tar.gz版本支持
  • 如果是多节点时,需要配置rac_ip_list,将所有节点配置上,否则不能连接对应节点去操作update,并且只能自己节点分析自己节点的日志

2.1 数据类型支持

DAMENG字段类型 是否支持 字段描述
CAHR(n) 是
VARCHAR(n) 是
VARCHAR2(n) 是
NUMERIC(p,s) 是
DECIMAL(p,s) 是
NUMBER(p,s) 是
DEC(p,s) 是
INTEGER 是
INT 是
BIGINT 是
TINYINT 是
BYTE 是
SMALLINT 是
BINARY 是
VARBINARY 是
FLOAT(p,s) 是
DOUBLE(p,s) 是
REAL 是
DOUBLE PRECISION(p,s) 是
BIT 是
DATE 是
TIME 是
TIMESTAMP 是
TEXT 是
LONG 是
LONGVARCHAR 是
LONGVARBINARY 否
BLOB 是
CLOB 是
IMAGE 是
BFILE 否
ROWID 是
BINARY_FLOAT 是
BINARY_DOUBLE 是
文档更新时间: 2026-08-27 18:36   作者:操李红