注册
达梦数据库的几种状态 SUSPEND、MOUNT、OPEN 的区别
技术分享/ 文章详情 /

达梦数据库的几种状态 SUSPEND、MOUNT、OPEN 的区别

何处惹尘埃 2026/07/31 208 0 0

数据库的几种状态 SUSPEND、MOUNT、OPEN 的区别

一、概述

达梦数据库的状态分为内部状态外部状态两类:

类型 状态 说明
内部状态 STARTUP、AFTER REDO、SHUTDOWN 系统内部自动切换,不能人工干预
外部状态 MOUNT、OPEN、SUSPEND 可以人工干预切换

本文档聚焦于三种可人工切换的外部状态:MOUNT、OPEN、SUSPEND

二、三种状态详细说明

2.1 OPEN 状态(打开状态)

  • STATUS$ 值OPEN(查询 V$INSTANCE)或 4(查询 V$DATABASE
  • 说明:可以访问数据库对象,对外提供正常的数据库服务
  • 限制:不能进行控制文件维护、归档配置等操作

2.2 MOUNT 状态(配置状态)

  • STATUS$ 值MOUNT(查询 V$INSTANCE)或 1(查询 V$DATABASE
  • 说明
    • 不能修改数据,不能访问表、视图等数据库对象
    • 可以执行修改归档配置、控制文件和修改数据库模式等操作
    • 可以查询动态视图或执行只读系统过程
    • 不生成 PWR 日志,数据页可以正常刷盘,正常推进检查点
    • 从 OPEN 切换为 MOUNT 时:强制回滚所有活动事务,但不会强制清理已提交事务,不会强制断开用户连接,不会强制 Buffer 中的脏页刷盘

2.3 SUSPEND 状态(挂起状态)

  • STATUS$ 值SUSPEND(查询 V$INSTANCE)或 2(查询 V$DATABASE
  • 说明
    • 可以访问数据库对象,甚至可以修改数据
    • 限制 Redo 日志刷盘:一旦执行 COMMIT 等触发 Redo 日志刷盘的操作时,当前操作将被挂起
    • 从 OPEN 切换到 SUSPEND 时:不会回滚任何活动事务,状态切换完成后,所有事务可以继续执行
    • 相比 OPEN → MOUNT,OPEN → SUSPEND 更加简单、高效

三、状态切换规则

根据达梦官方文档,三种外部状态的切换规则如下:

原状态 新状态 是否允许 说明
OPEN MOUNT ✓ 允许 强制回滚所有活动事务
MOUNT OPEN ✓ 允许 恢复数据库服务
OPEN SUSPEND ✓ 允许 不回收活动事务,限制 Redo 刷盘
SUSPEND OPEN ✓ 允许 恢复 Redo 写入功能
MOUNT SUSPEND ✗ 不允许 两种维护状态不能直接切换
SUSPEND MOUNT ✗ 不允许 两种维护状态不能直接切换

关键规则:MOUNT 和 SUSPEND 之间不能直接切换,必须经过 OPEN 状态中转。

四、实操验证

4.1 查看当前状态(使用 V$INSTANCE)

disql SYSDBA/Dameng123@localhost:5239
SELECT STATUS$ FROM V$INSTANCE;

输出

行号     STATUS$
---------- -------
1          OPEN

注意:查询数据库状态应使用 V$INSTANCE 视图的 STATUS$ 列,输出为 OPEN / MOUNT / SUSPEND 字符串,比 V$DATABASESTATUS$ 数字值更直观。

4.2 OPEN → MOUNT 切换

ALTER DATABASE MOUNT; SELECT STATUS$ FROM V$INSTANCE;

输出

操作已执行

行号     STATUS$
---------- -------
1          MOUNT

4.3 MOUNT → OPEN 恢复

ALTER DATABASE OPEN; SELECT STATUS$ FROM V$INSTANCE;

输出

操作已执行

行号     STATUS$
---------- -------
1          OPEN

4.4 OPEN → SUSPEND 切换

ALTER DATABASE SUSPEND; SELECT STATUS$ FROM V$INSTANCE;

输出

操作已执行

行号     STATUS$
---------- -------
1          SUSPEND

4.5 SUSPEND → OPEN 恢复

ALTER DATABASE OPEN; SELECT STATUS$ FROM V$INSTANCE;

输出

操作已执行

行号     STATUS$
---------- -------
1          OPEN

五、STATUS$ 值对照表

V$INSTANCE 输出 VDATABASE.STATUSDATABASE.STATUS 状态
OPEN 4 打开状态
MOUNT 1 配置状态
SUSPEND 2 挂起状态

实操建议:优先使用 SELECT STATUS$ FROM V$INSTANCE; 查看状态,输出更直观。

六、三种状态对比总结

对比项 OPEN MOUNT SUSPEND
V$INSTANCE 输出 OPEN MOUNT SUSPEND
数据访问 ✓ 完全可访问 ✗ 不能访问表/视图 ✓ 可访问,可修改
Redo 日志刷盘 ✓ 正常 N/A(不生成 PWR 日志) ✗ 被限制,COMMIT 会挂起
活动事务 正常执行 强制回滚 保留,继续执行
归档配置修改 ✗ 不允许 ✓ 允许 ✗ 不允许
控制文件维护 ✗ 不允许 ✓ 允许 ✗ 不允许
数据库模式修改 ✗ 不允许 ✓ 允许 ✗ 不允许
切换效率 较慢(需回滚事务) 较快(不回滚事务)

七、关键要点

  1. **查询状态用 VINSTANCE**:`SELECT STATUS FROM VINSTANCE;` 直接返回 `OPEN` / `MOUNT` / `SUSPEND`,比 `VDATABASE` 的数字更直观。

  2. MOUNT 和 SUSPEND 不能直接切换:必须经过 OPEN 状态中转。

  3. OPEN → MOUNT 会回滚事务:所有活动事务被强制回滚。

  4. OPEN → SUSPEND 不回滚事务:状态切换后事务继续执行,仅限制 Redo 刷盘。

  5. SUSPEND 的典型应用场景:主备集群中,修改归档状态前将系统切换为 SUSPEND,限制 Redo 日志写入,修改完成后恢复 OPEN,确保主备数据一致性。

八、完整操作命令清单

-- 查看当前状态(推荐) SELECT STATUS$ FROM V$INSTANCE; -- 切换到 MOUNT ALTER DATABASE MOUNT; -- 切换到 SUSPEND(必须先处于 OPEN 状态) ALTER DATABASE SUSPEND; -- 从任意状态恢复到 OPEN ALTER DATABASE OPEN; -- 查看数据库模式(NORMAL / PRIMARY / STANDBY) SELECT MODE$ FROM V$INSTANCE;
评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服