如下那种应用场景符合Oracle ROWID存储规则?
A 物理ROWID是在同一个数据库中(DATABASE级)唯一标识一行的数据地址,且可转换输出文件号、块号、对象号等信息。
B 对堆表执行更新(UPDATE SQL)触发行迁移时,物理ROWID会变化。
C 使用ALTER TABLE ... MOVE命令移动堆表存储时ROWID发生变化,表中B-Tree索引状态变为不可用(UNUSABLE)。
D 用SQL查询ROWID时,索引组织表返回逻辑ROWID,堆表返回物理ROWID。
答:
A 物理ROWID是在同一个数据库中(DATABASE级)唯一标识一行的数据地址,且可转换输出文件号、块号、对象号等信息。
C 使用ALTER TABLE ... MOVE命令移动堆表存储时ROWID发生变化,表中B-Tree索引状态变为不可用(UNUSABLE)。
D 用SQL查询ROWID时,索引组织表返回逻辑ROWID,堆表返回物理ROWID。
选项分析
A选项- 物理ROWID确实是在数据库级别唯一标识一行的数据地址,并且它可以通过一定的方式转换输出文件号、块号、对象号等信息,这是符合Oracle ROWID存储规则的,所以A选项正确。
B选项- 当对堆表执行更新触发行迁移时,Oracle会使用一种称为"行迁移"的机制来处理,在这种情况下,原来的ROWID不会变化,只是会在新的位置留下一个指针指向原来的行,所以B选项不符合Oracle ROWID存储规则。
C选项- 当使用ALTER TABLE... MOVE命令移动堆表存储时,表的存储位置发生了改变,ROWID会发生变化,而且由于表的存储结构改变,基于原存储结构的B-Tree索引状态会变为不可用(UNUSABLE),这是符合Oracle ROWID存储规则的,所以C选项正确。
D选项- 在Oracle中,用SQL查询ROWID时,索引组织表返回逻辑ROWID,堆表返回物理ROWID,这是符合其存储规则的常见查询结果,所以D选项正确。