mysql RBA,Oracle RBA 浅谈
今天来和大家简单谈一下rba ,rba = redo byte address 。讲到rba,这里涉及到了几点需要大家提前预知,即controlfile header,c
今天来和大家简单谈一下rba ,rba = redo byte address 。
讲到rba,这里涉及到了几点需要大家提前预知,即controlfile header,ckpt process 与 dbwn process , dirty buffer 。
先来看一下RBA的构成:
它由3部分组成,4byte+4byte+2byte分别为 logfile sequence number ,logfile block number,byte offsetinto the block ,即redo 序列号,redo block 号,以及偏移量。
并且全部使用16进制。
例如:rba= 0x000024.000011bd.0010
seq#=0x000024=36
blk#=0x000011bd=4541
ofs#=0x0010=16
接下来说一下instance recovery
这里的Checkpoint position 其实就是cache low rba, End of redo thread就是最后一个on-disk rba。
大家都知道实例恢复的时候需要从cache low rba 到 on-disk rba , lowrba 与 on-disk 全部存储在控制文件里面,on-diskrba 可以简单的理解为是 lgwr 最后写日志文件的地址。那么cache low rba是如何而来呢?
cache low rba 其实就是ckpt进程每3秒写入到controlfileheader 上面的rba 。所以下面的文章将cache low rba 命名为ckpt rba 。
大家知道 ckpt 分为三种,即 database check points ,,Tablespace and datafile checkpoints和Incremental checkpoints。这里和第三种checkpoints有关。增量检查点的存在是为了防止在发生日志切换的时候,写出大量的dirty block 到disk上面,它每3秒会监控一下dbwn写出block的情况,并且写到controlfile header里面(不包括datafile header)。
这里有几点需要注意:
1. dbwn 写出 dirtyblock 是使用一个叫做ckpt queue的双向链表来维护的,按照lrba的顺序写出dirty block 到 disk 上面。
2. 每个dirty block 上面都有一个lrba ,并且有一个指向ckpt queue的指针。
3. dbwn触发条件,请详见concepts。
好,下面我们用实验说话:
1. 先取出几个块的数据
01:57:02 dex@FAKE> select * from
01:58:10 2 (
01:58:10 3 selectdbms_rowid.rowid_relative_fno(substr(rowid,1,15)||'AAA') as file# ,
01:58:10 4 dbms_rowid.rowid_block_number(substr(rowid,1,15)||'AAA') as blk#,
01:58:10 5 max(t.id),max(t.name)
01:58:10 6 from dex.t
01:58:10 7 group by substr(rowid,1,15)
01:58:10 8 )
01:58:10 9 where rownum < 4 ;
FILE# BLK# MAX(T.ID) MAX(T.NAME)
---------- ---------- ---------- --------------------
4 446 37949 name
4 447 38433 name
4 442 39401 name
看一下x$bh
02:02:17 sys@FAKE> select dbablk ,lrba_seq,lrba_bno,flag from x$bh b where file#=4 and dbablk in (442,446,447);
DBABLK LRBA_SEQ LRBA_BNO FLAG
---------- ---------- ---------- ----------
442 0 0 524288
447 0 0 524288
446 0 0 524288
看一下当前的ckpt rba 和 ondisk rba
02:02:21 sys@FAKE> selectcplrba_seq,cplrba_bno,cplrba_bof,cpodr_seq,cpodr_bno,cpodr_bof,cphbt,cpodt fromx$kcccp where indx=0 ;
CPLRBA_SEQ CPLRBA_BNO CPLRBA_BOF CPODR_SEQ CPODR_BNO CPODR_BOF CPHBT CPODT
---------- ---------- ---------- -------------------- ---------- ---------- --------------------
37 10567 0 37 13157 0 791349660 08/15/2012 02:02:02
2. 更新数据
02:07:16 sys@FAKE> update dex.t setwhere id=37949 ;
1 row updated.
02:10:46 sys@FAKE> update dex.t setwhere id=38433 ;
1 row updated.
02:10:46 sys@FAKE> update dex.t setwhere id=39401 ;
1 row updated.
02:10:48 sys@FAKE> commit ;
Commit complete.
3. 查看一下各种状态
状态为脏数据
02:10:51 sys@FAKE> select dbablk ,lrba_seq,lrba_bno,flag from x$bh b where file#=4 and dbablk in (442,446,447);
DBABLK LRBA_SEQ LRBA_BNO FLAG
---------- ---------- ---------- ----------
442 37 14429 33554433
447 37 14429 33554433
446 37 14429 33554433
现在的ckpt rba 为14104
02:10:56 sys@FAKE> selectcplrba_seq,cplrba_bno,cplrba_bof,cpodr_seq,cpodr_bno,cpodr_bof,cphbt,cpodt fromx$kcccp where indx=0 ;
CPLRBA_SEQ CPLRBA_BNO CPLRBA_BOF CPODR_SEQ CPODR_BNO CPODR_BOF CPHBT CPODT
---------- ---------- ---------- -------------------- ---------- ---------- --------------------
37 14104 0 37 14437 0 791349830 08/15/2012 02:10:51
本文原创发布php中文网,转载请注明出处,感谢您的尊重!
mysql RBA,Oracle RBA 浅谈相关推荐
- MySQL ACID与MVCC浅谈
MySQL ACID与MVCC浅谈 前言 我们都知道在做事务的概念,就是一个完整的操作动作要么都执行,要么都不执行,这是一个不可分割的工作单位,ACID又是事务的四大特征.那么ACID具体是什么呢? ...
- mysql 不要统计null_浅谈为什么Mysql数据库尽量避免NULL
在Mysql中很多表都包含可为NULL(空值)的列,即使应用程序并不需要保存NULL也是如此,这是因为可为NULL是列的默认属性.但我们常在一些Mysql性能优化的书或者一些博客中看到观点:在数据列中 ...
- mysql维护计划任务_浅谈MySQL event 计划任务
一.查看event是否开启 show variables like '%sche%'; set global event_scheduler =1; 二. -- 设置时区并设置计划事件调度器开启,也可 ...
- mysql系统研究现状_浅谈数据库的现状和发展 毕业论文.doc
浅谈数据库的现状和发展 摘 要 学生学籍管理系统是一个教育单位不可缺少的部分,它的对于学校管理至关重要学生学籍管理系统能够为用户提供信息和快捷的查询手段.使用传统人工方式管理文件学籍,这种管理方式存在 ...
- mysql 用户通配符_浅谈mysql通配符进行模糊查询的实现方法
在mysql数据库中,当我们需要模糊查询的时候 ,我们会使用到通配符. 首先我们来了解一下2个概念,一个是操作符,一个是通配符. 操作符 like就是SQL语句中的操作符,它的作用是指示在SQL语句后 ...
- mysql cdc采集_浅谈CDC在微服务中的应用
原标题:浅谈CDC在微服务中的应用 CDC(Change Data Capture)是一种通过监测数据变更(变更包括新增.修改.删除等)而对变更的数据进行进一步处理的一种设计模式,通常应用在数据仓库以 ...
- mysql revoke 授权_浅谈MySQL中授权(grant)和撤销授权(revoke)用法详解
MySQL 赋予用户权限命令的简单格式可概括为: grant 权限 on 数据库对象 to 用户 一.grant 普通数据用户,查询.插入.更新.删除 数据库中所有表数据的权利 grant selec ...
- vb怎么样实时取mysql数据库数据_浅谈如何使用vb.net从数据库中提取数据
1.设置从Model中的Sub Main 启动 2.程序结构 3.Model1 Imports System.Windows.Forms.Application Module Module1 Sub ...
- mysql表空间_浅谈mysql中各种表空间(tablespaces)的概念
mysql中,会涉及到各种表空间的概念,虽然,很多方面这些概念和Oracle有相似性,但也有很多不同的地方,初学者很容易被这些概念弄的晕头转向,从而,混淆这些概念的区别和理解,下面,就简要介绍和说明一 ...
最新文章
- python输出csv文件中文乱码-python读写csv时中文乱码问题解决办法
- linux修复uefi启动文件,uefi-gpt-linux修复grub rescue
- LevelDb实现原理
- 使用JAVA加jxl jar操作EXECL
- 美团电单车中标警用车采购项目,上千辆定制版警用电单车上线!
- cookie java 写入_JAVA中如何读写COOKIE
- TYUT-A专题题解(一)
- 硬盘安装Debian
- 解决0RA-04031故障
- c语言表白用代码(1)
- 手把手教你使用Python提取快递信息
- 全球与中国抗辐射相机市场深度研究分析报告
- 根据前序遍历和中序遍历的结果重建二叉树
- 腾讯微信短网址(url.cn)在线生成接口API使用详解
- 项目二-成员函数、友元函数和一般函数之区别
- JAVA导出EXCEL实现
- 微信小程序开发的四种文件
- 在Mac电脑的状态栏右上角显示自己的名字
- 怎么进行固定资产盘点,资产盘点报告如何一键生成
- 用c语言实现cos(x)与sin(x) 函数以及“绝对值函数”和“阶乘函数”