動的パフォーマンス・ビュー
⇒ 静的データ・ディクショナリ・ビュー
動的パフォーマンス・ビューはデータベースが稼働している間、データベース・サーバーが継続的に更新している特別なビューである。
動的パフォーマンス・ビューはデータベースの内部のメモリ構造やメモリの状態を反映している参照専用のビューであり、その特性から読み取り一貫性は保証されていない。
さらに、運用監視スクリプトなどで 動的パフォーマンス・ビューの 「ORDER BY」、「結合」、「GROUP BY」処理などがごくごく一般的に良く行われているが
これらの操作はすべて 正式にサポートされていない 操作である。
動的パフォーマンス・ビューでサポートされるのは、単純な問い合わせのみである。 (Oracle 11g R2 時点)
動的パフォーマンス・ビューの一覧(抜粋)
動的パフォーマンス・ビューの連携
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
NAME | OBJECT_ID | TYPE | TABLE_NUM |
GO$SQL_BIND_CAPTURE | 4294952035 | VIEW | 65537 |
GV$ACCESS | 4294951284 | VIEW | 65537 |
GV$ACTIVE_INSTANCES | 4294951353 | VIEW | 65537 |
GV$ACTIVE_SERVICES | 4294952092 | VIEW | 65537 |
… 続く |
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
NAME | OBJECT_ID | TYPE | TABLE_NUM |
X$KQFTA | 4294950912 | TABLE | 0 |
X$KQFVI | 4294950913 | TABLE | 1 |
X$KQFVT | 4294951149 | TABLE | 2 |
… 続く |