注册
DCP培训以及考试心得
培训园地/ 文章详情 /

DCP培训以及考试心得

对。 2026/08/12 283 1 0

一、DCP 培训和考试范围

DCP 是达梦的中级认证(初级叫 DCA),选了线上直播 4 天 培训。讲师节奏比 DCA 紧不少,特别是审计、加密、统计信息、SQL 日志、ET 工具、DIS、作业调度这几块,是 DCA 完全没碰过的深水区。

我个人是先过了 DCA、就参加 DCP,DCP 复习节奏比 DCA 的时间更紧张。

【DCP】考试范围和考点(10 大块)

  1. 数据库实例管理:建库、初始化参数、系统配置(资源限制、共享内存)、重做日志、归档
  2. 分区表与索引:4 大类分区(RANGE/LIST/HASH/INTERVAL)、多级分区、Huge 表、临时表、外部表、8 类索引
  3. 模式对象:表空间、用户、授权、表、约束、DMFLDR 导入数据
  4. 审计:审计开关、语句级、对象级、审计分析、加密技术(全库/表空间/列)
  5. 统计信息更新:3 种收集方式、直方图
  6. SQL 跟踪:SQL 日志、过滤规则、ET 工具、HINT、执行计划操作符
  7. DTS:达梦数据迁移工具 + DMFLDR
  8. DIS:达梦集成服务(dmdis 用户、单机/集群模式、数据源、数据质量、转换/作业)
  9. 备份:脱机/联机、归档配置、库/表空间/表三种备份、还原恢复、DB_MAGIC
  10. 作业调度:SP_INIT_JOB_SYS、4 步建作业、SYSJOB 模式

二、我的复习节奏

DCP 备考我分了三个阶段
阶段 1:实验操作(2 天)

  • 初始化参数:页大小(8/16/32)、簇大小、字符集、长度(CHARSET vs LENGTH_IN_CHAR)、大小写敏感(CASE_SENSITIVE)
  • 系统配置:limits.conf 的 dmdba nofile 65536、sysctl 的 kernel.shmall/shmmax/shmmni
  • 重做日志:alter database resize logfile 改大小、alter database add logfile 加文件
  • 水平分区 4 大类 + 间隔分区 + 多级分区 + 非分区转分区
  • 8 类索引:聚簇/唯一/函数/位图/位图连接/复合/全局/局部/全文
  • 全文索引 5 种分词器(CHINESE_LEXER/CHINESE_VGRAM_LEXER/CHINESE_FP_LEXER/ENGLISH_LEXER/DEFAULT_LEXER)
  • Huge 表、临时表、外部表
  • 审计三件套:SP_SET_ENABLE_AUDIT(1) + SP_AUDIT_STMT + SP_AUDIT_OBJECT
  • SQL 日志:SP_SET_PARA_VALUE(1, 'SVR_LOG', 1) + SP_SET_SQLLOG_INI 过滤规则
  • ET 工具:ENABLE_MONITOR=1 + MONITOR_SQL_EXEC=1 + ET(执行号)
  • HINT 语法:/*+ INDEX(a IND_ID) */、USE_NL、USE_MERGE、ENABLE_HASH_JOIN
  • DTS 三步走:迁移评估→迁移数据库→迁移对比
  • DMFLDR 控制文件:LOAD DATA INFILE FIELDS INTO TABLE
  • DIS 单机/集群模式 + 8080 端口 + standalone_start.sh
  • 物理备份:脱机/联机 + 归档必开 + DmAPService 验证
  • 还原恢复 3 步曲:restore → recover → recover update db_magic
  • 作业调度 4 步:新建作业 → 添加步骤 → 新建调度 → 提交

阶段 2:模拟笔试(2 天)

DCP 的笔试题有 200 道题,只能模拟练习 10 次。把错题标红记录,后面第3阶段时候可以加强复习。

阶段 3:错题回看(1 天)

三、吐槽时间

1. 建库 + 调整参数

DCA 已经讲过初始化,但 DCP 深入到运维规范层面——不是"建个库"就完事,是"建库前要把系统调好"。

1.1 系统配置

磁盘调度算法

cat /sys/block/sda/queue/scheduler # 查当前 iostat -x 3 5 # 查负载

