彻底理解检查点的功能、作用、原理
检查点的实际应用
检查点做什么:
通知DBWn写脏块
数据文件头 select name ,CHECKPOINT_CHANGE# from v$datafile_header;
控制文件头 select name,CHECKPOINT_CHANGE# from v$datafile;
检查点号来源与SCN(System Change Number),
SCN是Oracle数据库中用来标识事务前后顺序的唯一序
列号。
SCN是当 Oracle数据更新后,由 DBMS自动维护去累积递增的一个数字。当 一个事务 commit时,LGWR会将 log buffer写入 redo log file,同时也会将该事 务的 SCN同步写入到 redo log file内(wait-until-completed)。因此当你 commit transaction时,在成功的讯息返回之前,LGWR必须先完整的完成上述行为之 后,否则你是看不到提交成功的响应讯息。 |
可以理解的,返回的 SCN,也是目前 redo log file最新的 SCN 纪录。因为 commit后的交易才会有 SCN,而一旦 commit就会立刻写入 redo log file中。 |
检查点的作用
? Checkpoints are used to determine where recovery should start
? Checkpoint position - where recovery starts
? Checkpoint queue - link list of dirty blocks
系统时间标记与 scn之间存在一张表,即 SYS下的 SMON_SCN_TIME。 |
每隔 5分钟,系统产生一次系统时间标记与 scn的匹配并存入 SYS.SMON_SCN_TIME表(由 SMON进程来进行 Update操作),该表中记录了 最近 1440个系统时间标记与 scn的匹配记录,由于该表只维护了最近的 1440条 记录,即最近 5天内的记录。 |
查看 SCN和 timestamp之间的对应关系: select scn,to_char(time_dp,'yyyy-mm-dd hh24:mi:ss') from sys.smon_scn_time order by 2; |
查询当前的检查点号
select dbms_flashback.get_system_change_number from dual;
select current_scn from v$datafile;
转换
select scn_to_timestamp(4082040) from dual;
select timestamp_to_scn(to_date('2011-01-25 12:10:00','yyyy-mm-dd hh24:mi:ss')) from dual; |
checkpoint有两个目的: 1、确保数据一致性。 |
2、使数据库能快速地恢复
检查点类型:
全局检查点:
关闭数据库
增量检查点:
定期执行、只写最老的块S:
阶段性的保存操作的结果,以至于以后实例异常中断而
不要从头开始恢复(recovery),缩短实例恢复的时间,
类似于Word程序中设置了自动保存功能。
部分检查点
和部分对象 如:TS 做检查点
部分检查点的作用
? 用来记录表空间何时开始备份,那么以后就从备份的点
(检查点)开始恢复(recovery),Oracle在做备份时
总是会发生一个检查点,用来记录开始备份的位置
部分检查点的影响
? Oracle会锁数据文件头,但是不会锁表空间,不影响
DML操作
? 把跟备份表空间相关的脏块写入数据文件
? 如果是UMAN(用户管理)备份方式,为了保证数据块
的一致性,会把被修改的数据块的镜像写入redolog,会
导致日志信息量增加
相关参数:
FAST_START_MTTR_TARGET 首选--建议
比如设定为60S,假定该值处于合理的情况之下,则一旦实例崩溃,在60S以内实例应当能够被恢复。合理即该值不能太大,也不能太小。太大则实例恢复所需的时间较长,太小则导致大量数据的及时写入,增加了系统的I/O。
FAST_START_MTTR_TARGET设置为0将关闭检查点自动调整功能。当设定一个大于0的值给FAST_START_MTTR_TARGET,则自动调整检查点功能将启用。
select target_mttr,estimated_mttr from v$instance_recovery;
select mttr_target_for_estimate,dirty_limit,estd_cache_writes,estd_cache_write_factor,estd_total_writes,estd_total_write_factor from v$mttr_target_advice;
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/500314/viewspace-1069841/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/500314/viewspace-1069841/