注册
达梦数据库 DCA 认证考试通关攻略
专栏/培训园地/ 文章详情 /

达梦数据库 DCA 认证考试通关攻略

DM_060578 2026/09/18 106 0 0
摘要

达梦数据库 DCA 认证考试通关攻略

本文是一份面向达梦数据库 DCA(Dameng Certified Associate)认证考生的全考点实操攻略,覆盖官方考试范围内从"安装数据库管理系统"到"ODBC/Python 接口配置"的全部 14 个考点,每个考点都给出可执行命令、核心参数与高频踩坑点。

一句话核心:DCA 是纯上机实操考试,拼的不是理论而是熟练度 —— 每个知识点练 3 遍以上,按本文的"考点主线"串起来练,2 小时足够从容交卷。


一、考试速览:这是一场"动手"考试

在进入考点前,先看清 DCA 的真实形态,才能制定正确的备考策略。

项目 实际情况
考试形式 纯实操(VNC 远程接入考试服务器),2 小时
前期培训 3 天原厂培训(理论 + 实操),考试内容远少于培训容量
主要工具 DM Manager(图形化)、disql(命令行)、dmrman(备份还原)
评分规则 外部学员 70 分通过,达梦内部员工要求 90 分以上
核心特点 图形工具连不上时必须能用命令行兜底,建议双线掌握

二、考点全景:一条主线串起 14 个考点

image20260917153223953.png


三、安装数据库管理系统

3.1 准备工作:用户与目录

达梦官方强烈不建议使用 root 安装,需要单独的用户和权限规划。

# 创建安装用户和分组(考试环境通常已预建 dmdba) groupadd dinstall useradd -g dinstall -m -d /home/dmdba -s /bin/bash dmdba passwd dmdba # 创建安装目录并授权(关键!权限不足会导致安装失败) mkdir -p /dm8 chown dmdba:dinstall /dm8 chmod -R 750 /dm8

3.2 图形化安装

# root 下放行 X 访问,并切换到 dmdba 配置 DISPLAY(与执行安装同一窗口) xhost + su - dmdba export DISPLAY=:0.0 # 具体值以 echo $DISPLAY 实际输出为准 # 进入安装介质目录执行 cd /opt ./DMInstall.bin # 图形化安装;命令行安装用 ./DMInstall.bin -i

安装完成后按提示以 root 执行 root_installer.sh,用于创建 DmAPService 等后台服务。

⚠️ 易错点:安装(DMInstall.bin)、初始化(dbca)、图形化工具(manager)必须在配置好 DISPLAY 且执行过 xhost + 的同一个窗口操作,否则报 invalid (NULL) pointer / "核心已转储"。


四、初始化实例(参数决定命运)

初始化是 DCA 的第一道坎:部分初始化参数一旦确定无法修改,错了只能删库重建。

4.1 dminit 命令行初始化

# 进入安装目录 bin 下执行(dmdba 用户) ./dminit PATH=/dm8/data DB_NAME=DAMENG INSTANCE_NAME=DMSERVER \ PORT_NUM=5236 PAGE_SIZE=32 EXTENT_SIZE=32 LOG_SIZE=1024 \ CHARSET=1 CASE_SENSITIVE=Y SYSDBA_PWD=Dameng123 \ SYSAUDITOR_PWD=Dameng123

4.2 关键参数一览(考试必考)

参数 默认值 可选项 是否可修改
PORT_NUM(端口) 5236 自定义 可改
PAGE_SIZE(页大小) 8K 4/8/16/32K 不可改
EXTENT_SIZE(簇大小) 16 页 16/32/64 页 不可改
LOG_SIZE(日志大小) 命令行 4096M / 图形 256M 256M~2G(图形) 可改
CASE_SENSITIVE(大小写敏感) Y Y/N 不可改
CHARSET(字符集) 0=GB18030 0/1=UTF-8/2=EUC-KR 不可改
口令 SYSDBA / SYSAUDITOR 需在口令管理页设置

⚠️ 易错点:大小写敏感、页大小、簇大小、字符集确定后不可修改。考题要求什么就设什么,先看清题目再点"完成"。设置 SYSDBA 密码时注意Caps Lock 是否开启——大小写输错会导致后续全部登录失败,只能重新初始化。

4.3 图形化初始化(dbca)

