Oracle 中 Object_iD 和 Data_Object_ID 的区别

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已经发生变化了。



About Me


.............................................................................................................................................

● 本文整理自网络,若有侵权请联系小麦苗删除

● 本文在itpub(http://blog.itpub.net/26736162/abstract/1/)、博客园(http://www.cnblogs.com/lhrbest)和个人微信公众号(xiaomaimiaolhr)上有同步更新

● 本文itpub地址:http://blog.itpub.net/26736162/abstract/1/

● 本文博客园地址:http://www.cnblogs.com/lhrbest

● 本文pdf版、个人简介及小麦苗云盘地址:http://blog.itpub.net/26736162/viewspace-1624453/

● 数据库笔试面试题库及解答:http://blog.itpub.net/26736162/viewspace-2134706/

● DBA宝典今日头条号地址:http://www.toutiao.com/c/user/6401772890/#mid=1564638659405826

.............................................................................................................................................

● QQ群号:230161599(满)、618766405

● 微信群:可加我微信,我拉大家进群,非诚勿扰

● 联系我请加QQ好友(646634621),注明添加缘由

● 于 2017-09-01 09:00 ~ 2017-09-30 22:00 在魔都完成

● 文章内容来源于小麦苗的学习笔记,部分整理自网络,若有侵权或不当之处还请谅解

● 版权所有,欢迎分享本文,转载请保留出处

.............................................................................................................................................

● 小麦苗的微店:https://weidian.com/s/793741433?wfr=c&ifr=shopdetail

● 小麦苗出版的数据库类丛书:http://blog.itpub.net/26736162/viewspace-2142121/

.............................................................................................................................................

使用微信客户端扫描下面的二维码来关注小麦苗的微信公众号(xiaomaimiaolhr)及QQ群(DBA宝典),学习最实用的数据库技术。

   小麦苗的微信公众号      小麦苗的DBA宝典QQ群1     小麦苗的DBA宝典QQ群2        小麦苗的微店

.............................................................................................................................................

时间: 2024-07-29 17:12:04

Oracle 中 Object_iD 和 Data_Object_ID 的区别的相关文章

浅析Oracle中char和varchar2的区别

以下是对Oracle中char和varchar2的区别进行了分析介绍,需要的朋友可以过来参考下   char是定长的 char(10)   varchar2(10)  同样存 a ,char占用了10个字符,varchar2 只占用了 一个字符(一个中文占两个字符,英文占一个). 但是char的查询速度要比varchar2快.varchar2,Oracle还要进行语法分析,这个字段是多少位的,所以慢一些.相对于上千万的记录来说. 一般的项目 没什么区别,随便用.

在Oracle中session和process的区别(转)

对应元数据表 v$resource_limit. 相互关系 sessions=1.1 * processes + 5 ,至于开多少个进程和你的用户并发数有关. 如果修改要修改数据库初始化参数,processes 和session 在Oracle中session和process的区别 问:在Oracle中session和process的区别是什么?答:一.一个process可以有0个.1个或者多个session,一个 session也可以存在若干个process中,并行同样是一个session对应

【面试虐菜】—— Oracle中CHAR、VARCHAR的区别

1.CHAR. CHAR存储定长数据很方便,CHAR字段上的索引效率级高,比如定义char(10),那么不论你存储的数据是否达到了10个字节,都要占去10个字节的空间,不足的自动用空格填充,所以在读取的时候可能要多次用到trim(). 2.VARCHAR. 存储变长数据,但存储效率没有CHAR高.如果一个字段可能的值是不固定长度的,我们只知道它不可能超过10个字符,把它定义为 VARCHAR(10)是最合算的.VARCHAR类型的实际长度是它的值的实际长度+1.为什么"+1"呢?这一个

Oracle中会话与事务的区别

一个会话可以启动多个事务,会话是session,指一次连接. 事务是指一个操作单元,要么成功,要么失败,没有中间状态. 会话中可以完成多个事务. 例如: 会话好比,在应用程序中连接数据库要执行连接,然后会关闭,这算一次会话. 事务呢,就好比在打开会话后要执行程序中的某一个或多个对数据库进行的操作. 事物的最好例子就是转账,从一个账户赚钱到另一个账户,两张表的数据修改,要么全成功,要门全变回原样. 会话看 v$session 事务看 v$transaction 这两张视图通过 v$session.

Oracle中sys和system的区别小结_oracle

1. SYS用户具有DBA权限,并且拥有SYS模式,只能通过SYSDBA登陆数据库.是Oracle数据库中权限最高的帐号 SYSTEM具有DBA权限.但没有SYSDBA权限.平常一般用该帐号管理数据库就可以了. 2. (1)sys -- sysdba system --sysoper (2)startup/shutdown/dba管理两个都能做 (3)sys拥有数据字典(dictionay),或者说dictionay属于sys schema (4)sysdba比sysoper多了一个create

浅析Oracle中char和varchar2的区别_oracle

char是定长的 char(10)   varchar2(10)  同样存 a ,char占用了10个字符,varchar2 只占用了 一个字符(一个中文占两个字符,英文占一个). 但是char的查询速度要比varchar2快.varchar2,Oracle还要进行语法分析,这个字段是多少位的,所以慢一些.相对于上千万的记录来说.一般的项目 没什么区别,随便用.

ORACLE中nvarchar2和varchar2两种数据类型的区别

Oracle中nvarchar2和varchar2的区别: 1.NVARCHAR2中存储中文字时,一个中文字当一个字符来处理 NVARCHAR2(10)是可以存进去10个汉字的,如果用来存英文也只能存10个字符. 2.而VARCHAR2中一个中文字当两个字符来处理 VARCHAR2(10)的话,则只能存进5个汉字,英文则可以存10个 Oracle中nvarchar2和varchar2的共同点: 不定长存储,当存储信息长度小于指定的长度,那么就已实际存入的长度为准这一点不像varchar这种定长存

oracle中union和union all的区别

经常写sql的同学可能会用到union和union all这两个关键词, 可能你知道使用它们可以将两个查询的结果集进行合并, 那么二者有什么区别呢? 下面我们就简单的分析下. [ 比较 ] union: 对两个结果集进行并集操作, 不包括重复行,相当于distinct, 同时进行默认规则的排序; union all: 对两个结果集进行并集操作, 包括重复行, 即所有的结果全部显示, 不管是不是重复; 下面我们举一个简单的例子来证明上面的结论: 1. 准备数据: drop table studen

Oracle中唯一约束和唯一索引的区别

在使用TOAD来操作Oracle数据库时,会注意到创建约束时有Primary Key.Check.Unique和Foreign Key四种类型的约束,这与SQL Server中的约束没有什么区别,这里的Check约束除了用于一般的Check约束外,在Oracle中也用于非空约束的实现.也就是说如果一个字段不允许为空,则系统将会创建一个系统的Check约束,该约束定了某字段不能为空. 除了约束,还有另外一个概念是索引,在TOAD中创建索引的界面如下: 我们可以注意到在唯一性组中有三个选项:不唯一.