Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1209379
  • 博文数量: 398
  • 博客积分: 10110
  • 博客等级: 上将
  • 技术积分: 4055
  • 用 户 组: 普通用户
  • 注册时间: 2007-12-23 20:01
个人简介

新博客http://www.cnblogs.com/zhjh256 欢迎访问

文章分类

全部博文(398)

文章存档

2012年(1)

2011年(41)

2010年(16)

2009年(98)

2008年(142)

2007年(100)

我的朋友

分类: Oracle

2008-01-06 21:46:48

DBA_OBJECTS中有两个列:OBJECT_IDDATA_OBJECT_ID.

       OBJECT_ID引用逻辑对象,如包,视图定义,表定义,简而言之,它们不是由组成分区的块组成。除了它们的定义消耗DD表的空间外,这些对象物理上本身不存在。

       DATA_OBJECT_ID引用一个段,可能是表,索引,表/索引分区等等。由至少一个分区组成,如果多个表共享相同的段,DATA_OBJECT_ID也将共享。

       当一个段执行某些DDL如(ALTER TABLE MOVE ... or TRUNCATE TABLE ...)时,DATA_OBJECT_ID将会发生改变因为将创建一个新的段。因为逻辑上段是没有变化的,因此OBJECT_ID保持不变。

       因此在处理对象标识符时需要小心DATA_OBJECT_IDOBJECT_ID

       因此,作为警告,当需要提供OBJECT ID时,一定要确定哪个OBJECT ID

SQL> SELECT OBJECT_ID,DATA_OBJECT_ID FROM DBA_OBJECTS WHERE OBJECT_NAME='TEST_CARD';

 

 OBJECT_ID DATA_OBJECT_ID

---------- --------------

     50188          50188

 

SQL> TRUNCATE TABLE TEST_CARD;

 

Table truncated

 

SQL> SELECT OBJECT_ID,DATA_OBJECT_ID FROM DBA_OBJECTS WHERE OBJECT_NAME='TEST_CARD';

 

 OBJECT_ID DATA_OBJECT_ID

---------- --------------

     50188          50192

阅读(1603) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~