注册
DCA培训考试心得体会
培训园地/ 文章详情 /

DCA培训考试心得体会

Iris. 2026/08/19 205 0 0

一、环境搭建

1.1 虚拟机与操作系统

备考 DCA 首先要有一个可用的达梦运行环境。我选择了 VMware Workstation 16 + 银河麒麟高级服务器版 V10 SP2 的组合——这与考试机环境基本一致。

踩的第一个坑是 VMware Tools:安装时因缺少内核开发包,vmware-install.pl 编译模块失败。这里有两个解决路径:一是安装时选择跳过编译的精简模式(同样支持复制粘贴和分辨率调整);二是用系统自带的 open-vm-tools 替代。

经验:复制粘贴不生效时,先看 $DISPLAY 有没有值。没有图形桌面会话(纯命令行系统),复制粘贴物理上不可用——不是 Tools 没装好,而是没有 X 剪贴板这个载体。启动图形会话后,再重启 vmtoolsd 的 vmusr 进程即可。

1.2 磁盘扩容

第二个坑是磁盘空间:初始化实例时提示"创建日志文件失败,No space left on device"。达梦初始化实例需要 3 组 1G 日志 + 数据文件,虚拟机默认 20G 磁盘很快告急。

扩容流程(麒麟 LVM 结构):

# VMware 侧:关机 → 设置 → 磁盘扩展到 50G → 开机 growpart /dev/sda 2 # 扩展分区 pvresize /dev/sda2 # 刷新 LVM 物理卷 lvextend -l +100%FREE /dev/mapper/klas-root # 扩展根逻辑卷 xfs_growfs / # 扩展文件系统(根是 xfs 用这个)

经验:pvresize 报 "Failed to find device" 时,先 parted /dev/sda resizepart 2 100%pvresize,顺序错了就找不到新空间。

二、达梦安装与初始化

2.1 命令行安装

考试环境多为无图形界面的服务器,命令行安装是必会技能:

# 创建安装用户 groupadd dinstall useradd -g dinstall -m -d /home/dmdba -s /bin/bash dmdba # 挂载镜像 mkdir -p /mnt/dm && mount /dev/cdrom /mnt/dm # 安装(指定临时目录避免 /tmp 空间不足) mkdir -p /home/dmdba/tmp export DM_INSTALL_TMPDIR=/home/dmdba/tmp cd /mnt/dm && ./DMInstall.bin -i

易错点:安装时提示"临时目录空间不足"是经典问题——达梦安装时把安装文件解压到 /tmp,需要约 2G 空间。设置环境变量 DM_INSTALL_TMPDIR 指向大空间目录即可,这是官方手册明确给出的解法。

2.2 dminit 初始化实例

初始化参数必须逐项理解,考试常考:

./dminit path=/dm/data db_name=DMSALM instance_name=DMSALMDB \ port_num=5240 EXTENT_SIZE=16 PAGE_SIZE=16 CHARSET=1 \ SYSDBA_PWD=Dameng123 SYSAUDITOR_PWD=Dameng123 \ log_size=1024 log_num=3
  • PAGE_SIZE=16:页大小 16K,初始化后不可修改,决定单行最大长度
  • CHARSET=1:UTF-8
  • EXTENT_SIZE=16:簇大小(页为单位)

易错点:无图形环境的虚拟机上跑图形化安装/初始化(./DMInstall.bin 或 dbca)会报 SWTError: No more handles [gtk_init_check() failed]——这是没有 X server 导致,改用 -i 命令行参数或 dminit 即可。

三、权限与对象管理

3.1 表空间 / 用户 / 角色 / 资源限制

达梦的权限体系与 Oracle 高度相似:角色(ROLE)→ 用户(USER)→ 权限(GRANT),并支持资源限制文件(PROFILE):

-- 表空间(含自动扩展) CREATE TABLESPACE "TSAL" DATAFILE '/dm/data/DMSALM/TSAL_01.DBF' SIZE 512 AUTOEXTEND ON NEXT 32 MAXSIZE 10240; -- 资源限制:失败 5 次锁定、90 天未登录锁定、修改 3 次后不能重用旧密码 CREATE PROFILE "PRO_SALM" LIMIT FAILED_LOGIN_ATTEMPTS 5 PASSWORD_LIFE_TIME 90 PASSWORD_LOCK_TIME 5 PASSWORD_REUSE_MAX 3; -- 用户:默认表空间 + 索引表空间 + 资源限制 + 角色 CREATE USER "U_DMSALM" IDENTIFIED BY "Dameng123" DEFAULT TABLESPACE "TSAL" INDEX_TABLESPACE "TINDEX" PROFILE "PRO_SALM"; GRANT RESOURCE, VTI, "ROLE_SALM" TO "U_DMSALM";

