【Oracle】データベースのバージョンを確認する方法|SQL・コマンドライン・GUIツール11パターン完全解説

【Oracle】データベースのバージョンを確認する方法|SQL・コマンドライン・GUIツール11パターン完全解説 Oracle

Oracleデータベースの管理や障害対応で、まず確認すべきことの一つがバージョン情報です。パッチの適用可否やSQL構文の互換性、サポート期限の確認など、バージョンを正確に把握することはDBA(データベース管理者)の基本スキルです。

この記事では、Oracleデータベースのバージョンを確認する11の方法を「SQL」「コマンドライン」「GUIツール」のカテゴリに分けて網羅的に解説します。それぞれの方法で必要な権限確認できる情報の違いも整理しているので、状況に応じた最適な方法を選べるようになります。

この記事で分かること

  • V$VERSIONPRODUCT_COMPONENT_VERSIONV$INSTANCE などSQLで確認する5つの方法
  • sqlplus -vOPatch などコマンドラインで確認する3つの方法
  • SQL DeveloperOracle Enterprise Manager などGUIで確認する3つの方法
  • バージョン番号(19.21.0.0.0)の各桁の意味と読み方
  • 12c以前と18c以降のバージョニング体系の変遷
  • 権限不足で確認できない場合の対処法
スポンサーリンク

Oracleのバージョン番号の読み方と体系

確認方法を見る前に、Oracleのバージョン番号が何を意味するかを理解しておくと、確認結果をより正しく読み解けます。

バージョン番号の構造

Oracleのバージョンは5桁のドット区切りで表記されます。

名称 例(19.21.0.0.0) 意味
1桁目メジャーバージョン19製品リリース番号(19c)
2桁目Release Update(RU)21四半期ごとの累積パッチ番号
3桁目Release Update Revision0RUの修正リビジョン
4桁目増分更新0個別パッチの増分番号
5桁目予約0将来の拡張用(通常は0)

バージョニング体系の変遷(12c以前 vs 18c以降)

バージョニング体系の変更点

12c以前(例: 12.1.0.2.0): 1桁目がメジャー、2桁目がマイナー、3桁目がメンテナンスリリースでした。パッチ適用はPSU(Patch Set Update)と呼ばれていました。

18c以降(例: 19.21.0.0.0): 年次リリースモデルに変更され、2桁目はRU(Release Update)に統一されました。18c = Oracle 18、19c = Oracle 19 のように、リリース年をバージョン名に使うようになりました。

この変更により、「Oracle 19c の RU 21が適用されている」のように、バージョンとパッチレベルがシンプルに読み取れるようになっています。

Oracle 23ai(2024年〜): 最新バージョンでは、従来の「c(cloud)」サフィックスから「ai」に変更されました。AI/ML機能の統合を強調するブランディングで、バージョン確認時には「Oracle Database 23ai」と表示されます。

エディションの種類

エディション 略称 用途
Enterprise EditionEE大規模システム・全機能利用可能
Standard Edition 2SE2中規模システム・コスト重視
Express EditionXE学習・開発用(無償)

エディションはバージョン確認時の出力に含まれます。たとえばV$VERSIONの結果に「Enterprise Edition」と表示されれば、EEライセンスで稼働していることが分かります。

【SQL】Oracleデータベースのバージョンを確認する方法(5選)

SQL*PlusやSQL Developerなど、SQLを実行できる環境があれば、以下のビューやパッケージからバージョンを確認できます。

方法1: V$VERSION ビュー(最も一般的)

V$VERSIONは、Oracleデータベースの各コンポーネント(DB本体、PL/SQL、CORE、TNS、NLSRTLなど)のバージョンを一覧で確認できる最もポピュラーな方法です。

SQL — V$VERSION でバージョンを確認

-- 全コンポーネントのバージョンを表示
SELECT * FROM v$version;

-- BANNER列のみ(シンプルに確認したい場合)
SELECT banner FROM v$version;

▼ 実行結果の例

BANNER
—————————————————————-
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 – Production
PL/SQL Release 19.0.0.0.0 – Production
CORE   19.0.0.0.0   Production
TNS for Linux: Version 19.0.0.0.0 – Production
NLSRTL Version 19.0.0.0.0 – Production

18c以降: BANNER_FULL 列を使う

Oracle 18c以降ではBANNER_FULL列が追加されています。この列にはRU(Release Update)のバージョンまで含まれるため、パッチ適用状況をより正確に確認できます。

SELECT BANNER_FULL FROM v$version WHERE ROWNUM = 1;

出力例: Oracle Database 19c Enterprise Edition Release 19.21.0.0.0 - Production Version 19.21.0.0.0

