欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Oracle 查看归档日志中重做记录的RBA

程序员文章站 2022-03-24 21:58:28
RBA介绍:rba = redo byte address 脏数据块对应的redo记录条目的位置 RBA由3部分组成,4byte+4byte+2byte分别为 logfile sequence number ,logfile block number,byte offset into the block ,即redo 序列号,redo 块号,以及偏移量。这里RBA对应bbed中的500 504 508BBED> p kcvfhckp... union u, 12 bytes...

RBA介绍:

rba = redo byte address 脏数据块对应的redo记录条目的位置 

RBA由3部分组成,4byte+4byte+2byte
分别为 logfile sequence number ,logfile block number,byte offset into the block ,
即redo 序列号,redo 块号,以及偏移量。

这里RBA对应bbed中的500 504 508
BBED> p kcvfhckp
...
   union u, 12 bytes                        @500     
      struct kcvcprba, 12 bytes             @500     
         ub4 kcrbaseq                       @500      0x0000000a
         ub4 kcrbabno                       @504      0x00000089
         ub2 kcrbabof                       @508      0x0010
...

并且全部使用16进制。
例如:rba= 0000000a.00000089.0010
第一个4byte对应kcrbaseq
第二个4byte对应kcrbabno
第三个2byte对应kcrbabof

所以在跳过归档继续恢复时,不仅需要修改500 kcrbaseq 还要修改504 kcrbabno 和 508 kcrbabof

查看归档日志中重做记录的RBA:

SQL> oradebug setmypid
Statement processed.

SQL> oradebug tracefile_name
/oracle/app/diag/rdbms/prod/prod/trace/prod_ora_4126.trc

SQL> alter system dump logfile '/oracle/app/product/11.2.0/db_1/dbs/arch1_10_1046156085.dbf';
System altered.

从转储trace中找到第一条重做记录信息:
SQL>less /oracle/app/diag/rdbms/prod/prod/trace/prod_ora_4126.trc
...
REDO RECORD - Thread:1 RBA: 0x00000a.00000002.0010 LEN: 0x0070 VLD: 0x05
SCN: 0x0000.0010fd59 SUBSCN:  1 10/09/2020 21:47:07
(LWN RBA: 0x00000a.00000002.0010 LEN: 0001 NST: 0001 SCN: 0x0000.0010fd57)
CHANGE #1 MEDIA RECOVERY MARKER SCN:0x0000.00000000 SEQ:0 OP:17.3 ENC:0
...

以上内容为10号归档日志中第一个重做记录,可以看出第一个重做记录的RBA=0x00000a.00000002.0010

本文地址:https://blog.csdn.net/baoyuhang0/article/details/108982869