GBase 8s运行模式与切换机制深度解析

发布时间:2026-05-26

GBase 8s 作为企业级关系型数据库管理系统,其操作模式决定了数据库可执行的任务类型以及对外提供的服务范围。系统支持四种主要运行模式与三种过渡状态,且支持在各模式之间灵活切换,以适配不同运维场景的需求。

一、四种主要运行模式

1.离线模式(Offline)
离线模式下数据库服务器未运行,共享内存未初始化。此时无法执行任何数据库操作,执行管理命令会提示 shared memory not initialized,执行 SQL 操作会返回 908 错误。该模式适用于硬件维护期间或需要完全关闭数据库的场景。

2.在线模式(Online)
在线模式是数据库的标准生产运行状态。所有具备权限的用户均可正常连接,执行 SQL 查询、DML 操作、数据库对象管理、备份恢复及性能监控等全部功能。通过 onstat - 查看状态时,输出中包含 On-Line 标识。此模式是数据库日常运行的默认状态。

3.单用户模式(Single-User)
单用户模式仅允许管理员用户(gbasedbt 或具有 DBSA 权限的用户)连接数据库,普通用户连接将被拒绝并返回错误码 27010:
27010: Only an administrative user can connect in administrative user mode.
该模式下管理员可执行 SQL 语句进行数据库维护,同时确保维护期间无其他普通用户会话干扰,适用于需要独占式 SQL 维护的场景。

4.静态模式(Quiescent)
静态模式下不允许任何用户通过 SQL 接口连接数据库,连接请求将返回错误码 27002:
27002: No connections are allowed in quiescent mode.
此模式仅支持通过命令行工具执行底层维护操作,如 onspaces(存储空间管理)、ontape(物理备份)、onparams(参数调整)等。适用于需要对数据库进行底层操作且要求零用户连接的场景。

二、模式切换命令

2.1 从离线模式启动
数据库处于离线状态时,使用 oninit 命令启动至目标模式:
oninit        → 启动至在线模式
oninit -j     → 启动至单用户模式
oninit -s     → 启动至静态模式
oninit -ivy   → 首次启动,初始化磁盘后进入在线模式

2.2 从在线模式切换
数据库已处于运行状态时,使用 onmode 命令切换至其他模式:
onmode -m     → 切换至在线模式
onmode -j     → 切换至单用户模式
onmode -s/u   → 切换至静态模式
onmode -k     → 关闭数据库,进入离线模式

其中,onmode -s 与 onmode -u 的区别在于:-s 会等待当前活动事务完成后执行切换,不影响现有会话的正在进行操作;-u 则立即终止所有用户线程并切换至静态模式,适用于需要快速进入维护窗口的场景。

三、典型应用场景

场景一:执行 SQL 级别维护,需隔离普通用户

  • 推荐模式:单用户模式

  • 操作路径:onmode -j → 执行维护 SQL → onmode -m

  • 说明:切换后仅管理员可连接,维护完成后恢复在线模式,业务影响最小。

场景二:执行物理备份或修改存储空间

  • 推荐模式:静态模式

  • 操作路径:onmode -s  → 执行 ontape / onspaces → onmode -m

  • 说明:静态模式确保无 SQL 会话干扰底层存储操作,保障数据一致性。

四、模式切换矩阵

下表完整列出各模式之间的切换命令,行表示当前模式,列表示目标模式:

核心原则:

  • 日常运行使用 在线模式

  • SQL 级维护使用 单用户模式

  • 底层操作使用 静态模式

  • 完全停机使用 离线模式

需要特别注意的是,四种运行模式中只有在线模式不影响业务运行,其余三种模式均会造成不同程度的服务中断:单用户模式阻断普通用户连接,静态模式阻断所有用户连接,离线模式则完全停止数据库服务。因此,任何模式切换操作前,务必评估业务影响并提前与相关方协调,选择合理的维护窗口执行。