生成顺序:X$--->GV$--->V$---GV_$/V_$--->GV$/V$(同义词)
X$表是Oracle数据库的核心部分,用于跟踪内部数据库信息,维持数据库的正常运行、
X$表是加密命名的,而且Oracle不做文档说明,这部分知识是Oracle公司的技术机密,Oracle通过这些X$建立其他大量视图,提供用户查询管理数据库之用。
X$表是Oracle数据库运行的基础,在数据库启动时由Oracle应用程序动态创建。这部分表对数据库来说至关重要,所以Oracle不允许SYSDBA之外的用户直接访问,显示授权不被允许。
研究X$表的一个好办法是借用Oracle的AUTOTRACE功能,当查询一些常用视图的时候,可以通过AUTOTRACE功能发现这些view的底层表。
set autotrace trace explain;
select * from v$parameter;
set autotrace off;
数据字典表【Data Dictionary Table】:
数据字典表用来存储表、索引、约束以及其他数据库结构的信息,这些对象通常以v$结尾,如:tab$,obj$,ts$等,在创建数据库的时候通过运行sql.bsq脚本来创建。
sqp.bsq是非常重要的一个文件,其中包含了数据字典表的定义及注释说明,每个试图深入学习Oracle数据库的用户都应该仔细阅读一下该文件,该文件位于$ORACLE_HOME/rdbms/admin/目录下。
动态性能视图:
动态性能(V$)视图记录了数据库运行时信息和统计数据,大部分动态性能视图被实时更新以反映数据库当前状态。
Oracle通过动态性能视图将Oracle数据库的状态展示出来,提供给用户和数据库管理员,Oracle对v$视图给出了详细的文档说明供开发管理人员参考,是研究和管理数据库的主要依据。
GV$和V$视图:
在数据库启动时,Oracle动态创建X$表,在此基础上,Oracle创建了GV$和V$视图,G表示global,除了一些特例外,每个v$视图都有一个对应的gv$视图存在,GV$视图的产生是为了满足RAC环境的需要,在RAC环境中,查询GV$视图返回所有实例信息,而每个V$视图是基于GV$视图,增加了inst_id列的where条件限制建立的,只包含当前连接实例信息。
GV_$,V_$视图和V$,GV$同义词:
在GV$和V$之后,Oracle建立了GV_$和V_$视图,随后为这些视图建立了公用同义词。
这些工作都是通过catalog.sql脚本实现的【脚本位于:$ORACLE_HOME/rdbms/admin/目录下】
V_$和GV_$视图是基于V$和GV$视图首先被创建,然后基于V_$和GV_$视图的同义词被创建
通过V_$视图,Oracle把V$视图和普通用户隔离,V_$视图的权限可以授予其他用户,而Oracle 不允许任何对于V$视图的直接授权。
对于内部表X$和V$视图的限制,Oracle是通过软件机制来实现的,而并非通过数据库权限控制。