命令行方式初始化不会自动注册系统服务,图形化 dbca(./dbca.sh)默认自动注册。考试两种方式都可能考,建议都练。


五、管理实例(启停)

# 服务方式启停(推荐,考试常用) ./DmServiceDMSERVER start ./DmServiceDMSERVER stop ./DmServiceDMSERVER status # 前台方式启动(仅调试用) ./dmserver /dm8/data/DAMENG/dm.ini

启动后用 ps -ef | grep dmserver 确认进程存在,再用 disql 验证可连接。


六、连接数据库(manager / disql)

6.1 命令行 disql

# 进入 /dm8/bin ./disql SYSDBA/Dameng123:5236 # 密码带特殊字符时(如 Dameng@123),必须转义 ./disql "SYSDBA/\"Dameng@123\":5236" # 或在 Linux 下用单引号包裹 ./disql 'SYSDBA/"Dameng@123":5236'

6.2 图形化 manager

cd /dm8/tool && ./manager,填写主机、端口(5236)、用户名、密码即可连接。考试大量操作可在 manager 中完成,但强烈建议同时掌握 SQL 写法——图形工具起不来时只能靠命令行。


七、表空间管理

7.1 默认与新建

达梦默认预定义 SYSTEM / ROLL / MAIN / TEMP(以及 HMAIN)五个表空间,默认表空间不允许删除。新建表空间:

-- 创建表空间 TBS,两个数据文件,各 32M,自动扩展每次 1M,上限 1G CREATE TABLESPACE "TBS" DATAFILE '/dm8/data/DAMENG/TBS01.DBF' SIZE 32 AUTOEXTEND ON NEXT 1 MAXSIZE 1024, '/dm8/data/DAMENG/TBS02.DBF' SIZE 32 AUTOEXTEND ON NEXT 1 MAXSIZE 1024 CACHE=NORMAL;

7.2 管理操作速查

-- 表空间脱机 / 联机(SYSTEM/ROLL/TEMP 不能脱机;脱机后数据不可读写) ALTER TABLESPACE TBS OFFLINE; ALTER TABLESPACE TBS ONLINE; -- 修改自动扩展 ALTER TABLESPACE TBS DATAFILE 'TBS01.DBF' AUTOEXTEND ON NEXT 2 MAXSIZE 10240; -- 增加数据文件 ALTER TABLESPACE TBS ADD DATAFILE 'TBS03.DBF' SIZE 64; -- 删除表空间 DROP TABLESPACE TBS;

⚠️ 易错点:DM 数据文件最小不能低于页大小的 4096 倍(页大小 8K 时最小 32M),低于会创建报错。


八、用户、角色、资源限制项权限管理

8.1 创建用户与资源限制

-- 创建用户 TEST01:密码 Dameng123,默认表空间 TBSTEST,最多失败登录 5 次 CREATE USER "TEST01" IDENTIFIED BY "Dameng123" DEFAULT TABLESPACE TBSTEST LIMIT FAILED_LOGIN_ATTEMPS 5; -- 用户锁定 / 解锁 ALTER USER TEST01 ACCOUNT LOCK; ALTER USER TEST01 ACCOUNT UNLOCK;

8.2 口令策略 PWD_POLICY(隐含参数考点)

PWD_POLICY 是隐含参数,不在 dm.ini 中,只能通过函数或 SQL 修改:

-- 查看当前口令策略 SELECT * FROM V$PARAMETER WHERE NAME = 'PWD_POLICY'; -- 修改为组合策略(如 2+4+8=14:长度+大写+数字) ALTER SYSTEM SET 'PWD_POLICY' = 14 BOTH;
策略 策略
0 无策略 8 至少包含一个数字
1 禁止与用户名相同 16 至少包含一个标点符号
2 长度 ≥ PWD_MIN_LEN 可组合 相加即可(如 2+4=6)
4 至少包含一个大写字母

8.3 角色与权限

-- 创建角色并赋权(考试必考:创建角色 + 授予建表/视图/索引权限) CREATE ROLE DMROLE; GRANT CREATE TABLE TO DMROLE; GRANT CREATE INDEX TO DMROLE; GRANT CREATE VIEW TO DMROLE; -- 将角色授予用户 GRANT DMROLE TO TEST01; -- 对象权限与回收 GRANT SELECT ON DMHR.EMPLOYEE TO TEST01; GRANT SELECT (EMPLOYEE_ID, EMPLOYEE_NAME) ON DMHR.EMPLOYEE TO TEST01; -- 列级 REVOKE SELECT ON DMHR.EMPLOYEE FROM TEST01; -- 回收 -- 查看当前权限 SELECT * FROM SESSION_PRIVS;

