Oracle 中 Object_iD 和 Data_Object_ID 的区别


 




 转译自Aman Sharma的blog:  
http://blog.aristadba.com/?tag=data_object_id  


是否有1个东西叫  Data_object_id  , 如果有的话,它是用来做什么的呢? 正巧,在  OTN论坛  也有人问这个问题。我当时并不清楚  Data_object_id   是什么,但它的确在视图  ALL_OBJECTS  里存在。 Hmmm..有趣,它到底是什么。  ASK Tom  最现在那个论坛里回答了, 根据TOM所说:  

object_id   是数据库里的对象的唯一标识--数据库中每1个对象都会被分配1个唯一的好号码作为区别的标志。   
同样地,每1个数据库object都会link住1个  segment  (数据段), 而  Data_object_id  就是分配给那个对应的  segment  .  
(译者住:上面那句不保证正确性,因为1个数据库对象是可以对应不同表空间内多个  segment  的)  
当那个  segment  发生了任何物理变动,都会令这个数值改变。 这两个ID的值在一开始是相等的,但是当对应  segment  
发生变动时,   Data_object_id  会改变。 这两个ID都是Oracle用来表示存放在数据字典的元数据(数据目录)。  

看1个例子:  
首先查看数据库版本  


创建1张表  


查看该表的  object_id   和   Data_object_id  ,   
注:表  tab$   仲   OBJ#   存放的就是对象的  object_id  , 而   dataobj#  存放的就是对象的  data_object_id  .  


截断这张表  


再查看该表的  object_id   和   Data_object_id  , ..(无变化,作者原文是变化了的,可能由于这张表原来就是空表的关系)  

   
执行  alter table   xxx   move  , 这个语句一般用来移动表到另1个表空间(  move   后面要加表空间参数),或者用来整理碎片(  消除行移植和行链接)  , 但是会导致索引失效,所以要重建索引。  
alter index xxx rebuild online  


再查看该表的  object_id   和   Data_object_id  , 见到Data_obj_id已经发生变化了。  



 


©著作权归作者所有:来自51CTO博客作者小麦苗DB宝的原创作品,如需转载,请注明出处,否则将追究法律责任

更多相关文章

  1. ORA-19566 exceeded limit of 0 corrupt blocks数据坏块处理
  2. Elasticsearch 最佳运维实践 - 总结(一)
  3. 利用 mk-table-checksum 监测 MySQL主从数据一致性操作记录
  4. 【JS基础入门】JavaScript原生Ajax请求与响应处理方式及JSON数据
  5. 【微信公众号】【深入解析】DRM和read-mostly locking
  6. 厉害了,股票K线图还能这么画!
  7. 【MOS】如何利用RMAN可传输表空间迁移数据库到不同字节序的平台(
  8. 我所理解的java垃圾回收的自适应技术
  9. 数据可视化?不如用最经典的工具画最酷炫的图

随机推荐

  1. [Android] Android使用序列化接口Parcela
  2. Android生成Market分享链接
  3. Android(安卓)进阶学习:事件分发机制完全
  4. Android(安卓)进阶之刁钻问题汇总
  5. Android(安卓)驱动跟系统开发 1. 一个简
  6. Android(安卓)Menu的应用
  7. Android(安卓)ConstraintLayout 使用
  8. Android性能监测小工具——安测试
  9. Android(安卓)中的 Service 全面总结
  10. android EditText限制输入长度