DBA_OBJECTS中object_id and data_object_id 区别


object_id and data_object_id 区别
==========================



      其实object_id和data_object_id同样是表示数据库对象的一个唯一标志,但是object_id表示的是逻辑id,data_object_id表示的是物理id。
      如果一些object没有物理属性的话那它就不存在data_object_id,例如procedure,function,package,data type,db link,mv定义,view定义,临时表,分区表定义等等这些object都是没有对应着某个segment,因此它们的data_object_id都为空。 
当表刚创建的时候它的object_id和data_object_id都是相等的,但是如果表经过move或truncate后那么data_object_id将会有变化。

一个表的data object number大于object number,说明在表上曾经发生过truncate或者move操作。
对于truncate操作而言,truncate后其data object number就是在原先的data object number上加1,如果表上有索引就是加2。
-------------------------------------------------------------------------------------------------------------------------------------------
OBJECT_ID  NUMBER | NOT NULL      Dictionary object number of the object
DATA_OBJECT_ID  NUMBER              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 Oracle Database assigns to row objects in object tables in the system.

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


下面做一个测试:

SQL> create table test1 as select * from emp ;
Table created.
SQL> 

SQL> select object_id,data_object_id from dba_objects where object_name='TEST1' ;
 OBJECT_ID DATA_OBJECT_ID
---------- --------------
     52939          52939
/新建的表object_id和data_object_id是一样的

SQL> truncate table test1 ;
Table truncated.

SQL> 
SQL> select object_id,data_object_id from dba_objects where object_name='TEST1'
 OBJECT_ID DATA_OBJECT_ID
---------- --------------
     52939          52940
/ truncate table 后object_id不变,data_object_id加1

SQL> 
SQL> insert into test1 select * from emp ;
14 rows created.

SQL> 
SQL> create index ind_test1 on test1(empno) ;
Index created.

SQL> 
SQL> select object_name,object_type,object_id,data_object_id from dba_objects where object_name in ('TEST1','IND_TEST1') ;
OBJECT_NAME          OBJECT_TYPE          OBJECT_ID DATA_OBJECT_ID
-------------------- ------------------- ---------- --------------
IND_TEST1            INDEX                    52941          52941
TEST1                TABLE                    52939          52940
SQL> 
/新建的索引对象object_id和data_object_id是一样的

SQL> alter table test1 move ;
Table altered.

SQL> 
SQL> select object_name,object_type,object_id,data_object_id from dba_objects where object_name in ('TEST1','IND_TEST1') ;
OBJECT_NAME          OBJECT_TYPE          OBJECT_ID DATA_OBJECT_ID
-------------------- ------------------- ---------- --------------
IND_TEST1            INDEX                    52941          52941
TEST1                TABLE                    52939          52942
///表上有索引再做move table 操作,表的data_object_id加2
SQL> 
SQL> truncate table test1 ;
Table truncated.

SQL>
SQL> select object_name,object_type,object_id,data_object_id from dba_objects where object_name in ('TEST1','IND_TEST1') ;
OBJECT_NAME          OBJECT_TYPE          OBJECT_ID DATA_OBJECT_ID
-------------------- ------------------- ---------- --------------
IND_TEST1            INDEX                    52941          52943
TEST1                TABLE                    52939          52944
表上有索引后再truncate table ,表和索引的data_object_id加2 
SQL> 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一、DBA最常用的数据字典 dba_data_files:通常用来查询关于数据库文件的信息 dba_db_links:包括数据库的所有数据库链路,也就是databaselinks。 dba_extents:数据库所有分区的信息 dba_free_space:所有表空间的自由分区 dba_indexs:关于数据库所有索引的描述 dba_ind_columns:在所有表及聚集上压缩索引的列 dba_objects:数据库所有的对象 dba_rollback_segs:回滚段的描述 dba_segments:所有数据库段分段的存储空间 dba_synonyms:关于同义词的信息查询 dba_tables:数据库所有数据表的描述 dba_tabespaces:关于表空间的信息 dba_tab_columns:所有表描述、视图以及聚集的列 dba_tab_grants/privs:对象所授予的权限 dba_ts_quotas:所有用户表空间限额 dba_users:关于数据的所有用户的信息 dba_views:数据库所有视图的文本 二、DBA最常用的动态性能视图 v$datafile:数据库使用的数据文件信息 v$librarycache:共享池SQL语句的管理信息 v$lock:通过访问数据库会话,设置对象锁的所有信息 v$log:从控制文件提取有关重做日志组的信息 v$logfile有关实例重置日志组文件名及其位置的信息 v$parameter:初始化参数文件所有项的 v$process:当前进程的信息 v$rollname:回滚段信息 v$rollstat:联机回滚段统计信息 v$rowcache:内存数据字典活动/性能信息 v$session:有关会话的信息 v$sesstat:在v$session报告当前会话的统计信息 v$sqlarea:共享池使用当前光标的统计信息,光标是一块内存区域,有Oracle处理SQL语句时打开。 v$statname:在v$sesstat报告各个统计的含义 v$sysstat:基于当前操作会话进行的系统统计 v$waitstat:出现一个以上会话访问数据库的数据时的详细情况。当有一个以上的会话访问同一信息时,可出现等待情况。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值