💡 经验:权限转授需 WITH GRANT OPTION,回收需加 CASCADE 级联回收,否则报错。


九、表管理(创建表 + 五大约束)

9.1 五大约束

达梦表约束与 Oracle 高度兼容,考试必考五大约束:主键(PRIMARY KEY)、非空(NOT NULL)、唯一(UNIQUE)、检查(CHECK)、外键(FOREIGN KEY)。

-- 部门表(主表) CREATE TABLE DEPT ( DEPTNO INT PRIMARY KEY, DNAME VARCHAR(20) NOT NULL, LOC VARCHAR(30) ); -- 员工表(从表):五大约束齐全 CREATE TABLE EMP ( EMPNO INT PRIMARY KEY, -- 主键约束 ENAME VARCHAR(20) NOT NULL, -- 非空约束 EMAIL VARCHAR(50) UNIQUE, -- 唯一约束 SALARY NUMERIC(10,2) CHECK (SALARY BETWEEN 2000 AND 8000), -- 检查约束(2000-8000) DEPTNO INT, CONSTRAINT FK_EMP_DEPT FOREIGN KEY (DEPTNO) REFERENCES DEPT(DEPTNO) -- 外键约束 );

💡 精度( p ) 指数字总有效位数,标度( s ) 指小数位位数。外键引用关系一旦建错,会导致后续数据导入失败,务必按题目要求建准。

9.2 删除约束与表

ALTER TABLE EMP DROP CONSTRAINT FK_EMP_DEPT; DROP TABLE EMP CASCADE;

十、导入数据

数据导入在 disql 中支持 start 或反引号 ` 方式执行脚本,图形化工具导入只能用手工 commit,否则数据未真正落库:

-- disql 中执行 SQL 脚本(两种方式均可) start /dm8/sql/create_emp.sql `/dm8/sql/create_emp.sql

⚠️ 易错点(高频失分点)

  1. 图形化导入后必须手工 COMMIT
  2. 主外键依赖顺序导入——先导主表(DEPT),再导从表(EMP),否则外键约束报错;
  3. 导入失败先回头检查表与约束是否建对,而不是反复重导。

十一、视图创建(复杂视图、物化视图)

视图是考试最耗时、最难的一环,通常 2 个复杂视图 + 1 个物化视图。

11.1 普通视图与复杂视图

普通视图不存储数据,本质是一条 SELECT 定义的"虚拟表"。复杂视图考察多表连接、聚合函数(GROUP BY)、子查询过滤等。

-- 复杂视图:多表连接 + 聚合 + 子查询过滤 CREATE OR REPLACE VIEW V_DEPT_SAL AS SELECT D.DEPTNO, D.DNAME, SUM(E.SALARY) AS TOTAL_SAL FROM DEPT D JOIN EMP E ON D.DEPTNO = E.DEPTNO GROUP BY D.DEPTNO, D.DNAME HAVING SUM(E.SALARY) > (SELECT AVG(SALARY) * 2 FROM EMP);

💡 考试技巧:先单独跑 SELECT 子句确认结果正确,再拼接 CREATE VIEW ... AS,避免视图创建失败反复调试。

11.2 物化视图(重点 + 高频失分点)

物化视图真正存储数据,三种刷新方式必须分清:

刷新方式 关键字 说明
完全刷新 COMPLETE 全量重建(数据量小、简单场景)
强制刷新 FORCE 能快速则快速,否则完全
快速刷新 FAST 增量刷新,必须先建物化视图日志表
-- ① 先建物化视图日志(快速刷新前提!高频失分点) CREATE MATERIALIZED VIEW LOG ON EMP WITH ROWID (EMPNO, ENAME, SALARY, DEPTNO) PURGE START WITH SYSDATE REPEAT INTERVAL '1' DAY; -- ② 创建物化视图(快速刷新 + 定时刷新计划) CREATE MATERIALIZED VIEW MV_EMP_SAL REFRESH FAST WITH ROWID START WITH SYSDATE NEXT SYSDATE + 1 AS SELECT EMPNO, ENAME, SALARY FROM EMP WHERE SALARY >= 5000; -- ③ 手动一次性刷新多个物化视图(DBMS_MVIEW 包,需先创建系统包) SP_CREATE_SYSTEM_PACKAGES(1, 'DBMS_MVIEW'); CALL DBMS_MVIEW.REFRESH('MV_EMP_SAL', 'F'); -- F=快速刷新;也可 'FC' 混合刷新

