2015年12月7日月曜日

Oracle Databaseで私がよく見るV$表

今回の記事は、弊社バルテックのアドベントカレンダーにエントリーしています。

Oracle Databaseには現在の状態を調べたいときに確認できるV$表(動的パフォーマンスビュー)というビューが存在しています。
※SQLServerでは同じようなビューとして「動的管理ビュー」が用意されていますね。
V$表の確認にはDBA権限が必要です。RAC環境ではGV$表で確認すると、RAC環境のすべてのインスタンスを取得することができます。

V$表は数百も用意されていますので、さすがにすべて紹介することはできません。今日は私が良く見るV$表を紹介します。


v$instance
現行インスタンスの状態を確認できます。
インスタンスとは、データベースシステムのまとまりのことを言います。
インスタンス名、ホスト名、起動状態などを確認できます。
様々な管理作業をする際、作業対象が想定したものであるかを確認する際に使用します。
https://docs.oracle.com/cd/E16338_01/server.112/b56311/dynviews_2002.htm

v$database
データベースの状態を確認できます。
データベース名、アーカイブログモード、データベースロールなどを確認できます。
https://docs.oracle.com/cd/E16338_01/server.112/b56311/dynviews_1097.htm

v$session
現在実行中のセッションの状態を確認できます。
SQLID、待機イベント、ログイン時間、待機時間などを確認できます。
SQLの長時間化を調査する際に、対象を絞り込むときに使っています。
https://docs.oracle.com/cd/E16338_01/server.112/b56311/dynviews_3016.htm
履歴はv$active_session_historyに記録されています。
https://docs.oracle.com/cd/E16338_01/server.112/b56311/dynviews_1007.htm

v$sql
共有SQL領域にあるSQLの実行回数、SQLテキスト、書き込み読み込みの累計時間、待機時間の累計時間などを確認できます。
SQLIDからSQLテキストを確認できるため、SQLの内容を確認する際に使っています。
https://docs.oracle.com/cd/E16338_01/server.112/b56311/dynviews_3043.htm

v$datafile
データベースに紐づいているデータファイルの状態を確認できます。
表領域名とデータファイルのフルパス、最終変更時間、サイズ、状態(オンライン、オフライン、リカバリ要など)を確認できます。
同じ筺体内に複数インスタンスのデータファイルが混在している場合などに、内容を確認するのに使っています。
https://docs.oracle.com/cd/E16338_01/server.112/b56311/dynviews_1100.htm

v$parameter
現在有効となっている初期化パラメータの値を確認できます。
spfileですとファイルの中身を見ても内容を確認できないので、ちょっと調べたい場合に便利です。
show parameterもありますけど。
http://docs.oracle.com/cd/E16338_01/server.112/b56311/dynviews_2087.htm


他にも様々なv$表がありますので、気になった方は調べてみてはいかがでしょうか。

3 件のコメント:

  1. この一覧は便利ですね
    私もよくVIEW名忘れて、ぐぐり直したりするんで非常に助かります。

    返信削除
  2. PG中はあまり使用頻度は高くないですが、たまーに見たりするので、まとめてくれてありがとうございます!

    返信削除
  3. >kannoさん
    私もVIEW名はたまに忘れてしまいます。
    普段からある程度まとめてありますが、いざ調査で本番環境に入るときはぱっと出てこないことがありますので、そういうときはdba_viewsで名前を調べたりしていますね。

    >sasakiさん
    今回紹介したものはどちらかというとインフラ寄りのものですが、
    SQLネタだとv$sqltextとかv$sqlplanも使うかもしれませんね。
    v$sqlplanできれいに実行計画を表示させるのは難しいですけど。。

    返信削除