Oracle學習筆記:資料字典

來源:互聯網
上載者:User

oracle資料字典

  說起字典,下面讓我來打個比方。我們讀書寫字,靠的是什嗎?你會說:字!那我問你,你所用的字又是什麼呢?!這時,你只可能把字典(新華字典、康熙字典、說文解字等等)裡的說法拿出來解釋了。再進一步,你能隨隨便便就自己寫一本字典,把每個字重新定義一下,就去用嗎?顯然不可能,要是那樣,世界早亂套了!有意思的是:即使是字典關於每個字的解釋還是用其他的字來解釋的,這樣迴圈解釋下去.....????????這其實只是表現形式的一致,內容上絕不會死迴圈的,那就是鐵定規定一些最最基礎的語義不可再分的字為基礎字!其他的不過是多種說法寫法,不斷被解釋的新字而已!

  就是這樣:資料庫裡的資料字典就是就是解釋資料庫物件的對象,所以資料字典也叫中繼資料-metadata。他們不可以被使用者增、刪、改,只能查看使用。資料字典也有一些不可再分的字典基礎資料表,其他的主要是視圖、視圖的視圖、同義字而已,而我們能用的只能是這些視圖、視圖的視圖、同義字。你問了“oracle為什麼不讓咱看基礎資料表啊”?讓你看,你看的懂嗎?話又說回來,真讓你看懂了,oracle不早關門了?! 這就是曆史、相容性、效率、管理、安全、習慣等問題了。

  為什麼oracle提供了這麼多的資料字典啊?你說是如果你蓋房子了,是用現成的磚、水泥、鋼筋等等建築材料好啊,還是先從一個老房子上拆零件好啊?但有時候有整合度較高的半成品也是很好的,可這個東西是沒有標準去把握的,只好仁者見仁、智者見智了。oracle也是不斷順應民意不斷改變的!



oracle的資料字典主要從兩個角度去劃分的

  1. static 和 dynamic 指的是字典資訊內容是否即時更新,是否可以階段重現或者是否可控。static主要適用於使用者模式對象,在資料庫open狀態下使用;dynamic主要是資料庫執行個體提供的記憶體結構資訊,他們甚至沒有database中儲存的表結構,完全是oracle執行個體提供的記憶體表,而且可用的字典表在執行個體啟動的不同階段都是不同的。由此也引出了兩者的可訪問的方式有些不同:dynamic字典只能使用簡單的 select where,要使用其他的東西,必須先轉儲位實體表;而 static 則沒有這些限制!
  2. privileges :指許可權、安全管理角度。 其中,static 的 dba_、all_、user_ 指的是從使用者ID安全形度定義了內容訪問功能,由此引出了大量的資料字典視圖、同義字;類似的dynamic的v_$、v$、gv_$、gv$從執行個體ID安全形度定義了內容訪問功能,也引出了大量的資料字典視圖、同義字!

 

oracle資料字典的衍生關係

oracle程式fixed 表-->fixed 視圖:如v$instance  ----該層的fixed 表是對使用者訪問關閉的

oracle:  x$表-->gv$視圖-->v$視圖  --該層是對使用者訪問關閉的

          |    |

        gv_$視圖  v_$視圖

          |    |  

        gv$同義字 v$同義字

oracle:  *$基礎資料表-->dba_*視圖-->all_*視圖-->user視圖  ----該層的表是對使用者訪問關閉的

    all_*視圖、user視圖實際上都是從*$基礎資料表定義而來的,邏輯範圍上如上

 

在進行資料訪問時,Oracle 訪問 VIEW優先,然後是同義字。


 

你絕對用的到的基礎資料字典

  1. dictionary 【dict】  --列出所有的資料字典,oracle10g裡有 1378 個!
  2. dict_columns  --列出所有的資料字典表列
  3. v$fixed_table  --列出所有的dynamic 表、視圖,此處的 fixed 應理解為oracle內建的、固有的
  4. v$fixed_view_definition  --列出所有dynamic視圖的原始定義,此處的 fixed 應理解為oracle內建的、固有的
  5. v$process  --oracle進程資訊,addr
  6. v$session  --oracle的會話資訊,paddr對應v$process的addr,process指client的os的processid,*_sql_*,row_wait_row#,event等待事件描述,sql_trace
  7. v$sql  --oracle緩衝的sql
  8. v$sgainfo、v$sgastat、v$pgastat  --sga的固定和動態組成情況
  9. v$sysem_parameter  --oracle系統所有的初始化參數,不包含隱藏參數
  10. v$sysem_event  --oracle執行個體的系統等等事件統計
  11. v$thread  --當前lgwr線程資訊,從中可以獲得很多redo相關的資訊。sequence#-1
  12. v$version、v$option  --oracle的版本、組件情況
  13. v$open_cursor  --oracle開啟的所有cursor情況
  14. v$object_dependency  --oracle系統運行時所有object的依賴情況
  15. v$bgprocess  --oracle所有可能的後台進程,已經是否運行等情況
  16. v$datafile、v$datafile_header  --oracle的datafile資訊
  17. v$log、v$logfile、v$log_history  --oracle的online redo 的資訊及歸檔曆史資訊




其他常見的oracle資料字典(不斷收集整理中......)

  1. v$session_event、v$session_wait、v$session_wait_class、v$session_wait_history  --當前會話等待事件、匯總、曆史統計
  2. v$sql、v$sql_plan、v$sql_trace、v$sql_text、v$sql_cursor、v$sqlstats、v$sqlarea  --sql緩衝中的sql文本
  3. v$process_memory  --oracle進程的記憶體使用量詳細資料
  4. v$system_wait_class  --oracle系統等待事件匯總
  5. v$database  
  6. v$instance
  7. v$tablespace  --從控制檔案中獲得的關於資料表空間的基本資料
  8. v$thread  --lgwr線程資訊,從中可以獲得很多redo相關的資訊

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.