AUL几个命令中RDBA的新表示方式
在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
忽以善小而不为, 发现有需要并且能改进的地方, 一律改进.
