Oracleのgv$ビューとは?各インスタンスのv$ビューと何が違うのかも解説!

Oracle Master Gold

Oracleデータベースの管理やパフォーマンス分析では、v$sessionv$sqlといった動的パフォーマンスビューを使うのが基本です。
しかし、RAC(Real Application Clusters)環境では、それだけでは片手落ち。
このようなマルチインスタンス環境で活躍するのが、gv$ビュー(Global V$ View)です。

本記事では、以下のポイントを含めて、初心者にも分かりやすく解説します。

💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?

Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?


✅ この記事でわかること

  • gv$ビューとは何か
  • v$ビューとの違い(特に「各インスタンスでv$を見るのと同じか?」という疑問への答え)
  • gv$ビューの構造と特徴
  • よく使うgv$ビューと使用例
  • スタンドアロン環境での扱い方
  • 実務で役立つSQL例と図解

🔹 gv$ビューとは?

gv$ビュー(Global V$ View)とは、Oracle RAC環境で各インスタンスの情報を一括で取得できるビューです。
通常のv$ビューは、自分が接続しているインスタンスの情報しか見えません。これに対して、gv$ビューは全インスタンスの情報をまとめて取得できます。


🔸 各インスタンスでv$を見るのと同じなの?

結論から言うと、似ているが完全には同じではありません。

項目各インスタンスでv$ビューを見るgv$ビューを使う
アクセス方法各ノードにログインして確認が必要一括で取得可能
結果の統一性手動で集約する必要あり自動的に全インスタンス統合
作業効率非常に手間がかかる効率的に全体を可視化可能
必要な列INST_ID列は存在しないINST_IDで識別可能

つまり、「各インスタンスでv$ビューを見る」のは手間がかかりすぎます。gv$ビューはその手間を省き、RAC全体を一元的に見るための標準的手段です。


🔹 gv$ビューの構造(図解)

┌─────────────┐     ┌─────────────┐     ┌─────────────┐
│ Instance 1 │ │ Instance 2 │ ... │ Instance N │
│ (v$session) │ │ (v$session) │ │ (v$session) │
└──────┬──────┘ └──────┬──────┘ └──────┬──────┘
│ │ │
▼ ▼ ▼
┌────────────────────────────────────┐
│ gv$session (統合ビュー) │
│ INST_ID によりインスタンス識別が可能 │
└────────────────────────────────────┘

🔸 gv$ビューの特徴

  • INST_ID列で各インスタンスの情報を識別できる
  • RAC構成での障害解析・性能分析に必須
  • SQLで一括取得できるため、自動化・スクリプト化にも最適
  • スタンドアロン環境でも利用可能INST_ID = 1のみ)

🔹 使用例:全インスタンスのアクティブセッションを確認

SELECT inst_id, sid, username, status
FROM gv$session
WHERE username IS NOT NULL
AND status = 'ACTIVE';

これにより、クラスタ全体でどのユーザーがアクティブかを即座に把握できます。

💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?

Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?


🔹 使用例:インスタンス一覧を取得

SELECT inst_id, instance_name, host_name, version, status
FROM gv$instance;

実行結果イメージ:

INST_IDINSTANCE_NAMEHOST_NAMEVERSIONSTATUS
1RAC1node0119.0.0OPEN
2RAC2node0219.0.0OPEN

🔹 よく使うgv$ビュー一覧

ビュー名用途
gv$sessionセッション情報(ユーザー・ステータスなど)
gv$system_eventシステム全体の待機イベント統計
gv$session_wait各セッションのリアルタイム待機状況
gv$sql実行中SQLの情報(CPU使用や実行回数など)
gv$instance各インスタンスの基本情報
gv$lockロック競合の発生状況
gv$enqueue_statエンキュー(ロック)統計の集計

🔸 スタンドアロン環境でも使える?

はい。RAC環境でなくてもgv$ビューは使用可能です。
この場合、常にINST_ID = 1のみが返ります。

SELECT DISTINCT inst_id FROM gv$instance;
-- → 1(スタンドアロン)と表示されればOK

スタンドアロンでも将来のRAC対応を見越してスクリプトにgv$を使うのはおすすめです。


🔹 実務での活用例

✅ ロック確認(全インスタンス)

SELECT inst_id, sid, type, lmode, request, block
FROM gv$lock
WHERE block = 1 OR request > 0;

✅ SQLの実行状況を全体把握

SELECT inst_id, sql_id, executions, cpu_time, elapsed_time
FROM gv$sql
WHERE executions > 0
ORDER BY cpu_time DESC;

🔸 まとめ

項目内容
gv$ビューとはRAC環境で全インスタンスの情報を一括取得するビュー
v$ビューとの違いv$は1インスタンスのみ、gv$は全体をカバー
各インスタンスでv$を見るのと同じ?手間も精度も違う。gv$が正解。
実用性性能分析・障害対応・運用監視に必須
スタンドアロンでも使用可?はい(INST_ID = 1


[参考]
Oracle® Database データベース概要 19c

💰 【PR】Oracleエンジニアの市場価値、調べてみませんか?

Oracleのスキルは需要が高く、特定の資格や経験を持っていると年収が大幅にアップするケースがあります。まずはIT専門のエージェントで非公開求人をチェックしてみませんか?

コメント

タイトルとURLをコピーしました