SCN、CHECKPOINT、RECOVERY

来源:互联网 发布:银行软件开发笔试 编辑:程序博客网 时间:2024/05/21 17:40
SCN 是当数据库每次改变后都会自动增加的在数据库内核中的逻辑时钟。SCN描述了数据当前的版本或在数据库的commit版本.
  当数据库的check-points 发生时, 这个SCN(checkpoint scn)将会记录到数据文件的头部,并称之为start SCN. 
   在数据库的control file中同样为每一个datafile 存有一个SCN,这个称之为 stop SCN.数据库处于open的运行状态时,Stop SCN大小是没有限制的。
Checkpoint counter(checkpoint CNT) 存在于每一个数据文件和control file的头部,Checkpoint counter 当一个datafile 发生checkpoint 时就会增加一次,同时start SCN值也将得到更新。但当datafile 处于热备模式时, datafile 头部的checkpoint 信息将被冻结,但checkpoint count 还将增加更新(可以看eygle的关于checkpoint cnt和checkpoint scn: http://www.eygle.com/archives/2004/06/checkpoint_scn_ckpcnt.html)。
当数据库以shutdown normal ,shutdown immediate关闭时,oracle将在真正关闭这前,执行一个checkpoint 产生一个 checkpoint SCN(既更新每个datatfile 的start SCN)并将datafile 头部的 start SCN对应的写到control file 中每个datafile 的stop SCN。
当数据库start的时候,oracle将对所有的数据文件通过以下两种方式来进行一致性检查:
1.        检查每一个datafile 的数据文件头的starrt SCN 与control file中对应datafile 的stop SCN.
2.        检查 checkping count(checkpoint CNT)是否能对应上。
如查两个检查都是成功的,oracle可以确认数据文件是不需要recovery 的。
如果某个datafile的start SCN 和control file 的stop SCN不相符时,将需要进行驶recovery,所以数据库是以abort方式shutdown 或因为异常crash时,要进行recovery. Orcle 将检查每个数据文件的checkpoint counters,如果checkpoint counts检查失败时.需要进行 Media recovery,例如,在数据库关闭后进行了用备份数据文件对当前的数据文件进行了replace 。


附:Media Recovery is required
1. when a data file is restored from backup checkpoint counts in the data files are not equal to the checkpoint counts in the control file
2. file was offlined without a checkpoint
3. when using a backup control file


checkpoint count(checkpoint cnt)在full checkpoint时才会去增加cnt,而full checkpoint只再以下几种情况发生
1. At each switch of the redo log files. 
2.Directly by the ALTER SYSTEM SWITCH LOGFILE command. 
3.Directly with the ALTER SYSTEM CHECKPOINT command. 
4.hot backup.
5.offline.