本文为整理型内容:依据达梦官方文档及社区公开资料整理,命令与参数均已注明出处,具体以官方最新文档为准。
结论先给:达梦 DM8 日常运维就是四块——服务启停、disql 管理 SQL、备份恢复(逻辑备份 dexp/dimp + 物理备份联机/dmrman)、性能排查视图。本文按场景给可直接复制的命令,工具都在 $DM_HOME/bin 目录下。
环境信息
| 项目 | 说明 |
|---|---|
| 数据库 | 达梦 DM8(Linux 版) |
| 安装目录 | /opt/dmdbms(官方安装包默认,下称 $DM_HOME) |
| 数据目录 | /dmdata/data/DAMENG(dminit 初始化时指定) |
| 服务名 | DmServiceDMSERVER(默认实例名 DMSERVER) |
| 默认端口 | 5236 |
| 运行用户 | dmdba(官方安装流程建议的数据库用户) |
一、服务启停
来源:达梦官方文档《启动、停止数据库》。服务注册成功后,用服务脚本管理(以默认实例 DMSERVER 为例):
cd $DM_HOME/bin
./DmServiceDMSERVER start # 启动
./DmServiceDMSERVER stop # 停止
./DmServiceDMSERVER restart # 重启
./DmServiceDMSERVER status # 查看状态
排错时需要看前台日志时,可用前台方式启动:
./dmserver /dmdata/data/DAMENG/dm.ini # 输出 SYSTEM IS READY 表示启动成功
注意:前台方式启动的会话一旦关闭,数据库也会跟着关闭,生产环境应使用服务方式。
二、disql 登录与常用管理 SQL
来源:达梦官方文档、达梦社区《命令行工具和图形化工具的基本操作》《disql 和 dmfdr 的使用》。
登录格式为 用户名/密码@IP:端口,端口为默认 5236 时可直接进入:
cd $DM_HOME/bin
./disql # 默认端口,默认提示符登录
./disql SYSDBA/Abcd1234@127.0.0.1:5236 # 显式指定地址和端口(远程同写法)
已登录后切换账号用 CONN:
SQL> CONN SYSDBA/Abcd1234@192.168.1.10:5236
执行 SQL 脚本用 START:
SQL> START /home/dmdba/init.sql
常用管理 SQL(建表空间 → 建用户 → 授权,社区文档通行写法,密码含特殊字符时用双引号包裹):
-- 建表空间(AUTOEXTEND ON 自动扩展,MAXSIZE 上限 MB)
CREATE TABLESPACE TS_APP DATAFILE '/dmdata/data/DAMENG/TS_APP.DBF' SIZE 300 AUTOEXTEND ON NEXT 100 MAXSIZE 1024;
-- 建用户并指定默认表空间
CREATE USER root IDENTIFIED BY "Abcd1234" DEFAULT TABLESPACE TS_APP;
-- 授权(生产环境按最小权限授权,DBA 角色仅限测试环境)
GRANT DBA TO root;
三、dminit 初始化参数速查
来源:达梦官方文档《查看 dminit 参数》。先看完整参数表:
./dminit HELP # 或 dminit help,显示版本、示例和全部参数
常用参数(官方文档参数表节选):
| 参数 | 含义 | 默认值 | 说明 |
|---|---|---|---|
| PATH | 数据库存放路径 | dminit 所在目录 | 必选 |
| DB_NAME | 数据库名 | DAMENG | |
| INSTANCE_NAME | 实例名 | DMSERVER | |
| PORT_NUM | 监听端口 | 5236 | |
| PAGE_SIZE | 数据页大小 | 8 | 可选 4/8/16/32(K),建库后不可改 |
| CHARSET | 字符集 | 0 | 0=GB18030、1=UTF-8 |
| CASE_SENSITIVE | 大小写敏感 | Y | 建库后不可改 |
| EXTENT_SIZE | 数据文件簇大小 | 16 | 可选 16/32/64(页) |
| LOG_SIZE | 日志文件大小 | 4096 | 256M~8G(M) |
| BUFFER | 缓冲区大小 | 8000 | 单位 M |
| SYSDBA_PWD | SYSDBA 密码 | 无 | 必选 |
| SYSAUDITOR_PWD | SYSAUDITOR 密码 | 无 | 必选 |
| ARCH_FLAG | 初始化时开启归档 | 0 | 1=开启 |
| TIME_ZONE | 时区 | +08:00 |
典型初始化命令(示例组合,密码按实际替换):
./dminit PATH=/dmdata/data DB_NAME=DAMENG INSTANCE_NAME=DMSERVER \
PORT_NUM=5236 PAGE_SIZE=16 CHARSET=1 CASE_SENSITIVE=N \
SYSDBA_PWD=Abcd1234 SYSAUDITOR_PWD=Abcd1234
建库完成后,运行期可通过动态视图查看建库参数(官方文档):
SELECT * FROM V$DM_INI WHERE PARA_NAME IN ('PAGE_SIZE','CHARSET');
四、逻辑备份恢复:dexp / dimp
来源:达梦官方文档《逻辑备份还原》。逻辑备份和逻辑还原都在联机方式下完成(数据库正常运行即可执行),dimp 导入的是 dexp 生成的备份文件。
dexp 导出
参数:USERID 必选;FILE 缺省为 dexp.dmp;DIRECTORY 指定导出目录;LOG 指定日志文件;导出级别 FULL/OWNER/SCHEMAS/TABLES 四者选一,缺省为 SCHEMAS;QUERY 可过滤数据,PARALLEL 设置线程数。
cd $DM_HOME/bin
# 全库导出
./dexp USERID=SYSDBA/Abcd1234 FILE=db_full.dmp LOG=db_full.log FULL=Y DIRECTORY=/backup
# 按用户导出
./dexp USERID=SYSDBA/Abcd1234 FILE=user01.dmp LOG=user01.log OWNER=USER01 DIRECTORY=/backup
# 按模式导出
./dexp USERID=SYSDBA/Abcd1234 FILE=sch01.dmp LOG=sch01.log SCHEMAS=USER01 DIRECTORY=/backup
# 按表导出(多表用逗号分隔)
./dexp USERID=SYSDBA/Abcd1234 FILE=tabs.dmp LOG=tabs.log TABLES=table1,table2 DIRECTORY=/backup
dimp 导入
参数:USERID、FILE 必选;DIRECTORY 指定导入文件目录;LOG 指定日志;导入级别同 dexp(FULL/OWNER/SCHEMAS/TABLES);目标表已存在时用 TABLE_EXISTS_ACTION 指定行为(SKIP/APPEND/TRUNCATE/REPLACE);IGNORE 忽略创建错误;FAST_LOAD 控制是否使用 dmfldr 导入。
cd $DM_HOME/bin
# 全库导入
./dimp USERID=SYSDBA/Abcd1234 FILE=/backup/db_full.dmp LOG=db_full.log FULL=Y DIRECTORY=/backup
# 按用户导入
./dimp USERID=SYSDBA/Abcd1234 FILE=/backup/user01.dmp LOG=user01.log OWNER=USER01 DIRECTORY=/backup
# 按表导入,表已存在时替换
./dimp USERID=SYSDBA/Abcd1234 FILE=/backup/tabs.dmp LOG=tabs.log TABLES=table1,table2 DIRECTORY=/backup TABLE_EXISTS_ACTION=REPLACE
注意事项(官方文档):TABLES 级别导入不支持外部表;导入需要相应对象的创建权限,日常用 SYSDBA 执行。
五、物理备份与恢复
5.1 联机备份(数据库运行中,SQL 方式)
来源:达梦官方文档《备份还原实战》。联机备份数据库前必须先配置归档:
ALTER DATABASE MOUNT;
ALTER DATABASE NORMAL;
ALTER DATABASE ARCHIVELOG;
-- 配置本地归档(DEST 目录需提前创建,FILE_SIZE/SPACE_LIMIT 单位 MB)
ALTER DATABASE ADD ARCHIVELOG 'DEST = /backup, TYPE = local, FILE_SIZE = 1024, SPACE_LIMIT = 2048';
ALTER DATABASE OPEN;
全量备份:
-- 指定备份集路径
BACKUP DATABASE FULL BACKUPSET '/backup/DB_FULL_20260824';
-- 省略 FULL 时默认为全量
BACKUP DATABASE BACKUPSET '/backup/DB_FULL_01';
-- 压缩(LEVEL 0~9)/ 并行 / 限制备份片大小(MB,最小 128MB)
BACKUP DATABASE BACKUPSET '/backup/DB_FULL_02' COMPRESSED LEVEL 5;
BACKUP DATABASE BACKUPSET '/backup/DB_FULL_03' PARALLEL 8;
BACKUP DATABASE BACKUPSET '/backup/DB_FULL_04' MAXPIECESIZE 300;
增量备份(WITH BACKUPDIR 指定基备份搜索目录):
BACKUP DATABASE INCREMENT WITH BACKUPDIR '/backup' BACKUPSET '/backup/DB_INC_01';
表空间 / 表备份:
BACKUP TABLESPACE MAIN FULL BACKUPSET '/backup/TS_MAIN_01';
BACKUP TABLE TAB_01 BACKUPSET '/backup/TAB_01';
5.2 dmrman 脱机备份与恢复
来源:达梦官方文档《备份还原实战》、达梦社区《物理备份还原速查手册》。脱机备份要求数据库实例已关闭。
脱机备份(三种执行方式):
cd $DM_HOME/bin
# 方式一:交互式
./dmrman
RMAN> BACKUP DATABASE '/opt/dmdbms/data/DAMENG/dm.ini';
# 方式二:命令行单条执行
./dmrman CTLSTMT="BACKUP DATABASE '/opt/dmdbms/data/DAMENG/dm.ini';"
# 方式三:脚本文件(内容为上述 BACKUP 语句)
./dmrman CTLFILE=/home/dmdba/cmd_rman.txt
还原到新目录并恢复(推荐流程,先还原验证再切换):
# 1. 还原到新目录
./dmrman CTLSTMT="RESTORE DATABASE TO '/dmdata/DAMENG_NEW' FROM BACKUPSET '/backup/DB_FULL_20260824'"
# 2. 恢复归档日志到指定时间点
./dmrman CTLSTMT="RECOVER DATABASE '/dmdata/DAMENG_NEW/dm.ini' WITH ARCHIVEDIR '/backup' UNTIL TIME '2026-08-24 10:30:00'"
# 3. 或恢复到最后状态(应用全部归档)
./dmrman CTLSTMT="RECOVER DATABASE '/dmdata/DAMENG_NEW/dm.ini' WITH ARCHIVEDIR '/backup'"
# 4. 更新数据库魔数
./dmrman CTLSTMT="RECOVER DATABASE '/dmdata/DAMENG_NEW/dm.ini' UPDATE DB_MAGIC"
注意(官方文档):原地覆盖还原(RESTORE DATABASE ‘原 ini 路径’ FROM BACKUPSET)要求目标实例已关闭,且操作不可逆——生产环境优先采用"还原到新目录 → 验证 → 再切换"的方式。
六、性能排查基础
来源:达梦官方文档《数据库优化》FAQ、官方文档《管理事务》。
定位执行时间较长的活动会话(慢 SQL):
SELECT TIMESTAMPDIFF(SECOND, S.LAST_RECV_TIME, SYSDATE) T, S.* FROM V$SESSIONS S WHERE STATE='ACTIVE';
官方文档示例以 T > 1 过滤,即超过 1 秒的会话即为嫌疑对象,可进一步用 V$CACHEPLN 查看缓存中的执行计划:
SELECT * FROM V$CACHEPLN WHERE SQLSTR LIKE '%关键字%';
开启 SQL 监控(官方文档):
SP_SET_PARA_VALUE(1,'ENABLE_MONITOR',1);
SP_SET_PARA_VALUE(1,'MONITOR_TIME',1);
SP_SET_PARA_VALUE(1,'MONITOR_SQL_EXEC',1);
查看锁与事务(官方文档《管理事务》——死锁时 DM 会选择牺牲其中一个事务,日常排查锁等待主要看这两个视图):
SELECT ADDR, LTYPE, LMODE FROM V$LOCK;
SELECT * FROM V$TRX; -- status 字段标识事务状态
查看运行期参数(官方文档):
SELECT * FROM V$DM_INI WHERE PARA_NAME IN ('RS_CAN_CACHE','BUILD_FORWARD_RS');
社区实践(来源:达梦社区/CSDN 帖子):查看当前会话连接数:
SELECT COUNT(*) FROM V$SESSIONS;
来源
- 达梦官方文档《启动、停止数据库》:https://eco.dameng.com/document/dm/zh-cn/start/dm-start-stop-linux.html
- 达梦官方文档《查看 dminit 参数》:https://eco.dameng.com/document/dm/zh-cn/pm/view-dminit-parameters.html
- 达梦官方文档《逻辑备份还原》:https://eco.dameng.com/document/dm/zh-cn/ops/logical-backup-restore.html
- 达梦官方文档《备份还原实战》:https://eco.dameng.com/document/dm/zh-cn/pm/backup-restore-combat.html
- 达梦官方文档《数据库优化》(FAQ):https://eco.dameng.com/document/dm/zh-cn/faq/faq-optimizing
- 达梦官方文档《管理事务》:https://eco.dameng.com/document/dm/zh-cn/pm/management-affairs.html
- 达梦社区《命令行工具和图形化工具的基本操作》:https://eco.dameng.com/community/post/20260719211553D6M1TFPPU2ZFA1IJY3
- 达梦社区《disql 和 dmfdr 的使用》:https://eco.dameng.com/community/post/20260730091240VBGHRL3RDVC8MV85QP
- 达梦社区《物理备份还原速查手册(极简实操版)》:https://eco.dameng.com/community/article/20250925100802533I44YMNFQ60J0EIU
- 达梦社区《DM8 备份操作全攻略:DMRMAN 脱机备份工具详解》:https://eco.dameng.com/community/post/20260803173258G3RPJ4QXBKQSK252L6