Redo丢失的4种情况及处理方法(二)

2015-01-21 12:22:39 · 作者: · 浏览: 12
ile with higher SCN than checkpoint_change# stored in datafile header (seen from v$datafile_header.checkpoint_change#).
? ? ? ? FUZYY表示模糊性,意思是,该数据文件处于模糊状态,在最近一次CHECKPOINT后,该文件上的数据可能被修改过了,但没来得及更新到该文件上(或者该文件不知道),需要读取日志信息来判断。


SQL> select file#,checkpoint_change#,last_change# from v$datafile;


? ? FILE# CHECKPOINT_CHANGE# LAST_CHANGE#


---------- ------------------ ------------


? ? ? ? 1? ? ? ? ? ? 1165820


? ? ? ? 2? ? ? ? ? ? 1165820


? ? ? ? 3? ? ? ? ? ? 1165820


? ? ? ? 4? ? ? ? ? ? 1165820


SQL> shutdown immediate


数据库已经关闭。


已经卸载数据库


ORACLE 例程已经关闭。


SQL> startup mount


ORACLE 例程已经启动。


Total System Global Area? 313860096 bytes


Fixed Size? ? ? ? ? ? ? ? ? 1384352 bytes


Variable Size? ? ? ? ? ? 155189344 bytes


Database Buffers? ? ? ? ? 150994944 bytes


Redo Buffers? ? ? ? ? ? ? ? 6291456 bytes


数据库装载完毕。


SQL> select file#,checkpoint_change#,fuzzy from v$datafile_header;


? ? FILE# CHECKPOINT_CHANGE# FUZ


---------- ------------------ ---


? ? ? ? 1? ? ? ? ? ? 1166324 NO


? ? ? ? 2? ? ? ? ? ? 1166324 NO


? ? ? ? 3? ? ? ? ? ? 1166324 NO


? ? ? ? 4? ? ? ? ? ? 1166324 NO


? ? ? ? 在正常管理数据库的情况下,FUZZY字段都应该是NO,表示没有模糊不清的SCN存储在数据文件中。


SQL> select file#,checkpoint_change#,last_change# from v$datafile;


? ? FILE# CHECKPOINT_CHANGE# LAST_CHANGE#


---------- ------------------ ------------


? ? ? ? 1? ? ? ? ? ? 1166324? ? ? 1166324


? ? ? ? 2? ? ? ? ? ? 1166324? ? ? 1166324


? ? ? ? 3? ? ? ? ? ? 1166324? ? ? 1166324


? ? ? ? 4? ? ? ? ? ? 1166324? ? ? 1166324


? ? ? ? 正常关闭数据库的终止SCN应该和启动SCN相同。FUZZY等于NO,且数据库的终止SCN等于启动SCN等于数据文件SCN,那么可以认为数据库是正常关闭,且在打开数据库之前不需要执行实例恢复或Crash恢复。


SQL> alter database open;


数据库已更改。


SQL> shutdown abort


ORACLE 例程已经关闭。


SQL> startup mount


ORACLE 例程已经启动。


Total System Global Area? 313860096 bytes


Fixed Size? ? ? ? ? ? ? ? ? 1384352 bytes


Variable Size? ? ? ? ? ? 155189344 bytes


Database Buffers? ? ? ? ? 150994944 bytes


Redo Buffers? ? ? ? ? ? ? ? 6291456 bytes


数据库装载完毕。


SQL> select file#,checkpoint_change#,fuzzy from v$datafile_header;


? ? FILE# CHECKPOINT_CHANGE# FUZ


---------- ------------------ ---


? ? ? ? 1? ? ? ? ? ? 1166327 YES


? ? ? ? 2? ? ? ? ? ? 1166327 YES


? ? ? ? 3? ? ? ? ? ? 1166327 YES


? ? ? ? 4? ? ? ? ? ? 1166327 YES


? ? ? ? 非正常关闭数据库实例,FUZZY字段的值是YES。


SQL> select file#,checkpoint_change#,last_change# from v$datafile;


? ? FILE# CHECKPOINT_CHANGE# LAST_CHANGE#


---------- ------------------ ------------


? ? ? ? 1? ? ? ? ? ? 1166327


? ? ? ? 2? ? ? ? ? ? 1166327


? ? ? ? 3? ? ? ? ? ? 1166327


? ? ? ? 4? ? ? ? ? ? 1166327
? ? ? ? 非正常关闭数据库实例,终止SCN依然为空。那么,在数据库被打开之前必须使用归档Redo日志完成实例恢复或Crash恢复。


五.结论:
非正常关闭的当前日志丢失,可能导致数据库启动后的混乱,并可能造成少量数据的丢失。其他情况不会导致数据的丢失。