达梦推荐用 deadline 或 noop,不要用 cfq(cfq 是传统机械盘的,对 SSD 性能差)。

2. 分区表 + 建索引

DCA 完全没碰的领域,DCP 上来就硬菜。

2.1 分区表 4 大类

达梦的水平分区四大类:

  • RANGE 分区:按范围(日期、数值区间)
  • LIST 分区:按离散值(地区、状态)
  • HASH 分区:按 hash 分散
  • INTERVAL 分区:自动创建新分区(间隔分区)

RANGE 分区(按时间,关键:达梦用字符串 + STORAGE( on 表空间),不是 TABLESPACE):

CREATE TABLE PROD ( ID INT, NAME VARCHAR(50), TIME DATETIME ) PARTITION BY RANGE (TIME) ( PARTITION P1 VALUES LESS THAN ('2022-01-01') STORAGE( on DMTEST01), PARTITION P2 VALUES LESS THAN ('2023-01-01') STORAGE( on DMTEST02), PARTITION P3 VALUES LESS THAN ('2024-01-01') STORAGE( on DMTEST03), PARTITION P4 VALUES LESS THAN ('2025-01-01') STORAGE( on DMTEST04) );

关键差异(vs Oracle)

  • 达梦用 STORAGE( on DMTEST01),Oracle 用 TABLESPACE DMTEST01
  • 达梦范围值用字符串 '2022-01-01',Oracle 用 TO_DATE('2022-01-01','YYYY-MM-DD')
  • 网上很多 DCP 心得写的 Oracle 语法,在达梦里直接报错

RANGE 等值分区(达梦特有 VALUES EQU OR LESS THAN):

PARTITION P1 VALUES EQU OR LESS THAN (1000) STORAGE(on TBS1), PARTITION P2 VALUES EQU OR LESS THAN (2000) STORAGE(on TBS2),

用于将数据按"等分"分区,常见于 ID 字段。

HASH 分区(两种写法):

-- 方法 1:指定分区名 CREATE TABLE T_HASH1 (ID INT, NAME VARCHAR(50)) PARTITION BY HASH (ID) ( PARTITION P1, PARTITION P2, PARTITION P3, PARTITION P4 ); -- 方法 2:指定分区个数,分区名自动生成 CREATE TABLE T_HASH2 (ID INT, NAME VARCHAR(50)) PARTITION BY HASH(ID) PARTITIONS 4;

LIST 分区(离散值,城市):

CREATE TABLE T_SALES ( SALES_ID INT, SALEMAN VARCHAR(20), SALEDATE DATETIME, CITY CHAR(15) ) PARTITION BY LIST (CITY) ( PARTITION P1 VALUES ('BJ', 'TJ') STORAGE(on DMTEST01), PARTITION P2 VALUES ('SH', 'NJ') STORAGE(on DMTEST02), PARTITION P3 VALUES ('WH', 'CS') STORAGE(on DMTEST03), PARTITION P4 VALUES ('GZ', 'SZ') STORAGE(on DMTEST04) );

INTERVAL 分区(间隔分区,达梦的关键高级特性):

CREATE TABLE T_INTERVAL_YEAR ( ID NUMBER(10, 0), NAME VARCHAR(50), BIRTH DATE ) PARTITION BY RANGE ("BIRTH") interval(numtoyminterval(1,'YEAR')) -- 每 1 年自动新建分区 ( PARTITION "P2014" VALUES LESS THAN ('2015-01-01'), PARTITION "P2015" VALUES LESS THAN ('2016-01-01') ); -- 插入 2018 年的数据,系统自动建 P2018、P2019... 分区 INSERT INTO T_INTERVAL_YEAR VALUES(3,'CCC','2018-08-02');

关键字:numtoyminterval(年,月)numtodsinterval(天,秒)
:题目如果让你"按月自动分区",用 numtoyminterval(1, 'MONTH');按天用 numtodsinterval(1, 'DAY')——别混。

2.2 非分区表转分区表

