生活随笔
收集整理的這篇文章主要介紹了
Oracle学习笔记:数据字典
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
oracle數(shù)據(jù)字典
說起字典,下面讓我來打個比方。我們讀書寫字,靠的是什么?你會說:字!那我問你,你所用的字又是什么呢?!這時,你只可能把字典(新華字典、康熙字典、說文解字等等)里的說法拿出來解釋了。再進一步,你能隨隨便便就自己寫一本字典,把每個字重新定義一下,就去用嗎?顯然不可能,要是那樣,世界早亂套了!有意思的是:即使是字典關(guān)于每個字的解釋還是用其他的字來解釋的,這樣循環(huán)解釋下去.....????????這其實只是表現(xiàn)形式的一致,內(nèi)容上絕不會死循環(huán)的,那就是鐵定規(guī)定一些最最基礎(chǔ)的語義不可再分的字為基礎(chǔ)字!其他的不過是多種說法寫法,不斷被解釋的新字而已!
就是這樣:數(shù)據(jù)庫里的數(shù)據(jù)字典就是就是解釋數(shù)據(jù)庫對象的對象,所以數(shù)據(jù)字典也叫元數(shù)據(jù)-metadata。他們不可以被用戶增、刪、改,只能查看使用。數(shù)據(jù)字典也有一些不可再分的字典基礎(chǔ)表,其他的主要是視圖、視圖的視圖、同義詞而已,而我們能用的只能是這些視圖、視圖的視圖、同義詞。你問了“oracle為什么不讓咱看基礎(chǔ)表啊”?讓你看,你看的懂嗎?話又說回來,真讓你看懂了,oracle不早關(guān)門了?! 這就是歷史、兼容性、效率、管理、安全、習(xí)慣等問題了。
為什么oracle提供了這么多的數(shù)據(jù)字典啊?你說是如果你蓋房子了,是用現(xiàn)成的磚、水泥、鋼筋等等建筑材料好啊,還是先從一個老房子上拆零件好啊?但有時候有集成度較高的半成品也是很好的,可這個東西是沒有標(biāo)準去把握的,只好仁者見仁、智者見智了。oracle也是不斷順應(yīng)民意不斷改變的!
oracle的數(shù)據(jù)字典主要從兩個角度去劃分的
static 和 dynamic 指的是字典信息內(nèi)容是否實時更新,是否可以階段重現(xiàn)或者是否可控。static主要適用于用戶模式對象,在數(shù)據(jù)庫open狀態(tài)下使用;dynamic主要是數(shù)據(jù)庫實例提供的內(nèi)存結(jié)構(gòu)信息,他們甚至沒有database中存儲的表結(jié)構(gòu),完全是oracle實例提供的內(nèi)存表,而且可用的字典表在實例啟動的不同階段都是不同的。由此也引出了兩者的可訪問的方式有些不同:dynamic字典只能使用簡單的 select where,要使用其他的東西,必須先轉(zhuǎn)儲位實體表;而 static 則沒有這些限制!privileges :指權(quán)限、安全管理角度。 其中,static 的 dba_、all_、user_ 指的是從用戶ID安全角度定義了內(nèi)容訪問許可范圍,由此引出了大量的數(shù)據(jù)字典視圖、同義詞;類似的dynamic的v_$、v$、gv_$、gv$從實例ID安全角度定義了內(nèi)容訪問許可范圍,也引出了大量的數(shù)據(jù)字典視圖、同義詞!?
oracle數(shù)據(jù)字典的衍生關(guān)系
oracle程序fixed 表-->fixed 視圖:如v$instance ----該層的fixed 表是對用戶訪問關(guān)閉的
oracle: x$表-->gv$視圖-->v$視圖 --該層是對用戶訪問關(guān)閉的
| |
gv_$視圖 v_$視圖
| |
gv$同義詞 v$同義詞
oracle:? *$基礎(chǔ)表-->dba_*視圖-->all_*視圖-->user視圖 ----該層的表是對用戶訪問關(guān)閉的
all_*視圖、user視圖實際上都是從*$基礎(chǔ)表定義而來的,邏輯范圍上如上
?
在進行數(shù)據(jù)訪問時,Oracle 訪問 VIEW優(yōu)先,然后是同義詞。
?
你絕對用的到的基礎(chǔ)數(shù)據(jù)字典
dictionary 【dict】 --列出所有的數(shù)據(jù)字典,oracle10g里有 1378 個!dict_columns --列出所有的數(shù)據(jù)字典表列v$fixed_table --列出所有的dynamic 表、視圖,此處的 fixed 應(yīng)理解為oracle內(nèi)置的、固有的v$fixed_view_definition --列出所有dynamic視圖的原始定義,此處的 fixed 應(yīng)理解為oracle內(nèi)置的、固有的v$process --oracle進程信息,addrv$session --oracle的會話信息,paddr對應(yīng)v$process的addr,process指client的os的processid,*_sql_*,row_wait_row#,event等待事件描述,sql_tracev$sql --oracle緩存的sqlv$sgainfo、v$sgastat、v$pgastat --sga的固定和動態(tài)組成情況v$sysem_parameter --oracle系統(tǒng)所有的初始化參數(shù),不包含隱藏參數(shù)v$sysem_event --oracle實例的系統(tǒng)等等事件統(tǒng)計v$thread --當(dāng)前l(fā)gwr線程信息,從中可以獲得很多redo相關(guān)的信息。sequence#-1v$version、v$option --oracle的版本、組件情況v$open_cursor --oracle打開的所有cursor情況v$object_dependency --oracle系統(tǒng)運行時所有object的依賴情況v$bgprocess --oracle所有可能的后臺進程,已經(jīng)是否運行等情況v$datafile、v$datafile_header --oracle的datafile信息v$log、v$logfile、v$log_history --oracle的online redo 的信息及歸檔歷史信息
其他常見的oracle數(shù)據(jù)字典(不斷收集整理中......)
v$session_event、v$session_wait、v$session_wait_class、v$session_wait_history --當(dāng)前會話等待事件、匯總、歷史統(tǒng)計v$sql、v$sql_plan、v$sql_trace、v$sql_text、v$sql_cursor、v$sqlstats、v$sqlarea --sql緩存中的sql文本v$process_memory --oracle進程的內(nèi)存使用詳細信息v$system_wait_class --oracle系統(tǒng)等待事件匯總v$database v$instancev$tablespace --從控制文件中獲得的關(guān)于表空間的基本信息v$thread --lgwr線程信息,從中可以獲得很多redo相關(guān)的信息?
?
轉(zhuǎn)載于:https://www.cnblogs.com/jinzhenshui/archive/2009/02/19/1394216.html
總結(jié)
以上是生活随笔為你收集整理的Oracle学习笔记:数据字典的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。