Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2824136
  • 博文数量: 200
  • 博客积分: 2413
  • 博客等级: 大尉
  • 技术积分: 3067
  • 用 户 组: 普通用户
  • 注册时间: 2011-04-01 22:07
文章分类

全部博文(200)

文章存档

2018年(2)

2017年(8)

2016年(35)

2015年(14)

2014年(20)

2013年(24)

2012年(53)

2011年(44)

分类: Oracle

2013-02-18 18:13:45

总结:

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


阅读(2874) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~