侧边栏壁纸
  • 累计撰写 16 篇文章
  • 累计创建 1 个标签
  • 累计收到 4 条评论

目 录CONTENT

文章目录

达梦数据库生产环境运维指南(持续更新)

达梦数据库生产环境运维指南(持续更新)

前言

达梦数据库是什么?

想象一下:你需要管理一个国家图书馆的百万藏书,既要保证数据安全(不能丢),又要支持快速检索(查书要快),还要支持多人同时查阅(高并发)。

达梦数据库就是中国自主研发的"超级图书馆管理系统"! 它是国产数据库的代表,具备与 Oracle 类似的强大功能,但更符合中国企业的需求。

达梦数据库(DM)是武汉达梦数据库股份有限公司开发的关系型数据库,具有完全自主知识产权。在国产化浪潮下,达梦数据库被广泛应用于政府、金融、能源等关键领域。

本文档会告诉你:

  • 达梦数据库核心概念
  • 安装和配置
  • 日常运维命令
  • 性能监控
  • 备份恢复
  • 与 Oracle 的差异对比

目录

  1. 核心概念详解
  2. 达梦安装
  3. 数据库连接
  4. 表空间管理
  5. 用户与权限
  6. 日常运维
  7. 性能监控
  8. 备份恢复
  9. 与 Oracle 对比

核心概念详解

达梦数据库架构

达梦架构是什么?

想象一下:达梦数据库就像一个"智能图书馆",有前台服务(连接管理)、索引系统(快速检索)、书库管理(数据存储)、安全门禁(权限控制)。

┌─────────────────────────────────────────────────────────────┐
│                    达梦数据库架构                             │
│                                                              │
│  ┌─────────────┐                                           │
│  │   客户端    │                                           │
│  │  (Disql)   │                                           │
│  └──────┬──────┘                                           │
│         │                                                   │
│         ▼                                                   │
│  ┌─────────────────────────────────────────┐               │
│  │          数据库实例 (DMAP Server)         │               │
│  │  ┌─────────┐  ┌─────────┐  ┌─────────┐│               │
│  │  │   作业   │  │  监视器  │  │  归档   ││               │
│  │  │  调度器  │  │ (Monitor)│  │ (ARCH)  ││               │
│  │  └─────────┘  └─────────┘  └─────────┘│               │
│  └─────────────────────────────────────────┘               │
│         │                                                   │
│         ▼                                                   │
│  ┌─────────────────────────────────────────┐               │
│  │              存储层                       │               │
│  │  ┌─────────┐  ┌─────────┐  ┌─────────┐│               │
│  │  │ System  │  │  User   │  │  Temp   ││               │
│  │  │ Tablespace│ │ Tablespace│ │ Tablespace││               │
│  │  └─────────┘  └─────────┘  └─────────┘│               │
│  └─────────────────────────────────────────┘               │
└─────────────────────────────────────────────────────────────┘

达梦版本

版本 说明 适用场景
DM8 标准版 单机版 开发、测试、小型应用
DM8 企业版 支持集群 中大型企业
DM8 安全版 支持国密 政府、军工
DM8 集群版 RAC 支持 关键业务

达梦安装

Linux 安装

# 👀 1. 下载达梦安装包
# 官网:https://www.dameng.com

# 👀 2. 创建用户(达梦不建议用 root 安装)
groupadd dinstall
useradd -g dinstall -m -d /home/dmdba -s /bin/bash dmdba
passwd dmdba

# 👀 3. 创建安装目录
mkdir -p /opt/dmdbms
chown -R dmdba:dinstall /opt/dmdbms

# 👀 4. 解压安装包
su - dmdba
tar -xvf dm8_xxxx_xxx.tar -C /opt/dmdbms

# 👀 5. 开始安装
cd /opt/dmdbms
./DMInstall.bin

# 👀 6. 配置环境变量
cat >> ~/.bash_profile << 'EOF'
export DM_HOME=/opt/dmdbms/dmdbms
export PATH=$DM_HOME/bin:$PATH
export LD_LIBRARY_PATH=$DM_HOME/bin:$LD_LIBRARY_PATH
EOF

source ~/.bash_profile

Docker 安装(快速测试)

# 👀 拉取达梦镜像
docker pull dmdbms/dm8:latest

# 👀 启动达梦容器
docker run -d \
  --name dm8 \
  -p 5236:5236 \
  -e MODE=PRIMARY \
  -v /data/dm8:/opt/dmdbms/data \
  dmdbms/dm8:latest

