在refenerce中,object_id与data_object_id的定义如下:
object_id Dictionary object number of the object
data_object_id Dictionary object number of the segment that contains
the object
object_id是存储在数据字典中对象的编号;data_object_id是存储这个对象的物理段编号.
SQL> select object_id,data_object_id from user_objects where object_name='TEST7';
OBJECT_ID DATA_OBJECT_ID
---------- --------------
6617 7250
SQL> alter table test7 move;
Table altered.
SQL> select object_id,data_object_id from user_objects where object_name='TEST7';
OBJECT_ID DATA_OBJECT_ID
---------- --------------
6617 7268
我们看到:对表进行move操作, object_id不变,data_object_id发生变化.
在9i中,rowid由data_object_id# + rfile# + block# + row#组成,因此,当表进行move操作后,
data_object_id会发生变化,相应的rowid会发生变化,因此要rebuild索引.