注册
达梦 DCA 操作手册学习笔记:从安装到接口配置
专栏/技术分享/ 文章详情 /

达梦 DCA 操作手册学习笔记:从安装到接口配置

何处惹尘埃 2026/09/18 211 1 0
摘要

1. 达梦数据库企业版安装

实验目标

掌握命令行和图形化两种方式安装 DM 数据库,了解安装参数和 root 脚本的执行方式。

主要练习内容

  • 检查软硬件环境:ldd --version、uname -r、lscpu、free -m、df -h
  • 创建安装用户和组:
    groupadd dinstall useradd -g dinstall -m -d /home/dmdba -s /bin/bash dmdba passwd dmdba
  • 创建安装目录并授权:
    mkdir /dm chown dmdba:dinstall /dm
  • 挂载 ISO 或解压安装包,获取 DMInstall.bin
  • 图形化安装:
    xhost + su - dmdba export DISPLAY=:0 ./DMInstall.bin
  • 命令行安装:
    ./DMInstall.bin -i
  • 安装完成后,以 root 执行配置脚本:
    /dm/dmdbms/script/root/root_installer.sh

常见问题

  • 目录无写入权限:将安装目录授权给 dmdba
  • /tmp 空间不足:设置 DM_INSTALL_TMPDIR 指向其他目录
  • 图形化无法打开:检查 DISPLAY 和 xhost +

2. 初始化数据库实例

实验目标

掌握图形化和 dminit 命令行两种方式初始化实例,并注册系统服务。

主要练习内容

  • 图形化方式:
    cd /dm/dmdbms/tool ./dbca.sh
    按向导设置数据库目录、库名、实例名、端口、初始化参数、口令等。
  • 命令行方式:
    cd /dm/dmdbms/bin ./dminit path=/dm/data db_name=DAMENG instance_name=DMSERVER port_num=5236
  • 注册服务:
    /dm/dmdbms/script/root/dm_service_installer.sh -t dmserver -p DAMENG -dm_ini /dm/data/DAMENG/dm.ini
  • 启停服务:
    systemctl start DmServiceDMSERVER.service systemctl stop DmServiceDMSERVER.service
  • 使用 disql 或 manager 连接数据库。

3. 数据库卸载

实验目标

掌握完整卸载 DM 数据库管理软件的方法。

主要练习内容

  • 先停止数据库实例服务
  • 图形化卸载:
    cd /dm/dmdbms ./uninstall.sh
  • 命令行卸载:
    ./uninstall.sh -i
  • 按提示以 root 执行卸载脚本
  • 手动清理残余安装目录

4. 表空间和重做日志管理

实验目标

掌握表空间的创建、修改、删除,以及联机重做日志的维护。

主要练习内容

  • 创建表空间:
    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/DMDATA02.DBF' AUTOEXTEND OFF; ALTER TABLESPACE dmdata DATAFILE '/dm/data/DAMENG/DMDATA03.DBF' AUTOEXTEND ON NEXT 20 MAXSIZE 20480;
  • 重命名数据文件、联机/脱机:
    ALTER TABLESPACE dmdata OFFLINE; ALTER TABLESPACE dmdata RENAME DATAFILE '...' TO '...'; ALTER TABLESPACE dmdata ONLINE;
  • 删除表空间:
    DROP TABLESPACE dmdata;
  • 重做日志维护:
    ALTER DATABASE ADD LOGFILE '/dm/data/DAMENG/DAMENG03.log' SIZE 256; ALTER DATABASE RESIZE LOGFILE '/dm/data/DAMENG/DAMENG03.log' TO 500;

常见问题

  • 创建数据文件失败:检查目录权限
  • 数据文件大小无效:注意取值范围
  • 联机日志不能低于 256M,且一般只能增大

5. 用户管理

实验目标

掌握资源限制、角色、用户的创建与管理,以及权限分配。

主要练习内容

  • 创建资源限制:
    CREATE PROFILE TESTPRO LIMIT FAILED_LOGIN_ATTEMPS 3 PASSWORD_LIFE_TIME 90 PASSWORD_LOCK_TIME 5 PASSWORD_GRACE_TIME 3;
  • 创建角色并授权:
    CREATE ROLE testrole; GRANT CREATE TABLE, CREATE VIEW TO testrole WITH ADMIN OPTION;
  • 创建用户:
    CREATE USER testuser IDENTIFIED BY "Dameng123" DEFAULT TABLESPACE dmdata; GRANT testrole TO testuser;
  • 授予系统权限和对象权限:
    GRANT CREATE USER, CREATE ROLE TO testuser; GRANT SELECT, INSERT ON dmhr.employee TO testuser;
  • 修改用户、回收权限、删除用户等。

常见问题

  • 登录失败:用户名或密码错误
  • 密码含特殊字符:使用双引号或转义
  • 缺少系统表查询权限:授予 SOI 角色
  • 缺少动态视图权限:授予 VTI 角色

6. SQL 管理

实验目标

掌握表的创建、约束管理、数据插入、查询、排序、子查询、多表连接和聚合。

主要练习内容

  • 创建表并设置主键、非空、唯一、检查、外键约束
  • 插入测试数据
  • 通过脚本文件导入数据
  • 修改表结构、增加/删除列、添加约束
  • 简单查询、条件过滤、排序、分组、子查询
  • 多表连接查询、分组聚合汇总

示例:

CREATE TABLE testuser.testdept ( deptid INT PRIMARY KEY, deptname VARCHAR(50) NOT NULL, location VARCHAR(30) ); 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) );