# 👀 查看日志
docker logs -f dm8

# 👀 默认 SYSDBA 密码:SYSDBA001

数据库连接

连接工具

# 👀 1. Disql(命令行工具)
disql SYSDBA/SYSDBA001@localhost:5236

# 👀 2. 带 IP 和端口
disql SYSDBA/SYSDBA001@192.168.1.10:5236

# 👀 3. 帮助信息
disql -h

基本查询

-- 👀 查看达梦版本
SELECT * FROM V$VERSION;

-- 👀 查看数据库信息
SELECT * FROM V$DATABASE;

-- 👀 查看所有表空间
SELECT * FROM V$TABLESPACE;

-- 👀 查看当前会话
SELECT * FROM V$SESSION;

表空间管理

查看表空间

-- 👀 查看所有表空间
SELECT 
    NAME,
    ID,
    STATUS$,
    TYPE$,
    TOTAL_SIZE$,
    FREE_SIZE$
FROM V$TABLESPACE;

-- 👀 查看表空间使用情况
SELECT 
    T.NAME AS tablespace_name,
    TOTAL_SIZE$ * 512 / 1024 / 1024 AS "Total(MB)",
    FREE_SIZE$ * 512 / 1024 / 1024 AS "Free(MB)",
    (TOTAL_SIZE$ - FREE_SIZE$) * 512 / 1024 / 1024 AS "Used(MB)"
FROM V$TABLESPACE T;

创建表空间

-- 👀 创建普通表空间
CREATE TABLESPACE app_data
    DATAFILE '/opt/dmdbms/data/app_data01.dbf' 
    SIZE 128 
    AUTOEXTEND ON NEXT 8 MAXSIZE 8192;

-- 👀 创建大文件表空间
CREATE BIGTABLESPACE app_big 
    DATAFILE '/opt/dmdbms/data/app_big01.dbf' 
    SIZE 1024;

-- 👀 创建临时表空间
CREATE TEMPORARY TABLESPACE temp_data
    TEMPFILE '/opt/dmdbms/data/temp01.dbf' 
    SIZE 64;

修改表空间

-- 👀 添加数据文件
ALTER TABLESPACE app_data 
    ADD DATAFILE '/opt/dmdbms/data/app_data02.dbf' 
    SIZE 128;

-- 👀 修改数据文件
ALTER TABLESPACE app_data 
    DATAFILE '/opt/dmdbms/data/app_data01.dbf' 
    RESIZE 256;

-- 👀 删除表空间
DROP TABLESPACE app_data;

用户与权限

创建用户

-- 👀 创建用户
CREATE USER appuser IDENTIFIED BY "AppUser123"
    DEFAULT TABLESPACE app_data
    TEMPORARY TABLESPACE temp_data
    QUOTA UNLIMITED ON app_data;

-- 👀 查看用户
SELECT * FROM DBA_USERS;

权限管理

-- 👀 授予权限
GRANT CONNECT, RESOURCE TO appuser;
GRANT CREATE TABLE TO appuser;
GRANT CREATE VIEW TO appuser;

-- 👀 撤销权限
REVOKE CREATE TABLE FROM appuser;

-- 👀 创建角色
CREATE ROLE app_role;
GRANT SELECT ON sys.employees TO app_role;
GRANT app_role TO appuser;

日常运维

服务管理

# 👀 查看服务状态
systemctl status DmServiceDMSERVER

# 👀 启动服务
systemctl start DmServiceDMSERVER

# 👀 停止服务
systemctl stop DmServiceDMSERVER

# 👀 重启服务
systemctl restart DmServiceDMSERVER

归档管理

-- 👀 查看归档状态
SELECT ARCH_MODE FROM V$DATABASE;

-- 👀 开启归档
ALTER DATABASE MOUNT;
ALTER DATABASE ARCHIVELOG;
ALTER DATABASE OPEN;

-- 👀 手动切换归档
ALTER SYSTEM SWITCH LOGFILE;

会话管理

-- 👀 查看会话
SELECT 
    SESSION_ID,
    SQL_TEXT,
    STATE,
    CREATE_TIME
FROM V$SESSION;

-- 👀 杀死会话
SP_CLOSE_SESSION(session_id);

性能监控

监控指标

-- 👀 查看缓冲池命中率
SELECT 
    BUFFER_HIT_RATIO,
    LIBRARY_HIT_RATIO,
    LIBRARY_MISS_SIZE
