2024年3月10日发(作者:)
Oracle 动态视图V$,V_$,GV$,GV_$与X$之间的关系
概括:
GV$与V$是视图,X$是表。
gv$是全局视图,而v$是针对某个实例的视图,X$是所有gv$的数据来源,从gv$到
v$需要加上where inst_id = USERENV(’Instance’)。一般来说一个oracle数据库只会
有一个实例对其操作,但在RAC上可以有多台实例同时装载并打开一个数据库。
那gv_$与v_$的定义又在什么地方呢?原来在$ORACLE_HOME/rdbms/admin存放
着系统管理脚本。
因此我们常用的v$ 是v_$的同义词,v_$是基于真正的视图v$,而真正的v$视图是
在gv$的基础上限制inst_id得到;
我们常用的gv$是gv_$的同义词,gv_$基于真正的视图gv$,而真正的gv$视图基
于系统表X$。
具体的内容如下:
前言:在oracle运维的过程中,经常会使用到一些以V$开头的动态视图,比如
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


发布评论