Oracle RBA(Redo Block Address) 说明
来源:互联网 发布:鸳鸯阵 知乎 编辑:程序博客网 时间:2024/05/21 19:38
Oracle RBA(Redo Block Address) 说明
转自:http://blog.csdn.net/tianlesoftware/article/details/6700080
一. RBA 说明
A"Redo Block Address" (RBA) describes a physical location within a redo log file.
RBA 由以下三部分组成:
(1)the log file sequence number (4 bytes)
(2)the log file block number (4 bytes)
(3)the byte offset into the block at which the redo record starts (2bytes)
如:RBA[0x19.2.10] 代表 Log squence 25, Block number 2 with byte offset 16.
注意这里的格式:都是16进制。
Redo 与checkpoint 关系很大,当设置log_checkpoints_to_alert 参数为true后,checkpoint 发生时会写入alert log里。
如:
SYS@dave2(db2)>alter system set log_checkpoints_to_alert=true scope=both;
System altered.
SYS@dave2(db2)> alter system switch logfile;
System altered.
log里的信息如下:
Thu Aug 18 18:46:18 2011
ALTER SYSTEM SET log_checkpoints_to_alert=TRUE SCOPE=BOTH;
Thu Aug 18 18:48:07 2011
Beginning log switch checkpoint up to RBA[0xa.2.10], SCN: 2148380730
Thread 1 advanced to log sequence 10
Current log# 3 seq# 10 mem# 0: /u01/app/oracle/oradata/dave2/redo03.log
Thu Aug 18 18:52:54 2011
Completed checkpoint up to RBA [0xa.2.10],SCN: 2148380730
Thu Aug 18 19:08:59 2011
Incremental checkpoint up to RBA[0xa.736.0], current log tail at RBA [0xa.80a.0]
Thu Aug 18 19:39:01 2011
Incremental checkpoint up to RBA[0xa.c96.0], current log tail at RBA [0xa.d7c.0]
....
Fri Aug 19 07:10:00 2011
Incremental checkpoint up to RBA[0xa.1688a.0], current log tail at RBA [0xb.8328.0]
Fri Aug 19 07:11:04 2011
Completed checkpoint up to RBA [0xb.2.10],SCN: 2148412930
Fri Aug 19 07:40:02 2011
Incremental checkpoint up to RBA[0xb.896c.0], current log tail at RBA [0xb.89c1.0]
根据我们前面的说明,RBA 由三部分组成,第一部分是sequence number,即序列号。
在我们贴出来的log里有2个日志序列:RBA [0xa.1688a.0] 和 RBA [0xb.896c.0]。
SYS@dave2(db2)> select to_number('a','xx') from dual;
TO_NUMBER('A','XX')
-------------------
10
SYS@dave2(db2)> select to_number('b','xxx') from dual;
TO_NUMBER('B','XXX')
--------------------
11
a 对应的是日志序列10,b 对应的是日志序列11.
SYS@dave2(db2)> select sequence# from v$archived_log;
SEQUENCE#
----------
1
2
3
4
5
6
7
8
9
10
SYS@dave2(db2)> select sequence#,group#,status from v$log;
SEQUENCE# GROUP# STATUS
---------- ---------- ----------------
11 1 CURRENT
9 2 INACTIVE
10 3 INACTIVE
根据这个查询结果判断10是已经归档的,11是正在使用的current redo log file。
第二部分就是我们对应的block:
SYS@dave2(db2)> select to_number('1688a','xxxxxxxxx') from dual;
TO_NUMBER('1688A','XXXXXXXXX')
------------------------------
92298
在之前的blog:
Oracle Dump Redo Log File 说明
http://blog.csdn.net/tianlesoftware/article/details/6670962
里提到,可以根据RBA 来dump redo block:
格式如下:
ALTER SYSTEM DUMP LOGFILE 'filename' RBAMIN seqno .blockno RBAMAX seqno . blockno;
示例:
SYS@anqing1(rac1)> alter system dump logfile '+data/anqing/onlinelog/redo02.log' rbamin 121 10458 rbamax 125 10472;
System altered.
这里的参数:seqno .blockno; 就是我们RBA中的前2部分。
二. RBA 使用
RBAs are not necessarily unique within their thread, because the log file sequence number may be reset to 1 in all threads if a database is opened with the RESETLOGS option.
RBAs are used in the following important ways.
With respect to a dirty block in the buffer cache, the low RBA is the address of the redo for the first change that was applied to the block since it was last clean, and the high RBA is the address of the redo for the most recent change to have been applied to the block.
Dirty buffers are maintained on the buffer cache checkpoint queues in low RBA order. The checkpoint RBA is the point up to which DBWn has written buffers from the checkpoint queues if incremental checkpointing is enabled -- otherwise it is the RBA of last full thread checkpoint.
The checkpoint RBA is copied into the checkpoint progress record of the controlfile by the checkpoint heartbeat once every 3 seconds. In stance recovery, when needed, begins from the checkpoint RBA recorded in the controlfile.
The target RBA is the point up to which DBWn should seek to advance the checkpoint RBA to satisfy instance recovery objectives.
The on-disk RBA is the point up to which LGWR has flushed the redo thread to the online log files. DBWn may not write a block for which the high RBA is beyond the on-disk RBA. Otherwise transaction recovery (rollback) would not be possible, because the redo needed to undo a change is always in the same redo record as the redo for the change itself.
The term sync RBA is sometimes used to refer to the point up to which LGWR is required to sync the thread. However, this is not a full RBA -- only a redo block number is used at this point.
在上面提到的几种RBA 值可以通过X$BH,和 X$KCCRT 视图进行查看:
The low and high RBAs for dirty buffers can be seen in X$BH.(There is also a recovery RBA which is used to record the progress of partial block recovery by PMON.)
The incremental checkpoint RBA, the target RBA and the on-disk RBA can all be seen in X$TARGETRBA.The incremental checkpoint RBA and the on-disk RBA can also be seen in X$KCCCP.
The full thread checkpoint RBA can be seen in X$KCCRT.
-------------------------------------------------------------------------------------------------------
Blog: http://blog.csdn.net/tianlesoftware
- Oracle RBA(Redo Block Address) 说明
- Oracle RBA(Redo Byte Address) 说明
- Oracle RBA(Redo Byte Address) 说明
- Oracle RBA(Redo Byte Address) 说明
- Oracle RBA(Redo Byte Address) 说明
- ORACLE RBA(Redo Byte Address)说明
- ORACLE RBA(redo byte address)
- Redo Byte Address(RBA)
- Redo Byte Address (RBA)
- Redo Byte Address (RBA)
- Oracle RBA
- 理解redo(5)深入学习RBA
- Oracle block cleanout 说明
- Oracle block cleanout 说明
- Oracle RBA 浅谈
- Oracle Dump Redo Log File 说明
- Oracle Dump Redo Log File 说明
- Oracle Dump Redo Log File 说明
- 使用定制的ArrayAdapter制作ListView的Items(翻译)
- mongodb newlisp driver v0.1.0 发布
- jq简单的下拉菜单,有二级栏目。
- Android开发~ListView
- Android系统如何录制屏幕(录制成mp4格式)
- Oracle RBA(Redo Block Address) 说明
- iOS文件系统二---NSBundle
- 开发工具之MyEclipse用法基本总结(断点测试,快捷键,Junit测试)
- IOS中XML解析之libxml2
- 利用APNS进行消息推送 管理 给个免审核
- 9683 敏感词[C]
- 人品计算器控制台版本4.0
- Android 向J2ee提交请求出现乱码问题
- C++的Json解析库:jsoncpp和boost .