五步走:

  1. 导出原表dexp dmemp/Dameng123 file=empinfo.dmp log=empinfo.log tables=empinfo
  2. 重命名ALTER TABLE empinfo RENAME TO empinfo_bak;
  3. 创建分区表
  4. 导入数据dimp dmemp/Dameng123 file=empinfo.dmp log=empinfo_imp.log tables=empinfo ignore=y
  5. 验证 + 删旧表

2.3 8类索引

达梦的索引类型:

  • 聚簇索引(CLUSTER INDEX):表数据按索引顺序物理存储,每张表只能有一个
  • 唯一索引(UNIQUE)
  • 函数索引(FUNCTION-BASED):CREATE INDEX ... ON T(UPPER(col))
  • 位图索引(BITMAP):适合低基数列(如性别、状态)
  • 位图连接索引:跨表连接上的位图索引
  • 复合索引(多列)
  • 全局索引(GLOBAL):跨分区唯一
  • 局部索引(LOCAL):跟着分区走
-- 唯一索引 CREATE UNIQUE INDEX ind_phone ON dmhr.employee(phone_num); -- 复合索引 CREATE INDEX ind_id_name ON dmhr.employee(employee_id, employee_name); -- 函数索引 CREATE INDEX dmhr.ind_mail ON dmhr.employee(LOWER(EMAIL)); -- 全局索引(针对分区表) CREATE INDEX DMEMP.IND_ID ON DMEMP.T_HASH1(ID) GLOBAL; -- 位图索引 CREATE BITMAP INDEX dmhr.ind_man ON dmhr.employee(manager_id);

3. 导入数据(DMFLDR)

3.2 DMFLDR 快速装载

dmfldr(DM Fast Loader)是达梦的命令行快速装载工具,比 dexp/dimp 快一个数量级——这是 DCP 的硬菜。

数据文件/home/dmdba/fldrtest.txt):

1|杨亮|
2|周峰|
3|陈华飞|2025-01-30

控制文件/home/dmdba/fldrtest.ctl):

LOAD DATA
INFILE '/home/dmdba/fldrtest.txt'
INTO TABLE FLDRTEST
FIELDS '|'

导入命令

/dm/bin/dmfldr dmemp/Dameng123 control=\'/home/dmdba/fldrtest.ctl\'

导出(大字段示例)

/dm/bin/dmfldr dmemp/Dameng123 control=\'/home/dmdba/clob1.ctl\' \ LOB_DIRECTORY=\'/home/dmdba\' mode=\'out\'

关键参数

参数 说明
CONTROL 控制文件路径(必填)
MODE IN(载入,默认)/ OUT(载出)/ OUTORA(载出 ORACLE 格式)
DIRECT TRUE(快速直装,默认)/ FALSE(传统)
LOB_DIRECTORY 大字段文件目录(MODE=OUT 时必填)
ROWS 提交频次(50000,DIRECT=FALSE 有效)
BADFILE 错误数据记录文件

MODE='out' 是导出,MODE='in' 是导入。考场上题目如果说"用 dmfldr 把数据导出到文本文件",千万别写成 MODE=in

4. 审计

DCP 的硬菜,DCA 完全不涉及。

4.1 审计开关

审计级别(3 类):

  • 系统级:系统启动/关闭,强制产生
  • 语句级:影响特定类型对象的 SQL
  • 对象级:特定对象上的 SQL

开启审计必须用 SYSAUDITOR 用户):

-- 查看是否开启 SELECT PARA_NAME, PARA_VALUE FROM V$DM_INI WHERE PARA_NAME='ENABLE_AUDIT'; -- 开启(param 0=关闭,1=普通,2=普通+实时) SP_SET_ENABLE_AUDIT(1); -- 关闭 SP_SET_ENABLE_AUDIT(0);

重大坑:开启审计必须用 SYSAUDITOR 用户(不是 SYSDBA),否则报"权限不足"。、

4.2 语句级审计

