注册
数据库实例状态简述
培训园地/ 文章详情 /

数据库实例状态简述

小d 2023/05/19 1973 0 0

一、数据库主要有三种实例状态:

1. open状态

数据库处于正常提供服务的状态,但不能进行归档配置等操作

2. mount状态

数据库在mount状态下,不能修改数据等,但可以执行修改归档配置、控制文件和修改数据库模式等操作。由于mount状态不生成PWR日志,因此数据页可以正常刷盘,也正常推进检查点。

系统从open状态切换为mount状态时,会强制回滚所有活动事务,但不会强制清理已提交事务,不会强制断开用户连接,也不会强制buffer中的脏页刷盘。

3. suspend状态

数据库在suspend状态下,可以访问数据库对象,甚至可以修改数据,但限制redo日志刷盘,一旦执行commit等触发redo日志刷盘的操作时,当前操作将被挂起。

实时归档失败时(比如网络故障导致),Primary 实例将试图切换成 Suspend 状态,防止后续的日志写入。因为一旦写入,主备切换时有可能备库没有收到最后那次的 RLOG_PKG,导致主库上多一段日志,很容易造成主备数据不一致。当实例成功切换为 SUSPEND 状态时,可直接退出,强制丢弃多余的日志,避免主备数据不一致。

数据库状态如图:
image.png

二、数据库切换命令

2.1 open切换至mount状态下

SQL> select status$ from v$instance;

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

已用时间: 1.101(毫秒). 执行号:600.
SQL> alter database mount;
操作已执行
已用时间: 49.388(毫秒). 执行号:0.
SQL>
SQL> select status$ from v$instance;

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

2.2 mount状态切换

SQL> select status$ from v$instance;

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

已用时间: 0.419(毫秒). 执行号:601.
SQL> alter database suspend;
alter database suspend;
第1 行附近出现错误[-510]:系统处于MOUNT状态.
已用时间: 0.217(毫秒). 执行号:0.
SQL> alter database open;
操作已执行
已用时间: 3.875(毫秒). 执行号:0.
SQL> select status$ from v$instance;

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

2.3 open切换为suspend

SQL> alter database suspend;
操作已执行
已用时间: 100.286(毫秒). 执行号:0.
SQL> select status$ from v$instance;

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

已用时间: 0.391(毫秒). 执行号:603.

suspend状态下提交的事务都会被挂起:
image.png

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服