3,靜態數據字典視圖
因爲X$表和數據字典表一般不能直接被用戶訪問,Oracle建立了靜態數據字典視圖來
提供用戶對於數據字典信息的訪問,因爲這些信息一般相對穩定,不能直接修改,因此又被稱爲靜態數據字典視圖。靜態數據字典視圖在
建立數據庫時由$ORACLE_HOME/rdbms/admin/catagory.sql腳本建立。
靜態數據字典視圖按照前綴的不一樣一般分紅三類:
● USER_:用戶所擁有的相關對象信息;
● ALL_:用於有權限訪問的全部對象的信息;
● DBA_:數據庫全部相關對象的信息,用於須要有 select any table 的權限才能訪問。
經過三類視圖在本質上是爲了實現權限控制。在Oracle數據庫中,
每一個用戶與方案(Schema)是對應的,Schema是用戶所擁有的對象的集合。數據庫經過Schema將不一樣用戶的對象隔離開來,用戶能夠自由的訪問本身的對象,可是要訪問其餘Schema對象就須要相關的受權。
4,動態性能視圖
動態性能視圖記錄了數據庫運行時信息和統計數據,大部分動態性能視圖被實時更新以及反映數據庫當前狀態。在數據庫啓動時,Oracle動態建立X$表,在此基礎上,Oracle建立了GV$和V$視圖,GV$即Global V$,除了一些特例外,每一個V$都對應一個GV$。GV$產生是爲了OPS/RAC環境的須要,每一個V$都是基於GV$的,只是GV$多了INST_ID列來顯示實例ID。
(1)如何查看一個視圖的底層建立語句?
Oracle提供了一些特殊的視圖用以記錄其餘視圖的建立方式,v$fixed_view_definition就是其中之一。
(2)查詢V$視圖時,報的錯倒是V_$視圖不存在,V_$視圖不是基於V$視圖建立的嗎,怎麼反向報錯了?
爲了防止普通用戶的誤操做,Oracle對經過軟件機制對V$視圖的訪問作了限制,它不容許普通用戶直接訪問V$視圖,但咱們平時不是常常訪問嗎?這實際上是Oracle引入了V_$視圖。在創建V$視圖後,Oracle就創建了V_$視圖,隨後爲V_$視圖創建了與V$視圖同名的共用同義詞。這些工做都是經過catalog.sql腳本(該腳本位於$ORACLE_HOME/rdbms/admin/目錄下)實現的。
如:
create or replace view v_$fixed_table as select * from v$fixed_table;
create or replace public synonym
v$fixed_table for v_$fixed_table; --同名同義詞
也就是說,大部分用戶訪問的V$對象,並非視圖,而是執行V_$視圖的同義詞;而V_$視圖時基於真正V$視圖建立的。