SP_AUDIT_STMT( TYPE VARCHAR(30), -- 审计选项 USERNAME VARCHAR(128), -- 用户名,NULL 表示不限制 WHENEVER VARCHAR(20) -- ALL / SUCCESSFUL / FAIL ); -- 例 1:审计 DMEMP 用户的 DDL(建表、改表、清空、删表) SP_AUDIT_STMT('TABLE', 'DMEMP', 'ALL'); -- 验证:用 DMEMP 登录,执行 DDL disql dmemp/Dameng123 SQL> create table ttt (id int); SQL> truncate table ttt; SQL> drop table ttt; -- 查看审计记录 SELECT USERNAME, OPERATION, SUCC_FLAG, SQL_TEXT, OPTIME, MAC FROM V$AUDITRECORDS; -- 取消 SP_NOAUDIT_STMT('TABLE', 'DMEMP', 'ALL');

4.3 对象级审计

SP_AUDIT_OBJECT( TYPE VARCHAR(30), -- 审计选项 USERNAME VARCHAR(128), -- 用户 SCHNAME VARCHAR(128), -- 模式名(空时置 'null') TVNAME VARCHAR(128), -- 表/视图/存储过程名(**不能为空**) COLNAME VARCHAR(128), -- 列名 WHENEVER VARCHAR(20) -- ALL / SUCCESSFUL / FAIL ); -- 例:审计 DMEMP 用户删除 DMHR.EMPLOYEE 表记录 SP_AUDIT_OBJECT('DELETE', 'DMEMP', 'DMHR', 'EMPLOYEE', 'ALL'); -- 取消(参数必须完全一致) SP_NOAUDIT_OBJECT('DELETE', 'DMEMP', 'DMHR', 'EMPLOYEE', 'ALL');

5. DTS

DTS = 达梦数据迁移工具。DCA 不涉及,DCP 必考

5.1 迁移 5 步流程

  1. 需求分析:容灾备份、应用改造/替代、数据库版本升级/回退、数据库替代/业务分流、停机窗口
  2. 环境调研:硬件、数据库、业务系统
  3. 迁移测试:测试计划、测试环境、迁移过程
  4. 数据迁移:资源控制、失败控制、迁移顺序、表配置、日志
  5. 迁移结果对比:对象结构、数据量、数据完整性

5.2 DTS 工具三步走

[dmdba@localhost tool]$ ./dts
  1. 迁移评估:新建评估 → 选择 ORACLE-DM → 配置源库 → 选择评估内容 → 选择模式 → 选择对象 → 执行 → 查报告
  2. 迁移数据库:新建迁移 → 选择迁移方式(同构/异构)→ 输入源库 → 输入目的库 → 选模式 → 选对象 → 执行
  3. 迁移对比:新建对比 → 输入源 → 输入目的 → 选对比选项 → 选对象 → 查对比结果

实验操作如下:
步骤 1:迁移评估
“新建评估 → 选择 ORACLE-DM”
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png

步骤 2:迁移数据库
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png

步骤 3:迁移对比
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png

:异构库迁移时字符集不一致报 -6606。解决:源端和目标端都设为 UTF-8,或在 DTS 里勾选"字符集转换"。

6. DIS

DIS = 达梦数据集成(Data Integration Service)。DCA 完全不碰,DCP 硬菜

8.1 安装前准备

# 创建用户组 groupadd dinstall # 创建用户(关键:**不是 dmdba,是 dmdis**) useradd -g dinstall -m -d /home/dmdis -s /bin/bash dmdis passwd dmdis # DISPLAY(图形化安装用) xhost + su - dmdis export DISPLAY=:0.0 # 临时目录 mkdir -p /home/dmdis/tmp export DMDIS_INSTALL_TMPDIR=/home/dmdis/tmp

命令行

[dmdis@localhost opt]$ ./dmdis_rev185208_x86_linux_64_20250325.bin -i

安装选项:

  • 单机模式:所有组件跑在一个系统服务中,占用资源小,适合小型项目/学习
  • 集群模式:支持 yarn/flink/spark 大数据执行器节点(由 license 决定),适合大数据量

8.2 服务启停

# 启动单机模式服务 cd /home/dmdis/dmdis5/20250415134956523000/standalone/ ./standalone_service_start.sh # 停止 ./standalone_service_stop.sh # 重启 ./standalone_service_restart.sh # 用 root 跑 install_standalone_service.sh 安装操作系统服务

8.3 管理器连接

URL:    http://192.168.88.103:8080/   ← 端口 8080
用户:   admin
密码:   安装时设置的

image.png

image.png

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服