通过DUMP查看CONTROLFILE关于增量检查点信息(包含DBA,RBA,HDBA,BDBA含义)

制造一些压力
create table testgp1
(id number(10),
 name varchar2(20))
tablespace TESTO2;
 
同时开启2个会话 
declare  
   i number(10);
begin 
  for i in 1..1000000
  loop
  insert into testgp1
   values(i,'gp');
  commit;
  end loop;
end;
TRACE 文件目录/opt/oracle/admin/xuexi/udump/xuexi_ora_7525.trc

查看CONTROLFILE DUMP中的
 
***************************************************************************
DATABASE ENTRY
***************************************************************************
 (size = 316, compat size = 316, section max = 1, section in-use = 1,
  last-recid= 0, old-recno = 0, last-recno = 0)
 (extent = 1, blkno = 1, numrecs = 1)
 10/04/2013 22:10:43
 DB Name "XUEXI"
 Database flags = 0x00404001 0x00001000
 Controlfile Creation Timestamp  10/04/2013 22:10:44
 Incmplt recovery scn: 0x0000.00000000
 Resetlogs scn: 0x0000.001d599f Resetlogs Timestamp  10/04/2013 22:14:48
 Prior resetlogs scn: 0x0000.001d494d Prior resetlogs Timestamp  10/04/2013 21:54:38
 Redo Version: compatible=0xa200100
 #Data files = 10, #Online files = 10
 Database checkpoint: Thread=1 scn: 0x0000.003b1f6c
 Threads: #Enabled=1, #Open=1, Head=1, Tail=1
 enabled  threads:  01000000 ..00000000
 Max log members = 3, Max data members = 1
 Arch list: Head=3, Tail=11, Force scn: 0x0000.00399bacscn: 0x0000.003b1f6c
 Activation ID: 2190560931
 Controlfile Checkpointed at scn:  0x0000.003ca333 02/25/2015 08:56:47
 
***************************************************************************
CHECKPOINT PROGRESS RECORDS
***************************************************************************
 (size = 8180, compat size = 8180, section max = 11, section in-use = 0,
  last-recid= 0, old-recno = 0, last-recno = 0)
 (extent = 1, blkno = 2, numrecs = 11)
THREAD #1 - status:0x2 flags:0x0 dirty:887
low cache rba:(0x5f.be3b.0) on disk rba:(0x60.a4f.0)
on disk scn: 0x0000.003cada7 02/25/2015 08:56:49
resetlogs scn: 0x0000.001d599f 10/04/2013 22:14:48
heartbeat: 872565918 mount id: 2235198369

这里主要关注几个关键值
1、 Database checkpoint: Thread=1 scn: 0x0000.003b1f6c
2、 Controlfile Checkpointed at scn:  0x0000.003ca333 02/25/2015 08:56:47
3、 THREAD #1 - status:0x2 flags:0x0 dirty:887
    low cache rba:(0x5f.be3b.0)
4、on disk rba:(0x60.a4f.0)
5、on disk scn: 0x0000.003cada7 02/25/2015 08:56:49

1、Database checkpoint: Thread=1 scn: 0x0000.003b1f6c
SCN应该代表的是LOW RBA的SCN,其实THREAD应该指的实例1,如果是RAC应该会出现多个,
关于这一点可以直接DUMP 0x5f.be3b.0的值进行看看其SCN值是否和此SCN对应

SQL> oradebug setmypid
Statement processed.
SQL> oradebug tracefile_name
/opt/oracle/admin/xuexi/udump/xuexi_ora_7644.trc
SQL>  ALTER SYSTEM DUMP LOGFILE '/oradata/xuexi/redo03.log' RBA MIN 95 48699 RBA MAX 95 48700; 

System altered.

从TRACEFILE HRADER中我们获取了如下信息:
Low  scn: 0x0000.003b1f6c (3874668) 02/25/2015 08:56:19
Next scn: 0x0000.003ca333 (3973939) 02/25/2015 08:56:47

可以看到这里确实是和Database checkpoint: Thread=1 scn: 0x0000.003b1f6c中的SCN是一致的
由此可以确定这实际是LOW RBA的SCN位置,这个位置及其重要是增量检查点完成到这里,也是每3秒
CKPT会去更新的。
这里想说明一下关于LOGFILE DUMP中的DBA BDBA HDBA
AFN:10 DBA:0x0280023f
bdba: 0x0280023f  hdba: 0x02800011