また、BANNER_LEGACY列は旧形式(12c以前互換)のバナー文字列を返します。

方法2: PRODUCT_COMPONENT_VERSION ビュー

PRODUCT_COMPONENT_VERSIONは、製品コンポーネントごとの詳細バージョンを確認できるビューです。V$VERSIONとの違いとして、VERSION_FULL列でRUバージョンまで確認できる点があります。

SQL — PRODUCT_COMPONENT_VERSION でバージョンを確認

SELECT
  product,
  version,
  version_full,
  status
FROM product_component_version;

▼ 実行結果の例

PRODUCT                     VERSION      VERSION_FULL   STATUS
——————————— ———– ————– ———-
Oracle Database 19c EE        19.0.0.0.0   19.21.0.0.0    Production

VERSION列は初期インストール時のバージョン、VERSION_FULL列はRU適用後の現在のバージョンを返します。パッチ適用状況を確認したい場合はVERSION_FULL列を見てください。

方法3: V$INSTANCE ビュー

V$INSTANCEはインスタンスの稼働情報とバージョンを同時に確認できるビューです。日本語圏の記事ではあまり紹介されていませんが、インスタンス名やホスト名と一緒にバージョンを確認したい場合に便利です。

SQL — V$INSTANCE でバージョンとインスタンス情報を確認

SELECT
  instance_name,
  host_name,
  version,
  version_full,
  status,
  edition
FROM v$instance;

▼ 実行結果の例

INSTANCE_NAME  HOST_NAME   VERSION       VERSION_FULL   STATUS  EDITION
————-  ———-  ———–   ————– ——  ———-
orcl           dbserver01  19.0.0.0.0    19.21.0.0.0    OPEN    EE

VERSION_FULL列は18c以降で利用可能です。EDITION列でエディション(EE / SE2 / XE)も同時に確認できます。複数インスタンスが稼働するRAC環境では、インスタンスごとのバージョンを確認する際にも活用できます。V$系ビューを使ったSQL確認は「V$SQLビューで直前に発行されたSQLを確認する方法」でも活用例を紹介しています。

方法4: DBMS_DB_VERSION パッケージ

DBMS_DB_VERSIONは、PL/SQLプログラム内でバージョンに応じた条件分岐を行いたい場合に特に有用なパッケージです。定数として定義されているため、動的なSQLを使わずにバージョン判定ができます。

SQL — DBMS_DB_VERSION でバージョンを確認

-- メジャーバージョンとリリース番号を表示
BEGIN
  DBMS_OUTPUT.PUT_LINE(
    'Version: ' || DBMS_DB_VERSION.VERSION
    || '.' || DBMS_DB_VERSION.RELEASE
  );
END;
/

▼ 実行結果の例

Version: 19.0

PL/SQL — バージョンに応じた条件分岐の例

-- 実行時: バージョンに応じた条件分岐
BEGIN
  IF DBMS_DB_VERSION.VERSION >= 19 THEN
    DBMS_OUTPUT.PUT_LINE('19c以降の処理を実行');
  ELSE
    DBMS_OUTPUT.PUT_LINE('旧バージョン向けの処理を実行');
  END IF;
END;
/

▼ DBMS_DB_VERSION で利用可能な主な定数

定数名 説明
VERSIONNUMBERメジャーバージョン(例: 19)
RELEASENUMBERリリース番号(例: 0)
VER_LE_11BOOLEANバージョンが11以下ならTRUE
VER_LE_12BOOLEANバージョンが12以下ならTRUE
VER_LE_19BOOLEANバージョンが19以下ならTRUE

PL/SQL — コンパイル時の条件付きコンパイル($IF/$THEN)

-- $IF でコンパイル時にバージョン判定(実行時でなく静的に判定)
CREATE OR REPLACE PROCEDURE my_proc AS
BEGIN
  $IF DBMS_DB_VERSION.VER_LE_12 $THEN
    -- 12c以下の環境向けコード
    DBMS_OUTPUT.PUT_LINE('12c以下');
  $ELSE
    -- 18c以降の新機能を利用するコード
    DBMS_OUTPUT.PUT_LINE('18c以降');
  $END
END;
/

$IF/$THENによる条件付きコンパイルは、実行時のIF文と異なりコンパイル時に不要なコードが除外されます。異なるバージョンのOracle環境で同じソースを共有する場合に特に有用です。

方法5: DBA_REGISTRY ビュー

DBA_REGISTRYは、データベースに登録されている各コンポーネントのバージョンとステータスを確認できるビューです。パッチ適用後にコンポーネントが正しくアップグレードされているかの検証に役立ちます。

SQL — DBA_REGISTRY でコンポーネント別バージョンを確認

