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

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

发表留言:

« Previous | Main | Next »

英语900句 | English 900

  • Even if you had given him much more money, he might not have paid off the debt.
  • 就算你给了他更多的钱, 他也还不清债务.
  • What would you have done if you hadn't gone out for a picnic yesterday?
  • 如果你昨天没有出去野餐的话. 你会干什么?
  • I wish I had told him the truth.
  • 我真希望我把真相告诉了他.
  • I wish you hadn't cheated me.
  • 我希望你没有欺骗我.
  • If it had been fine, we would have gone to the park.
  • 如果天气好的话, 我们就去公园了.