object_id和data_object_id

来源:互联网 发布:ticwatch adb安装软件 编辑:程序博客网 时间:2024/04/28 01:01
在oracle的dba_objects里面,有object_id和data_object_id两个列,是什么意思呢?
object_id表示的是逻辑上的id,data_object_id表示的是物理上的id,如果某个对象没有实际的物理结构,那么data_object_id为null。
SQL> select distinct object_type from dba_objects where data_object_id is null;
 
OBJECT_TYPE
-------------------
EDITION
CONSUMER GROUP
SEQUENCE
SCHEDULE
QUEUE
RULE
JAVA DATA
PROCEDURE
OPERATOR
DESTINATION
WINDOW
SCHEDULER GROUP
PACKAGE
PACKAGE BODY
LIBRARY
PROGRAM
RULE SET
CONTEXT
TYPE BODY
JAVA RESOURCE
XML SCHEMA
TRIGGER
JOB CLASS
UNDEFINED
DIRECTORY
MATERIALIZED VIEW
SYNONYM
TABLE
VIEW
FUNCTION
INDEX
JAVA CLASS
JAVA SOURCE
INDEXTYPE
TYPE
RESOURCE PLAN
JOB
EVALUATION CONTEXT
 
38 rows selected
 
SQL> select distinct object_type from dba_objects where data_object_id is not null;
 
OBJECT_TYPE
-------------------
INDEX PARTITION
TABLE PARTITION
LOB PARTITION
LOB
TABLE
INDEX
CLUSTER
 
7 rows selected
看看上面的查询,只有像表、索引等这样有实际存储的对象才有data_object_id。
对象的object_id是不会变的,但是data_object_id时会变的,当段发生变化时:
SQL> select object_id,data_object_id,object_type from dba_objects where object_name='TEST';
 
 OBJECT_ID DATA_OBJECT_ID OBJECT_TYPE
---------- -------------- -------------------
     74441          74441 TABLE
 
SQL> alter table test move;
 
Table altered
 
SQL> select object_id,data_object_id,object_type from dba_objects where object_name='TEST';
 
 OBJECT_ID DATA_OBJECT_ID OBJECT_TYPE
---------- -------------- -------------------
     74441          75223 TABLE
 
SQL> truncate table test;
 
Table truncated
 
SQL> select object_id,data_object_id,object_type from dba_objects where object_name='TEST';
 
 OBJECT_ID DATA_OBJECT_ID OBJECT_TYPE
---------- -------------- -------------------
     74441          75224 TABLE

当move表或truncate表等改变段的操作发生时,会变化。


如需转载,请注明出处:http://blog.csdn.net/nanaranran/article/details/21451933
0 0