在AUL中有几个命令(OSDUMP, UNLOAD, ORADUMP, BCHECK, CORRUPT, ROWID)可以用RDBA来指定一个Block的地址, 很多人都知道相对块地址(RDBA, 一个32Bit的不带符号的正数, Relative Data Block Address)其实由文件号(RFILE#, 前10个Bit)和块号(BLOCK#, 后22个Bit)组成, 在DUMP或其他很多地方, 引用RDBA时都是用十六进制的数值来表示的. 在本文之前, 在AUL中不能指定一个十六进制的值, 你必须先换算成十进制的值来指定, 这具有一定的不方便性, 因此我对这个作了一点改进, 可以用0x开始来指定一个十六进制的值.

    下面的这个例子来恢复某一个块的记录:

AUL> unload object 10102 rdba 0x0180000f column number char char;
2007-01-29 23:38:38
10|ACCOUNTING|NEW YORK
20|RESEARCH|DALLAS
30|SALES|CHICAGO
40|OPERATIONS|BOSTON
2007-01-29 23:38:38

    接下来再看一下另一个很有用的命令, 构造或分解一个Oracle Row ID:

AUL> rowid create object 10102 rdba 0x0180000f slot 0

OBJD  = 10102
RDBA  = 0x0180000f = 25165839
RFN#  = 6
BID#  = 15
SLOT  = 0
ROWID = AAACd2AAGAAAAAPAAA

AUL> ROWID PARSE AAACd2AAGAAAAAPAAA

OBJD  = 10102
RDBA  = 0x0180000f = 25165839
RFN#  = 6
BID#  = 15
SLOT  = 0
ROWID = AAACd2AAGAAAAAPAAA

    忽以善小而不为, 发现有需要并且能改进的地方, 一律改进.