当前位置:首页 > 技术 > 正文内容

达梦数据库安装配置与基础操作实战指南

访客 技术 2026年7月6日 1

创建专用系统用户

在部署达梦数据库前,必须预先创建独立的操作系统用户,禁止使用 root 用户直接安装。推荐创建名为 dmdba 的专用账户,并将其纳入指定用户组以实现权限隔离。

步骤一:创建用户组

[root@localhost ~]# groupadd -g 2001 dinstall

步骤二:创建用户并设置密码

[root@localhost ~]# useradd -u 2001 -g dinstall dmdba
[root@localhost ~]# passwd dmdba

调整系统资源限制

为保障数据库服务稳定运行,需解除操作系统对文件句柄数、进程数量等资源的默认限制。通过修改 /etc/security/limits.conf 文件实现永久生效。

使用 root 权限编辑该文件:

[root@localhost ~]# vim /etc/security/limits.conf

在文件末尾添加以下内容:

dmdba soft nofile 65536
dmdba hard nofile 65536
dmdba soft nproc 65536
dmdba hard nproc 65536
dmdba soft core unlimited
dmdba hard core unlimited
dmdba soft as unlimited
dmdba hard as unlimited
dmdba soft fsize unlimited
dmdba hard fsize unlimited
dmdba soft data unlimited
dmdba hard data unlimited
dmdba soft nice 0
dmdba hard nice 0

重启服务器后配置生效。也可临时提升当前会话限制:

[root@localhost ~]# su - dmdba
[dmdba@localhost ~]$ ulimit -n 65536
[dmdba@localhost ~]$ ulimit -u 65536

验证配置是否加载成功:

[dmdba@localhost ~]$ ulimit -a

规划数据存储目录结构

建议统一管理数据库相关路径,通常创建独立挂载点或目录用于存放实例、归档和备份文件。

[root@localhost ~]# mkdir -p /dmdata/data    # 实例主目录
[root@localhost ~]# mkdir -p /dmdata/arch    # 归档日志目录
[root@localhost ~]# mkdir -p /dmdata/dmbak   # 备份文件目录

设置目录所有权与访问权限

确保新创建的目录归属于 dmdba 用户及 dinstall 组,避免权限不足导致安装失败。

[root@localhost ~]# chown -R dmdba:dinstall /dmdata
[root@localhost ~]# chmod -R 755 /dmdata

配置安装临时目录

安装程序需要充足的临时空间(至少 2GB),建议将临时目录设于磁盘空间充足的位置。

[root@localhost ~]# mkdir -p /opt/tmp
[root@localhost ~]# chown -R dmdba:dinstall /opt/tmp
[root@localhost ~]# chmod -R 777 /opt/tmp

挂载镜像并执行命令行安装

将 DM8 安装 ISO 文件上传至服务器(如 /opt 目录),然后进行挂载:

[root@localhost ~]# cd /opt
[root@localhost opt]# mount -o loop dm8_20240712_x86_rh7_64.iso /mnt

切换到 dmdba 用户并启动安装程序:

[root@localhost opt]# su - dmdba
[dmdba@localhost ~]$ cd /mnt
[dmdba@localhost mnt]$ export DM_INSTALL_TMPDIR=/opt/tmp
[dmdba@localhost mnt]$ ./DMInstall.bin -i

根据提示选择安装语言、时区(推荐选"21"对应中国标准时间)、安装类型(典型安装选"1")以及目标路径(默认为 /home/dmdba/dmdbms)。

安装完成后,返回 root 用户执行脚本注册系统服务:

[root@localhost ~]# /home/dmdba/dmdbms/script/root/root_installer.sh

此步骤用于创建 DmAPService,支持后续备份功能正常运行。

使用 DIsql 连接数据库

DIsql 是达梦提供的命令行客户端工具,可通过如下格式连接本地或远程实例:

[dmdba@localhost ~]$ cd /home/dmdba/dmdbms/bin
[dmdba@localhost bin]$ ./disql SYSDBA/SYSDBA@localhost:5236

登录成功后可查询数据库基本信息:

SQL> SELECT name AS "名称", create_time AS "创建时间" FROM v$database;

