V$FIXED_TABLE & V$FIXED_VIEW_DEFINITION

本文深入探讨了Oracle数据库中的动态性能视图,包括它们的创建过程、内存存储方式以及实例关闭时的自动删除机制。重点介绍了如何通过V$FIXED_VIEW_DEFINITION视图获取动态性能视图的定义,并通过此定义找到最终构成这些视图的固定表。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

官方解释:

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.

ColumnDatatypeDescription
NAMEVARCHAR2(30)Name of the object
OBJECT_IDNUMBERIdentifier of the fixed object
TYPEVARCHAR2(5)Object type (TABLE | VIEW)
TABLE_NUMNUMBERNumber 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.

ColumnDatatypeDescription
VIEW_NAMEVARCHAR2(30)Name of the fixed view
VIEW_DEFINITIONVARCHAR2(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 视图 来查看。 在数据库运行期间,动态性能视图保存在内存中,时刻监控着数据库的状态,我们在需要的时候可以查看这些视图。 当实例关闭时,数据库又会从内存中自动删除这些动态性能视图。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

搞怪的索引

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值