如果数据库异常关闭,数据库就没机会修改V$THREAD.STATUS状态了。因此,数据库在MOUNT状态通过检查这个状态,就可以判断使句库是否需要进行crash recover。
如果是单INSTANCE,V$THREAD.STATUS状态确实还是不变(OPEN),但如果是RAC,异常关闭其中一个INSTANCE,V$THREAD.STATUS状态会变成COLSED。
这是什么原因?谢谢!
单INSTANCE环境:
SQL> select status from v$thread;
STATUS
------
OPEN
SQL> shutdown abort;
ORACLE instance shut down.
SQL> startup mount;
ORACLE instance started.
Total System Global Area 1073741824 bytes
Fixed Size
2089368 bytes
Variable Size
373296744 bytes
Database Buffers
687865856 bytes
Redo Buffers
10489856 bytes
Database mounted.
SQL> select status from v$thread;
STATUS
------
OPEN
如果是RAC环境,结果却不同
SQL> SELECT status FROM V$THREAD;
STATUS
------
OPEN
OPEN
SQL> shutdownabort;
ORACLE instance shut down.
SQL> startup mount
ORACLE instance started.
Total System Global Area184549376 bytes
Fixed Size
2019448 bytes
Variable Size
146804616 bytes
Database Buffers 33554432 bytes
Redo Buffers
2170880 bytes
Database mounted.
SQL> SELECT status FROM V$THREAD;
STATUS
------
CLOSED
OPEN