DCA培训认证和实操笔记整理
一、学习总结与实践建议
(一)学习总结
达梦数据库DCA认证课程覆盖了数据库从安装部署到开发接口的全流程技能,核心在于“实操为王”——无论是安装配置、权限管理,还是备份还原、存储过程开发,都需要通过反复实操巩固理解。重点掌握命令行操作(适用于生产环境无图形化场景),同时理解各类对象(表空间、用户、触发器等)的设计逻辑。
(二)实践建议
- 搭建本地测试环境,重复实操核心模块(安装、备份还原、权限管理)至少3次;
- 模拟场景(如多用户权限管控、定时备份、数据迁移),提升综合应用能力;
- 整理个人问题台账,记录排查过程与解决方案;
- 结合达梦官方文档(https://eco.dameng.com/),深入学习高级特性(如集群部署、性能优化);
- 参与达梦社区讨论,交流实操经验,拓宽知识边界。
二、学习概述
达梦数据库管理员(DCA)认证课程涵盖达梦数据库从安装部署到开发接口配置的全流程核心技能,是掌握国产数据库运维与开发的关键课程。以下内容梳理几个基础核心模块的学习要点与实操细节,并结合命令行与图形化两种操作方式说明。
三、核心模块学习过程与实操详解
(一)达梦数据库企业版安装
1. 要点
达梦数据库安装的软硬件环境要求、用户与目录规划、图形化与命令行两种安装方式,以及安装过程中的常见问题排查,核心是确保安装环境合规、权限配置正确。
2. 实操步骤(以Kylin10系统为例)
(1)环境检查
bash
查看系统库版本
ldd --version
查看内核版本
uname -r
查看CPU架构
lscpu
查看内存使用(要求至少2G可用)
free -m
查看磁盘使用(安装目录至少2G可用空间)
df -h
关键指标:CPU支持x86_64架构,内存≥2G,安装目录剩余空间≥2G,内核版本≥4.19。
(2)用户与目录配置
bash
创建安装用户组dinstall
groupadd dinstall
创建安装用户dmdba,归属dinstall组
useradd -g dinstall -m -d /home/dmdba -s /bin/bash dmdba
设置dmdba密码
passwd dmdba
验证用户信息
id dmdba
创建安装目录/dm
mkdir /dm
授予dmdba用户目录权限
chown dmdba:dinstall /dm
验证目录权限
ls -ld /dm
(3)安装包挂载与准备
bash
创建挂载目录
mkdir /mnt/dm
挂载ISO安装包(若为压缩包需先解压)
mount dm8_x86_kylin10_64.iso /mnt/dm
验证安装文件
cd /mnt/dm
ls -l
核心文件:DMInstall.bin(安装程序)、DM8 Install.pdf。
(4)图形化安装(推荐新手)
bash
root用户开启图形化权限
xhost +
查看DISPLAY变量
echo $DISPLAY
切换至dmdba用户
su - dmdba
设置DISPLAY变量(与root用户一致)
export DISPLAY=:0
执行安装程序
cd /mnt/dm
./DMInstall.bin
图形化安装向导流程:
- 选择语言(简体中文)与时区(GMT+08:00);
- 接受许可证协议;
- 可选导入Key文件(无则直接下一步);
- 选择安装组件(典型安装包含服务器、客户端、驱动、用户手册);
- 选择安装目录(/dm/dmdbms);
- 确认安装前小结(检查路径、空间、内存等信息);
- 执行安装,弹出脚本执行提示后,新开终端以root身份执行:
bash
/dm/dmdbms/script/root/root_installer.sh
- 执行完成后返回安装界面,点击“完成”,可选立即初始化数据库。
(5)命令行安装(无图形化环境适用)
bash
dmdba用户执行安装程序,加-i参数进入命令行模式
cd /mnt/dm
./DMInstall.bin -i
按提示依次配置
安装语言:1(简体中文)
是否输入Key文件路径:n(无Key时)
是否设置时区:n(默认中国标准时间)
安装类型:1(典型安装)
安装目录:/dm/dmdbms
确认安装路径:y
确认安装:y
安装完成后,以root身份执行配置脚本(同图形化安装步骤7)。
(二)初始化数据库实例
1. 要点
数据库实例初始化的核心参数配置、服务注册与启停、客户端连接方法,理解实例与数据库的关系,确保实例配置满足业务性能与存储需求。
2. 实操步骤
(1)图形化初始化(dbca工具)
bash
dmdba用户启动数据库配置助手
cd /dm/dmdbms/tool
./dbca.sh
配置流程:
- 选择“创建数据库实例”,点击“开始”;
- 选择模板“一般用途”,取消“自动调整数据库性能参数”;
- 指定数据库目录:/dm/data;
- 配置数据库标识:数据库名DAMENG,实例名DMSERVER,端口号5236;
- 确认数据文件与日志文件路径(默认存储在数据库目录下);
- 配置初始化参数:
- 簇大小:16页;
- 页大小:8K;
- 日志文件大小:4096M;
- 字符集:GB18030;
- 其他参数默认;
- 口令管理:设置SYSDBA(系统管理员)和SYSAUDITOR(审计管理员)密码(需含大小写字母、数字,长度≥8);
- 可选创建示例库(DMHR、BOOKSHOP);
- 确认配置摘要,点击“完成”,按提示以root身份执行服务注册脚本:
bash
systemctl start DmServiceDMSERVER.service
mv /dm/dmdbms/bin/DmServiceDMSERVER.service /usr/lib/systemd/system/
systemctl enable DmServiceDMSERVER.service
(2)命令行初始化(dminit工具)
bash
切换至dmdba用户,进入bin目录
su - dmdba
cd /dm/dmdbms/bin
执行初始化命令
./dminit path=/dm/data db_name=DAMENG instance_name=DMSERVER port_num=5236
SYSDBA_PWD=Dameng123 SYSAUDITOR_PWD=Dameng123 EXTENT_SIZE=16 PAGE_SIZE=8 log_size=256
注册服务(root用户)
cd /dm/dmdbms/script/root
./dm_service_installer.sh -t dmserver -p DMSERVER -dm_ini /dm/data/DAMENG/dm.ini
启动服务
systemctl start DmServiceDMSERVER.service
参数说明:path(数据存储路径)、db_name(数据库名)、port_num(端口)、EXTENT_SIZE(簇大小)、PAGE_SIZE(页大小)。
(3)实例启停与连接测试
bash
启动实例
systemctl start DmServiceDMSERVER.service
停止实例
systemctl stop DmServiceDMSERVER.service
查看实例状态
systemctl status DmServiceDMSERVER.service
disql工具连接测试
cd /dm/dmdbms/bin
./disql sysdba/Dameng123@localhost:5236
连接成功提示:disql V8,进入SQL交互界面。
(4)图形化连接(manager工具)
bash
cd /dm/dmdbms/tool
./manager
连接配置:
- 主机名:localhost;
- 端口:5236;
- 用户名:SYSDBA;
- 口令:Dameng123;
- 验证方式:达梦服务器验证。
(三)表空间管理
1. 要点
表空间作为数据存储的逻辑单元,掌握表空间的创建、修改、删除操作,以及重做日志文件的管理,核心是通过合理的表空间规划提升存储效率与数据安全性。
2. 实操步骤
(1)表空间管理(以创建DMDATA表空间为例)
图形化方式:
- 打开manager工具,登录后在左侧“对象导航”中展开“表空间”;
- 右键“新建表空间”,填写表空间名DMDATA;
- 点击“添加”,配置数据文件:
- 路径:/dm/data/DAMENG/DMDATA01.DBF,大小128M,自动扩展,每次扩展10M,上限10G;
- 再次点击“添加”,配置第二个数据文件DMDATA02.DBF(同上述参数);
- 点击“确定”完成创建。
命令行方式:
sql
– 创建表空间
CREATE TABLESPACE dmdata
DATAFILE ‘/dm/data/DAMENG/DMDATA01.DBF’ SIZE 128,
‘/dm/data/DAMENG/DMDATA02.DBF’ SIZE 128;
– 增加数据文件
ALTER TABLESPACE dmdata ADD DATAFILE ‘/dm/data/DAMENG/DMDATA03.DBF’ SIZE 500;
– 修改数据文件大小
ALTER TABLESPACE dmdata RESIZE DATAFILE ‘/dm/data/DAMENG/DMDATA01.DBF’ TO 256;
– 设置数据文件自动扩展
ALTER TABLESPACE dmdata DATAFILE ‘/dm/data/DAMENG/DMDATA03.DBF’ AUTOEXTEND ON NEXT 20 MAXSIZE 20480;
– 表空间脱机(修改路径前需执行)
ALTER TABLESPACE dmdata OFFLINE;
– 修改数据文件路径
ALTER TABLESPACE dmdata RENAME DATAFILE ‘/dm/data/DAMENG/DMDATA01.DBF’ TO ‘/dm/data/DAMENG/TBS/DMDATA01.DBF’;
– 表空间联机
ALTER TABLESPACE dmdata ONLINE;
– 删除表空间(需确保无用户使用)
DROP TABLESPACE dmdata;
(四)用户与权限管理
1. 要点
用户、角色、资源限制的创建与管理,理解权限继承关系,通过角色批量分配权限,实现精细化的权限管控,确保数据库访问安全。
2. 实操步骤
(1)资源限制创建
图形化方式:
- 在manager工具中,展开“资源限制”,右键“新建资源限制”;
- 名称TESTPRO,配置参数:登录失败3次锁定5分钟,口令有效期90天,宽限期3天;
- 点击“确定”。
命令行方式:
sql
CREATE PROFILE TESTPRO LIMIT
FAILED_LOGIN_ATTEMPTS 3
PASSWORD_LIFE_TIME 90
PASSWORD_LOCK_TIME 5
PASSWORD_GRACE_TIME 3;
(2)角色创建与授权
图形化方式:
- 展开“角色”,右键“新建角色”,名称TESTROLE;
- 切换至“系统权限”页签,勾选CREATE TABLE、CREATE VIEW,勾选“转授”;
- 切换至“对象权限”页签,选择DMHR.EMPLOYEE表,勾选SELECT、INSERT、UPDATE、DELETE;
- 切换至“所属角色”页签,勾选RESOURCE角色;
- 点击“确定”。
命令行方式:
sql
– 创建角色
CREATE ROLE testrole;
– 授予系统权限(含转授权)
GRANT CREATE TABLE, CREATE VIEW TO testrole WITH ADMIN OPTION;
– 授予对象权限
GRANT SELECT, INSERT, UPDATE, DELETE ON dmhr.employee TO testrole;
– 授予其他角色权限
GRANT “RESOURCE” TO testrole;
– 回收权限
REVOKE UPDATE ON dmhr.employee FROM testrole CASCADE;
(3)用户创建与权限分配
图形化方式:
- 展开“用户”,右键“新建用户”;
- 常规配置:用户名TESTUSER,密码Dameng123,默认表空间DMDATA,资源限制TESTPRO;
- 所属角色:勾选TESTROLE、PUBLIC;
- 系统权限:勾选CREATE INDEX;
- 点击“确定”。
命令行方式:
sql
– 创建用户
CREATE USER testuser IDENTIFIED BY “Dameng123”
DEFAULT TABLESPACE dmdata
PROFILE testpro;
– 授予角色
GRANT testrole TO testuser WITH ADMIN OPTION;
– 授予系统权限
GRANT CREATE INDEX TO testuser;
– 修改用户密码
ALTER USER testuser IDENTIFIED BY “Dameng@123”;
– 锁定用户
ALTER USER testuser ACCOUNT LOCK;
– 删除用户
DROP USER testuser;
(五)SQL管理与表操作
1. 要点
表的创建与约束配置、数据插入与导入、SQL查询与聚合分析,熟练运用DMSQL语法实现数据管理,核心是理解约束的作用与SQL优化思路。
2. 实操步骤
(1)表创建与约束配置
命令行方式:
sql
– 创建部门表TESTDEPT
CREATE TABLE testuser.testdept (
deptid INT PRIMARY KEY,
deptname VARCHAR(50) NOT NULL,
location VARCHAR(30)
);
– 创建员工表TESTEMP(含外键约束)
CREATE TABLE testuser.testemp (
empid INT PRIMARY KEY,
empname VARCHAR(30) UNIQUE,
salary NUMBER(7, 2) CHECK(salary >= 8000 AND salary <= 30000),
deptid INT NOT NULL,
FOREIGN KEY (deptid) REFERENCES testuser.testdept(deptid)
);
约束说明:主键(PRIMARY KEY)确保唯一性,非空(NOT NULL)确保字段有值,唯一(UNIQUE)避免重复,检查(CHECK)限制值范围,外键(FOREIGN KEY)关联父表。
(2)数据插入与导入
sql
– 插入部门数据
INSERT INTO testuser.testdept (deptid, deptname, location)
VALUES (10, ‘研发部’, ‘北京’),
(20, ‘销售部’, ‘上海’),
(30, ‘人力资源部’, ‘广州’);
– 插入员工数据
INSERT INTO testuser.testemp (empid, empname, salary, deptid)
VALUES (1001, ‘张三’, 15000.00, 10),
(1002, ‘李四’, 12000.50, 20),
(1003, ‘王五’, 25000.00, 30);
– 提交事务
COMMIT;
– 脚本导入数据(TESTDATA.sql为提前编写的插入脚本)
@/dm/data/DAMENG/TESTDATA.sql;
(3)SQL查询与分析
sql
– 简单查询:查询研发部员工信息
SELECT * FROM testuser.testemp WHERE deptid = 10;
– 模糊查询:查询姓名含"张"的员工
SELECT * FROM testuser.testemp WHERE empname LIKE ‘%张%’;
– 排序查询:按薪资降序排列
SELECT * FROM testuser.testemp ORDER BY salary DESC;
– 聚合查询:按部门统计平均薪资(仅显示平均薪资≥12000的部门)
SELECT deptid, AVG(salary) AS avg_sal
FROM testuser.testemp
GROUP BY deptid
HAVING AVG(salary) >= 12000;
– 子查询:查询薪资高于公司平均水平的员工
SELECT empname, salary, deptid
FROM testuser.testemp
WHERE salary > (SELECT AVG(salary) FROM testuser.testemp);
– 多表连接查询:查询员工姓名、薪资及部门名称
SELECT e.empname, e.salary, d.deptname
FROM testuser.testemp e
JOIN testuser.testdept d
ON e.deptid = d.deptid;
(六)模式对象管理
1. 要点
索引、视图、物化视图、序列、同义词、外部链接等模式对象的创建与管理,理解各类对象的作用场景,通过合理的对象设计提升查询性能与开发效率。
2. 实操步骤
(1)索引创建
sql
– 为TESTEMP表的empname列创建B树索引
CREATE INDEX testuser.empindex ON testuser.testemp(empname);
作用:提升empname列的查询速度,适用于频繁按姓名查询的场景。
(2)视图创建
sql
– 创建视图,仅显示10、20部门员工信息
CREATE VIEW testuser.testview
AS SELECT empid, empname, salary
FROM testuser.testemp
WHERE deptid IN (10, 20)
WITH CHECK OPTION;
WITH CHECK OPTION:确保通过视图插入/更新的数据仍满足视图条件。
(3)物化视图创建与刷新
sql
– 创建物化视图日志(增量刷新必需)
CREATE MATERIALIZED VIEW LOG ON testuser.testemp;
– 创建物化视图
CREATE MATERIALIZED VIEW testuser.testmview
AS SELECT * FROM testuser.testemp;
– 完全刷新
REFRESH MATERIALIZED VIEW testuser.testmview COMPLETE;
– 增量刷新(需先创建物化视图日志)
REFRESH MATERIALIZED VIEW testuser.testmview FAST;
– 定时刷新(每天凌晨0点)
ALTER MATERIALIZED VIEW testuser.testmview
REFRESH FORCE
START WITH TRUNC(SYSDATE, ‘DD’) + 1
NEXT TRUNC(SYSDATE, ‘DD’) + 1;
(4)序列创建与使用
sql
– 创建序列,起始值1,增量1,最大值10000
CREATE SEQUENCE testuser.testseq
INCREMENT BY 1
START WITH 1
MAXVALUE 10000
MINVALUE 1;
– 获取下一个值
SELECT testuser.testseq.NEXTVAL FROM dual;
– 获取当前值(需先执行NEXTVAL)
SELECT testuser.testseq.CURRVAL FROM dual;
(5)同义词创建
sql
– 创建私有同义词(仅testuser用户可用)
CREATE SYNONYM testuser.emp FOR testuser.testemp;
– 创建公共同义词(所有用户可用)
CREATE PUBLIC SYNONYM emp FOR testuser.testemp;
– 访问同义词
SELECT * FROM testuser.emp; – 私有同义词
SELECT * FROM emp; – 公共同义词
(6)外部链接创建
sql
– 创建私有外部链接
CREATE LINK testuser.testdblink
CONNECT ‘DPI’
WITH testuser IDENTIFIED BY “Dameng@123”
USING ‘192.168.142.100:5236’;
– 访问远程数据
SELECT * FROM dmhr.employee@testuser.testdblink;
(七)逻辑备份与还原
1. 要点
dexp/dimp工具的使用,实现全库、模式级别的逻辑备份与还原,理解备份文件的存储结构与还原时的参数配置,确保数据可恢复性。
2. 实操步骤
(1)全库逻辑备份
bash
创建备份目录
mkdir -p /dm/backup/dexp
执行全库导出(dmdba用户)
cd /dm/dmdbms/bin
./dexp SYSDBA/Dameng123 directory=/dm/backup/dexp file=fulldb.dmp log=fulldb.log full=Y
参数说明:full=Y(全库导出)、directory(备份目录)、file(备份文件名)、log(日志文件名)。
(2)模式级备份
bash
导出DMHR模式
./dexp SYSDBA/Dameng123 directory=/dm/backup/dexp file=dmhr.dmp log=dmhr.log schemas=DMHR
(3)全库逻辑还原
bash
全库导入
./dimp SYSDBA/Dameng123 directory=/dm/backup/dexp file=fulldb.dmp log=dimpfulldb.log full=Y
(4)模式级还原(映射至TESTUSER模式)
bash
还原DMHR模式至TESTUSER
./dimp SYSDBA/Dameng123 directory=/dm/backup/dexp file=dmhr.dmp log=dimpdmhr.log remap_schema=DMHR:TESTUSER
(八)存储过程和函数
1. 要点
DMSQL程序的编写规范,实现带参数的存储过程与函数,处理异常场景,核心是利用过程化SQL提升数据处理效率。
2. 实操步骤
(1)存储过程:部门员工分等级加薪
sql
– 创建加薪日志表
CREATE TABLE “DMHR”.“LOG_ADDSALARY” (
“LOGID” BIGINT IDENTITY(1, 1) NOT NULL,
“LOGTIME” DATETIME(0) DEFAULT SYSDATE,
“EMPLOYEE_ID” INT,
“EMPLOYEE_NAME” VARCHAR(20),
“OLDSALARY” INT,
“NEWSALARY” INT,
“DEPARTMENT_ID” INT,
“VALIDDATE” DATE);
– 创建存储过程
CREATE OR REPLACE PROCEDURE dmhr.p_addsalbydept (in_deptid IN INT)
IS
v_newsalary INT := 0;
BEGIN
FOR EMP IN (SELECT salary, employee_id, employee_name FROM dmhr.employee WHERE department_id = in_deptid) LOOP
– 分等级加薪
IF (emp.salary < 10000) THEN
v_newsalary := emp.salary*(1+0.12);
ELSIF (emp.salary >= 10000 AND emp.salary <= 20000) THEN
v_newsalary := emp.salary*(1+0.1);
ELSE
v_newsalary := emp.salary*(1+0.08);
END IF;
– 更新薪资
UPDATE dmhr.employee t SET t.salary = v_newsalary WHERE t.employee_id = emp.employee_id;
– 记录日志
INSERT INTO dmhr.log_addsalary(logtime, employee_id, employee_name, oldsalary, newsalary, validdate, department_id)
VALUES (sysdate, emp.employee_id, emp.employee_name, emp.salary, v_newsalary, trunc(sysdate, ‘MM’)+1, in_deptid);
END LOOP;
COMMIT;
EXCEPTION
WHEN OTHERS THEN
ROLLBACK;
print(sqlcode||’–’||sqlerrm);
END;
– 调用存储过程(为101部门加薪)
CALL dmhr.p_addsalbydept(101);
– 查看加薪日志
SELECT * FROM dmhr.log_addsalary;
(2)存储函数:根据员工ID查询邮箱
sql
CREATE OR REPLACE FUNCTION dmhr.f_getempemail (in_empid IN INT) RETURN VARCHAR
IS
v_email VARCHAR;
BEGIN
SELECT email INTO v_email FROM dmhr.employee a WHERE a.employee_id = in_empid;
RETURN v_email;
EXCEPTION
WHEN NO_DATA_FOUND THEN
print(‘查无此人’);
RETURN ‘-99’;
WHEN OTHERS THEN
print(sqlcode||’–’||sqlerrm);
RETURN ‘-99’;
END;
– 调用函数
SELECT dmhr.f_getempemail(1002);
(九)接口配置
1. 要点
unixODBC与dmPython两种接口的配置方法,实现第三方应用与达梦数据库的连接,核心是确保驱动配置正确、环境变量生效。
2. 实操步骤
(1)unixODBC配置
bash
解压安装unixODBC
tar -zxvf unixODBC-2.3.0.tar.gz
cd unixODBC-2.3.0
./configure
make
make install
配置驱动(odbcinst.ini)
vim /etc/odbcinst.ini
[DM ODBC DRIVER]
Description = ODBC DRIVER FOR DM
Driver = /dm/dmdbms/drivers/odbc/libdodbc.so
配置数据源(odbc.ini)
vim /etc/odbc.ini
[DM]
Description = DM ODBC DSN
Driver = DM ODBC DRIVER
SERVER = localhost
UID = SYSDBA
PWD = Dameng123
TCP_PORT = 5236
配置环境变量
export LD_LIBRARY_PATH=LD_LIBRARY_PATH:/dm/dmdbms/drivers/odbc/
测试连接
isql dm -v
连接成功提示:`Connected!`。
(2)dmPython配置
bash
安装dmPython
cd /dm/dmdbms/drivers/python/dmPython
python3 setup.py install
配置环境变量(添加DPI驱动路径)
export LD_LIBRARY_PATH=LD_LIBRARY_PATH:/dm/dmdbms/bin
export PATH=$PATH:/dm/dmdbms/bin
编写测试脚本dm.py
vim dm.py
import dmPython
conn=dmPython.connect(user=‘SYSDBA’,password=‘Dameng123’,server=‘192.168.88.103’,port=5236)
cursor = conn.cursor()
cursor.execute(‘select employee_name from DMHR.EMPLOYEE limit 10’)
values = cursor.fetchall()
print(values)
cursor.close()
conn.close()
运行测试脚本
python3 dm.py
成功输出:10条员工姓名记录。
https://eco.dameng.com