(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/30162081/viewspace-1841150/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/30162081/viewspace-1841150/