我們大家都知道在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 動態視圖的描述,希望會給你帶來一些幫助在此方面。