ITPub博客

首页 > 应用开发 > IT综合 > CKPT、DBWn、LGWR与3S的关系

CKPT、DBWn、LGWR与3S的关系

原创 IT综合 作者:ogam 时间:2009-05-27 16:36:19 0 删除 编辑

CKPT、DBWn、LGWR都有3S的触发条件,但具体触发内容是不尽相同的。

LGWR每3S触发一次,将REDO BUFFER内容写入REDO LOG GROUP;

CKPT每3S会触发一次,它完成两个任务:1、告诉DBWn进程,写脏数据将要写到哪个位置,但不触发DBWn;2、更新控制文件关于DBWn进程写入脏数据的进度;

DBWn 触发条件中也有个每3S醒来一次,完成向数据文件写入脏数据的操作,但这里3S应该与CKPT的3S触发条件不是一回事;

[@more@]

CKPT中的3秒和增量检查点不是一个概念,3秒只是在控制文件中,ckpt 进程去更新当前 dbwr写到哪里了,这个对于 ckpt 进程来说叫 heartbeat ,heartbeat是3秒一次,3秒可以看作不停的检查并记录检查点执行情况(DBWR的写进度)。

完全检查点是由ckpt进程等待dbwr进程写入dirty queue在某个scn之前的所有数据, 所以会有一个瞬时的io比较大的倾向..

增量检查点, 是dbwr根据相关参数的设置来检查需要写入的dirty queue上的block, ckpt进程在增量检查点的时候记录dbwr最近写数据块的时候的对应的scn, 增量检查点不会等待dbwr的写操作(或者说dbwr的写操作是不受增量检查点控制的).

完全检查点的触发条件有:
1、数据库干净的关闭
2、当通过设置初始化参数LOG_CHECKPOINT_INTERVAL、LOG_CHECKPOINT_TIMEOUT 和FAST_START_IO_TARGET 强制时;
3、ALTER SYSTEM CHECKPOINT
4、表空间脱机;
5、ALTER SYSTEM SWITCH LOGFILE
  一般正常运行期间的数据库不会产生完全检查点,下面很多事件将导致增量检查点,发出这样的命令:
l ALTER TABLESPACE tablespace_name BIGEN BACKUP & end backup;
l ALTER TABLESPACE tablespace_name READ ONLY;
l ALTER TABLESPACE tablespace_name OFFLINE NORMAL;
等命令都会触发增量检查点。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/16712909/viewspace-1022533/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2013-08-31

  • 博文量
    11
  • 访问量
    37264