標籤:
一、Oracle資料字典
資料字典是Oracle存放有關資料庫資訊的地方,其用途是用來描述資料的。比如一個表的建立者資訊,建立時間資訊,所屬資料表空間資訊,使用者存取權限資訊等。當使用者在對資料庫中的資料進行操作時遇到困難就可以訪問資料字典來查看詳細的資訊。 Oracle中的資料字典有靜態和動態之分。待用資料字典主要是在使用者訪問資料字典時不會發生改變的,但動態資料字典是依賴資料庫啟動並執行效能的,反映資料庫啟動並執行一些內在資訊,所以在訪問這類資料字典時往往不是一成不變的。以下分別就這兩類資料字典來論述。
1. 待用資料字典 這類資料字典主要是由表和視圖組成,應該注意的是,資料字典中的表是不能直接被訪問的,但是可以訪問資料字典中的視圖。待用資料字典中的視圖分為三類,它們分別由三個首碼夠成:user_*、 all_*、 dba_*。
user_* 該視圖儲存了關於目前使用者所擁有的對象的資訊。(即所有在該使用者模式下的對象)
all_* 該試圖儲存了目前使用者能夠訪問的對象的資訊。(與user_*相比,all_* 並不需要擁有該對象,只需要具有訪問該對象的許可權即可)
dba_* 該視圖儲存了資料庫中所有對象的資訊。(前提是目前使用者具有訪問這些資料庫的許可權,一般來說必須具有管理員權限) 從上面的描述可以看出,三者之間儲存的資料肯定會有重疊,其實它們除了存取範圍的不同以外(因為許可權不一樣,所以訪問對象的範圍不一樣),其他均具有一致性。具體來說,由於資料字典視圖是由SYS(系統使用者)所擁有的,所以在卻省情況下,只有SYS和擁有DBA系統許可權的使用者可以看到所有的視圖。沒有DBA許可權的使用者只能看到user_*和all_*視。如果沒有被授予相關的SELECT許可權的話,他們是不能看到 dba_*視圖的。
由於三者具有相似性,下面以user_為例介紹幾個常用的靜態視圖:
user_users視圖
主要描述目前使用者的資訊,主要包括目前使用者名、帳戶id、帳戶狀態、資料表空間名、建立時間等。例如執行下列命令即可返回這些資訊。
select * from user_users
user_tables視圖
主要描述目前使用者擁有的所有表的資訊,主要包括表名、資料表空間名、簇名等。通過此視圖可以清楚瞭解目前使用者可以操作的表有哪些。執行命令為:select * from user_tables
user_objects視圖
主要描述目前使用者擁有的所有對象的資訊,對象包括表、視圖、預存程序、觸發器、包、索引、序列等。該視圖比user_tables視圖更加全面。例如, 需要擷取一個名為“package1”的物件類型和其狀態的資訊,可以執行下面命令:
select object_type,status from user_objects where object_name=upper(‘package1’);
注意:upper的使用,資料字典裡的所有對象均為大寫形式,而PL/SQL裡不是大小寫敏感的,所以在實際操作中一定要注意大小寫匹配。
user_tab_privs視圖 ,該視圖主要是儲存目前使用者下對所有表的許可權資訊。比如,為了瞭解目前使用者對table1的許可權資訊,可以執行如下命令:
select * from user_tab_privs where table_name=upper(‘table1‘)
瞭解了目前使用者對該表的許可權之後就可以清楚的知道,哪些操作可以執行,哪些操作不能執行。
前面的視圖均為user_開頭的,其實all_開頭的也完全是一樣的,只是列出來的資訊是目前使用者可以訪問的對象而不是目前使用者擁有的對象。對於dba_開頭的需要管理員權限,其他用法也完全一樣,這裡就不再贅述了。
2. 動態資料字典
Oracle包含了一些潛在的由系統管理員如SYS維護的表和視圖,由於當資料庫啟動並執行時候它們會不斷進行更新,所以稱它們為動態資料字典(或者是動態效能檢視)。這些視圖提供了關於記憶體和磁碟的運行情況,所以我們只能對其進行唯讀訪問而不能修改它們。
Oracle中這些動態效能檢視都是以v$開頭的視圖,比如v$access。下面就幾個主要的動態效能檢視進行介紹。
v$access
該視圖顯示資料庫中鎖定的資料庫物件以及訪問這些對象的會話對象(session對象)。
運行如下命令:
select * from v$access
結果如下:(因記錄較多,故這裡只是節選了部分記錄)
| SID |
OWNER |
OBJECT |
TYPE |
| 27 |
DKH |
V$ACCESS |
CURSOR |
| 27 |
PUBLIC |
V$ACCESS |
SYNONYM |
| 27 |
SYS |
DBMS_APPLICATION_INFO |
PACKAGE |
| 27 |
SYS |
GV$ACCESS |
VIEW |
v$session
該視圖列出當前會話的詳細資料。由於該視圖欄位較多,這裡就不列詳細欄位,為瞭解詳細資料,可以直接在sql*plus命令列下鍵入:desc v$session即可。
v$active_instance
該視圖主要描述當前資料庫下的活動的執行個體的資訊。依然可以使用select語句來觀察該資訊。
v$context
該視圖列出當前會話的屬性資訊。比如命名空間、屬性值等。
-------------------------------------------------------------------------
一、oracle資料字典主要由以下幾種視圖構成:
1.user視圖 以user_為首碼,用來記錄使用者物件的資訊
2.all視圖 以all_為首碼,用來記錄使用者物件的資訊及被授權訪問的對象資訊
3.dba視圖 以dba_為首碼,用來記錄資料庫執行個體的所有對象的資訊
4.v$視圖 以v$為首碼,用來記錄與資料庫活動相關的效能統計動態資訊
5.gv$視圖 以gv$為首碼,用來記錄分布式環境下所有執行個體的動態資訊
二、oracle常用的資料字典
1.基本資料字典
字典名稱 說明
dba_tables 所有使用者的所有表資訊
dba_tab_columns 所有使用者的表的欄位資訊
dba_views 所有使用者的所有視圖資訊
dba_synonyms 所有使用者的所有同義字資訊
dba_sequences 所有使用者的所有序列資訊
dba_constraints 所有使用者的表的約束資訊
dba_ind_columns 所有使用者的表的索引的欄位資訊
dba_triggers 所有使用者的觸發器資訊
dba_sources 所有使用者的預存程序資訊
dba_segments 所有使用者的段的使用空間資訊
dba_extents 所有使用者的段的擴充資訊
dba_objects 所有使用者物件的基本資料
cat 目前使用者可以訪問的所有基表
tab 但前使用者建立的所有基表、視圖、同義字等
dict 構成資料字典的所有表的資訊
2.與資料庫組件相關的資料字典
資料庫組件 資料字典中的表或視圖 說明
資料庫 v$datafile 記錄系統的運行情況
資料表空間 dba_tablespaces 記錄系統資料表空間的基本資料
dba_free_space 記錄系統資料表空間的空閑空間資訊
控制檔案 v$controlfile 記錄系統控制檔案的基本資料
v$control_record_section 記錄系統控制檔案中記錄文檔段的資訊
v$parameter 記錄系統個參數的基本資料
資料檔案 dba_data_files 記錄系統資料檔案及資料表空間的基本資料
v$filestat 記錄來自控制檔案的資料檔案資訊
v$datafile_header 記錄資料檔案頭部的基本資料
段 dba_segments 記錄段的基本資料
區 dba_extents 記錄資料區的基本資料
日誌 v$thread 記錄日誌線程的基本資料
v$log 記錄記錄檔的基本資料
v$logfile 記錄記錄檔的概要資訊
歸檔 v$archived_log 記錄歸檔記錄檔的基本資料
v$archived_dest 記錄歸檔記錄檔的路徑資訊
資料庫執行個體 v$instance 記錄執行個體的基本資料
v$system_parameter 記錄執行個體當前有效參數資訊
記憶體結構 v$sga 記錄sga區的資訊
v$sgastat 記錄sga的詳細資料
v$db_object_cache 記錄對象緩衝的大小資訊
v$sql 記錄sql語句的詳細資料
v$sqltext 記錄sql語句的語句資訊
v$sqlarea 記錄sql區的sql基本資料
後台進程 v$bgprocess 顯示後台進程資訊
v$session 顯示當前會話資訊
3.常用動態效能檢視
視圖名稱 說明
v$fixed_table 顯示當前發行的固定對象的說明
v$instance 顯示當前執行個體的資訊
v$latch 顯示鎖存器的統計資料
v$librarycache 顯示有關庫緩衝效能的統計資料
v$rollstat 顯示聯機的復原段的名字
v$rowcache 顯示活動資料字典的統計
v$sag 記錄sga區的資訊
v$sgastat 記錄sga的詳細資料
v$sort_usage 顯示臨時段的大小及會話
v$sqltext 記錄sql語句的語句資訊
v$sqlarea 記錄sql區的sql基本資料
v$stsstat 顯示基本的執行個體統計資訊
v$system_event 顯示一個事件的總計等待時間
v$waitstat 顯示塊競爭統計資料
oracle常用的資料字典