7. 模式对象管理

实验目标

掌握索引、视图、物化视图、序列、同义词、DBLINK 的创建和管理。

主要练习内容

  • 创建索引:
    CREATE INDEX testuser.empindex ON testuser.testemp(empname);
  • 创建视图:
    CREATE VIEW testuser.testview AS SELECT empid, empname, salary FROM testemp WHERE deptid IN (101,102) WITH CHECK OPTION;
  • 创建物化视图:
    CREATE MATERIALIZED VIEW testuser.testmview1 AS SELECT * FROM testuser.testemp; REFRESH MATERIALIZED VIEW testuser.testmview1 COMPLETE;
  • 增量刷新物化视图:
    CREATE MATERIALIZED VIEW LOG ON testuser.testemp; CREATE MATERIALIZED VIEW testuser.testmview2 REFRESH FAST WITH PRIMARY KEY AS SELECT * FROM testuser.testemp;
  • 创建序列、同义词、私有/公共 DBLINK

常见问题

  • CURRVAL 需先调用 NEXTVAL
  • 私有同义词需加模式名访问
  • 私有 DBLINK 只有创建者可访问
  • DBLINK 连接丢失:检查网络、目标库、用户名密码

8. 逻辑备份还原

实验目标

掌握 dexp / dimp 逻辑导出导入,以及图形化方式。

主要练习内容

  • 全库导出:
    ./dexp SYSDBA/Dameng123 directory=/dm/backup/dexp file=fulldb.dmp log=fulldb.log
  • 全库导入:
    ./dimp SYSDBA/Dameng123 directory=/dm/backup/dexp file=fulldb.dmp log=imp_full.log
  • 模式导出:
    ./dexp SYSDBA/Dameng123 directory=/dm/backup/dexp file=dmhr.dmp log=dmhr.log schemas=DMHR
  • 模式导入并映射:
    ./dimp SYSDBA/Dameng123 directory=/dm/backup/dexp file=dmhr.dmp log=dimpdmhr.log remap_schema=DMHR:TESTUSER

常见问题

  • 权限不足:授予 SELECT FOR DUMP 或目录读写权限
  • 大小写敏感参数不匹配:指定 IGNORE_INIT_PARAA=1

9. 存储过程和函数

实验目标

掌握 DMSQL 程序块、条件判断、循环、游标、异常处理,以及过程和函数的调用。

主要练习内容

  • 创建存储过程,根据部门编码分等级加薪,并记录日志
  • 创建存储函数,根据员工编码返回邮箱,处理 NO_DATA_FOUND 异常
  • 调用过程和函数

示例:

CREATE OR REPLACE PROCEDURE dmhr.p_addsalbydept(in_deptid IN INT) IS v_newsalary INT := 0; BEGIN FOR emp IN (SELECT salary, employee_id FROM dmhr.employee WHERE department_id = in_deptid) LOOP IF emp.salary < 10000 THEN v_newsalary := emp.salary * 1.12; ELSIF emp.salary <= 20000 THEN v_newsalary := emp.salary * 1.10; ELSE v_newsalary := emp.salary * 1.08; END IF; UPDATE dmhr.employee SET salary = v_newsalary WHERE employee_id = emp.employee_id; END LOOP; COMMIT; EXCEPTION WHEN OTHERS THEN ROLLBACK; END;

常见问题

  • 没有执行权限:授予 EXECUTE 权限

10. 触发器

实验目标

了解表级触发器和事件级触发器的使用。

主要练习内容

  • 创建 BEFORE DELETE 表级触发器,记录被删除员工信息到历史表
  • 创建 BEFORE DROP OR TRUNCATE 事件级触发器,阻止对模式对象的删除操作

示例:

CREATE OR REPLACE TRIGGER dmhr.tr_delemp BEFORE DELETE ON dmhr.employee FOR EACH ROW BEGIN INSERT INTO dmhr.emp_history(...) VALUES(:OLD.employee_id, :OLD.employee_name, ...); END;

11. 接口配置

实验目标

掌握 unixODBC 和 dmPython 的安装与配置。

主要练习内容

  • 安装 unixODBC,配置 odbcinst.ini 和 odbc.ini
  • 使用 isql -v DM8 测试连接
  • 安装 dmPython:
    cd /dm/dmdbms/drivers/python/dmPython python3 setup.py install
  • 编写 Python 脚本连接 DM 并查询数据:
    import dmPython conn = dmPython.connect(user='SYSDBA', password='Dameng123', server='localhost', port=5236) cursor = conn.cursor() cursor.execute('SELECT * FROM dmhr.employee LIMIT 10') print(cursor.fetchall()) cursor.close() conn.close()

常见问题

  • Can't open lib:配置 LD_LIBRARY_PATH
  • 数据源名称未找到:检查 odbc.ini
  • 安装权限不足:用 root 创建目录并授权给 dmdba
  • 找不到达梦安装:检查 DM_HOME 和 PATH

总结

DCA 操作手册覆盖了达梦数据库从安装部署到日常运维、开发基础的完整流程。练习时建议按章节顺序操作,重点掌握:

  • 安装与实例初始化
  • 表空间和日志管理
  • 用户、角色、资源限制
  • SQL 与模式对象
  • 逻辑备份还原
  • DMSQL 程序、触发器
  • ODBC 与 dmPython 接口

多动手、多验证,遇到报错先看权限和环境变量,基本都能解决。

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服