接着上篇繼續說scn...//
數據庫非正常關閉
數據庫開啓前比較v$datafile_header.checkpoint_change#v$database.checkpoint_change#
v$datafile_header.checkpoint_change#和v$datafile.last_change#此時啓動scn與終止scn不同,那麼數據庫需要實例恢復。
v$datafile_header.checkpoint_change#和v$datafile.last_change#此時啓動scn與終止scn不同,那麼數據庫需要實例恢復。
SQL> alter database open;
Database altered.
SQL> select checkpoint_change# from v$database;
CHECKPOINT_CHANGE#
------------------
905596
SQL> select checkpoint_change# from v$datafile;
CHECKPOINT_CHANGE#
------------------
905596
905596
905596
905596
SQL> select last_change# from v$datafile;
LAST_CHANGE#
------------
SQL> select checkpoint_change# from v$datafile_header;
CHECKPOINT_CHANGE#
------------------
905596
905596
905596
905596
Database altered.
SQL> select checkpoint_change# from v$database;
CHECKPOINT_CHANGE#
------------------
905596
SQL> select checkpoint_change# from v$datafile;
CHECKPOINT_CHANGE#
------------------
905596
905596
905596
905596
SQL> select last_change# from v$datafile;
LAST_CHANGE#
------------
SQL> select checkpoint_change# from v$datafile_header;
CHECKPOINT_CHANGE#
------------------
905596
905596
905596
905596
此時數據庫smon進程做了實例恢復,所謂實例恢復就是指內存和進程,數據庫把redo中需要恢復的數據讀入內存.其過程分爲前滾、數據庫開啓、回滾三個階段。