天天看點

oracle之資料字典概述

oracle之資料字典概述

資料字典(data dictionary)是 Oracle 資料庫的一個重要組成部分,這是一組用于記錄資料庫資訊的隻讀(read-only)表。

資料字典中包 含: 

資料庫中所有方案對象(schema object)的定義(包括表,視圖,索引,簇,同義詞,序列,過程,函數,包,觸發器等等) 

資料庫為一個方案對象配置設定了多少空間,以及該對象目前使用了多少空間 

列的預設值 

完整性限制(integrity constraint)資訊 

資料庫使用者名 

每個使用者被授予(grant)的權限(privilege)與角色(role) 

監控(audit)資訊,例如哪個使用者對某個方案對象進行了通路或更新操作 

資料庫中的其他概要資訊 

資料字典由以下兩種結構組成:

基表:用于存儲相關的資料庫資訊。隻有 Oracle 才能讀寫這些表。使用者很少直接通路她們,因為這些表是規範化的

使用者通路視圖:對資料字典基表記憶體儲的資料進行彙總與展示。這些視圖利用連接配接(join)及 WHERE 子句簡化基表中的資料,将其解碼(decode)為使用者可了解的資訊。

資料字典有三個主要用途: 

Oracle 利用資料字典來擷取關于使用者,方案對象,及存儲結構(storage structure)的資訊。 

每當資料庫中執行了 DDL 語句後,Oracle 将對資料字典進行修改。 

所有 Oracle 使用者都可以使用資料字典來擷取關于資料庫的資訊。

資料字典的同義詞:Oracle 為許多資料字典視圖建立了公共同義詞(public synonym),以便使用者能夠友善地對其進行通路。

資料字典緩存:由于 Oracle 在資料庫運作中需要不斷地通路資料字典來驗證使用者權限及方案對象狀态,大量的資料字典資訊将被緩存到 SGA 的資料字典緩存(dictionary cache)内。

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

字首                  覆寫範圍 

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

USER              使用者視圖(使用者方案(schema)内的對象)

ALL               擴充的使用者視圖(使用者可通路的對象)

DBA               DBA 視圖 (所有使用者方案内的對象)

DBA型的資料字典:以 DBA 為字首的視圖能夠展現整個資料庫的全部内容。不應在這些視圖上建立同義詞,因為以 DBA 為字首的視圖隻應由管理者查詢。是以在查詢 DBA 視圖時,管理者必須在視圖名之前加上其擁有者的字首 SYS

DUAL表:名為 DUAL 的表是資料字典内的一個小表,Oracle 及使用者程式可以使用此表來獲得一個确定的值。此表隻有一列名為 DUMMY;隻有一行資料,值為 X。

在資料庫運作過程中,Oracle 将維護一組虛拟表(virtual table)用于記錄資料庫的目前狀态。這組表被稱為動态性能表(dynamic performance table)。

動态性能表并不是真正的表,大多數使用者不應通路其中的資訊。但是資料庫管理者可以對其進行查詢,或在其上建立視圖并将通路權限授予其他使用者。這些視圖有時被稱為固定視圖(fixed view),因為資料庫管理者不能将其修改或移除。

動态性能表由 SYS 使用者所擁有;她們的名字都以 V_$ 開頭。這些表上建立有視圖,而視圖上建立有公共同義詞。這些公共同義詞的名字都以 V$ 開頭。