`
1enny
  • 浏览: 71298 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

检查点队列

 
阅读更多

oracle025

检查点队列

buffer cache中的链:
CBC,LRU(冷热程度)、LRUW(冷热程度)、
检查点队列链:链着是脏块,是通过第一次脏的时间来串联起来

RBA:redo log 日志地址
数据块
LRBA:第一次被脏的日志地址(最先一次)
HRBA:第五次被脏的日志地址(最近一次)
由LRBA--HRBA这两个点就可以知道这个数据块整个脏的日志范围(日志写入是按照时间的)
ON DISK RBA 最近一条写书redo log中的日志

ckpt:检查点进程:
完全监察点发生的时候,触发DBWR写所有脏块到数据库(数据库关闭)

增量监察点发生的时候,check point 将检查点的队列的第一个块(最早脏的快)
所对应的日志地址(LRBA)写入控制文件中(每隔三秒钟发生一次);假如检查点队列比较长,而且
IO不忙的时候,也会触发DBWR写最早脏的块写入数据库


DBWR:三种情况下写脏块:1. LRUW脏块队列来写数据到数据库,
3.
2.检查点队列比较长,而且IO不忙的时候,也会触发DBWR写最早脏的块写入数据库



oracle脏块丢失的处理情况:

oracle针对于未提交的数据的事务所对应的数据块可以丢失,
已提交的数据的事务对应的数据块不能丢失

日志在数据库实例崩溃的时候存在两个地方:log buffer中:这些日志肯定是事务没有提交的脏块日志信息
redo log中:而这些日志是事务已经提交的脏块数据信息

已提交的事务所对应的日志一定写入了磁盘上了,而没有提交的事务对应的日志不一定写入磁盘上
对于写入磁盘的日志所对应的脏块就可以恢复


oracle的实例崩溃后,oracle就可以使用redo log 给构造出来
构造出来的有已经提交的,和未提交的事务构造出来;oracle会把未提交的事务回滚


oracle发现实例崩溃需要构造数据出来
oracle需要从控制文件中找到检查点队列的LRBA地址,通过LRBA找到日志的起点,到redo log的最后一条日志构造出脏数据
oracle会通过UNDO把未提交的数据,但可以构造出来的数据进行回滚




1、检查点队列 checkpoint queue
rba
lrba
hrba
on disk rba
2、ckpt进程
每隔3秒钟触发一次
记录检查点信息
触发DBWR进程

3、增量检查点并不会去更新数据文件头,以及控制文件中数据库SCN以及数据文件条目的SCN信息,而只是每3秒由CKPT进程去更新控制文件中的low cache rba信息,也就是检查点的位置。

select CPDRT,CPLRBA_SEQ||'.'||CPLRBA_BNO||'.'||CPLRBA_BOF "Low
RBA",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;

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

分享到:
评论

相关推荐

    Oracle11g体系结构深入剖析和运维管理(四)

    资源名称:Oracle 11g体系结构深入剖析和运维管理(四)资源目录:【】28_存储结构_段区块【】29_检查点队列(checkpointqueue)【】30_实例崩溃恢复原理剖析【】31_系统改变号(SCN)详解【】32_事务概述【】33_事务ACID...

    MQ服务消息队列介绍

    设置队列日志(本步骤采用系统默认设置),点"下一步": 启动队列管理器,创建服务器连接通道,允许在TCP/IP上进行队列管理器的远程管理,点击"下一步": 设置队列管理器QM_JACK的侦听端口:8927(用户可以根据...

    C++堆栈实现队列.doc

    C++ 栈实现队列知识点 栈和队列的基本概念 在计算机科学中,栈(Stack)和队列(Queue)是两种基本的数据结构。栈是一种后进先出(LIFO,Last In First Out)的数据结构,元素的添加和删除都只能在栈顶进行。队列...

    starqueue:一个非常简单的消息队列服务器,用于分布式应用程序和微服务

    对于长期存储,将执行循环检查点保存。建筑与安装要构建StarQueue,请克隆此存储库并在其中运行make 。 C ++ 11是必需的。 要安装StarQueue,请运行make install 。 要卸载StarQueue,只需运行make uninstall 。 您...

    目前公开的免疫治疗相关数据集汇总,购买者自行下载,可求助!

    目前公开的免疫治疗相关数据集汇总,购买者可自行下载,可求助!

    17道消息队列Kafka面试题!.pdf

    (1)节点必须可以维护和ZooKeeper的连接,Zookeeper通过心跳机制检查每个节点的连接。 (2)如果节点是一个follower,它必须能及时的同步leader的写操作,延时不能太久。 4. Producer是否直接将数据发送到broker...

    数据结构-银行业务模拟

    注意,在此检查过程中,一旦银行资金总额少于或等于刚才第一个队列中最后一个客户(第二种业务)被接待之前的数额,或者本次已将第二个队列检查或处理了一遍,就停止检查(因为此时已不可能还有能满足者)转而继续...

    attrition:Attrition 是一个简单的队列系统,它使用 mongoDB 集合来存储作业

    添加 MQ 系统会引入另一个需要管理的关键故障点,MongoDB 非常有能力管理任务队列。 待办事项 编写更多单元测试 实施健康检查 人为的例子: 这是一个简单的队列示例,它使用状态标志在 worker 之间传递任务。 ...

    ucos用户函数参考手册.pdf

    OSQAccept()函数是消息队列管理函数,检查消息队列中是否已经有需要的消息。该函数不同于OSQPend(),如果没有需要的消息,则OSQAccept()并不使任务休眠。如果任务已经到达,则该消息被传递到用户任务。 OSQCreate()...

    数据结构--C语言描述-(耿国华)课后习题答案

    下面是该资源的详细知识点: 一、基本概念 * 数据抽象:数据结构的基本概念,强调对数据的描述和表示。 * 信息隐蔽:对数据的保护和隐藏。 * 数据对象、对象间的关系、一组处理数据的操作:数据结构的基本组成部分...

    序贯决策matlab代码-mimic_sepsis:来自MIMIC数据集的脓毒症队列

    与原始代码逐点检查以确保在插补前生成相同的数据; 弃用不可复制的原始估算; 添加 KNN 插补以生成更高质量的数据。 贡献 该代码是作为 MSR 蒙特利尔 RL4H 计划的一部分开发的。 大部分核心工作已由 Jayakumar ...

    e语言-易语言广度优先搜索实现漫水法

    资源介绍:原理:从指定的初始点开始,使用算符计算出第一层节点,然后检查目标节点是否已经在后继结点之中,如果没有,在使用算符在第一层节点的基础上进行扩展,以此类推,最终直到搜索完毕(达到目标)为止。...

    易语言广度优先搜索实现漫水法源码

    从指定的初始点开始,使用算符计算出第一层节点,然后检查目标节点是否已经在后继结点之中,如果没有,在使用算符在第一层节点的基础上进行扩展,以此类推,最终直到搜索完毕(达到目标)为止。也就是说:。1、从图...

    Reverb是专为机器学习研究而设计的高效且易于使用的数据存储和传输系统-C/C++开发

    Reverb是专为机器学习研究而设计的高效且易于使用的数据存储和传输系统。 混响主要用作分布式增强学习算法的体验重播系统,但该系统还支持多种...目录安装快速入门详细概述表项目选择策略速率限制分片检查点引文安装

    blocit:来自检查站的应用程序

    您可能想要涵盖的内容: Ruby版系统依赖配置数据库创建在检查点模型中创建数据库? 数据库初始化数据库初始化如何运行测试套件 服务(作业队列、缓存服务器、搜索引擎等) 部署说明... 使用输入字段右侧的“密码表...

    分支限界法 装载问题

    void Load::AddLiveNode(int up, int cw, bool ch, int level) //将一个新的活结点插入到子集树和优先队列中 { bbnode *b = new bbnode; b->parent = P; b->lchild = ch; Current* N = new Current; N->...

    深入解析Oracle.DBA入门进阶与诊断案例

    2.3.2 常规检查点与增量检查点 59 2.3.3 LOG_CHECKPOINT_TO_ALERT参数 63 2.3.4 控制文件与数据文件头信息 64 2.3.5 数据库的启动验证 66 2.3.6 使用备份的控制文件 70 2.3.7 FAST_START_MTTR_TARGET 71...

    MIPS_R10K_Simulator:Python 中 MIPS R10000K 4 路问题超标量处理器的模拟器

    MIPS_R10K_模拟器 Python 中 MIPS R10000K 4 路问题超标量处理器的模拟器。... 解码阶段检查在这些队列中的任何一个队列中是否存在用于相应指令的空槽,如果没有则解码停止。 一旦放置在这些队列中,指令就可以以

    华为OD和力扣刷题记录库

    TypeScript 能帮助 JavaScript 开发者去适应静态数据类型的检查,避免数据类型使用不当导致程序出错 TypeScript 静态数据类型能方便编辑器提示对应数据类型的 API 调用 学习灵活使用 TypeScript,TypeScript 已经是...

Global site tag (gtag.js) - Google Analytics