关键点:资源限制里"锁定"由两个参数配合——FAILED_LOGIN_ATTEMPTS(触发条件)+ PASSWORD_LOCK_TIME(锁多久),只填次数不填锁定时间,锁定不生效。

3.2 建表与数据录入

建表时需注意主键、外键、唯一、CHECK、NOT NULL等参数。两个容易翻车的点:

  1. 外键依赖顺序:先插主表(部门),再插从表(员工)。否则报"违反引用约束 6607"。
  2. 自增列显式赋值:SALARY 表的 SERIALNUM INTEGER IDENTITY(1,1) 是自增列,直接插入序号会报 -1723,需先 SET IDENTITY_INSERT DMSALM.SALARY ON;,或插入时不写该列让系统自动编号。

3.3 视图 / 物化视图

视图要注意连表用 JOIN...ON,过滤用 WHERE,且别名不能是保留字(如 MAX/MIN/AVG)。

CREATE MATERIALIZED VIEW "DMSALM"."V_TJ" AS SELECT d.dname, MAX(s.basicsal+s.bonus), ... GROUP BY d.dname HAVING AVG(...) > 10000; -- 手动刷新(COMPLETE 全量、FAST 增量需物化视图日志、FORCE 自动降级) REFRESH MATERIALIZED VIEW "DMSALM"."V_TJ" COMPLETE;

3.4 函数:带 OUT 参数返回多值

参考模拟题要求函数"返回薪资和备注"两个值。对应函数可写为

CREATE OR REPLACE FUNCTION "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+s.bonus, s.comm INTO v_salary, o_bz FROM DMSALM.SALARY s JOIN 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 RETURN -1000; END;

3.5 逻辑备份与导入

# 导出整个模式(schemas 导出所有对象和数据) dexp SYSDBA/Dameng123@localhost:5240 file=/bakcup/dmsalm.dmp schemas=DMSALM # 导入并映射到目标用户 dimp SYSDBA/Dameng123@localhost:5240 file=/bakcup/dmsalm.dmp remap_schema=DMSALM:SAL_BAK

易错点:导出目录必须 dmdba 有写权限chown dmdba:dinstall /backup),否则报 Permission denied, code 13;导入报"无效的对象"通常是 dmp 里的模式在目标库不存在,先建同名用户或 remap 即可。

四、Python 接口安装

达梦提供 dmPython 驱动,从安装目录源码安装:

export DM_HOME=/dm/dmdbms export LD_LIBRARY_PATH=/dm/dmdbms/bin:$LD_LIBRARY_PATH cd /dm/dmdbms/drivers/python/dmPython && python3 setup.py install
import dmPython conn = dmPython.connect(user='HR', password='xxx', server='127.0.0.1', port=5236) cursor = conn.cursor() cursor.execute('SELECT * FROM HR.T_EMP WHERE ROWNUM <= 10') print(cursor.fetchall())

易错点:import dmPythonlibdmP1.so: cannot open shared object file,是动态库路径问题export LD_LIBRARY_PATH 指到达梦 bin 目录即可;连接报 -70028 创建连接失败,检查 server 参数(用 127.0.0.1)和端口是否监听。

五、心得体会

  1. DCA 是纯实操考试,手熟程度决定得分。需要多做几遍

  2. 可以将备考期间遇到的每个报错进行整理,这些恰恰是考试最容易设的坑。

  3. 达梦官方《DM8 管理员手册》和 DCA 实验手册是考试范围的核心参考,网上资料仅供参考。遇到不确定的语法,建议查找手册原文。

  4. 达梦语法与 Oracle 高度兼容(PL/SQL、角色权限、物化视图逻辑一致),有 Oracle/MySQL 基础的人上手很快,差异点主要集中在工具链和安装部署。

5.尽量提前准备好考试相关环境,避免在考试时因环境问题出错

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服