DBA之路---Oracle的checkpoint机制

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

oracle的checkpoint机制

#数据库内部时间检查点激活时会触发DBWR数据磁盘写入进程将缓冲区的脏数据块写到数据文件中

#目的为 1、保证数据库的一致性即将仓数据写出到硬盘
#      2、缩短实例恢复时间将实例因异常关闭存在重放日志文件中的脏数据写入到磁盘中
#检查点越多越能有效减少脏数据的写入时间进而减少实例恢复时间

select file#,checkpoint_change#,last_change# from v$datafile;
  #查看所有checkpoint

oracle允许下面类型进行触发检查点处理脏块
1、每次切换redo日志文件
2、达到log_checkpoint_timeout延迟时间
3、挡墙日志文件已经存达到(log_checkpoint_interval * os块bytes)得数据
4alter system switch logfile
5、直接由alter system checkpoint实现
6、正常关闭数据库:shutdown immediat

checkpoint机制注意点
1、redo的每个日志都是可以设置大小的这个大小需要合适当redo日志块超过这个大小就会发生redo日志切换从而触发检查点而频繁的日志切换是需要消耗性能的
#如果 DBWR 写入速度过慢或者在日志全满之前发生日志切换或者日志文件过小就会遇到这种情况。在数据库等待检查点时redo 生成过程会停止直到完成日志切换。

检查点分类

  • 完全检查点 fullcheckpoint

    记下当前scn值将在此之前的所有重放缓存日志中脏数据一次性写完同时将该scn同步到控制文件与数据头中适合数据量少的情况

    可以引起完全检查点启动的四个数据库动作  
    a)正常关闭数据库:shutdown immediate
    b)手动检查点切换:alter system checkpoint; 
    c)日志切换alter system switch logfile; #待定
    d)数据库热备模式alter database begin backup; 
    #alter system checkpoint然后观察v$datafile和v$datafile_header中scn被更新。
      select file#,checkpoint_change#,last_change# from v$datafile;#直接查看所有检查点
      select checkpoint_change from v$database
     #查看数据库保存基准时间checkpoint机制被触发时所使用的SCN
    
  • 增量检查点 incremental checkpoint

    oracle中所有被修改但是没有commit都叫脏块这些脏块的首次变脏被修改的时间会被记录同时生成一个双向链表指针串联作为增量检查点所使用队列。

    可以使恢复用的检查点位置前移可以理解为SCN值靠近oracle最近记录的北京标准时间缩短实例恢复时间但是由于使时刻在进行脏块恢复所以io性能会受影响

    增量检查点不会同步更新数据文件头的SCN跟完全检查不一样

    #增量检查点一旦发生数据库的DBWR写入磁盘进程就会执行之后沿着队列将脏块刷到磁盘上。
    #每次执行刷新后在队列停止的点为下次执行的增量检查点位置。
    #该检查点位置用于在崩溃后进行实例恢复的记录节点
    #执行刷新成功后的块会存到对应日志地址记录在控制文件中
    #增量检查点位置
    
    #相关参数
     #FAST_START_MTTR_TARGET 
         #涉及多长时间恢复实例----增量检查点会时刻进行调整该参数
         #单位soracle通过此参数计算内存中积累的dirty buffer脏块从恢复redo重放日志中数据的时间。即实例崩溃后进行恢复索要花费的秒数。
         select TARGET_MTTR,ESTIMATED_MTTR from v$instance_recovery
         #查询oracle依照该参数进行计算后得出的脏块恢复时间estimated_mttr和系统强制执行所需要平均回复时间
         
     #LOG_CHECKPOINT_INTERVAL
         #指定增量检查点目标应滞后于当前日志尾部的最大redo块数量
         #与FAST_START_MTTMTARGET参数冲突属于有她没我。在多数linux上默认512
         #影响检查点的发生时间也影响恢复的前滚阶段期间完成数据库恢复操作所需的时间数据库恢复需要读取redo日志单个日志过大是有一定影响的
     
     #LOG_CHECKPOINT_TIMEOUT 
         #指定增量检查点目标应滞后于当期日志尾部的最长秒数缓冲区的脏块写入到磁盘前的保持时间
         #变向影响检查点执行时间
         #本参数设定后检查点进行检查属于每s执行非常容易产生多余的检查点影响正在进行中的事务的性能
     
     #LOG_CHECKPOINTS_TO_ALERT
          show parameter log_checkpoints
          alert system set llog_checkpoints_to_alert = true
         #检查点执行提示参数,检查检查点是否按所需频率发生
         
         
      
    
  • 局部检查点 partial checkpoint

    #仅作为表空间级检查点使用
    #oracle中任意表空间可以随意下线表结构任何情况下都能创建但是表空间下线后不允许插入数据。
     #因表结构存储是在sys表空间中但是数据只能存在表空间指向的数据文件
      #system表空间一般不能也不会下线
      #允许用于媒介恢复datafile会写scn
    

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: oracle

“DBA之路---Oracle的checkpoint机制” 的相关文章