您的位置:首页 > 数据库 > Oracle

ORACLE:object_id vs data_object_id

2013-11-10 22:56 591 查看
    在dba_objects视图中存在object_id和data_object_id两个字段,在多数情况下,两者是相同的,但是有时两者却又不同。这两个字段到底什么含义那?

首先,OBJECT_id字段代表数据库中的某对象的唯一性标识,具有主键特征,而DATA_OBJECT_ID则标识了该对象底层的数据存储段,具有外建特征。在初始情况下,两者相同,但是当我们对对象的底层存储段进行了根本性的修改后,两者可能会不一致,如move和truncate操作。

   

SQL> create table tab2(id number);

表已创建。

SQL> select object_id,data_object_id from user_objects where object_name='TAB2';

OBJECT_ID DATA_OBJECT_ID
---------- --------------
77166	    77166

SQL> alter table tab2 move;

表已更改。

SQL> select object_id,data_object_id from user_objects where object_name='TAB2';

OBJECT_ID DATA_OBJECT_ID
---------- --------------
77166	    77167

SQL> truncate table tab2;

表被截断。

SQL> select object_id,data_object_id from user_objects where object_name='TAB2';

OBJECT_ID DATA_OBJECT_ID
---------- --------------
77166	    77167

SQL> insert into tab2 values(2);

已创建 1 行。

SQL> commit;

提交完成。

SQL> truncate table tab2;

表被截断。

SQL> select object_id,data_object_id from user_objects where object_name='TAB2';

OBJECT_ID DATA_OBJECT_ID
---------- --------------
77166	    77168


    
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息