Oracle 資料字典及註釋查詢
Oracle透過資料字典來管理和展現資料庫資訊,資料字典通常儲存資料庫的後設資料,是資料庫的資料庫,其中儲存的資訊至關重要。正確理解這部分內容有助於提高大家對Oracle資料庫的認知。
資料字典有四類
1內部RDBMS(X$)表
X$表是Oracle資料庫的核心部分,這些表用於跟蹤內部資料庫資訊,維持資料庫的正常執行,X$表是加密命名的,而且Oracle不做文件說明,這部分知識是ORACLE公司的技術機密,ORACLE公司透過這些X$建立起其它大量檢視提供使用者查詢管理資料庫之用。
內部X$表可以用v$fixed_table來查詢
2資料字典表
資料字典表裡的資料是Oracle系統存放的系統資料,而普通表存放的是使用者的資料。為了方便的區別這些表,這些表的名字都是用"$"結尾,這些表屬於SYS使用者。
資料字典表由$ORACLE_HOME/rdbms/admin/sql.bsq 指令碼建立, 這個指令碼里又呼叫了其他的指令碼來建立這些資料字典表。 在那些建立指令碼里有基表的建立SQL。
Oracle 對資料字典表的說明:
These underlying tables store information about the database. Only Oracle Database should write to and read these tables. Users rarely access the base tables directly because they are normalized and most data is stored in a cryptic format.
這些資料字典表,只有Oracle 能夠進行讀寫。
SYS使用者下的這些資料字典表,存放在system 表空間下面,表名都用"$"結尾,為了便於使用者對資料字典表的查詢, Oracle對這些資料字典都分別建立了使用者檢視,這樣即容易記住,還隱藏了資料字典表表之間的關係,Oracle針對這些物件的範圍,分別把檢視命名為DBA_XXXX, ALL_XXXX和USER_XXXX。
查詢資料庫中的字典表
select * from dba_tables where owner='SYS' and tablespace_name='SYSTEM'
註釋查詢:
官方文件沒有註釋,查詢註釋可以透過查詢建立指令碼來獲得
[oracle@oracledb ~]$ cd $ORACLE_HOME/rdbms/admin/
[oracle@oracledb admin]$ ls -l *.bsq
-rw-r--r-- 1 oracle oinstall 25905 Mar 19 2009 daw.bsq
-rw-r--r-- 1 oracle oinstall 91730 Jul 22 2011 dcore.bsq
-rw-r--r-- 1 oracle oinstall 2832 Oct 23 2006 ddm.bsq
-rw-r--r-- 1 oracle oinstall 674 Jul 14 2008 ddst.bsq
-rw-r--r-- 1 oracle oinstall 17993 Feb 23 2010 denv.bsq
-rw-r--r-- 1 oracle oinstall 1364 Oct 31 2005 dexttab.bsq
-rw-r--r-- 1 oracle oinstall 4937 Oct 31 2005 dfmap.bsq
-rw-r--r-- 1 oracle oinstall 728 Oct 31 2005 djava.bsq
-rw-r--r-- 1 oracle oinstall 33697 Apr 26 2011 dlmnr.bsq
-rw-r--r-- 1 oracle oinstall 9632 Dec 8 2009 dmanage.bsq
-rw-r--r-- 1 oracle oinstall 25509 Jun 8 2007 dobj.bsq
-rw-r--r-- 1 oracle oinstall 32867 May 18 2011 doptim.bsq
-rw-r--r-- 1 oracle oinstall 47093 Nov 12 2009 dpart.bsq
-rw-r--r-- 1 oracle oinstall 16679 Jan 8 2007 dplsql.bsq
-rw-r--r-- 1 oracle oinstall 17811 Oct 9 2009 drac.bsq
-rw-r--r-- 1 oracle oinstall 128181 May 13 2011 drep.bsq
-rw-r--r-- 1 oracle oinstall 139898 Jun 11 2010 dsec.bsq
-rw-r--r-- 1 oracle oinstall 17751 Mar 9 2009 dsqlddl.bsq
-rw-r--r-- 1 oracle oinstall 19958 Jul 30 2008 dsummgt.bsq
-rw-r--r-- 1 oracle oinstall 15830 Apr 29 2011 dtools.bsq
-rw-r--r-- 1 oracle oinstall 5474 Oct 31 2006 dtxnspc.bsq
-rw-r--r-- 1 oracle oinstall 2495314 Sep 18 2011 recover.bsq
-rw-r--r-- 1 oracle oinstall 53130 Jul 14 2008 sql.bsq [oracle@oracledb admin]$
[oracle@oracledb admin]$ find . -name "*.bsq" | xargs grep "create table obj"
./dmanage.bsq:create table object_usage /* object usage statistics */
./dcore.bsq:create table obj$ /* object table */
./dcore.bsq:create table objerror$
./dcore.bsq:create table objauth$ /* table authorization table */
./dcore.bsq:create table objpriv$ /* privileges granted to objects */
[oracle@oracledb admin]$ more dcore.bsq
REM sanagara 07/18/11 - add spare columns to sqlerror$
REM yifeng 04/04/10 - add comments to opqtype$ flags
REM gravipat 10/15/09 - add sqlerror$
REM rmacnico 04/14/09 - add comments for seg$, ts$ flag bits
REM shvenugo 03/19/09 - add comments to opqtype$ flags
REM mbastawa 04/06/08 - add result cache for tab$.property
REM schakrab 03/24/08 - add comments on obj$ flag
Rem mziauddi 01/25/08 - use spare2+spare3 of cdef$ for constraint ddl SCN
REM ramekuma 03/13/08 - bug-6865413: add comments on i_obj2 index
REM jaeblee 02/06/08 - add i_syn2
REM bvaranas 01/30/08 - project 25274: Add deferred_stg$
REM ssonawan 07/13/07 - bug-6020455: add comments on user$ table
REM achoi 04/20/07 - add i_obj5
REM sfeinste 04/09/07 - fix comments for type# column of obj$
REM wechen 01/22/07 - fix comments for type# column of obj$
REM krajaman 03/01/07 - add objerror$
REM achoi 11/07/06 - obj$.spare3 stores base user#
REM jaeblee 10/26/06 - moved edition$ creation from denv.bsq
REM jiyang 09/07/06 - add comments for audit vault trigger
REM akruglik 09/01/06 - replace CMV$ with EV$, CMVCOL$ with EVCOL$ +
REM rename app_edition# with edition_obj#
REM wechen 07/31/06 - add comments for type# column of obj$
REM akruglik 04/07/06 - add EV$ and EVCOL$
REM suelee 02/16/06 - bug 4956995 - moved objauth$ et al from dsec.bsq
REM achoi 12/15/05 - tab$.trigflag 0x200000 indicates read-only table
REM vmarwah 11/08/05 - Versioning Enabled flag in tab$
REM jklein 08/01/05 - creation
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) */
/create table obj
...skipping
REM Please do not reuse any flags without verifying the impact of your
REM changes on inter-op.
create table obj$ /* object table */
( obj# number not null, /* object number */
dataobj# number, /* data layer object number */
owner# number not null, /* owner user number */
name varchar2("M_IDEN") not null, /* object name */
namespace number not null, /* namespace of object (see KQD.H): */
/* 1 = TABLE/PROCEDURE/TYPE, 2 = BODY, 3 = TRIGGER, 4 = INDEX, 5 = CLUSTER, */
/* 8 = LOB, 9 = DIRECTORY, */
/* 10 = QUEUE, 11 = REPLICATION OBJECT GROUP, 12 = REPLICATION PROPAGATOR, */
/* 13 = JAVA SOURCE, 14 = JAVA RESOURCE */
/* 58 = (Data Mining) MODEL */
subname varchar2("M_IDEN"), /* subordinate to the name */
type# number not null, /* object type (see KQD.H): */
/* 1 = INDEX, 2 = TABLE, 3 = CLUSTER, 4 = VIEW, 5 = SYNONYM, 6 = SEQUENCE, */
/* 7 = PROCEDURE, 8 = FUNCTION, 9 = PACKAGE, 10 = NON-EXISTENT, */
/* 11 = PACKAGE BODY, 12 = TRIGGER, 13 = TYPE, 14 = TYPE BODY, */
/* 19 = TABLE PARTITION, 20 = INDEX PARTITION, 21 = LOB, 22 = LIBRARY, */
/* 23 = DIRECTORY , 24 = QUEUE, */
/* 25 = IOT, 26 = REPLICATION OBJECT GROUP, 27 = REPLICATION PROPAGATOR, */
/* 28 = JAVA SOURCE, 29 = JAVA CLASS, 30 = JAVA RESOURCE, 31 = JAVA JAR, */
/* 32 = INDEXTYPE, 33 = OPERATOR , 34 = TABLE SUBPARTITION, */
/* 35 = INDEX SUBPARTITION */
/* 82 = (Data Mining) MODEL */
/* 92 = OLAP CUBE DIMENSION, 93 = OLAP CUBE */
/* 94 = OLAP MEASURE FOLDER, 95 = OLAP CUBE BUILD PROCESS */
ctime date not null, /* object creation time */
mtime date not null, /* DDL modification time */
stime date not null, /* specification timestamp (version) */
status number not null, /* status of object (see KQD.H): */
/* 1 = VALID/AUTHORIZED WITHOUT ERRORS, */
/* 2 = VALID/AUTHORIZED WITH AUTHORIZATION ERRORS, */
/* 3 = VALID/AUTHORIZED WITH COMPILATION ERRORS, */
/* 4 = VALID/UNAUTHORIZED, 5 = INVALID/UNAUTHORIZED */
remoteowner varchar2("M_IDEN"), /* remote owner name (remote object) */
linkname varchar2("M_XDBI"), /* link name (remote object) */
flags number, /* 0x01 = extent map checking required */
/* 0x02 = temporary object */
/* 0x04 = system generated object */
/* 0x08 = unbound (invoker's rights) */
/* 0x10 = secondary object */
/* 0x20 = in-memory temp table */
/* 0x80 = dropped table (RecycleBin) */
/* 0x100 = synonym VPD policies */
/* 0x200 = synonym VPD groups */
/* 0x400 = synonym VPD context */
/* 0x4000 = nested table partition */
oid$ raw(16), /* OID for typed table, typed view, and type */
spare1 number, /* sql version flag: see kpul.h */
spare2 number, /* object version number */
spare3 number, /* base user# */
spare4 varchar2(1000),
spare5 varchar2(1000),
spare6 date
)
storage (initial 10k next 100k maxextents unlimited pctincrease 0)
/
3資料字典檢視
靜態資料字典中的檢視分為三類,它們分別由三個字首夠成:user_*、 all_*、 dba_*。
user_*:該檢視儲存了關於當前使用者所擁有的物件的資訊。(即所有在該使用者模式下的物件)
all_*:該試圖儲存了當前使用者能夠訪問的物件的資訊, 而不是當前使用者擁有的物件。(與user_*相比,all_* 並不需要擁有該物件,只需要具有訪問該物件的許可權即可)
dba_*:該檢視儲存了資料庫中所有物件的資訊。(前提是當前使用者具有訪問這些資料庫的許可權,一般來說必須具有管理員許可權)
這些檢視由SYS使用者建立的,所以使用需要加上SYS,為了方便, Oracle為每個資料字典表的檢視頭建立了同名字的公共同義詞(public synonyms). 這樣簡單的處理就省去了寫sys.的麻煩。
除了靜態資料字典中三類檢視,其他的字典檢視中主要的是V$檢視,之所以這樣叫是因為他們都是以V$或GV$開頭的。這些檢視會不斷的進行更新,從而提供了關於記憶體和磁碟的執行情況,所以我們只能對其進行只讀訪問而不能修改它們。
Throughout its operation, Oracle Database maintains a set of virtual tables that record current database activity. These views are calleddynamic performance views because they are continuously updated while a database is open and in use. The views, also sometimes calledV$ views。
註釋查詢:
可以透過官方文件查詢
4動態效能(V$)檢視
V$檢視是基於X$虛擬檢視的。V$檢視是SYS使用者所擁有的,在預設狀況下,只有SYS使用者和擁有DBA系統許可權的使用者可以看到所有的檢視,沒有DBA許可權的使用者可以看到USER_和ALL_檢視,但不能看到DBA_檢視。與DBA_,ALL,和USER_檢視中面向資料庫資訊相反,這些檢視可視的給出了面向例項的資訊。
動態效能表用於記錄當前資料庫的活動,只存於資料庫執行期間,實際的資訊都取自記憶體和控制檔案。 DBA可以使用動態檢視來監視和調節資料。
註釋查詢:
可以透過官方文件查詢
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30496894/viewspace-1874476/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- oracle 使用sql查詢表註釋和列註釋及資料型別等OracleSQL資料型別
- (轉)Oracle常用資料字典查詢語句Oracle
- 查詢所有資料字典的SQLSQL
- 優化mysql資料字典表查詢優化MySql
- 【體系結構】Oracle 普通使用者查詢資料字典Oracle
- oracle 9i 查詢資料字典檢視慢案例分析Oracle
- ORACLE使用者常用資料字典的查詢使用方法Oracle
- 關於dataguard需要查詢的資料字典
- ORACLE-使用者常用資料字典的查詢使用方法Oracle
- ORACLE使用者常用資料字典的查詢使用方法(轉)Oracle
- Oracle中的資料字典技術及常用資料字典總結Oracle
- oracle重複資料的查詢及刪除Oracle
- 關於資料字典的查詢效率優化優化
- oracle 查詢及刪除表中重複資料Oracle
- 關於資料字典的查詢效率最佳化
- 【指令碼】隱含引數及註釋資訊的查詢方法指令碼
- oracle 資料字典Oracle
- Oracle 資料字典和資料字典檢視Oracle
- Oracle 查詢多個資料Oracle
- Oracle查詢資料表結構(欄位,型別,大小,備註)Oracle型別
- 巧用Oracle Discoverer中的資料字典檢查joinOracle
- sqlserver新增查詢 表、欄位註釋,組合查詢所有的使用者、表名、表註釋SQLServer
- Oracle常用資料字典Oracle
- oracle 資料字典(轉)Oracle
- Oracle資料字典 (轉)Oracle
- 生成oracle資料字典Oracle
- Oracle 資料字典 (轉)Oracle
- Oracle的資料字典Oracle
- 查詢前10條資料oracleOracle
- SQL Server 查詢表註釋和欄位SQLServer
- oracle date資料的條件查詢Oracle
- Oracle資料庫的查詢變慢了Oracle資料庫
- oracle常用的資料字典Oracle
- Oracle 資料字典學習Oracle
- Oracle 資料字典大全 ZTOracle
- Oracle常用資料字典表Oracle
- oracle資料字典簡介Oracle
- 瞭解Oracle資料字典Oracle