首页 > Linux操作系统 > Linux操作系统 > checkpoint
checkpoint意义
快速恢复数据库实例
checkpoint产生
1.手工产生 alter system checkpoint
2.日志组切换 alter system switch logfile
3.dbwr写脏数据前
SCN与checkpoint_change#的关系
SCN oracle内部时钟,每三秒刷新一次,一直改变
checkpoint_change#是做检查点那一刻的SCN,如果数据库没有被操作,checkpoint_change#不变
checkpoint执行过程
1.事务commit,lgwr写logfile,之后做检查点,ckpt更新controlfile中system scn的记录,再更新controlfile中datafile scn的记录,之后ckpt更新datafile中start scn,然后dbwn写datafile,写完最后ckpt再次更新controlfile的End scn
(注意 ckpt写controlfile的SCN的同时也记录了RBA(redo block address),该地址标明从redo恢复时的起点)
四个SCN
1.system scn (写入controlfile)
更新controlfile中的system scn
select checkpoint_change# from v$database;
2.datafile scn (写入controlfile)
更新controlfile中的记录的datafile的scn
select checkpoint_change# from v$datafile;
3.start scn (写入datafile)
更新datafile中的start scn
select checkpoint_change# from v$datafile_header;
4.end scn (写入controlfile)
更新controlfile中datafiled的End scn
select name,last_change# from v$datafile
systen scn=start scn= End scn时
数据库正常打开
当start scn<>End scn时
表示数据库事务还未全部写入数据文件时异常中断,需要实例恢复
当system<>start scn时
a.system scn controlfile丢失且redolog也丢失,数据文件可用,恢复该文件,由于controlfile中的system scn已过期又没有当前的redlog前滚,造成小于start scn,需要reset log 恢复需要采用using backup controlfile b.system scn>start scn controlfile丢失且redolog可用,数据文件可用,恢复该文件,虽然controlfile中的system scn已过期但又当前的redlog可前滚,所以恢复后的system scn>=start scn,则不需要resetlog 恢复时就不需要加using backup controlfile子句了
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/21304842/viewspace-664399/ ,如需转载,请注明出处,否则将追究法律责任。