SELECT
  comp_name,
  version,
  version_full,
  status
FROM dba_registry
ORDER BY comp_name;

▼ 実行結果の例

COMP_NAME                     VERSION      VERSION_FULL   STATUS
——————————  ———–  ————– ——-
Oracle Database Catalog Views  19.0.0.0.0   19.21.0.0.0    VALID
Oracle Database Packages       19.0.0.0.0   19.21.0.0.0    VALID
Oracle XML Database            19.0.0.0.0   19.21.0.0.0    VALID

STATUSが「VALID」なら正常です。パッチ適用後に「INVALID」になっている場合は、datapatchutlrp.sqlの実行が必要です。このビューの参照にはDBA権限が必要です。ユーザー権限の確認方法は「Oracleユーザ権限を確認する方法」を参照してください。

【コマンドライン】DBに接続せずにバージョンを確認する方法

SQLの実行環境がない場合や、データベースが起動していない状態でもバージョンを確認できる方法です。

方法6: SQL*Plusログイン時のバナー表示

SQL*Plusでデータベースに接続すると、自動的にサーバーとクライアント両方のバージョンがバナーとして表示されます。

ターミナル — SQL*Plusでの接続時

$ sqlplus sys/password as sysdba

SQL*Plus: Release 19.0.0.0.0 - Production on Tue Mar 4 12:00:00 2026
Version 19.21.0.0.0

Copyright (c) 1982, 2024, Oracle.  All rights reserved.

Connected to:
Oracle Database 19c Enterprise Edition Release 19.0.0.0.0 - Production
Version 19.21.0.0.0

上部の「SQL*Plus: Release …」がクライアント側、「Connected to:」以降がサーバー側のバージョンです。

方法7: sqlplus -v(クライアントバージョンの確認)

データベースに接続せずに、ローカルにインストールされているSQL*Plusクライアントのバージョンだけを確認できます。

ターミナル — クライアントバージョンの確認

$ sqlplus -v
SQL*Plus: Release 19.0.0.0.0 - Production
Version 19.21.0.0.0

# -version でも同じ結果
$ sqlplus -version
SQL*Plus: Release 19.0.0.0.0 - Production
Version 19.21.0.0.0

注意: クライアントとサーバーのバージョンは異なる場合がある

sqlplus -vで表示されるのはクライアント(SQL*Plus)のバージョンです。サーバー側のデータベースバージョンとは異なる場合があるため、サーバーバージョンを確認する場合は接続後にV$VERSION等を使用してください。

方法8: OPatch コマンド(パッチ適用状況の確認)

OPatchは、Oracleのパッチ管理ツールです。V$VERSIONでは確認できない個別パッチやPSU/RUの適用状況を詳細に確認できます。

ターミナル — OPatch でパッチ状況を確認

# 適用済みパッチの一覧を表示
$ $ORACLE_HOME/OPatch/opatch lspatches

35648110;Database Release Update : 19.21.0.0.241015 (35648110)
29585399;OCW RELEASE UPDATE 19.3.0.0.0 (29585399)

OPatch succeeded.

# 詳細情報を表示
$ $ORACLE_HOME/OPatch/opatch lsinventory -detail

V$VERSION とOPatch の使い分け

V$VERSIONはデータベースが起動している状態で、SQL経由でバージョンを確認します。一方、OPatchOSレベルでORACLE_HOMEに適用されたパッチを確認します。

RU適用後にdatapatchが未実行の場合、V$VERSIONの表示が古いままでOPatchの結果と不一致になることがあります。パッチ適用の完全性を確認するには両方をチェックするのが確実です。

【GUIツール】画面操作でOracleバージョンを確認する方法

方法9: SQL Developer

Oracle SQL Developerでは、以下の2つの方法でバージョンを確認できます。

SQL Developer でバージョンを確認する手順

方法A: レポート機能
  1. メニュー → 表示レポート
  2. データ辞書レポートデータベースについてバージョン・バナー
  3. 対象の接続を選択 → バージョン情報が表示される

方法B: SQLワークシート
  1. 対象のデータベースに接続
  2. SQLワークシートで SELECT * FROM v$version; を実行
  3. 結果グリッドにバージョン一覧が表示される

レポート機能は視覚的に分かりやすく、SQLワークシートはコピー&ペーストで結果を共有しやすいメリットがあります。

方法10: Oracle Enterprise Manager(OEM)

Oracle Enterprise Manager Express(18c以降)またはCloud Controlがインストールされている場合、ブラウザから確認できます。

OEM Express のアクセスURL

-- OEM Express のURLを確認
SELECT DBMS_XDB_CONFIG.GETHTTPSPORT() FROM dual;

-- 通常は https://hostname:5500/em でアクセス可能

