標籤:建立 關於 關係 建立 監視 命名 控制 儲存 varchar
資料字典
一、什麼是資料字典
資料字典是 Oracle儲存所有執行個體資訊的表和視圖的集合。Oracle進程會在 SYS模式中
維護這些表和視圖,也就是說資料字典的所有者為 sys使用者,資料存放在 SYSTEM資料表空間中。
資料字典描述了實際資料是如何組織的,如一個表的建立者資訊、建立時間資訊、所屬表空
間資訊、使用者存取權限資訊等。對它們可以像處理其他資料庫表或視圖一樣進行查詢,但不
能進行任何修改。
Oracle資料庫字典通常是在建立和安裝資料庫時被建立的,Oracle資料字典是 Oracle
資料庫系統工作的基礎,沒有資料字典的支援,Oracle資料庫系統就不能進行任何工作。
經驗:
當使用者在對資料庫中的資料進行操作時遇到困難就可以訪問資料字典來查
看 詳 細 的 信 息 。 例 如 不 清 楚 分 區 表 的 分 區 情 況 , 則 可 以 通 過 查 詢
user_tab_partitions視圖獲得表的分區情況。
二、資料字典的構成
資料字典分為資料字典表和資料字典視圖。資料字典中的表是不可以直接被訪問,但是
可以訪問資料字典中的視圖。資料字典視圖分為 2類:待用資料字典(靜態效能檢視) 和 動
態資料字典(動態效能檢視)。
|→→→ 資料字典表
資料字典 →→→ 資料字典視圖→→→待用資料字典:三類,分別由三個首碼夠成:user_*、all_*、 dba_*
|→→→動態資料字典
1.資料字典表
資料字典中的表是不可以直接被訪問,表中的資料是 Oracle系統存放的系統資料,而
普通表存放的是使用者的資料。為了方便的區別這些表,這些表的名字都是用"$"結尾,這些
表屬於 SYS使用者。
為了便於使用者對資料字典表的查詢, Oracle對這些資料字典都分別建立了使用者視圖,
這樣即容易記住,還隱藏了資料字典表表之間的關係,Oracle針對這些對象的範圍,分別
把視圖命名為 DBA_*, ALL_*和 USER_*。
2. 待用資料字典
待用資料字典中的視圖分為三類,它們分別由三個首碼夠成:user_*、 all_*、 dba_*。
user_*:該視圖儲存了關於目前使用者所擁有的對象的資訊(即所有在該使用者模式下的對
象)。
all_*:該視圖儲存了目前使用者能夠訪問的對象的資訊, 而不是目前使用者擁有的對象(與
user_*相比,all_* 並不需要擁有該對象,只需要具有訪問該對象的許可權即可)。
dba_*:該視圖儲存了資料庫中所有對象的資訊(前提是目前使用者具有訪問這些資料庫
的許可權,一般來說必須具有管理員權限)。
樣本
(1)user_tables:主要描述目前使用者擁有的所有表的資訊,主要包括表名、資料表空間名、
簇名等。通過此視圖可以清楚地瞭解目前使用者可以操作的表有哪些。
SQL>SELECT * FROM user_tables;
(2)user_indexes:查詢該使用者擁有哪些索引。
SQL>SELECT index_name FROM user_indexes;
(3)user_views:查詢該使用者擁有哪些視圖。
SQL>SELECT view_name FROM user_views;
(4)user_objects:查詢該使用者擁有哪些資料庫物件,對象包括表、視圖、預存程序、
觸發器、包、索引、序列、Java檔案等。
SQL>SELECT object_name FROM user_objects;
(5)user_users:主要描述目前使用者的資訊,主要包括目前使用者名、賬戶 id、賬戶狀態、
資料表空間名、建立時間等。
SQL>SELECT * FROM user_users;
(6)all_objects:查詢某一使用者下的所有表、過程、函數等資訊。
SQL>SELECT owner, object_name,object_type FROM all_objects;
查看資料字典:我們通過 dictionary 字典來查看所有的視圖和其描述,該表只有 2個
欄位:表名和描述。
SQL> DESC dictionary
名稱 是否為空白? 類型
---------------------------- -------------------------
TABLE_NAME VARCHAR2(30)
COMMENTS VARCHAR2(4000)
--查詢目前使用者所擁有的對象
SQL> SELECT table_name FROM dictionary WHERE table_name LIKE ‘USER%‘;
經驗:
使用資料字典時不需要記住所有的資料檢視。只需按照如下步驟操作:
1.瞭解資料字典的結構,比如大概分成三類,常用的是 user_*。
SQL>SELECT table_name FROM DICTIONARY WHERE table_name LIKE
‘USER%‘;
2.根據查詢結構找到需要的資料字典視圖。例如想知道表就可以查詢
“USER_TABLE”;想知道視圖就可以查詢“USER_VIEW”;想知道預存程序就
可 以 查 詢 “ USER_PROCEDURE”; 想 知 道 表 中 的 列 情 況 就 可 以 查 詢
“USER_TAB_COLUMNS”。
3. 動態資料字典
除了待用資料字典中三類別檢視,其他的字典視圖中主要的是 V$視圖,之所以這樣叫是
因為他們都是以 V$或 GV$開頭的。這些視圖會不斷的進行更新,從而提供了關於記憶體和磁碟
的運行情況,所以我們只能對其進行唯讀訪問而不能修改它們。 動態效能表用於記錄
當前資料庫的活動,只存於資料庫運行期間,實際的資訊都取自記憶體和控制檔案。 DBA可
以使用動態視圖來監視和調節資料。
Oracle資料字典