DM8 DCA 培训考试备考与实操心得
从环境搭建到对象管理、逻辑备份与 Python 连接的完整复习路线
DCA 是一项强调实际操作的认证考试。真正决定得分的,不是记住多少概念,而是能否在规定时间内完成安装、初始化、权限配置、对象创建、数据导入、备份恢复和程序连接,并在出现报错时快速定位原因。本文按实操顺序整理一套可重复练习的备考路径,重点记录命令、验证方法与高频失分点。
文章结构
• 一、环境搭建:虚拟机、图形会话、磁盘扩容
• 二、达梦安装与实例初始化:安装用户、命令行安装、dminit 和服务验证
• 三、表空间、用户、角色与资源限制:建立清晰的权限和存储关系
• 四、数据对象管理:约束、数据装载、视图、物化视图、索引与函数
• 五、逻辑备份与跨模式导入:dexp、dimp 和 REMAP_SCHEMA
• 六、dmPython 安装与连接:环境变量、用户级安装与最小验证脚本
• 七、高频报错速查:从现象快速定位权限、路径、依赖和对象问题
• 八、备考心得与冲刺清单:把每个考点练成可验证的操作闭环
一、环境搭建
1.1 虚拟机与操作系统
备考阶段应尽量使用接近考试机的环境。我采用 VMware Workstation 16 与银河麒麟高级服务器版 V10 SP2,既能练习图形管理工具,也能覆盖无图形界面时的命令行操作。建议给虚拟机预留足够的磁盘、内存和快照空间,安装完成后立即做一个基础快照,后续练习失败时可以快速恢复。
经验:图形界面中的复制粘贴依赖完整的桌面会话、VMware 客户机工具以及宿主机到虚拟机之间的剪贴板链路。若复制粘贴失效,先执行 echo $DISPLAY;如果没有输出,说明当前不是可用的 X 图形会话。进入桌面后,再检查 open-vm-tools 或 VMware Tools 的 vmusr 进程。
1.2 磁盘扩容
初始化实例需要创建系统表空间、用户表空间以及多组联机日志文件。虚拟机默认 20 GB 磁盘很容易不足,典型报错是 No space left on device。扩容前先确认根文件系统、分区和 LVM 的实际布局,以下命令仅适用于根分区位于 /dev/sda2、文件系统为 XFS 的常见麒麟 LVM 环境。
易错点:不要在没有确认设备名、分区号、卷组和文件系统类型时直接照抄命令。growpart 不可用时,可以使用 parted 调整分区末端;ext4 文件系统应使用 resize2fs,而不是 xfs_growfs。
二、达梦安装与实例初始化
2.1 创建安装用户并准备目录
安装用户负责软件目录和数据库运行文件。生产环境不要把安装目录或系统目录设置为 777;只需将目标目录的所有者设置为 dmdba,组设置为 dinstall,并授予满足安装和运行需要的权限。
2.2 命令行安装
经验:提示临时目录空间不足时,通常是安装程序需要在 /tmp 解压文件。将 DM_INSTALL_TMPDIR 指向容量充足且 dmdba 可写的目录即可。无图形环境出现 gtk_init_check failed 时,不要继续排查显示库,直接使用 -i 命令行安装。
2.3 使用 dminit 初始化实例
2.4 服务与连接验证
初始化成功并不等于数据库已经可用。注册或启动服务后,应同时验证进程、端口和数据库连接。考试中只看启动命令的返回结果,容易把实例名、端口或配置文件用错。
三、表空间、用户、角色与资源限制
3.1 先理解对象之间的关系
• 表空间是逻辑存储容器,一个表空间可以包含一个或多个 DBF 数据文件。
• DBF 是表空间的物理文件,一个 DBF 只属于一个表空间。
• 模式是对象的命名和归属空间,不直接对应某个 DBF。
• 一个模式中的不同表、索引或分区可以位于不同表空间;多个模式也可以共用同一表空间。
• 角色是权限集合,用户获得角色后继承其中的系统权限和对象权限。PROFILE 管口令、会话和资源限制,不负责业务表访问权限。
3.2 创建表空间
验证:创建完成后在管理工具中查看表空间状态、数据文件路径、当前大小和自动扩展上限。创建对象时通常指定表空间,不直接指定某个 DBF。
3.3 创建资源限制和角色
上例表示连续登录失败达到 5 次后锁定,锁定持续时间为 5 分钟;旧密码需要经过 3 次密码变更后才能再次使用;账户连续 90 天未登录时锁定。PASSWORD_LIFE_TIME 表示密码有效期,不等同于“90 天未登录锁定”。
3.4 创建用户并授予角色
易错点:DM8 的 CREATE USER 子句顺序不能随意调整。PROFILE 应写在 DEFAULT TABLESPACE 和 DEFAULT INDEX TABLESPACE 之前。考试按题目授予权限,不要为了省事给普通业务用户 DBA 或 SELECT ANY TABLE。
四、数据对象管理
4.1 建表 约束与装载顺序
建表时应一次性核对数据类型、主键、外键、唯一、检查、默认值和非空约束。存在外键关系时,应先创建并装载父表,再处理子表。例如部门表是员工表的父表,员工表又是考勤日志表的父表,正确顺序是部门、员工、考勤。
CREATE TABLE "U_DMSALM"."DEPT" (
DEPTNO INT PRIMARY KEY,
DNAME VARCHAR(30) NOT NULL
) TABLESPACE "TSAL";
CREATE TABLE "U_DMSALM"."EMP" (
EMPNO INT PRIMARY KEY,
ENAME VARCHAR(30) NOT NULL,
DEPTNO INT,
SALARY DEC(10,2) CHECK (SALARY >= 1800),
CONSTRAINT FK_EMP_DEPT FOREIGN KEY (DEPTNO)
REFERENCES "U_DMSALM"."DEPT"(DEPTNO)
) TABLESPACE "TSAL";
易错点:IDENTITY 自增列通常不需要在 INSERT 中显式赋值。若题目明确要求保留原序号,才在确认语法和作用范围后开启 IDENTITY_INSERT,并在完成后关闭。
4.2 普通视图
普通视图只保存查询定义,不保存结果数据。它适合封装常用连接、隐藏不需要暴露的字段并统一查询口径。创建视图时,连接关系写在 JOIN ON 中,业务过滤写在 WHERE 中,聚合过滤写在 HAVING 中。
CREATE OR REPLACE VIEW "U_DMSALM"."V_EMP_SAL" AS
SELECT E.EMPNO,
E.ENAME,
D.DNAME,
E.SALARY
FROM "U_DMSALM"."EMP" E
JOIN "U_DMSALM"."DEPT" D
ON E.DEPTNO = D.DEPTNO
ORDER BY E.SALARY DESC;
4.3 物化视图
物化视图会保存查询结果,因此读取速度通常比复杂的实时聚合更快,但基表变化后结果可能变旧。COMPLETE 是全量刷新;FAST 依赖满足条件的物化视图日志;ON DEMAND 表示按需手工刷新。
CREATE MATERIALIZED VIEW "U_DMSALM"."MV_DEPT_SAL"
BUILD IMMEDIATE
REFRESH COMPLETE ON DEMAND
AS
SELECT D.DNAME,
MAX(E.SALARY) AS MAX_SALARY,
AVG(E.SALARY) AS AVG_SALARY
FROM "U_DMSALM"."EMP" E
JOIN "U_DMSALM"."DEPT" D
ON E.DEPTNO = D.DEPTNO
GROUP BY D.DNAME;
REFRESH MATERIALIZED VIEW "U_DMSALM"."MV_DEPT_SAL" COMPLETE;
4.4 索引
索引通常建在经常出现在 WHERE、JOIN 和 ORDER BY 条件中的列上。索引创建后无需在 SELECT 中显式调用,优化器会根据数据量、统计信息和查询条件决定是否使用。索引会占用空间,也会增加 INSERT、UPDATE 和 DELETE 的维护成本。
CREATE INDEX "U_DMSALM"."IX_EMP_DEPTNO"
ON "U_DMSALM"."EMP"(DEPTNO)
TABLESPACE "TINDEX";
EXPLAIN SELECT *
FROM "U_DMSALM"."EMP"
WHERE DEPTNO = 10;
4.5 存储函数返回多个值
函数可以通过 RETURN 返回主结果,再通过 OUT 参数带回附加信息。异常分支不应只返回错误码而忽略 OUT 参数,最好同步返回可识别的说明。
CREATE OR REPLACE FUNCTION "U_DMSALM"."F_GETGZ"(
P_EMPNO INT,
P_DEPTNO INT,
O_BZ OUT VARCHAR
) RETURN DEC(10,2)
AS
V_SALARY DEC(10,2);
BEGIN
SELECT S.BASICSAL + NVL(S.BONUS, 0), S.COMM
INTO V_SALARY, O_BZ
FROM "U_DMSALM"."SALARY" S
JOIN "U_DMSALM"."EMP" E ON S.EMPNO = E.EMPNO
WHERE E.EMPNO = P_EMPNO
AND E.DEPTNO = P_DEPTNO;
RETURN V_SALARY;
EXCEPTION
WHEN OTHERS THEN
O_BZ := SQLERRM;
RETURN -1000;
END;
/
五、逻辑备份与跨模式导入
dexp 和 dimp 用于逻辑导出与导入。用户级导出适合备份某个用户拥有的全部模式对象;跨用户恢复时,目标用户必须先创建,并通过 REMAP_SCHEMA 指定源模式与目标模式的映射关系。导出和导入命令应在 Linux 终端执行,而不是在管理工具的 SQL 查询窗口中执行。
导入前在管理工具中以具备管理权限的账户创建目标用户,并按题目要求配置默认表空间、索引表空间、PROFILE 与角色。下面只展示最小示例。
易错点:出现 Permission denied 通常是操作系统目录权限不正确;出现“无效的对象”常见原因是把目标模式填进了源模式列表。导入时源模式仍是 U_DMSALM,映射参数才写 U_DMSALM:SAL_BAK。
导入完成后,不要只看“成功终止导入”。应查看日志中的导入对象数量,并用带模式名的 SQL 验证表、视图和数据行数。
SELECT OWNER, TABLE_NAME
FROM DBA_TABLES
WHERE OWNER = 'SAL_BAK';
SELECT COUNT(*)
FROM "SAL_BAK"."EMP";
六、dmPython 安装与连接
dmPython 安装失败通常集中在两个方面:找不到达梦安装目录,或当前用户无权写入系统级 site packages。先设置 DM_HOME、PATH 和动态库路径,再优先使用用户级安装,避免对系统目录执行 chmod 777。
排错:import dmPython 报 libdmdpi.so cannot open shared object file 时,重点检查 LD_LIBRARY_PATH;连接报 -70028 时,依次确认实例是否启动、端口是否监听、主机地址与端口是否正确,以及防火墙和认证信息。本机测试可使用 127.0.0.1,远程连接必须填写数据库服务器的实际地址。
七、高频报错速查
现象
常见原因
处理方向
No space left on device
虚拟磁盘、分区、LVM 或文件系统未真正扩容
依次检查 lsblk、pvs、lvs、df -hT,定位哪一层未扩展
gtk_init_check failed
当前环境没有可用的 X 图形会话
改用命令行安装或初始化;需要 GUI 时先启动桌面会话
违反引用约束 6607
子表数据引用了不存在的父表键
先导入父表,再导入子表;核对外键列值和数据类型
CREATE USER 在 PROFILE 附近报错
子句顺序错误
将 PROFILE 放在 DEFAULT TABLESPACE 和 DEFAULT INDEX TABLESPACE 之前
dimp 提示无效的对象
把目标模式当成源模式,或映射关系写反
源模式取自 dmp,使用 REMAP_SCHEMA=源模式:目标模式
dmPython Permission denied
普通用户尝试写系统级 site packages
使用 python3 setup.py install --user,或由管理员规范安装
未知表或视图
当前模式不是对象所属模式
SQL 中写完整模式名,例如 HR.T_EMP,并核对授权
八、备考心得与冲刺清单
DCA 备考强调实际操作。具体考试形式应以当期官方通知为准。有效复习不是重复阅读命令,而是将每个考点练成一条完整链路:明确使用哪个账户和目录,执行操作,查询验证结果,再演练一次失败后的恢复方法。
8.1 建议的练习顺序
独立完成一次命令行安装、实例初始化、服务启动和 disql 连接。
创建表空间并添加第二个 DBF,查看状态、容量和自动扩展属性。
创建 PROFILE、角色和用户,用新用户验证权限,再撤销权限复测。
从零创建带主键、外键、唯一、检查和默认值约束的表,并按依赖顺序装载数据。
创建普通视图、物化视图和索引,刷新物化视图并查看执行计划。
完成一次用户级逻辑导出,再映射导入到另一个用户,核对对象和行数。
创建并调用存储过程或函数,安装 dmPython 并完成连接、查询和关闭。
至少进行两次 120 分钟全流程模拟,记录每个任务的耗时和故障回退步骤。
8.2 考前最后检查
• 能说清用户、模式、角色、PROFILE、表空间和 DBF 的区别与关系。
• 所有跨模式 SQL 都能主动写出完整模式名,避免未知表或误操作当前模式。
• 熟悉 disql、Manager、dexp、dimp 和 dmPython 的使用边界。
• 记住父表先于子表、源模式先于目标映射、物化视图刷新后再验证。
• 遇到报错先看完整错误信息、当前账户、当前路径、端口、对象所属模式和操作系统权限。
• 每道题完成后立即执行验证 SQL,不把“命令已运行”当成“任务已完成”。
结语
DCA 的知识点并不孤立:安装目录决定工具位置,实例参数决定连接方式,表空间承载对象,用户和角色控制操作范围,逻辑导入导出又依赖模式和权限。把这些关系串起来之后,许多看似不同的报错都会归结为路径、权限、对象归属或执行顺序四类问题。备考阶段最值得保留的材料,不是零散命令,而是一份经过验证的操作清单和错误处理记录。
文章
阅读量
获赞
