我们大家都知道在Oracle数据库运行的过程中,我们经常会使用一些关于V$开头的Oracle 动态视图,例如V$session, 在一次偶然的情况下有人用的是V_$session, 一开始以为是别人写错了,没想到desc v_$session以后能看到和v$session一样的结构,再以后又发现以gv$开头的视图等等。
趁这次在一台Linux系统上装Oracle的机会,终于弄清楚了这些动态视图与相应表之间的关系。
这些都是由Oracle自己管理的数据结构,得从v$fixed_table入手:
- [Oracle@3857 admin]$ sqlplus sys/sys@archdw as sysdba
- SQL*Plus: Release 11.2.0.1.0 Production on Mon Dec 14 11:27:20 2009
- Copyright (c) 1982, 2009, Oracle. All rights reserved.
- Connected to:
- Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 – Production
- With the Partitioning, OLAP, Data Mining and Real Application Testing options
- SQL> desc v$fixed_table;
- Name Null? Type
- —————————————– ——– —————————-
- NAME VARCHAR2(30)
- OBJECT_ID NUMBER
- TYPE VARCHAR2(5)
- TABLE_NUM NUMBER
- SQL> select * from v$fixed_table
- NAME OBJECT_ID TYPE TABLE_NUM
- —————————— ———- —– ———-
- X$KQFTA 4294950912 TABLE 0
- X$KQFVI 4294950913 TABLE 1
- GV$PROCESS 4294951256 VIEW 65537
- V$PROCESS 4294950917 VIEW 65537
- GV$BGPROCESS 4294951257 VIEW 65537
- ………………………………………
从上面可以看到GV$与V$是视图,X$是表。那它们之间是什么关系呢?从另一个视图v$fixed_view_definition中得到如下信息(以v$fixed_table为例):
- SQL> set linesize 100
- SQL> col view_name for a15
- SQL> col view_definition for a80
- SQL> select * from v$fixed_view_definition where view_name=’V$FIXED_TABLE’;
- VIEW_NAME VIEW_DEFINITION
上述的相关内容就是对Oracle 动态视图的描述,希望会给你带来一些帮助在此方面。
【编辑推荐】