总结:
v$datafile里的checkpoint_change#是写在control
file中的;
v$datafile_header里的checkpoint_change#是写在datafile中;
current_scn系统检查点,写在controlfile中。
SCN是Oracle数据库的内部时钟,它在Oracle的多个地方出现,含义各不相同。
1.系统检查点(system checkpoint)SCN
每当一个检查点完成时,Oracle就把该检查点对应的SCN记录到控制文件中,可以用以下语句查看当前的检查点SCN:
select CHECKPOINT_CHANGE# from v$database;
CHECKPOINT_CHANGE#
------------------
6627441168
2.数据文件头SCN(数据文件的启动SCN)
该SCN记录在每个数据文件头中,正常情况下,该SCN应该和记录在控制文件中的检查点SCN一致,可以用以下语句查看数据文件头的SCN:
select FILE#,CHECKPOINT_CHANGE# from v$datafile_header;
FILE# CHECKPOINT_CHANGE#
---------- ------------------
1 6627448310
2 6627448310
3 6627448310
4 6627448310
5 6627448310
3.数据文件的检查点SCN和终止SCN
这两个SCN不是记录在数据文件中,而是记录在控制文件中,可以通过以下语句查看:
select CHECKPOINT_CHANGE#,LAST_CHANGE# from v$datafile;
CHECKPOINT_CHANGE# LAST_CHANGE#
------------------ ------------
6627448310
6627448310
6627448310
6627448310
6627448310
4.三个数据文件SCN的关系
和数据文件相关的SCN有:启动SCN(即数据文件头SCN),检查点SCN,终止SCN,其中第一个SCN保存在每个数据文件头,而后两个SCN都保存在控制文件中。
在数据库的正常运行中,启动SCN,检查点SCN应该一样,而终止SCN被设为无穷大(NULL),如果数据库正常关闭,则在关闭前会将每个数据文件的终止SCN设为和启动SCN一样;如果数据库异常关闭,终止SCN仍保存无穷大。
每次数据库启动时,比较每个数据文件的启动SCN和终止SCN,如果一致,该数据文件不需要,如果不一致则必须恢复。
5.日志文件SCN
日志文件有低SCN和高SCN之分,低SCN代表该日志文件第一个Redo记录的SCN,而高SCN代表该日志文件最后一个Redo记录的SCN,可以通过以下语句查询:
select FIRST_CHANGE#,NEXT_CHANGE# from v$log_history;
转自:
http://space.itpub.net/?uid-26277071-action-viewspace-itemid-711066
阅读(2931) | 评论(0) | 转发(0) |