深入淺出資料字典摘要
Eygle深入淺出的資料字典摘要:
Oracle資料字典儲存的是oracle內部的後設資料,而資料字典一般是隻讀的,由4部分組成:內部rbdms(x$)表,資料字典表,動態效能(v$)檢視和資料字典檢視。
X$表是oracle執行基礎,在資料庫啟動時由oracle應用程式建立。不允許授權其他sys使用者訪問,比較常見x$bh,x$ksmsp,x$kvit等。
SQL> grant select on x$kvit to xiaoyu;
grant select on x$kvit to xiaoyu
ORA-02030: 只能從固定的表/檢視查詢
不過使用autotrace、explain plan檢視sql語句,常用的v檢視執行計劃的實質卻是底層的x檢視。
SQL> explain plan for select * from v$parameter;
Explained
SQL> select * from table(dbms_xplan.display());
PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------
Plan hash value: 1128103955
------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 926 | 1 (100)| 00:00:01 |
|* 1 | HASH JOIN | | 1 | 926 | 1 (100)| 00:00:01 |
|* 2 | FIXED TABLE FULL| X$KSPPI | 1 | 249 | 0 (0)| 00:00:01 |
| 3 | FIXED TABLE FULL| X$KSPPCV | 100 | 67700 | 0 (0)| 00:00:01
提一下x$kvit檢視記錄的是例項執行的一些資訊,例如後臺程式dbwr達到以下條件時會觸發:
Dirty buffers達到閥值25%
no free buffer當程式掃描LRU一定數量block還找不到free space,觸發dbwr執行寫出(此時會伴隨一個free buffer waits等待事件,是由於需要把datafile的block寫入到buffer cache中但是掃描LRU一定數量block後還是找不到free space)
資料字典表用以儲存表、索引、約束等資料庫結構資訊,一般以$結尾例如bootstrap$、undo$,在建立資料庫的時候執行$oracle_home/dbms/sql.bsq指令碼建立。
動態效能檢視記錄的資料庫執行資訊和統計資料,大部分動態效能檢視被實時更新以反映資料庫當前狀態。
常見的v檢視和gv檢視,gv檢視是用於rac環境下,而v檢視是基於gv$檢視的,增加了inst_id列的where條件inst_id=userenv(‘instance’)返回當前instance資訊。我們可以利用v$fixed_table和v$fixed_view_definition檢視v$ gv$和x$的有關資訊。
Oracle為了安全機制建立了gv_檢視、v_檢視和public的gv同義詞、v同義詞,建立的資訊儲存於oracle_homerbdmsadmincatalog.sql下。
Create or replace view v_$fixed_table as select * from v$fixed_table;
Create or replace public synonym v$fixed_table as select * from v_$fixed_table;
透過v_檢視,oracle把v$檢視和普通使用者隔離,普通使用者是無法訪問v檢視的,v_$檢視可以授予其他使用者,v$檢視則不允許。
所以,實際上通常的大部分使用者訪問的v$物件,並不是檢視,而是指向v_$檢視的synonym。
(訪問的優先順序table>view>私有synonym>publict synonym)
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25362835/viewspace-1057284/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 淺析資料字典
- 深入瞭解Oracle資料字典Oracle
- 深入淺出 Runtime(二):資料結構資料結構
- 深入淺出FE(十四)深入淺出websocketWeb
- 深入瞭解Oracle資料字典(zt)Oracle
- 深入淺出 Vue 系列 -- 資料劫持實現原理Vue
- RxRetrofit – 終極封裝 – 深入淺出 & 資料快取封裝快取
- 深入淺出:瞭解時序資料庫 InfluxDB資料庫UX
- 深入淺出FaaS應用場景:資料編排
- RxRetrofit - 終極封裝 - 深入淺出 & 資料快取封裝快取
- 資料庫設計正規化深入淺出(轉)資料庫
- 深入淺出——MVCMVC
- 深入淺出mongooseGo
- HTTP深入淺出HTTP
- 深入淺出IO
- 深入淺出 RabbitMQMQ
- 深入淺出PromisePromise
- ArrayList 深入淺出
- mysqldump 深入淺出MySql
- 深入淺出decorator
- 深入淺出 ZooKeeper
- 機器學習深入淺出機器學習
- 深入淺出HTTPHTTP
- http 深入淺出HTTP
- 深入淺出 ARCore
- 深入淺出 synchronizedsynchronized
- 深入淺出WebpackWeb
- 深入淺出 blockBloC
- block深入淺出BloC
- 對於Oracle資料字典的深入理解Oracle
- 深入淺出介紹TensorFlow資料集和估算器
- 淺讀-《深入淺出Nodejs》NodeJS
- 《深入淺出webpack》有感Web
- 深入淺出 Laravel MacroableLaravelMac
- 反射的深入淺出反射
- Flutter | 深入淺出KeyFlutter
- 深入淺出 CSS 動畫CSS動畫
- 深入淺出:HTTP/2HTTP