oracle管理员账号配置CKPT检查点队列

CKPT检查点队列

 

buffer cache内存包含chain和buffer

LRU     将可用块串起来(按访问的频率)

LRUW 将脏块串起来(访问频率)冷端的块率先被写入硬盘。

CBC    将数据块读入内存的时候使用

CKPT(链): 1、链接的是脏块  2、第一次脏的时间链接起来的(从小到大)

 

RBA  redo block address 日志块的地址

对块修改会产生日志,日志存在一个地址。这个地址就是RBA。

同时在修改的块记录下这个RBA地址。

对于每一个块存在2个地址:

LRBA(第一次被脏的地址)

HRBA(最后一次被脏的地址)

 

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

 

CKPT有2中工作方式:1、完全检查oracle账号点:会触发DBWR将所有脏块写到磁盘(关闭数据库)

                                         2、增量检查点: 

a、主要是将检查点队列的对应的LRBA(第一个脏块所对应的日志地址)记录到控制文件中(每隔3秒)

b、当增量检查点发生的时候,会检查检查点队列,当队列的上的脏块太多且系统不是很忙的时候会触发dbwr去缩短检查点队列。

 

dbwr写有2种情况:

 

1、LRUW

 

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

 

on disk rba logbuffer 数据库保存的最后一条的日志地址(logbuffer里面最后一条日志地址即记录的最新的日志地址)col  LowRBA for a20col  OndiskRBA for a20select 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_cacheCPDRT列是检查点队列中的脏块数目. CPODS列是on disk rba的scn CPODT列是on disk rba的时间戳 CPHBT列是心跳

 

相关操作

 

select checkpoint_change# from v$databasealter system checkpointalter system switch logfileselect name,checkpoint_change# from v$datafileselect name,checkpoint_change# from v$datafile_headerselect * from v$log;beginfor i in 1..10000 loopinsert into  t2 values(1,'xkj');commit;end loop;end;select * from t2

 

 

此条目发表在oracle metalink账号分类目录,贴了标签。将固定链接加入收藏夹。