動的パフォーマンス・ビュー

静的データ・ディクショナリ・ビュー

動的パフォーマンス・ビューはデータベースが稼働している間、データベース・サーバーが継続的に更新している特別なビューである。
動的パフォーマンス・ビューはデータベースの内部のメモリ構造やメモリの状態を反映している参照専用のビューであり、その特性から読み取り一貫性は保証されていない。

さらに、運用監視スクリプトなどで 動的パフォーマンス・ビューの 「ORDER BY」、「結合」、「GROUP BY」処理などがごくごく一般的に良く行われているが

これらの操作はすべて 正式にサポートされていない 操作である。 

動的パフォーマンス・ビューでサポートされるのは、単純な問い合わせのみである。 (Oracle 11g R2 時点)

動的パフォーマンス・ビューの一覧(抜粋)

ビュー名説明
V$CONTROLFILEコントロールファイルの情報を提供する
V$LICENSEライセンスの制限に関する情報を提供する
V$SESSION現在のセッション情報を提供する
V$SQLSTATSSQL(カーソル)に関する統計データを提供する

動的パフォーマンス・ビューの連携

ビュー名説明
V$SESSION + V$PROCESSV$SESSION と V$PROCESS のリレーションもどき
V$SESSION + V$SQLSTATSV$SESSION と V$SQLSTATS のリレーションもどき

FIXED VIEW と FIXED TABLE

動的パフォーマンス・ビューは別名で「固定ビュー」(FIXED VIEW)と名前で登場することたまにがある。
⇒ ORA-02030: 固定表/固定ビューでは選択のみ可能です。

FIXED VIEW とは

FIXED ビューを構成する元表は、主に(すべて?) "X$..." で始まる「固定表」(FIXED TABLE)から構成されている。
FIXED ビューのビュー名やカラム名には Oracle の利用者がその機能と内容をイメージしやすい名称が付けられている。
ビューの説明やカラム一覧などは 「リファレンス・マニュアル」 で提供されている。

ちなみに固定表、固定ビューの固定とは、DBA も含めてユーザーからテーブル(ビュー)の値を変更することができない FIXED という意味である。 オラクルのインスタンスや環境の状態などによってテーブルの内容は逐次変更されており、テーブルのレコード内容が不変ということではない。

FIXED VIEW 一覧と定義

FIXED VIEW 一覧を取得するには以下の SQL を実行する。

SELECT * FROM V$FIXED_TABLE WHERE TYPE = 'VIEW'
ORDER BY NAME
NAMEOBJECT_IDTYPETABLE_NUM
GO$SQL_BIND_CAPTURE4294952035VIEW65537
GV$ACCESS4294951284VIEW65537
GV$ACTIVE_INSTANCES4294951353VIEW65537
GV$ACTIVE_SERVICES4294952092VIEW65537
… 続く

FIXED VIEW のビューの定義を取得するには以下の SQL を実行する。例では V$SESSION の定義を取得している。

SQL> SELECT * FROM V$FIXED_VIEW_DEFINITION
  2  WHERE VIEW_NAME = 'V$SESSION';
VIEW_NAME
------------------------------
VIEW_DEFINITION
----------------------------------------------------------------------------------------------------
V$SESSION
select  SADDR , SID , SERIAL# , AUDSID , PADDR , USER# , USERNAME , COMMAND , OWNERID, TADDR , LOCKW
AIT , STATUS , SERVER , SCHEMA# , SCHEMANAME ,OSUSER , PROCESS , MACHINE , PORT ,  TERMINAL , PROGRA
M , TYPE , SQL_ADDRESS , SQL_HASH_VALUE, SQL_ID, SQL_CHILD_NUMBER , SQL_EXEC_START, SQL_EXEC_ID, PRE
V_SQL_ADDR , PREV_HASH_VALUE , PREV_SQL_ID, PREV_CHILD_NUMBER , PREV_EXEC_START , PREV_EXEC_ID , PLS
QL_ENTRY_OBJECT_ID, PLSQL_ENTRY_SUBPROGRAM_ID, PLSQL_OBJECT_ID, PLSQL_SUBPROGRAM_ID, MODULE , MODULE
_HASH , ACTION , ACTION_HASH , CLIENT_INFO , FIXED_TABLE_SEQUENCE , ROW_WAIT_OBJ# , ROW_WAIT_FILE# ,
 ROW_WAIT_BLOCK# , ROW_WAIT_ROW# , TOP_LEVEL_CALL#,  LOGON_TIME ,  LAST_CALL_ET , PDML_ENABLED , FAI
LOVER_TYPE , FAILOVER_METHOD , FAILED_OVER, RESOURCE_CONSUMER_GROUP, PDML_STATUS, PDDL_STATUS, PQ_ST
ATUS, CURRENT_QUEUE_DURATION, CLIENT_IDENTIFIER, BLOCKING_SESSION_STATUS, BLOCKING_INSTANCE, BLOCKIN
G_SESSION, FINAL_BLOCKING_SESSION_STATUS, FINAL_BLOCKING_INSTANCE, FINAL_BLOCKING_SESSION, SEQ#, EVE
NT#,EVENT,P1TEXT,P1,P1RAW,P2TEXT,P2,P2RAW, P3TEXT,P3,P3RAW,WAIT_CLASS_ID, WAIT_CLASS#,WAIT_CLASS,WAI
T_TIME, SECONDS_IN_WAIT,STATE,WAIT_TIME_MICRO,TIME_REMAINING_MICRO, TIME_SINCE_LAST_WAIT_MICRO,SERVI
CE_NAME, SQL_TRACE, SQL_TRACE_WAITS, SQL_TRACE_BINDS, SQL_TRACE_PLAN_STATS, SESSION_EDITION_ID, CREA
TOR_ADDR, CREATOR_SERIAL#, ECID  from GV$SESSION where inst_id = USERENV('Instance')

FIXED TABLE とは

「固定表」 (FIXED TABLE) とは "X$..." という名前のオラクルの内部表の総称 
テーブル名やカラム名の命名が短縮表記されているなど、一般の技術者が扱いにくい構成となっている。
表の説明やカラム一覧などのマニュアルも用意されていない。

FIXED TABLE 一覧

FIXED TABLE 一覧を取得するには以下の SQL を実行する。

SELECT * FROM V$FIXED_TABLE WHERE TYPE = 'TABLE'
ORDER BY TABLE_NUM
NAMEOBJECT_IDTYPETABLE_NUM
X$KQFTA4294950912TABLE0
X$KQFVI4294950913TABLE1
X$KQFVT4294951149TABLE2
… 続く
日本オラクル
■ 日本オラクル 株式会社
■ オラクルマスター資格 (オラクルマスターとは
■ Oracle のライセンスがわからない…
Oracle Direct (ネットで聞いても最後はここで要確認)