FROM V$BUFFERPOOL;

-- 👀 查看 SQL 性能
SELECT 
    SQL_TEXT,
    EXECUTIONS,
    AVG_TIME,
    CPU_TIME
FROM V$SQLSTATS
ORDER BY EXECUTIONS DESC
LIMIT 10;

-- 👀 查看等待事件
SELECT 
    NAME,
    WAIT_TIME,
    WAIT_COUNT
FROM V$SYSTEM_WAIT
ORDER BY WAIT_TIME DESC
LIMIT 10;

统计信息

-- 👀 收集表统计信息
DBMS_STATS.GATHER_TABLE_STATS(
    OWNER => 'SYSDBA',
    TABNAME => 'EMPLOYEES',
    ESTIMATE_PERCENT => 10,
    METHOD_OPT => 'FOR ALL COLUMNS SIZE AUTO'
);

-- 👀 收集索引统计
DBMS_STATS.GATHER_INDEX_STATS(
    OWNER => 'SYSDBA',
    INDNAME => 'EMP_IDX'
);

备份恢复

物理备份

# 👀 冷备份(需要停库)
# 1. 停止数据库
systemctl stop DmServiceDMSERVER

# 2. 备份数据文件
cp -r /opt/dmdbms/data /backup/data_$(date +%Y%m%d)

# 3. 启动数据库
systemctl start DmServiceDMSERVER

逻辑备份

# 👀 导出(Dexp)
dexp SYSDBA/SYSDBA001@localhost:5236 FILE=full.dmp LOG=full.log FULL=Y

# 👀 导入(Dimps)
dimp SYSDBA/SYSDBA001@localhost:5236 FILE=full.dmp LOG=imp.log FULL=Y

# 👀 导出特定用户
dexp SYSDBA/SYSDBA001 FILE=user.dmp SCHEMAS=APPUSER

# 👀 导出特定表
dexp SYSDBA/SYSDBA001 FILE=emp.dmp TABLES=APPUSER.EMPLOYEES

与 Oracle 对比

核心概念对比

Oracle 达梦 说明
SID INSTANCE_NAME 实例名
Tablespace Tablespace 表空间
Datafile Datafile 数据文件
SYSAUX MAIN 辅助表空间
SYSTEM SYSTEM 系统表空间
PDB 兼容 Oracle PDB 可插拔数据库

命令对比

操作 Oracle 达梦
连接 sqlplus / as sysdba disql SYSDBA/SYSDBA
版本 SELECT * FROM v$version SELECT * FROM V$VERSION
会话 v$session V$SESSION
表空间 dba_tablespaces V$TABLESPACE
用户 dba_users DBA_USERS

语法差异

-- 👀 分页查询
-- Oracle
SELECT * FROM (
    SELECT rownum rn, t.* FROM employees t WHERE rownum <= 20
) WHERE rn > 10;

-- 👀 达梦(更简洁)
SELECT * FROM employees LIMIT 10 OFFSET 20;

-- 👀 递归查询
-- Oracle
SELECT * FROM employees START WITH id = 1 CONNECT BY PRIOR id = parent_id;

-- 👀 达梦(兼容 Oracle 语法)
SELECT * FROM employees START WITH id = 1 CONNECT BY PRIOR id = parent_id;

常见问题

问题 1:连接失败

现象: 无法连接到数据库

排查:

# 👀 检查服务状态
systemctl status DmServiceDMSERVER

# 👀 检查端口
netstat -an | grep 5236

# 👀 检查防火墙
firewall-cmd --list-ports

问题 2:表空间满

解决方案:

-- 👀 添加数据文件
ALTER TABLESPACE app_data ADD DATAFILE '/opt/dmdbms/data/app_data02.dbf' SIZE 128;

-- 👀 设置自动扩展
ALTER TABLESPACE app_data DATAFILE '/opt/dmdbms/data/app_data01.dbf' AUTOEXTEND ON NEXT 8 MAXSIZE 8192;

总结

核心要点

要点 关键操作
连接 Disql 工具
表空间 创建、扩展、监控
用户 创建、授权
备份 Dexp/Dimp
监控 V$ 动态视图

达梦优势

  1. 国产化支持 - 满足信创要求
  2. Oracle 兼容 - 迁移成本低
  3. 国密支持 - 安全可控
  4. 本地化服务 - 技术支持更方便

持续更新中… 如有问题或建议,欢迎交流讨论!

1

评论区