转译:Oracle 中 Object_iD 和 Data_Object_ID 的区别
生活随笔
收集整理的這篇文章主要介紹了
转译:Oracle 中 Object_iD 和 Data_Object_ID 的区别
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
轉譯自Aman Sharma的blog:
http://blog.aristadba.com/?tag=data_object_id
事實上還有很多關于Oracle數據庫的知識我不了解,特別是一些輔助性的知識點。幾乎每一天,都會有一些新的東西出現在我面前,這讓我意識到我所知道的是多么少?? 昨天和今天也不例外,我知道了兩個以前我并不了解的新東西。現在我把其中1項分享出來,遲d我會分享另1個。
幾天前有人問我1個問題: 是否有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已經發生變化了。
嗯,這就是有一樣我學到的東西,我很肯定除了我之外,所有人都應該了解它,但之前我的確不清楚這個知識。老實說,我居然不清楚1件微小而簡單的事情,實在令我受刺激了。再次令我深心一個人無論什么時候都要“stay hungry, stay foolish“(保持饑餓感,不自滿)(斯提芬.佐治 名言),還有十分感謝Tom Kyte,他一直在幫我們更深地了解oracle 數據系統。
http://blog.aristadba.com/?tag=data_object_id
事實上還有很多關于Oracle數據庫的知識我不了解,特別是一些輔助性的知識點。幾乎每一天,都會有一些新的東西出現在我面前,這讓我意識到我所知道的是多么少?? 昨天和今天也不例外,我知道了兩個以前我并不了解的新東西。現在我把其中1項分享出來,遲d我會分享另1個。
幾天前有人問我1個問題: 是否有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已經發生變化了。
嗯,這就是有一樣我學到的東西,我很肯定除了我之外,所有人都應該了解它,但之前我的確不清楚這個知識。老實說,我居然不清楚1件微小而簡單的事情,實在令我受刺激了。再次令我深心一個人無論什么時候都要“stay hungry, stay foolish“(保持饑餓感,不自滿)(斯提芬.佐治 名言),還有十分感謝Tom Kyte,他一直在幫我們更深地了解oracle 數據系統。
總結
以上是生活随笔為你收集整理的转译:Oracle 中 Object_iD 和 Data_Object_ID 的区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Oracle簇表介绍 (clustere
- 下一篇: [转]讲解安装Ubuntu nfs配置系