无意中,发现一些地方使用dba_objects中的data_object_id列。它是什么意思?
[@more@]我第一次注意到这个列时,非常好奇,dba_objects已经有了object_id列来唯一标识一个对象,那么还要data_object_id列做什么?而在metalink上又没有找到dba_objects的解释。我执行如下查询:
SQL> select count(*) from dba_objects;
COUNT(*)
----------
29931
SQL> select count(*) from dba_objects where object_id <> data_object_id;
COUNT(*)
----------
121
发现在我的数据库中,又121个对象数据的object_id和data_object_id不一致。于是问人,曰在分区表的情况下,这两个字段不一致。可是我的数据库没有使用分区表。怎么回事呢?深究一下,得知:
表经过move/truncate之后,索引经过rebuild之后它们的object_id<>data_object_id
SQL> create table wwftest as select object_id, object_name, owner from all_objec
ts where rownum < 400;
表已创建。
SQL> create index ind_wwftest on wwftest(object_id);
索引已创建。
SQL> col object_name format a25
SQL> select object_name, object_id, data_object_id from dba_objects
2 where object_name like '%WWFTEST';
OBJECT_NAME OBJECT_ID DATA_OBJECT_ID
------------------------- ---------- --------------
IND_WWFTEST 33363 33363
WWFTEST 33362 33362
SQL> truncate table wwftest;
表已截掉。
SQL> select object_name, object_id, data_object_id from dba_objects
2 where object_name like '%WWFTEST';
OBJECT_NAME OBJECT_ID DATA_OBJECT_ID
------------------------- ---------- --------------
IND_WWFTEST 33363 33364
WWFTEST 33362 33365
SQL> alter table wwftest move;
表已更改。
SQL> select object_name, object_id, data_object_id from dba_objects
2 where object_name like '%WWFTEST';
OBJECT_NAME OBJECT_ID DATA_OBJECT_ID
------------------------- ---------- --------------
IND_WWFTEST 33363 33364
WWFTEST 33362 33366
SQL> alter index ind_wwftest rebuild;
索引已更改。
SQL> select object_name, object_id, data_object_id from dba_objects
2 where object_name like '%WWFTEST';
OBJECT_NAME OBJECT_ID DATA_OBJECT_ID
------------------------- ---------- --------------
IND_WWFTEST 33363 33367
WWFTEST 33362 33366
那么,data_object_id是用来做什么的呢?note 45888.1说的明白:
DATA_OBJECT_ID was introduced in 8.0 to track versions of the same segment (certain operations change the version). It is used to discover stale ROWIDs and stale undo records.
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/30036720/viewspace-1470893/ ,如需转载,请注明出处,否则将追究法律责任。