Chinaunix首页 | 论坛 | 博客
  • 博客访问: 595622
  • 博文数量: 78
  • 博客积分: 2196
  • 博客等级: 大尉
  • 技术积分: 826
  • 用 户 组: 普通用户
  • 注册时间: 2010-01-29 12:46
文章分类

全部博文(78)

文章存档

2012年(7)

2011年(42)

2010年(29)

我的朋友

分类: Oracle

2011-04-24 21:37:19

SCN是什么?The System Change Number
system change number (SCN)是一个非常重要的标记,Oracle使用它来标记数据库在过去时间内的状态和轨迹。

Oracle使用SCN来保 存所有变化的轨迹。SCN是一个逻辑时钟来记录数据库事件。它非常的重要,并不是只是为了恢复。
SCN有点类似于sequence,Oracle 在SGA中增加它。当一个事务修改或者插入数据,Oracle首先写入一个新的SCN到回滚段中。log writer进程立刻把提交的记录写入到重做日志中,这条提交的记录将拥有唯一的SCN。事实上,把SCN写入到日志,就意味着一个事务的完成。SCN帮 助Oracle决定在一次突然中断或者SHUTDOWN ABORT后,是否需要一个崩溃恢复。每当数据库发生checkpoint,Oracle 写一个START SCN命令到数据文件头。控制文件维护着每个数据文件的SCN,称为STOP SCN,通常是无穷大,每当实例正常关闭(SHUTDOWN NORMAL or SHUTDOWN IMMEDIATE),Oracle会复制数据文件头START SCN到控制文件的STOP SCN。如果是正常的重启数据库,是不需要恢复的,因为控制文件和数据文件的SCN是吻合的。反之,突然中断系统就没法同步SCN,SCN不匹 配,Oracle就认为需要做恢复。
另外Oracle还使用数据块的SCN来维护查询的一致性和多版本。

Checkpoint 是一个数据库事件,用来同步所有的datafile,controlfile和redo logfile。当发出ckpt时(回顾什么时候oracle会发出ckpt呢),ckpt会将检查点时刻的scn写入到控制文件和数据文件头部,同时会 促使dbwr进程将data buffer中的所有的脏数据写入到数据文件中。而dbwr进程工作时又会促使lgwr写log buffer中的日志数据到redo logfile中。所以当发出检查点时CKPT,DBWR和LGWR同时工作,三种文件的scn完全一致,从而能保持完全同步。

一 次checkpoint包含以下步骤:
1. 把redo buffers的内容刷到redo log中。
2. 在redo log file中留下一个checkpoint记录。
3. 把database buffer cache的变更刷新到磁盘。
4. 在checkpoint完成后,更新数据文件头和控制文件。

Checkpoint的具体工作包括:
  触发DBWn向磁盘写入Dirty data。
  把checkpoint信息更新到datafile header上。
  把checkpoint信息更新到control file里。

  Checkpoint做的事情之一是触发DBWn把buffer cache中的Dirty cache磁盘。另外就是把最近的系统的SCN更新到datafile header和control file(每一个事务都有一个SCN),做第一件事的目的是为了减少由于系统突然宕机而需要的恢复时间,做第二件事实为了保证数据库的一致性。

checkpoint 的作用就是 :
1.减少系统崩溃导致的恢复时间
2.保证数据库的一致性

确保定期向磁盘写入内存中发生修改的数据块,以便在系统或数据库失败时不会丢失数据
缩短例程恢复所需的时间。只需处理最后一个检查点后面的重做日志条目以启动恢复操作
确保提交的所有数据在关闭期间均已写入数据文件
由 CKPT 写入的检查点信息包括检查点位置、系统更改号、重做日志中恢复操作的起始位置以及有关日志的信息等等。

checkpoint 触发:
一、log switch
二、data buffer cache达到指定块
三、达到 checkpoint指定时间

具体如下:
1.当发生日志组切换的时候,减少crash后的recovery时间。
2. 当符合 LOG_CHECKPOINT_TIMEOUT,LOG_CHECKPOINT_INTERVAL,fast_start_io_target,fast_start_mttr_target 参数设置的时候
LOG_CHECKPOINT_TIMEOUT 默认1800秒
LOG_CHECKPOINT_INTERVAL 默认 0
fast_start_mttr_target 默认,如果被指定,会覆盖LOG_CHECKPOINT_INTERVAL
fast_start_io_target,10g以后已经抛弃。
3.当 ALTER SYSTEM SWITCH LOGFILE,ALTER SYSTEM CHECKPOINT
4.当 alter tablespace XXX begin backup,end backup
5.当 alter tablespace ,datafile offline ;
阅读(1113) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~