Oracle-数据字典解读
概述
官方文檔
Oracle數(shù)據(jù)庫(kù)字典通常是在創(chuàng)建和安裝數(shù)據(jù)庫(kù)時(shí)被創(chuàng)建的,Oracle數(shù)據(jù)字典是Oracle數(shù)據(jù)庫(kù)系統(tǒng)工作的基礎(chǔ),沒(méi)有數(shù)據(jù)字典的支持,Oracle數(shù)據(jù)庫(kù)系統(tǒng)就不能進(jìn)行任何工作。數(shù)據(jù)字典中的表是不能直接被訪問(wèn)的,但是可以訪問(wèn)數(shù)據(jù)字典中的視圖。
Oracle 數(shù)據(jù)字典是有表和視圖組成,它們存放在 SYSTEM 表空間中, 數(shù)據(jù)字典中的表是不能直接被訪問(wèn)的,但是可以訪問(wèn)數(shù)據(jù)字典中的視圖。
Oracle字典視圖包括四個(gè)層次,分別為X$內(nèi)部表、基礎(chǔ)數(shù)據(jù)字典表、數(shù)據(jù)字典視圖和動(dòng)態(tài)性能視圖(v$或者GV$開(kāi)頭)。
Not all views sets have three members. For example, the data dictionary
contains a DBA_LOCK view but no ALL_LOCK view.
查看全部的數(shù)據(jù)字典 dictionary
Oracle 11g中數(shù)據(jù)字典視圖2577個(gè),神仙也記不住,但是有個(gè)dictionary視圖,該視圖里記錄了所有的數(shù)據(jù)字典視圖的名稱。所以當(dāng)我們需要查找某個(gè)數(shù)據(jù)字典而又不知道這個(gè)信息在哪個(gè)視圖里的時(shí)候,就可以在dictionary視圖里找。該視圖還有個(gè)同名詞dict。
select * from dict ORDER BY TABLE_NAME; 或 SELECT * FROM DICTIONARY ORDER BY TABLE_NAME;同義詞視圖
select OWNER,SYNONYM_NAME,TABLE_NAME from dba_synonyms ;我們可以看到 v$ 正好是v_$的同義詞,驗(yàn)證了之前的關(guān)于oracle性能視圖的理論。
SQL> select OWNER,SYNONYM_NAME,TABLE_NAME from dba_synonyms a where a.table_name='DICTIONARY' ;OWNER SYNONYM_NAME TABLE_NAME --------------- ---------------- ----------------- PUBLIC DICTIONARY DICTIONARY PUBLIC DICT DICTIONARY數(shù)據(jù)字典的內(nèi)容
- 1,數(shù)據(jù)庫(kù)中所有模式對(duì)象的信息,如表、視圖、簇、及索引等。
- 2,分配多少空間,當(dāng)前使用了多少空間等。
- 3,列的缺省值。
- 4,約束信息的完整性。
- 5,Oracle 用戶的名字。
- 6,用戶及角色被授予的權(quán)限。
- 7,用戶訪問(wèn)或使用的審計(jì)信息。
- 8,其它產(chǎn)生的數(shù)據(jù)庫(kù)信息。
數(shù)據(jù)字典分類
數(shù)據(jù)字典分為 數(shù)據(jù)字典表 和 數(shù)據(jù)字典視圖
數(shù)據(jù)字典表
數(shù)據(jù)字典表里的數(shù)據(jù)是 Oracle 系統(tǒng)存放的系統(tǒng)數(shù)據(jù),而普通表存放的是用戶的數(shù)據(jù)。
為了方便的區(qū)別這些表,數(shù)據(jù)字典表的名字都是用”$”結(jié)尾, 這些表屬于 SYS用戶,只有 Oracle 能夠進(jìn)行讀寫(xiě)。
數(shù)據(jù)字典表由$ORACLE_HOME/rdbms/admin/sql.bsq 腳本創(chuàng)建.
SYS 用戶下的這些數(shù)據(jù)字典表,存放在 system 表空間下面, 表名都用”$”結(jié)尾.
為了便于用戶對(duì)數(shù)據(jù)字典表的查詢, Oracle 對(duì)這些數(shù)據(jù)字典都分別建立了用戶視圖, 這樣即容易記住, 還隱藏了數(shù)據(jù)字典表表之間的關(guān)系, Oracle 針對(duì)這些對(duì)象的范圍,分別把視圖命名為 DBA_XXXX, ALL_XXXX 和 USER_XXXX。
數(shù)據(jù)字典視圖
動(dòng)態(tài)性能視圖由腳本: $ORACLE_HOME/rdbms/admin/catalog.sql 創(chuàng)建
靜態(tài)數(shù)據(jù)字典(靜態(tài)性能視圖)
Views with the Prefix DBA_
包括了所有數(shù)據(jù)庫(kù)對(duì)象的信息;
Views with the prefix DBA_ show all relevant information in the entire database.
DBA_ views are intended only for administrators.
前提是當(dāng)前用戶具有訪問(wèn)這些數(shù)據(jù)庫(kù)的權(quán)限,一般來(lái)說(shuō)必須具有管理員權(quán)限。
SELECT OWNER, OBJECT_NAME, OBJECT_TYPE FROM DBA_OBJECTS ORDER BY OWNER, OBJECT_NAME;Views with the Prefix ALL_
當(dāng)前用戶有權(quán)限訪問(wèn)到的所有對(duì)象的信息;
與user_*相比,all_* 并不需要擁有該對(duì)象,只需要具有訪問(wèn)該對(duì)象的權(quán)限即可
Views with the Prefix USER_
當(dāng)前用戶schema下的對(duì)象;
SELECT OBJECT_NAME, OBJECT_TYPE FROM USER_OBJECTS ORDER BY OBJECT_NAME;動(dòng)態(tài)數(shù)據(jù)字典(動(dòng)態(tài)性能視圖)
除了靜態(tài)數(shù)據(jù)字典中三類視圖, 其他的字典視圖中主要的是 V$視圖,之所以這樣叫是因?yàn)樗麄兌际且?V$或 GV$開(kāi)頭的。
這些視圖會(huì)不斷的進(jìn)行更新,從而提供了關(guān)于內(nèi)存和磁盤(pán)的運(yùn)行情況,所以我們只能對(duì)其進(jìn)行只讀訪問(wèn)而不能修改它們。
V$視圖是基于 X$虛擬視圖的。V$視圖是 SYS 用戶所擁有的,在缺省狀況下,只有 SYS 用戶和擁有 DBA 系統(tǒng)權(quán)限的用戶可以看到所有的視圖,沒(méi)有 DBA 權(quán)限的用戶可以看到 USER_和 ALL_視圖,但不能看到 DBA_視圖。
與 DBA_,ALL,和 USER_視圖中面向數(shù)據(jù)庫(kù)信息相反,這些視圖可視的給出了面向?qū)嵗男畔ⅰ?/p>
更多請(qǐng)查看 Oracle-動(dòng)態(tài)性能視圖解讀
《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀
總結(jié)
以上是生活随笔為你收集整理的Oracle-数据字典解读的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Oracle-UNDO表空间解读
- 下一篇: Oracle-绑定变量binding v