Oracle-实例启动是如何判断是否需要进行实例恢复?

疑问?

   Oracle关闭DB有两种类型:一致性关库、非一致性关库;

  Oracle宣传的是说Oracle数据库永远不会丢失数据! 这句话的意思是当DB主机由于断电等异常原因造成实例崩溃,已经commit提交的数据不会丢失!

   Oracle是如何保证数据不丢失的,是基于日志先行策略! 回到问题! 非一致性关库,Oracle如何判断需要实例恢复???

一、Oracle通过v$datafile last_change# 可以判断是否是一致性关库,可以判断是否需要进行实例恢复

 

SQL> shutdown immediate;
SQL> startup mount;
SQL> select file#,CHECKPOINT_CHANGE#, LAST_CHANGE#,status from v$datafile;                     

     FILE# CHECKPOINT_CHANGE# LAST_CHANGE# STATUS
---------- ------------------ ------------ -------
         1           35628021     35628021 SYSTEM
         2           35628021     35628021 ONLINE
         3           35628021     35628021 ONLINE
         4           35628021     35628021 ONLINE
         5           35628021     35628021 ONLINE
         6           35628021     35628021 ONLINE
         7           35628021     35628021 ONLINE
         8           35628021     35628021 ONLINE
         9           35628021     35628021 ONLINE

9 rows selected.
SQL> select NAME,CHECKPOINT_CHANGE# from v$database;

NAME      CHECKPOINT_CHANGE#
--------- ------------------
TT11204             35628021
SQL> alter database open;

SQL> shutdown abort;
SQL> startup mount;

SQL> select file#,CHECKPOINT_CHANGE#, LAST_CHANGE#,status from v$datafile;


FILE# CHECKPOINT_CHANGE# LAST_CHANGE# STATUS
---------- ------------------ ------------ -------
1 35628024 SYSTEM
2 35628024 ONLINE
3 35628024 ONLINE
4 35628024 ONLINE
5 35628024 ONLINE
6 35628024 ONLINE
7 35628024 ONLINE
8 35628024 ONLINE
9 35628024 ONLINE


9 rows selected.


SQL> select NAME,CHECKPOINT_CHANGE# from v$database;


NAME CHECKPOINT_CHANGE#
--------- ------------------
TT11204 35628024

SQL> alter database open;

观察DB alert.log

二、实例恢复日志DB Alert.log截取

 

Thu Dec 31 15:41:15 2020
alter database open
Beginning crash recovery of 1 threads
parallel recovery started with 2 processes
Started redo scan
Completed redo scan
read 76 KB redo, 40 data blocks need recovery
Started redo application at
Thread 1: logseq 2945, block 14845
Recovery of Online Redo Log: Thread 1 Group 3 Seq 2945 Reading mem 0
Mem# 0: /11.2.0.4/app/oracle/tt/redo03.log
Completed redo application of 0.04MB
Completed crash recovery at
Thread 1: logseq 2945, block 14998, scn 35648364
40 data blocks read, 40 data blocks written, 76 redo k-bytes read

原文地址:https://www.cnblogs.com/lvcha001/p/14343932.html