创建表空间

为用户分配独立表空间有助于数据组织与管理。例如创建名为 TEST 的表空间,包含两个自动扩展的数据文件:

CREATE TABLESPACE TEST 
DATAFILE '/dmdata/data/DAMENG/TEST01.DBF' SIZE 128 AUTOEXTEND ON NEXT 1 MAXSIZE 2048,
         '/dmdata/data/DAMENG/TEST02.DBF' SIZE 128 AUTOEXTEND ON NEXT 1 MAXSIZE 2048;

用户与权限管理实训题解析

习题1:创建用户 TEST

CREATE USER "TEST" IDENTIFIED BY "Dameng123" DEFAULT TABLESPACE "TEST";

习题2:创建角色 ROLE1 并授予权限

CREATE ROLE "ROLE1";
GRANT "PUBLIC" TO "ROLE1";
GRANT CREATE TABLE, CREATE VIEW, CREATE INDEX TO "ROLE1";

习题3:授予对象级权限

GRANT SELECT ON "DMHR"."DEPARTMENT" TO "ROLE1";
GRANT SELECT ON "DMHR"."EMPLOYEE" TO "ROLE1";
GRANT UPDATE("EMAIL") ON "DMHR"."EMPLOYEE" TO "ROLE1";
GRANT UPDATE("PHONE_NUM") ON "DMHR"."EMPLOYEE" TO "ROLE1";

习题4:回收列级更新权限(注意需表级回收)

REVOKE UPDATE ON "DMHR"."EMPLOYEE" FROM "ROLE1" CASCADE;

习题5:赋予用户角色并撤销特定权限

GRANT "ROLE1" TO "TEST";
REVOKE CREATE INDEX FROM "ROLE1";

多方式建表实践

9.1 使用图形化工具创建 STU 和 COURSE 表

通过 DM Manager 工具连接数据库,在 TEST 模式下设计学生信息表(STU)与课程表(COURSE),设定主键约束。

9.2 使用 SQL 创建选课表 ELECTIVE

CREATE TABLE TEST.ELECTIVE (
    STUDENT_ID   INT NOT NULL,
    COURSE_ID    INT NOT NULL,
    SCORE        DECIMAL(5,2),
    CONSTRAINT PK_ELECTIVE PRIMARY KEY (STUDENT_ID, COURSE_ID),
    CONSTRAINT FK_STU FOREIGN KEY (STUDENT_ID) REFERENCES TEST.STU(STUDENT_ID),
    CONSTRAINT FK_COURSE FOREIGN KEY (COURSE_ID) REFERENCES TEST.COURSE(COURSE_ID)
);

常用查询操作示例

1. 查询工资在 8000~12000 范围内的员工

SELECT * FROM DMHR.EMPLOYEE WHERE SALARY BETWEEN 8000 AND 12000;

2. 姓"周"且姓名为两个汉字的员工信息

SELECT 姓名=NAME, 职务=JOB_ID, 工资=SALARY, 提高后工资=SALARY*1.2 
FROM DMHR.EMPLOYEE 
WHERE NAME LIKE '周_' AND LENGTH(NAME) = 2;

3. 2012年后入职的员工详细信息

SELECT NAME AS 员工姓名, DEPT_NAME AS 所属部门, EMAIL, PHONE_NUM, HIRE_DATE, SALARY
FROM DMHR.V_EMP_DETAIL
WHERE HIRE_DATE > '2012-12-31';

4. 部门人数超过100人的统计

SELECT DEPT_NAME AS 部门名称, COUNT(*) AS 员工数量
FROM DMHR.EMPLOYEE E JOIN DMHR.DEPARTMENT D ON E.DEPT_ID = D.DEPT_ID
GROUP BY DEPT_NAME
HAVING COUNT(*) > 100;

5. 图书信息模糊匹配查询

SELECT 书名=BOOK_NAME, 出版社=PUBLISHER, 作者=AUTHOR, 出版日期=PUBLISH_DATE
FROM LIBRARY.TBL_BOOKINFO
WHERE BOOK_NAME LIKE '%学%' AND BOOK_NAME NOT LIKE '%中学%';

