ITPub博客

首页 > Linux操作系统 > Linux操作系统 > object_id and data_object_id in dba_objects

object_id and data_object_id in dba_objects

原创 Linux操作系统 作者:tengrid 时间:2009-05-18 19:17:42 0 删除 编辑

对于dba_objects,有几个值得注意的地方
1, object_id与data_object_id是有区别的,前者指dictionary object number;后者指dictionary object number of the segment

2, 对普通表及索引来说,object_id与data_object_id是一致的.当object不占用存储空间时,         data_object_id为null,如分区表(不是指分区),view,sequence,synonym等等

3, 分区表中的分区有不同的object_id和data_object_id; 分区表无data_object_id

4, 除了上面描述的以外,当下述情况发生时,object_id与data_object_id会有区别
  [具体见后面引用自yong huang的文章]

5, object_id,data_object_id的分配规则
  [具体见后面引用自yong huang的文章]

6, object_id,data_object_id各自的适用场合
  [具体见后面引用自yong huang的文章]

7, 注意dbms_rowid包中的object_id是指segment object id即dba_objects.data_object_id

 



注意dba_objects.object_id与dba_objects.data_object_id的区别
OBJECT_ID :Dictionary object number of the object

DATA_OBJECT_ID :Dictionary object number of the segment that contains
the object

Note: OBJECT_ID and DATA_OBJECT_ID display data
dictionary metadata. Do not confuse these numbers with
the unique 16-byte object identifier (object ID) that the
Oracle Database assigns to row objects in object tables in
the system.

##dba_objects.data_object_id 为null的object_type
#其中''TABLE','INDEX' 是partitioned table,partitioned index,因为segment存储在单独的分区中
SQL> set head off
SQL> set linesize 1000
SQL> set pagesize 1000
SQL>select distinct object_type from dba_objects where object_name is not null and DATA_OBJECT_ID is null;
CONSUMER GROUP
SEQUENCE
QUEUE
SCHEDULE
RULE
PROCEDURE
OPERATOR
WINDOW
PACKAGE
PACKAGE BODY
LIBRARY
RULE SET
PROGRAM
TYPE BODY
CONTEXT
TRIGGER
JOB CLASS
UNDEFINED
DIRECTORY
SYNONYM
TABLE
VIEW
FUNCTION
INDEX
WINDOW GROUP
TYPE
RESOURCE PLAN
EVALUATION CONTEXT
JOB

29 rows selected.

SQL> col object_name for a30
SQL> col subobject_name for a30
SQL> select object_id,data_object_id,object_name,subobject_name,object_type from dba_objects where object_id in (9820,9819);
      9819          24127 BOSSSELLEROLCOMMDETAIL         BOSSSELLEROLCOMMDETAIL_P24     TABLE PARTITION
      9820          28807 BOSSSELLEROLCOMMDETAIL         BOSSSELLEROLCOMMDETAIL_P25     TABLE PARTITION

#可见,分区表中的分区有单独的object_id及data_object_id



the following is very important when you use relative knowleges, be sure reference it !
http://rootshell.be/~yong321/oranotes/DataObjectId.txt
-----------------quote begin---------------------------------------------------

xxx_objects.data_object_id differs from object_id after
 truncate table (or alter table truncate partition), unless table/partition is empty
 alter table move (or alter table move partition)
 alter index rebuild (or alter index rebuild partition)
 alter table exchange partition
Alter table move even without TABLESPACE clause (or specifying the same tablespace) physically moves the table, based on dba_extents.file_id and block_id. But truncate table doesn't move the table. Think of data_object_id as an ID for the segment. If xxx_objects.data_object_id is null, it must be an object not associated with a physical segment, such as view, sequence, domain index, partitioned table/index whose segments are in the individual partitions.

* How much does data_object_id increment?

Except in case of partition-table exchange, data_object_id is brought up to

select max(data_object_id)+1 from dba_objects

If you just create a new table, it will be assigned an object_id and data_object_id of

select greatest(max(object_id), max(data_object_id)) from dba_objects

If the table has an index, truncate will increment data_object_id by 2 because its index takes the number 1 below it. If there's no index, truncate should increment data_object_id by 1 only.

Exchange of a partition with a table swaps their data_object_id's. So don't assume data_object_id's always go up.

If the table or its partition is already empty, truncating it does not increment data_object_id. (Rebuilding an empty index or its partition still increments data_object_id.)

* When to use which ID?

You use data_object_id in dbms_rowid.rowid_object, v$bh and x$bh, but object_id in most other cases, such as v$locked_object. v$segstat, v$segment_statistics and v$logmnr_contents have both.


-----------------quote end --------------------------------------------

--tengird 07/01/04 pm

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/94384/viewspace-600300/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2009-05-18

  • 博文量
    136
  • 访问量
    381232