zoukankan      html  css  js  c++  java
  • 相克军_Oracle体系_随堂笔记009-检查点队列

    1、检查点队列 checkpoint queue
    RBA 日志块地址 redo block address
    LRBA 第一次被脏的地址
    HRBA 最近一次被脏的地址
    on disk rba 重做日志(current redo log)中最后一条日志的地址
     
    数据块里有两个地址,LRBA,HRBA.
     
    checkpoint queue 按照脏块第一次脏的时间链起来。
    checkpoint queue就是按照数据块的LRBA地址链起来的。
     
    2、CKPT进程
        每隔3秒钟触发一次
            记录检查点信息
            触发DBWR进程
     
    完全检查点:会触发将所有脏块写入磁盘。
        只有正常关闭的时候才会发生完全检查点。正常运行期间基本不会发生完全检查点。
     
    增量检查点:ckpt会将检查点队列的第一个最早脏的数据块所对应的(LRBA)日志地址记录到控制文件中。增量检查点每隔3秒钟会发生一次。
        
    当增量检查点发生时,ckpt会将检查点队列的第一块最早脏的,所对应的日志地址记录到控制文件中。
    当增量检查点发生时,发现checkpoint queue太长,I/O也不太忙的话,会触发DBWn,部分写到磁盘上,以缩短checkpoint queue的长度。
     
    DBWn写,根据LRUW写
    checkpoint queue 很长的时候,也会适当的触发DBWn写。
    On disk RBA
     
    3、增量检查点并不会去更新数据文件头,以及控制文件中数据库SCN以及数据文件条目的SCN信息,而只是每3秒由CKPT进程去更新控制文件中的low cache rba信息,也就是检查点的位置。
    select CPDRT,CPLRBA_SEQ||'.'||CPLRBA_BNO||'.'||CPLRBA_BOF "LowRBA",CPODR_SEQ||'.'||CPODR_BNO||'.'||CPODR_BOF "On disk RBA",CPODS,CPODT,CPHBT from x$kcccp;
    
    CPDRT列是检查点队列中的脏块数目.
    CPODS列是on disk rba的scn
    CPODT列是on disk rba的时间戳
    CPHBT列是心跳

    如果发生了实例崩溃,只需要在日志文件中找到检查点位置(low cache rba),从此处开始应用所有的重做日志文件,就完成了前滚操作。实例崩溃后,再次启动数据库,oracle会到控制文件中读取low cache rba,这就是检查点位置。从此处开始应用重做日志,应用到on disk rba的位置。on disk rba是磁盘中重做日志文件的最后一条重做记录的rba。

    相关操作:
    select checkpoint_change# from v$database;
    alter system checkpoint;
    alter system switch logfile;
    select name,checkpoint_change# from v$datafile ;
    select name,checkpoint_change# from v$datafile_header;
    select * from v$log;
    
     
     create table t2(id int, name varchar2(50));
    
    begin
    for i in 1..10000 loop
    insert into  t2 values(1,'xkj');
    commit;
    end loop;
    end;
    
    select * from t2;
    
    alter system flush buffer_cache;
    
    ----------------------------------------------------
    实例崩溃恢复原理分析:
    检查点队列的意义:找到跑日志的起点,加快实例崩溃后oracle的启动速度。oracle 8之前,没有检查点队列,确定不了日志的起点,要跑很多日志,启动速度很慢。
  • 相关阅读:
    as2 loadvars
    Playing with Content-Type – XXE on JSON Endpoints
    Hostile Subdomain Takeover using HerokuGithubDesk + more
    XSS for domain takeover
    XSS via XML POST
    dns 查询中的ANY类型
    crossDomain、allowDomain()、allowScriptAccess三者的关系
    ReadingWriting files with MSSQL's OPENROWSET
    Github html文件在线预览方法
    boostrap莫泰对话框宽度调整
  • 原文地址:https://www.cnblogs.com/jyzhao/p/3819375.html
Copyright © 2011-2022 走看看