Oracleデータベースの管理やパフォーマンス分析では、v$sessionやv$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_ID | INSTANCE_NAME | HOST_NAME | VERSION | STATUS |
|---|---|---|---|---|
| 1 | RAC1 | node01 | 19.0.0 | OPEN |
| 2 | RAC2 | node02 | 19.0.0 | OPEN |
🔹 よく使う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




コメント