Oracle的4類資料字典
(1)內部RDBMS(X$)表
(2)資料字典表
(3)資料字典檢視
(4)動態效能(v$)檢視
一、內部RDBMS(X$)表
X$表是Oracle資料庫的核心部分,用於跟蹤資料庫內部資訊,維護資料庫的正常執行。X$是加密命名的,而且Oracle官方文件不做說明;最為人所熟知的是X$BH、X$KSMSP等。X$表是Oracle資料庫的執行基礎,在資料庫啟動時有Oracle應用程式自動建立。所以Oracle不允許SYSDBA以外的使用者直接訪問。
X$表的資訊可以從v$fixed_table中查到,如下所示:
點選(此處)摺疊或開啟
-
SQL>
-
SQL> select * from v$version;
-
-
BANNER
-
----------------------------------------------------------------
-
Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bi
-
PL/SQL Release 10.2.0.4.0 - Production
-
CORE 10.2.0.4.0 Production
-
TNS for 64-bit Windows: Version 10.2.0.4.0 - Production
-
NLSRTL Version 10.2.0.4.0 - Production
-
-
SQL> select count(*) from v$fixed_table where name like '%X$%';
-
-
COUNT(*)
-
----------
-
617
-
SQL> select name from v$fixed_table where name like '%X$%' and rownum<10;
-
-
NAME
-
------------------------------
-
X$KQFTA
-
X$KQFVI
-
X$KQFVT
-
X$KQFDT
-
X$KQFCO
-
X$KQFOPT
-
X$KSLLT
-
X$KSLHOT
-
X$KSLLCLASS
-
-
已選擇9行。
-
- SQL>
點選(此處)摺疊或開啟
-
SQL>
-
SQL> set autot traceonly
-
SQL> select * from v$instance;
-
-
-
執行計劃
-
----------------------------------------------------------
-
Plan hash value: 2848324471
-
-
-------------------------------------------------------------------------------------
-
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
-
-------------------------------------------------------------------------------------
-
| 0 | SELECT STATEMENT | | 100 | 26600 | 0 (0)| 00:00:01 |
-
| 1 | MERGE JOIN CARTESIAN | | 100 | 26600 | 0 (0)| 00:00:01 |
-
| 2 | MERGE JOIN CARTESIAN| | 1 | 253 | 0 (0)| 00:00:01 |
-
|* 3 | FIXED TABLE FULL | X$KSUXSINST | 1 | 206 | 0 (0)| 00:00:01 |
-
| 4 | BUFFER SORT | | 1 | 47 | 0 (0)| 00:00:01 |
-
|* 5 | FIXED TABLE FULL | X$KVIT | 1 | 47 | 0 (0)| 00:00:01 |
-
| 6 | BUFFER SORT | | 100 | 1300 | 0 (0)| 00:00:01 |
-
| 7 | FIXED TABLE FULL | X$QUIESCE | 100 | 1300 | 0 (0)| 00:00:01 |
-
-------------------------------------------------------------------------------------
-
-
Predicate Information (identified by operation id):
-
---------------------------------------------------
-
-
3 - filter("KS"."INST_ID"=USERENV('INSTANCE'))
-
5 - filter("KVITTAG"='kcbwst')
-
-
-
統計資訊
-
----------------------------------------------------------
-
164 recursive calls
-
0 db block gets
-
16 consistent gets
-
0 physical reads
-
0 redo size
-
1650 bytes sent via SQL*Net to client
-
491 bytes received via SQL*Net from client
-
2 SQL*Net roundtrips to/from client
-
2 sorts (memory)
-
0 sorts (disk)
-
1 rows processed
-
- SQL>
二、資料字典表
資料字典表用以儲存表、索引、約束以及其他資料庫結構的資訊。這些物件通常是以‘$’結尾(例如:TAB$、OBJ$、TS$等)。其中,.bsq檔案是非常重要的檔案,其中包含了資料字典的定義以及註釋說明,每個檢視深入學習oracle資料庫的使用者都應該仔細閱讀該檔案。該檔案位於$ORACLE_HOME/rdbms/admin目錄下。在Windows下的目錄下包含兩個.bsq檔案,如下所示:
點選(此處)摺疊或開啟
-
C:\oracle\product\10.2.0\db_1\RDBMS\ADMIN>dir *.bsq
-
驅動器 C 中的卷沒有標籤。
-
卷的序列號是 A65D-DE73
-
-
C:\oracle\product\10.2.0\db_1\RDBMS\ADMIN 的目錄
-
-
2008/08/26 05:24 1,958,338 recover.bsq
-
2007/04/04 19:25 453,859 sql.bsq
-
2 個檔案 2,412,197 位元組
-
0 個目錄 5,909,614,592 可用位元組
-
- C:\oracle\product\10.2.0\db_1\RDBMS\ADMIN>
點選(此處)摺疊或開啟
- ......
- rem !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! IMPORTANT !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- rem Whenever new column is created to store internal, user or kernel column
- rem number, be sure to update the structure adtDT in atb.c so that those
- rem columns will be updated properly during drop column.
- rem !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- rem
- create tablespace SYSTEM datafile "D_DBFN"
- "D_DSTG" online
- /
- create rollback segment SYSTEM tablespace SYSTEM
- storage (initial 50K next 50K)
- /
- create cluster c_obj# (obj# number)
- pctfree 5 size 800 /* don't waste too much space */
- /* A table of 32 cols, 2 index, 2 col per index requires about 2K.
- * A table of 10 cols, 2 index, 2 col per index requires about 750.
- */
- storage (initial 130K next 200k maxextents unlimited pctincrease 0)
- /* avoid space management during IOR I */
- /
- create index i_obj# on cluster c_obj#
- /
- rem NOTE
- rem Logminer/Streams uses contents of this table.
- rem Please do not reuse any flags without verifying the impact of your
- rem changes on inter-op.
- create table tab$ /* table table */
- ( obj# number not null, /* object number */
- /* DO NOT CREATE INDEX ON DATAOBJ# AS IT WILL BE UPDATED IN A SPACE
- * TRANSACTION DURING TRUNCATE */
- dataobj# number, /* data layer object number */
- ts# number not null, /* tablespace number */
- file# number not null, /* segment header file number */
- block# number not null, /* segment header block number */
- bobj# number, /* base object number (cluster / iot) */
- tab# number, /* table number in cluster, NULL if not clustered */
- cols number not null, /* number of columns */
- clucols number,/* number of clustered columns, NULL if not clustered */
- pctfree$ number not null, /* minimum free space percentage in a block */
- pctused$ number not null, /* minimum used space percentage in a block */
- initrans number not null, /* initial number of transaction */
- maxtrans number not null, /* maximum number of transaction */
- ......
- )
當建立一張資料表時,Oracle將會在後臺執行一系列的內部操作,比如像obj$表中插入資料、向tab$表中記錄資料、向col$表中記錄欄位資訊、向con$記錄約束資訊、向seg$中記錄資料段資訊。
三、靜態資料字典檢視
由於X$表和資料字典表通常不能直接訪問,Oracle建立了靜態資料字典檢視提供使用者對於資料字典資訊的訪問,由於這些資訊相對穩定、不能直接修改,所以又被稱為靜態資料字典檢視。靜態資料字典檢視是由catalog.sql指令碼建立(在$ORACLE_HOME/rdbms/admin下)
(1) USER_檢視包含了使用者所擁有的相關物件的資訊,使用者可以透過這個檢視查詢自己擁有的物件資訊。
(2) ALL_類檢視包含了使用者有許可權訪問的所有物件的資訊。
(3) DBA_類檢視包含了資料庫所擁有的所有相關物件的資訊,使用者需要select any table許可權才能訪問。
我們經常使用的user_table、user_indexes等檢視都屬於這類檢視。
四、動態效能檢視
動態效能檢視(V$)(dynamicperformance view)記錄了資料庫執行時資訊和統計資料,大部分動態效能檢視被實時更新以反映資料庫的當前狀態。(1)GV$和V$檢視
資料庫啟動時,Oracle動態建立X$表,在此基礎之上,Oracle建立了GV$和V$檢視。從Oracle 8開始GV$檢視開始被引入,其含義是Global,除一些特例之外,每個V$檢視都有一個對應的GV$檢視存在;其中,GV$檢視的產生是為了滿足OPS/RAC環境的需要。
以v$instance為例,由於我的測試環境是單例項,查詢v$instance和gv$instance的輸出結果是一樣的。
點選(此處)摺疊或開啟
-
SQL> select instance_name,status from v$instance;
-
-
INSTANCE_NAME STATUS
-
---------------- ------------
-
hoegh OPEN
-
-
SQL> select instance_name,status from gv$instance;
-
-
INSTANCE_NAME STATUS
-
---------------- ------------
-
hoegh OPEN
-
- SQL>
(2)v$fixed_view_definition
ORACLE提供了一些特殊檢視用以記錄其他檢視的建立方式,v$fixed_view_definition就是其中之一,從GV$INSTANCE和V$INSTANCE開始,我們來看一下GV$檢視和v$檢視的建立方式。點選(此處)摺疊或開啟
-
SQL> set pagesize 100
-
SQL> select*from v$fixed_view_definition where view_name='V$INSTANCE';
-
-
VIEW_NAME
-
------------------------------
-
VIEW_DEFINITION
-
--------------------------------------------------------------------------------
-
V$INSTANCE
-
select INSTANCE_NUMBER , INSTANCE_NAME , HOST_NAME , VERSION , STARTUP_TIME , S
-
TATUS , PARALLEL , THREAD# , ARCHIVER , LOG_SWITCH_WAIT , LOGINS , SHUTDOWN_PEND
-
ING, DATABASE_STATUS, INSTANCE_ROLE, ACTIVE_STATE, BLOCKED from GV$INSTANCE wher
-
e inst_id = USERENV('Instance')
-
-
-
SQL> select*from v$fixed_view_definition where view_name='GV$INSTANCE';
-
-
VIEW_NAME
-
------------------------------
-
VIEW_DEFINITION
-
--------------------------------------------------------------------------------
-
GV$INSTANCE
-
select ks.inst_id,ksuxsins,ksuxssid,ksuxshst,ksuxsver,ksuxstim,decode(ksuxssts,0
-
,'STARTED',1,'MOUNTED',2,'OPEN',3,'OPEN MIGRATE','UNKNOWN'),decode(ksuxsshr,0,'N
-
O',1,'YES',2,NULL),ksuxsthr,decode(ksuxsarc,0,'STOPPED',1,'STARTED','FAILED'),de
-
code(ksuxslsw,0,NULL,2,'ARCHIVE LOG',3,'CLEAR LOG',4,'CHECKPOINT', 5,'REDO
-
GENERATION'),decode(ksuxsdba,0,'ALLOWED','RESTRICTED'),decode(ksuxsshp,0,'NO','
-
YES'),decode(kvitval,0,'ACTIVE',2147483647,'SUSPENDED','INSTANCE RECOVERY'),deco
-
de(ksuxsrol,1,'PRIMARY_INSTANCE',2,'SECONDARY_INSTANCE','UNKNOWN'), decode(qui_s
-
tate,0,'NORMAL',1,'QUIESCING',2,'QUIESCED','UNKNOWN'), decode(bitand(ksuxsdst, 1
-
), 0, 'NO', 1, 'YES', 'NO') from x$ksuxsinst ks, x$kvit kv, x$quiesce qu where k
-
vittag = 'kcbwst'
-
-
- SQL>
(3)動態效能檢視與資料庫啟動:
NOMOUNT階段
在nomount階段可以獲取資訊的檢視主要有:V$PARAMETER、V$APPARAMETER、 V$SGA、 V$SGASTAT、 V$BH、V$INSTANCE、 V$OPTION、 V$PROCESS、 V$SESSION;
MOUNT階段
可以獲取資訊的主要檢視:V$DATABASE、 V$DATAFILE、 V$VERSION、V$PROCESS、 V$DATAFILE_HEADER;
OPEN階段
在資料庫OPEN之後,所有資料字典和動態效能檢視都可以被查詢。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30496894/viewspace-2020779/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle的資料字典Oracle
- oracle 資料字典Oracle
- Oracle 資料字典和資料字典檢視Oracle
- oracle常用的資料字典Oracle
- Oracle常用資料字典Oracle
- oracle 資料字典(轉)Oracle
- Oracle資料字典 (轉)Oracle
- 生成oracle資料字典Oracle
- Oracle 資料字典 (轉)Oracle
- Oracle中的資料字典技術及常用資料字典總結Oracle
- 類似資料字典的幾個表
- 什麼是Oracle的資料字典?Oracle
- Oracle資料字典的用途介紹Oracle
- Oracle 資料字典學習Oracle
- Oracle 資料字典大全 ZTOracle
- Oracle常用資料字典表Oracle
- oracle資料字典簡介Oracle
- 瞭解Oracle資料字典Oracle
- oracle資料庫資料字典應用Oracle資料庫
- oracle資料字典的一點總結!Oracle
- 設定oracle資料字典的路徑Oracle
- 讀書筆記:深入解析oracle-第4章 資料字典筆記Oracle
- oracle常用資料字典.檢視Oracle
- oracle結構梳理---資料字典Oracle
- ORACLE常用資料字典介紹Oracle
- oracle 資料字典關係圖Oracle
- 深入瞭解Oracle資料字典Oracle
- oracle實驗記錄 (oracle 資料字典)Oracle
- 對於Oracle資料字典的深入理解Oracle
- Oracle相關資料字典檢視Oracle
- 【轉載】Oracle資料字典檢視Oracle
- 深入瞭解Oracle資料字典(zt)Oracle
- oracle資料字典表與檢視Oracle
- Oracle 常用資料字典表、檢視的總結Oracle
- 巧用Oracle Discoverer中的資料字典檢查joinOracle
- Oracle 常用資料字典檢視、表的總結Oracle
- Oracle 資料庫字典 檢視 基表Oracle資料庫
- Oracle 資料字典及註釋查詢Oracle