⚠️ 高频失分点:物化视图增量刷新(fast)必须先建日志表,忘记建日志表或日志列不齐,刷新会失败。


十二、索引创建

-- 基本索引 CREATE INDEX IDX_EMP_SALARY ON EMP(SALARY); -- 复合索引 + 指定表空间(注意索引表空间考点) CREATE INDEX IDX_EMP_DEPT_SAL ON EMP(DEPTNO, SALARY) TABLESPACE TBS; -- 重建 / 删除索引 ALTER INDEX IDX_EMP_SALAY REBUILD; DROP INDEX IDX_EMP_SALARY;

💡 索引作用是加速查询,创建索引主要注意:表空间指定、复合索引列顺序、是否唯一(CREATE UNIQUE INDEX)。


十三、逻辑备份与逻辑还原(dexp / dimp)

13.1 四种模式

dexp(逻辑导出)/ dimp(逻辑导入)位于 bin 目录,四种级别互斥:

级别 关键字 说明
数据库级 FULL 导出/导入整个数据库
用户级 OWNER 一个或多个用户的所有对象
模式级 SCHEMAS 一个或多个模式的所有对象
表级 TABLE 一个或多个指定表/分区

13.2 备份(dexp)

# 全库导出 ./dexp SYSDBA/Dameng123 file=/dm8/backup/full.dmp log=/dm8/backup/full.log full=y # 用户导出 / 模式导出 / 表导出 ./dexp SYSDBA/Dameng123 file=usr.dmp owner=('TEST01') ./dexp SYSDBA/Dameng123 file=sche.dmp schemas='DMHR' ./dexp SYSDBA/Dameng123 file=tab.dmp tables=('DMHR.EMPLOYEE') # 大库必备:多文件分割(FILE 必须含 %U,FILESIZE 每文件上限) ./dexp SYSDBA/Dameng123 file=full_%U.dmp filesize=128m full=y

关键参数:DIRECTORY(导出目录)、FILESIZE(单文件大小,须配 %U)、PARALLEL(并行)、COMPRESS(压缩)、QUERY(过滤条件)、ENCRYPT_PASSWORD(加密)。

13.3 还原(dimp)

# 全库导入 ./dimp SYSDBA/Dameng123 file=/dm8/backup/full.dmp full=y # 表存在时的行为:SKIP / APPEND / TRUNCATE / REPLACE ./dimp SYSDBA/Dameng123 file=tab.dmp tables=('EMP') table_exists_action=replace # 模式映射(考试易错点) ./dimp SYSDBA/Dameng123 file=sche.dmp schemas='SRC' remap_schema=SRC:DST # 大数据量调优 ./dimp SYSDBA/Dameng123 file=full.dmp full=y PARALLEL=8 TABLE_PARALLEL=4 \ FAST_LOAD=Y COMMIT_ROWS=10000

⚠️ 易错点汇总

  1. **模式映射(REMAP_SCHEMA)**是高频易错点,跨用户导入必须配对;
  2. 目录权限不足报 -7020chown -R dmdba:dinstall <目录>
  3. 源库 GB18030 / 目标库 UTF-8 会造成中文乱码,初始化时字符集要保持一致;
  4. 大库禁用本机执行 dexp/dimp:导出工具内存峰值可达数 GB,可能触发 OOM Killer 误杀 dmserver 进程,生产环境务必在独立备份机执行(引自知达梦知识库《达梦备份恢复知识库》生产禁令)。

十四、存储过程与函数

考试通常只考存储函数,典型题是"根据员工编码 + 月份返回工资(含考勤扣款)",重点是入参合法性检查与异常处理——异常时必须返回错误值而不是报错(高频失分点)。

