关于DML语句处理过程和Checkpoint not complete的理解

当一个大的DML 是,先database buffer cache 中进行修改同时在修改之前会将数据的前镜像保存在回滚段中,
然后将修改之前和修改之后的数据都写入到redo log buffer中.
? 当提交事务时
? 当重做日志缓冲区三分之一满时
? 当重做日志缓冲区内有超过 1 MB 的已更改记录时
? 当发生超时时每三秒钟
? 在 DBWn 将数据库缓冲区高速缓存内的修改块写入数据文件之前.
则redo log buffer 开始写redo log file .在这期间

DBWn可能会writes modified blocks from the database buffer cache to the datafiles.
In the most common case, DBWn writes only when more data needs to be read into the SGA and too few database buffers are free.
 The least recently used data is written to the datafiles first.
 DBWn also performs writes for other functions, such as checkpointing.


检查点
在检查点期间
? DBW n 将许多由正在经历检查点事件的日志覆盖的灰数据库缓冲区写入到
数据文件中由 DBWn 写入的缓冲区数量由参数
FAST_START_IO_TARGET 决定如果指定了的话这在Enterprise
DBA Part 1B: Backup and Recovery 企业 DBA 1B 部分备份和恢复课程
中有更详细阐述
? 检查点后台进程 CKPT 更新所有数据文件和控制文件的标题以反映该进程已
成功完成
检查点可以为数据库内所有 数据文件发生或者仅为特定数据文件发生
例如检查点可发生在下面情况中
? 每次日志切换时
? 当已通过正常事务处理或者立即选项关闭例程时
? 当通过设置初始化参数 LOG_CHECKPOINT_INTERVAL
LOG_CHECKPOINT_TIMEOUT 和FAST_START_IO_TARGET 强制时
见后续部分
? 当数据库管理员手动请求时见后续部分
如果初始化参数 LOG_CHECKPOINTS_TO_ALERT 设置为 TRUE 则每个检查
点信息都记录在 ALERT 文件内该参数缺省值为 FALSE 不记录检查点

Checkpoint并非只在log switch时触发

log_checkpoint_interval
log_checkpoint_timeout
fast_start_mttr_target
fast_start_io_target
....

都会影响检查点触发


检查点又分为:
增量检查点
完全检查点


关于Checkpoint not complete的理解


一个大DML,在buffer cache 产生很多dirty blocks.
同时相对应的也产生很多redo log entries,假设这些redo log entries写到了redo logfile 1#,
当要重用这个redo logfile 1#时,在它上面的redo log entries所对应的在buffer cache的dirty blocks.,没有被
写到磁盘上,就会产生Checkpoint not complete的错误


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

转载于:http://blog.itpub.net/51726/viewspace-65955/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值