数据库的几种状态 SUSPEND、MOUNT、OPEN 的区别
达梦数据库的状态分为内部状态和外部状态两类:
| 类型 | 状态 | 说明 |
|---|---|---|
| 内部状态 | STARTUP、AFTER REDO、SHUTDOWN | 系统内部自动切换,不能人工干预 |
| 外部状态 | MOUNT、OPEN、SUSPEND | 可以人工干预切换 |
本文档聚焦于三种可人工切换的外部状态:MOUNT、OPEN、SUSPEND。
OPEN(查询 V$INSTANCE)或 4(查询 V$DATABASE)MOUNT(查询 V$INSTANCE)或 1(查询 V$DATABASE)SUSPEND(查询 V$INSTANCE)或 2(查询 V$DATABASE)根据达梦官方文档,三种外部状态的切换规则如下:
| 原状态 | 新状态 | 是否允许 | 说明 |
|---|---|---|---|
| OPEN | MOUNT | ✓ 允许 | 强制回滚所有活动事务 |
| MOUNT | OPEN | ✓ 允许 | 恢复数据库服务 |
| OPEN | SUSPEND | ✓ 允许 | 不回收活动事务,限制 Redo 刷盘 |
| SUSPEND | OPEN | ✓ 允许 | 恢复 Redo 写入功能 |
| MOUNT | SUSPEND | ✗ 不允许 | 两种维护状态不能直接切换 |
| SUSPEND | MOUNT | ✗ 不允许 | 两种维护状态不能直接切换 |
关键规则:MOUNT 和 SUSPEND 之间不能直接切换,必须经过 OPEN 状态中转。
disql SYSDBA/Dameng123@localhost:5239
SELECT STATUS$ FROM V$INSTANCE;
输出:
行号 STATUS$
---------- -------
1 OPEN
注意:查询数据库状态应使用
V$INSTANCE视图的STATUS$列,输出为OPEN/MOUNT/SUSPEND字符串,比V$DATABASE的STATUS$数字值更直观。
ALTER DATABASE MOUNT;
SELECT STATUS$ FROM V$INSTANCE;
输出:
操作已执行
行号 STATUS$
---------- -------
1 MOUNT
ALTER DATABASE OPEN;
SELECT STATUS$ FROM V$INSTANCE;
输出:
操作已执行
行号 STATUS$
---------- -------
1 OPEN
ALTER DATABASE SUSPEND;
SELECT STATUS$ FROM V$INSTANCE;
输出:
操作已执行
行号 STATUS$
---------- -------
1 SUSPEND
ALTER DATABASE OPEN;
SELECT STATUS$ FROM V$INSTANCE;
输出:
操作已执行
行号 STATUS$
---------- -------
1 OPEN
| V$INSTANCE 输出 | VDATABASE.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 会挂起 |
| 活动事务 | 正常执行 | 强制回滚 | 保留,继续执行 |
| 归档配置修改 | ✗ 不允许 | ✓ 允许 | ✗ 不允许 |
| 控制文件维护 | ✗ 不允许 | ✓ 允许 | ✗ 不允许 |
| 数据库模式修改 | ✗ 不允许 | ✓ 允许 | ✗ 不允许 |
| 切换效率 | — | 较慢(需回滚事务) | 较快(不回滚事务) |
**查询状态用 VINSTANCE**:`SELECT STATUS FROM VINSTANCE;` 直接返回 `OPEN` / `MOUNT` / `SUSPEND`,比 `VDATABASE` 的数字更直观。
MOUNT 和 SUSPEND 不能直接切换:必须经过 OPEN 状态中转。
OPEN → MOUNT 会回滚事务:所有活动事务被强制回滚。
OPEN → SUSPEND 不回滚事务:状态切换后事务继续执行,仅限制 Redo 刷盘。
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;
文章
阅读量
获赞