实际上AFN:10 DBA:0x0280023f
这里就是修改的块的位置,这里文件序号是10,块的地址是0280023f
可以换算一下
SQL> select to_number('280023f','XXXXXXXX') from dual;
TO_NUMBER('280023F','XXXXXXXX'
------------------------------
                      41943615
SQL> SELECT dbms_utility.data_block_address_block(41943615) "BLOCK",
  2          dbms_utility.data_block_address_file(41943615) "FILE"
  3      FROM dual;
     BLOCK       FILE
---------- ----------
       575         10
查看一下这个块属于哪个对象
SQL> SELECT segment_name,TABLESPACE_NAME FROM DBA_EXTENTS WHERE FILE_ID=10  AND  575 between block_id and block_id + blocks-1;
SEGMENT_NAME                                                                     TABLESPACE_NAME
-------------------------------------------------------------------------------- ------------------------------
TESTGP1                                                                          TESTO2
如此可以看到确实是我们的testgp1表,对于BDBA和上面DBA一致,而HDBA应该是HEADER DBA的简写是SEGMENT HEADER.

2、Controlfile Checkpointed at scn:  0x0000.003ca333 02/25/2015 08:56:47
这个点从DSI中得到的信息如下:
Controlfile Checkpoint at SCN: It is updated after every checkpoint (may it be 
tablespace, thread, or database) and is always greater than or equal to the database 
checkpoint when the database is open. 
可以看到他是进行了CHECKPOINT(不管full checkpoint还是增量检查点后更新的),我暂时理解为
增量检查点每次计算出来的目标点。

3、 THREAD #1 - status:0x2 flags:0x0 dirty:887
    low cache rba:(0x5f.be3b.0) 
这里重要就是DIRTY这应该是当前的脏数据量单位BLOCK,关于low cache rba:(0x5f.be3b.0)同1中的SCN
他们共同组成了当前增量检查点的对应的SCN和RBA,是如果出现CRAH RECOVERY的起点

4、on disk rba:(0x60.a4f.0)
5、on disk scn: 0x0000.003cada7 02/25/2015 08:56:49
这里代表是当前LOGFILE记录的RBA和SCN地址,在ORACLE中脏数据是DBWR进行写的,但是记录日志是LGWR的工作
每次COMMIT都会触发LGWR写,当然还有很多情况会触发,也就是想说明COMMIT的数据可能是脏数据,因为DBWR还没有
来得及写入。

至此可以断定进行CRAH RCEOVERY的时候实际上是Database checkpoint到on disk scn的日志量,他们都能找到对应的
RBA。

注:
RBA是日志序列.块地址.偏移量(就是日志块中的哪一行)组成的。

时间: 2024-10-26 06:33:28

通过DUMP查看CONTROLFILE关于增量检查点信息(包含DBA,RBA,HDBA,BDBA含义)的相关文章

ORACLE CheckpointQueue和增量检查点

<p style="margin:0in;font-size:20.0pt;"> ORACLE CheckpointQueue和增量检查点 </p> <p style="margin:0in;font-size:10.0pt;color:gray;"> <br /> </p> <p style="margin:0in;line-height:15pt;font-family:微软雅黑;fon

【性能优化】增量检查点

Oracle从8i开始引入了检查点队列这么一种概念,用于记录数据库里面当前所有的脏数据块的信息,DBWR根据这个队列而将脏数据块写入到数据文件中.检查点队列按时间先后记录着数据库里面脏数据块的信息,里面的条目包含RBA(Redo Block Address,重做日志里面用于标识检查点期间数据块在重做日志里面第一次发生更改的编号)和数据块的数据文件号和块号.在检查点期间不论数据块更改几次,它在检查点队列里面的位置始终保持不变,检查点队列也只会记录它最早的RBA,从而保证最早更改的数据块能够尽快写入

测试5——观察增量检查点

四:log file switch,会触发一个增量检查点,不过它会更新datafile header SQL> select cpdrt dirty,cpods on_disk_scn,cpodt on_disk_time,cphbt from x$kcccp where indx=0;      DIRTY ON_DISK_SCN      ON_DISK_TIME              CPHBT ---------- ---------------- -----------------

[20170407]关于增量检查点的一个疑问.txt

[20170407]关于增量检查点的一个疑问.txt --//oracle现在写脏块基本采用增量检查点,除非执行alter system checkpoint,或者shutdown immediate(normal)正常关闭数据库. --//别人的疑问,如果如果写增量检查点时,current log tail at RBA=Incremental checkpoint up to RBA时,如下情况 1.环境: SYS@book> @ &r/ver1 PORT_STRING         

redolog switch会发生完全检查点还是增量检查点?

网上有很多资料都没有说清楚发生log switch的时候,到底完全检查点还是增量检查点.有人说是完全检查点,也有人说是增 量检查点.其实如果你深入了解完全检查点和增量检查点的的区别,就应该知道log switch到底是增量检查点还是完全检查点. 在8i以前,log switch的时候oracle确实是会做完全检查点:但从8i开始,oracle在log switch的时候做的是增量检查点,但 从严格意义上来说并不能完全算是增量检查点,因为在log switch的时候,不仅会像增量检查点那样更新控制

阿里云如何查看弹性公网 IP 监控信息

查看弹性公网 IP 监控信息 描述 查看弹性公网IP的监控信息 一次最大只容许返回200条监控数据,如果指定的(EndTime – StartTime)/ Peroid > 200,则返回错误. 如果 EndTime - StartTime < period,则只返回 StartTime 一个点的数据. 请求参数 名称 类型 是否必须 描述 Action String 是 系统规定参数,取值:DescribeEipMonitorData AllocationId String 是 Eip 的申

126邮箱怎么查看邮件往来的详细信息?

  126邮箱怎么查看邮件往来的详细信息? 1.登录自己的126邮箱 2.进入自己的邮箱文件夹 3.找到需要查看往来的邮件 4.选择这个邮件,找到发件人,在弹出的选项卡中选择邮件往来 5.系统会根据你选择的发件人,在整个系统中查找所有和此人的往来邮件.以列表的形式展现出来,记录总的邮件数 6.选择往来的邮件,可以查看详细的信息

mysql查看表中每列信息

问题描述 mysql查看表中每列信息 mysql中如何查看表中每列的属性,比如是varchar(),还是int的? 解决方案 desc 表名......... 解决方案二: desc 表名........ 解决方案三: mysql查看表结构命令,如下: desc 表名; show columns from 表名; describe 表名; show create table 表名 如果回答对您有帮助,请采纳 解决方案四: 打开.......... 解决方案五: desc 表名; show col

haloop-Haloop迭代模型,可以查看迭代过程中的缓存信息嘛

问题描述 Haloop迭代模型,可以查看迭代过程中的缓存信息嘛 在Haloop迭代模型中,Map input.Reduce input.Reduce output缓存可以查看嘛,怎么查看