高级对象:视图与索引

1. 创建武汉行政部员工视图

CREATE VIEW DMHR.V_WUHAN_ADMIN_EMPLOYEES AS
SELECT EMP_ID, NAME, EMAIL, DEPT_NAME, JOB_ID, CITY
FROM DMHR.V_EMP_DETAIL
WHERE DEPT_NAME = '行政部' AND CITY = '武汉';

2. 创建高薪员工视图

CREATE VIEW DMHR.V_HIGH_SALARY_EMPLOYEES AS
SELECT EMP_ID, NAME, EMAIL, JOB_ID, SALARY
FROM DMHR.EMPLOYEE
WHERE SALARY > 15000;

3. 统计各岗位人数的视图

CREATE VIEW DMHR.V_JOB_EMPLOYEE_COUNT AS
SELECT JOB_ID, COUNT(*) AS EMP_COUNT
FROM DMHR.EMPLOYEE
GROUP BY JOB_ID;

4. 查询当前模式下的所有视图

SELECT SCHEMA_NAME, VIEW_NAME FROM DBA_VIEWS WHERE SCHEMA_NAME = 'DMHR';

5. 为部门字段创建位图索引并查询

CREATE BITMAP INDEX DMHR.IDX_EMPDEP ON DMHR.EMPLOYEE(DEPARTMENT_ID);

-- 利用索引查询部门ID为104的员工
SELECT EMP_ID, NAME, PHONE_NUM, EMAIL
FROM DMHR.EMPLOYEE
WHERE DEPARTMENT_ID = 104;

相关文章

Linux crontab 详解

1) crontab 是什么cron 是 Linux 的定时任务守护进程;crontab 是用来编辑/查看“按时间周期执行命令”的表(cron table)。常见两类:用户 crontab:每个用户一份(crontab -e 编辑)系统级 crontab / cron.d:可指定执行用户(/etc/crontab、/etc/cron.d/*)2) crontab 时间...

富文本里可以允许的 HTML 属性

一、所有标签默认允许的安全属性(极少)class        (可选)id           (通常建议禁用)title️ 注意:id 容易被滥用做锚点注入,很多系统直接禁用class 允许的话最好只允许固定前缀(如 editor-*)二、a 标签允许属性<a href="" t...

Mac 安装 Node.js 指南

方法一:通过官网安装包(最简单,适合初学者)如果你只是想快速安装并开始使用,这是最直接的方法。访问 Node.js 官网。页面会显示两个版本:LTS (Recommended For Most Users):长期支持版,最稳定。建议选这个。Current:最新特性版,包含最新功能但可能不够稳定。下载 .pkg 安装包并运行。按照安装向导点击“下一步”即可完成。方法二:使用 Homebrew 安装(...

Dom\HTML_NO_DEFAULT_NS 的副作用:自动加闭合标签

在使用Dom\HTMLDocument时,Dom\HTML_NO_DEFAULT_NS 将禁止在解析过程中设置元素的命名空间, 此设置是为了与DOMDocument向后兼容而存在的。当使用它时,已知的一个副作用就是:自动加闭合标签例如 </img> 为什么会这样?当你使用:Dom\HTML_NO_DEFAULT_NS文档会变成 无命名空间模式,此时内部更接近 XML...

Laravel 事件和监听器创建

在 Laravel 中,使用 Artisan 命令创建 Events(事件) 和 Listeners(监听器) 是非常高效的。你可以通过以下几种方式来实现:1. 手动创建单个 Event如果你只想创建一个事件类,可以使用 make:event 命令:Bashphp artisan make:event UserRegistered执行后,文件将生成在 app/Even...

自定义域名解析神器 dnsmasq

什么是 dnsmasq?dnsmasq 是一个轻量级、功能强大的网络服务工具,专为小型和中等规模网络设计。它是一个综合的网络基础设施解决方案[1]。dnsmasq 能做什么?功能说明应用场景DNS 转发与缓存将 DNS 查询转发到上游服务器(ISP、Google DNS 等),并在本地缓存结果加快 DNS 查询速度,减少外部 DNS 流量本地 DNS解析本地网络设备的主机名,无需编辑&n...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。