-- 存储函数:按月返回员工实发工资,异常返回 -1 CREATE OR REPLACE FUNCTION F_GET_SAL ( P_EMPNO INT, P_MONTH VARCHAR(6) ) RETURN NUMERIC(10,2) AS V_SAL NUMERIC(10,2); BEGIN -- 入参合法性检查 IF P_EMPNO IS NULL OR P_MONTH IS NULL THEN RETURN -1; END IF; -- 查询工资(查无此人由异常统一处理) SELECT SALARY INTO V_SAL FROM EMP WHERE EMPNO = P_EMPNO; IF SQL%NOTFOUND THEN RETURN -1; END IF; RETURN V_SAL; EXCEPTION WHEN NO_DATA_FOUND THEN RETURN -1; WHEN OTHERS THEN RETURN -1; END; / -- 调用 SELECT F_GET_SAL(1001, '202609') FROM DUAL;

⚠️ 易错点:异常分支必须 RETURN 错误值,出口统一,不能抛异常让调用端 CRASH。存储过程用 CREATE OR REPLACE PROCEDURE,逻辑同函数。


十五、ODBC 与 Python 接口配置

15.1 ODBC 配置

ODBC 是"送分题",按模板改参数即可,关键是核对连接参数

# odbcinst.ini:注册驱动 [DM8ODBC] Description = DM ODBC DSN Driver = /dm8/bin/libdmdpi.so # 以实际安装路径为准 # odbc.ini:配置数据源(核对端口/用户/密码/服务器名) [DM8] Description = DM Database Driver = DM8ODBC SERVER = localhost UID = SYSDBA PWD = Dameng123 TCP_PORT = 5236

验证:isql DM8 进入 ODBC 交互,执行 select * from dual;

15.2 Python 接口(dmPython)

# 关键:配置环境变量(root 没有 LD_LIBRARY_PATH,需手动添加) export PATH=$PATH:/dm8/bin export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/dm8/bin
import dmPython conn = dmPython.connect(user='SYSDBA', password='Dameng123', server='localhost', port=5236) cur = conn.cursor() cur.execute('SELECT EMPNO, ENAME FROM EMP WHERE DEPTNO=20') for row in cur.fetchall(): print(row) cur.close() conn.close()

💡 经验:Python 接口题会提供模板,考试时改参数即可,属于易拿分项。


十六、高频踩坑清单(考试实战汇总)

# 踩坑点 解决方案
1 初始化参数(页/簇/大小写敏感/字符集)设错 只能删除实例重新初始化,先看题再点确认
2 SYSDBA 密码大小写输错(Caps Lock) 保持 Caps Lock 状态一致;错了重建实例
3 图形化工具报 invalid(NULL) pointer / 核心转储 重配 DISPLAY,在 xhost + 的同一窗口启动
4 数据导入失败 检查表/约束;按主外键顺序;图形化记得 commit
5 物化视图快速刷新失败 先建物化视图日志表再建物化视图
6 备份报 -8055 备份目录冲突 备份集与归档集分开目录,清掉旧备份集
7 备份报 -718 归档日志不连续 执行 checkpoint(100) 或重启数据库
8 还原报 DB_MAGIC 不匹配 还原必须是同一个库;跨库需 recover ... update db_magic
9 数据文件读写出错 用 root 操作了 console 导致权限变更,改用 dmdba
10 dimp 导入中文乱码 源/目标库字符集一致(GB18030/UTF-8)
11 存储函数异常报错崩溃 异常分支统一 RETURN 错误值,禁止抛异常
12 密码带特殊字符连接失败 转义:'SYSDBA/"Dameng@123":5236'

十七、备考策略与时间分配

  1. 主线练习:按第二节的"主线"顺序,快速串 3 遍——工具路径、disql、manager 双线都练。
  2. 重点攻难点:视图(复杂 + 物化)最难最耗时,存储函数注意异常返回,模式映射多练几遍。
  3. 时间分配(2 小时):安装/初始化/启停(20 分钟)→ 表空间/用户/表/导入(35 分钟)→ 视图/索引(30 分钟)→ 备份还原(20 分钟)→ 函数/接口(10 分钟)→ 检查兜底(5 分钟)。
  4. 备份优先:若视图卡壳时间不够,先做备份还原和接口(送分项),再回来补视图。
  5. 没有要求的按默认值处理,有要求的一律严格照做——这往往是区分过与不过的细节。
评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服