ORACLEデータベース運用時に常時取得すべき情報
本ページではORACLEデータベース運用時に最低限常時収集するべき情報について記載しています。 これらの情報は永続的に残りつづける情報ではなく、その時点で取得していないと消えてしまうものが多い為常時定期的に収集する必要があります。
セッション情報系
- V$SESSION(status='ACTIVE' and TYPE='USER'といった現在稼働中セッションの情報は1分毎、全件を対象に10分毎に収集する。現在実行中のSQL(SQL_ID)や待機中のイベント(EVENT)、ログオン時刻(LOGON_TIME)等有用な情報が多く含まれるので収集必須)
- V$PROCESS(基本的にV$SESSIONと結合して一括収集する。主にプロセス毎のメモリ確保量とSPID(OSのPID)の情報を収集する)
- V$LOCK(TXやTMエンキューを保持/待機しているセッションが特定可能。こちらも1分毎程度に収集する)
領域系(ユーザ表領域、UNDO表領域、一時表領域)
- DBA_DATA_FILES
- DBA_EXTENTS
- DBA_FREE_SPACE
- DBA_UNDO_EXTENTS
- DBA_TABLESPACES
- GV$SORT_SEGMENT
上記は全て結合し1SQLでまとめて収集してしまったほうが確認しやすい。領域不足エラーはSQLや実行計画が不適切になると短時間で発生する場合が多い為取得間隔は5分間隔程度と短めにする。SQL例は以下を参照のこと
表領域使用率確認スクリプト性能系
- statspack or AWR snapshot (20分間隔位のsnap収集を推奨。システム全体の問題はこれだけでおおよそ把握可能)
- V$SQL(全件収集すると膨大な量になる環境もあるため10分間隔でwhere last_active_time > sysdate-(10/24/60)等の条件で絞ったものを収集するとよい。 statspack or AWRで収集されない軽微なSQLや時間経過による推移を確認できる)
- V$SESSION_EVENT(5分間隔程度で収集。セッション単位の待機イベントの待機時間が確認できる))