V$FIXED_TABLE & V$FIXED_VIEW_DEFINITION

官方解释:

V$FIXED_TABLE displays all dynamic performance tables, views, and derived tables in the database. Some V$ tables (for example, V$ROLLNAME) refer to real tables and are therefore not listed.

Column Datatype Description
NAME VARCHAR2(30) Name of the object
OBJECT_ID NUMBER Identifier of the fixed object
TYPE VARCHAR2(5) Object type (TABLE | VIEW)
TABLE_NUM NUMBER Number that identifies the dynamic performance table if it is of type TABLE



V$FIXED_VIEW_DEFINITION contains the definitions of all the fixed views (views beginning with V$). Use this table with caution. Oracle tries to keep the behavior of fixed views the same from release to release, but the definitions of the fixed views can change without notice. Use these definitions to optimize your queries by using indexed columns of the dynamic performance tables.

Column Datatype Description
VIEW_NAME VARCHAR2(30) Name of the fixed view
VIEW_DEFINITION VARCHAR2(4000) Definition of the fixed view

例如:select view_definition from v$fixed_view_definition a where a.VIEW_NAME='V$PARAMETER'; 能够查出视图V$PARAMETER的定义;
SELECT NUM,
       NAME,
       TYPE,
       VALUE,
       DISPLAY_VALUE,
       ISDEFAULT,
       ISSES_MODIFIABLE,
       ISSYS_MODIFIABLE,
       ISINSTANCE_MODIFIABLE,
       ISMODIFIED,
       ISADJUSTED,
       ISDEPRECATED,
       ISBASIC,
       DESCRIPTION,
       UPDATE_COMMENT,
       HASH
  FROM
GV$PARAMETER
 WHERE INST_ID = USERENV('Instance')

然后再在此表里找出V$PARAMETER的定义中所用的表(GV$PARAMETER),一般是GV$开头的视图;就能查到哪些固定表组成了这些视图,一般是X$开头的固定表;
select view_definition from v$fixed_view_definition a where a.VIEW_NAME='GV$PARAMETER'; 
SELECT X.INST_ID,
       X.INDX + 1,
       KSPPINM,
       KSPPITY,
       KSPPSTVL,
       KSPPSTDVL,
       KSPPSTDF,
       DECODE(BITAND(KSPPIFLG / 256, 1), 1, 'TRUE', 'FALSE'),
       DECODE(BITAND(KSPPIFLG / 65536, 3),
              1,
              'IMMEDIATE',
              2,
              'DEFERRED',
              3,
              'IMMEDIATE',
              'FALSE'),
       DECODE(BITAND(KSPPIFLG, 4),
              4,
              'FALSE',
              DECODE(BITAND(KSPPIFLG / 65536, 3), 0, 'FALSE', 'TRUE')),
       DECODE(BITAND(KSPPSTVF, 7), 1, 'MODIFIED', 4, 'SYSTEM_MOD', 'FALSE'),
       DECODE(BITAND(KSPPSTVF, 2), 2, 'TRUE', 'FALSE'),
       DECODE(BITAND(KSPPILRMFLG / 64, 1), 1, 'TRUE', 'FALSE'),
       DECODE(BITAND(KSPPILRMFLG / 268435456, 1), 1, 'TRUE', 'FALSE'),
       KSPPDESC,
       KSPPSTCMNT,
       KSPPIHASH
  FROM
X$KSPPI X, X$KSPPCV Y
 WHERE (X.INDX = Y.INDX)
   AND BITAND(KSPPIFLG, 268435456) = 0
   AND ((TRANSLATE(KSPPINM, '_', '#') NOT LIKE '##%') AND
       ((TRANSLATE(KSPPINM, '_', '#') NOT LIKE '#%') OR
       (KSPPSTDF = 'FALSE') OR (BITAND(KSPPSTVF, 5) > 0)))
找到了最终表是X$KSPPI 和 X$KSPPCV 


这段时间多以动态性能视图为讨论的焦点,关于动态性能视图有以下总结:

在实例启动时,会先创建X$表,然后基于X$表创建GV_$  V_$ 视图,在基于GV_$ V_$视图创建GV$V$同义词。 我们一般查询的都是同义词。 关于这些视图的定义,可以通过V$FIXED_VIEW_DEFINITION 视图 来查看。 在数据库运行期间,动态性能视图保存在内存中,时刻监控着数据库的状态,我们在需要的时候可以查看这些视图。 当实例关闭时,数据库又会从内存中自动删除这些动态性能视图。


发布了151 篇原创文章 · 获赞 45 · 访问量 25万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章