oracle 的數(shù)據(jù)字典
數(shù)據(jù)字典是整個數(shù)據(jù)庫的核心,它描述了數(shù)據(jù)庫自身的信息以及數(shù)據(jù)庫里記錄對象的信息。它由兩部分組成:數(shù)據(jù)字典基本表和數(shù)據(jù)字典視圖。數(shù)據(jù)字典基本表與普通用戶創(chuàng)建的表沒什么區(qū)別,只不過其中存放了數(shù)據(jù)字典的數(shù)據(jù)。其所有者是用戶sys,存放在system表空間里。用戶只能讀取數(shù)據(jù)字典表,而不能用dml語句去修改這些數(shù)據(jù)字典表,盡管它們與普通表一樣也是可以被dml語句修改的。因為一方面,數(shù)據(jù)字典基本表里的數(shù)據(jù)很隱諱,沒有文檔記錄其中包含數(shù)據(jù)的含義。另一方面易造成表信息不一致,導致數(shù)據(jù)庫崩潰。一旦數(shù)據(jù)字典基本表的數(shù)據(jù)發(fā)生損壞,則數(shù)據(jù)庫就必須從備份中進行恢復了。
由于基本表之間的關(guān)系過于復雜,同時數(shù)據(jù)含義難懂,不便于查詢。因為Oracle提供了數(shù)據(jù)字典視圖來簡化數(shù)據(jù)字典。這些視圖隱藏了基本表之間的復雜關(guān)系,并為隱諱的列名提供了含義清楚的列名,使得我們從視圖的列名就能知道該列的含義。
數(shù)據(jù)字典視圖分為三個層面:DBA、ALL以及USER。所謂DBA層面,表示以DBA_開頭的視圖,其中包含了整個數(shù)據(jù)庫范圍的數(shù)據(jù)。比如dba_tables視圖就包含了數(shù)據(jù)庫里所有表的信息。用戶需要一下的授權(quán)才能訪問DBA層面的視圖;ALL層面表示以ALL_開頭的視圖,其中包含了當前登錄用戶有權(quán)看到的數(shù)據(jù)。它是DBA_視圖的子集。比如ALL_TABLES記錄了當前登錄用戶有權(quán)訪問的所有表的信息;USER層面表示以USER_開頭的視圖,其中包含了當前登錄用戶所擁有的所有表的信息。它是ALL_視圖的子集。
例:dba_tables 記錄了所有表的信息;
dba_tab_columns 存放了所有表的所有列的信息
我們不需要一一記住,但是有一個視圖,我們必須知道,那就是dictionary視圖。因為該視圖記錄了所有的數(shù)據(jù)字典視圖的名稱。所以當我們需要查找某個數(shù)據(jù)字典信息而又不知道這個信息記錄在哪個視圖里的時候,可以到dictionary視圖里找。該視圖還有個同名詞:dict;
oraclej里數(shù)據(jù)字典視圖的組織方式是:先基于數(shù)據(jù)字典基本表創(chuàng)建視圖,然后為視圖創(chuàng)建一個同名的同名詞,并將該同名詞賦給了PUBLIC,從而使得所有用戶可以通過同名詞來查看數(shù)據(jù)字典的信息。
posted on 2008-08-25 21:45 紅石 閱讀(216) 評論(0) 編輯 收藏 所屬分類: 數(shù)據(jù)庫