OEMのダッシュボードにログインすると、トップページにデータベースのバージョン、エディション、ホスト情報が表示されます。Web上で確認できるため、ssh接続やSQL実行が不要な点がメリットです。

方法11: A5:SQL Mk-2(サードパーティツール)

A5:SQL Mk-2はフリーのSQL開発ツールです。Oracleに接続後、管理者ツールメニューからバージョン情報を確認できます。また、SQLエディタでSELECT * FROM v$version;を直接実行する方法もあります。

確認方法の比較表(どの方法をいつ使うべきか)

方法 DB接続 必要な権限 確認できる情報 おすすめ場面
V$VERSION必要CREATE SESSION全コンポーネントのバージョン一般的なバージョン確認
PRODUCT_COMPONENT_VERSION必要CREATE SESSIONVERSION_FULL(RUレベル)パッチレベルの確認
V$INSTANCE必要CREATE SESSIONバージョン + インスタンス情報RAC環境 / インスタンス確認
DBMS_DB_VERSION必要EXECUTE権限メジャー・リリース番号PL/SQL内でのバージョン分岐
DBA_REGISTRY必要DBA権限コンポーネント別ステータスパッチ適用後の検証
SQL*Plusバナー必要接続権限サーバー + クライアント接続時に即確認したい場合
sqlplus -v不要なしクライアントバージョンDB未起動時 / クライアント確認
OPatch不要OS権限適用済みパッチの詳細一覧パッチ適用状況の確認
SQL Developer必要接続権限レポート画面で視覚的に確認GUI環境での確認
OEM Express必要SYSDBA / DBAダッシュボードで視覚的に確認管理者ダッシュボードでの確認
A5:SQL Mk-2必要接続権限管理者ツールで確認サードパーティツール利用時

よくあるトラブルと対処法

V$VERSIONにアクセスできない(権限不足)

エラーメッセージ

ORA-00942: table or view does not exist

一般ユーザーにはV$ビューへのアクセス権限がデフォルトで付与されていない場合があります。DBA権限を持つユーザーに依頼して、以下のいずれかの対応をしてください。

SQL — V$VERSION への参照権限を付与

-- 特定ユーザーにV$VERSIONの参照権限を付与
GRANT SELECT ON v_$version TO username;

-- または SELECT_CATALOG_ROLE を付与(全辞書ビューの参照権限)
GRANT SELECT_CATALOG_ROLE TO username;

権限がもらえない場合は、sqlplus -v(DB接続不要)やDBMS_DB_VERSIONパッケージでの確認を試してみてください。権限の確認方法については「Oracleユーザ権限を確認する方法」、ユーザー作成やスキーマ管理は「Oracleスキーマを作成する方法」で詳しく解説しています。

V$VERSIONのバージョンが古い(パッチ適用が反映されていない)

RUを適用した後、V$VERSIONの表示が更新されない場合があります。原因はdatapatchの未実行です。

ターミナル — datapatch を実行してパッチを反映

# データベース起動後に実行
$ $ORACLE_HOME/OPatch/datapatch -verbose

# 確認: OPatchとV$VERSIONの結果を比較
$ $ORACLE_HOME/OPatch/opatch lspatches

CDB/PDB(マルチテナント)環境での注意点

マルチテナント環境のバージョン確認

12c以降のマルチテナント構成(CDB/PDB)では、CDB(コンテナ・データベース)PDB(プラガブル・データベース)でバージョンを確認する必要があります。

V$VERSIONV$INSTANCECDBレベルの情報を返します。PDB固有のパッチ状況を確認するには、対象のPDBに接続した上でDBA_REGISTRY_SQLPATCHビューを使用します。

SELECT patch_id, description, status FROM dba_registry_sqlpatch ORDER BY action_time DESC;

まとめ

Oracleバージョン確認のポイント

✔ 最も手軽な方法は SELECT * FROM V$VERSION(SQL実行環境があれば即確認可能)
RUレベルまで正確に知りたい場合は BANNER_FULL 列または PRODUCT_COMPONENT_VERSION
パッチ適用状況を詳細に確認するなら OPatch lspatches
PL/SQL内で条件分岐するなら DBMS_DB_VERSION パッケージ
DB未起動時sqlplus -vOPatch で確認可能

状況や権限に応じて最適な方法を選びましょう。基本はV$VERSIONで十分ですが、パッチ管理や障害調査ではOPatchDBA_REGISTRYの併用が確実です。

関連記事として、「Oracleユーザ権限を確認する方法」「Oracle表領域の作成・削除・変更・確認方法」「Oracleデータベース内の全テーブルを確認する方法」「SQLの実行計画を確認する方法」も参考にしてください。