CKPT检查点队列

buffer cache内存包含chain和buffer
LRU     将可用块串起来(按访问的频率)
LRUW 将脏块串起来(访问频率)冷端的块率先被写入硬盘。
CBC    将数据块读入内存的时候使用
CKPT(链): 1、链接的是脏块  2、第一次脏的时间链接起来的(从小到大)

RBA  redo block address 日志块的地址
对块修改会产生日志,日志存在一个地址。这个地址就是RBA。
同时在修改的块记录下这个RBA地址。
对于每一个块存在2个地址:
LRBA(第一次被脏的地址)
HRBA(最后一次被脏的地址)

检查点队列里面的数据块是按照数据块的LRBA地址链接的。

CKPT有2中工作方式:1、完全检查点:会触发DBWR将所有脏块写到磁盘(关闭数据库)
                                         2、增量检查点:
a、主要是将检查点队列的对应的LRBA(第一个脏块所对应的日志地址)记录到控制文件中(每隔3秒)
b、当增量检查点发生的时候,会检查检查点队列,当队列的上的脏块太多且系统不是很忙的时候会触发dbwr去缩短检查点队列。

dbwr写有2种情况:

1、LRUW

2、检查点队列最早脏的块部分写在磁盘上

 

on disk rba logbuffer 数据库保存的最后一条的日志地址

(logbuffer里面最后一条日志地址即记录的最新的日志地址)

col  LowRBA for a20

col  OndiskRBA for a20

 

select CPDRT,

CPLRBA_SEQ||'.'||CPLRBA_BNO||'.'||CPLRBA_BOF "LowRBA",

CPODR_SEQ||'.'||CPODR_BNO||'.'||CPODR_BOF   "OndiskRBA",

CPODS,

CPODT,

CPHBT from x$kcccp;

 

alter system flush buffer_cache

 


CPDRT列是检查点队列中的脏块数目.
CPODS列是on disk rba的scn
CPODT列是on disk rba的时间戳
CPHBT列是心跳
相关操作

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;

begin
for i in 1..10000 loop
insert into  t2 values(1,'xkj');
commit;
end loop;
end;
select * from t2

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值