Oracleデータベースの管理や障害対応で、まず確認すべきことの一つがバージョン情報です。パッチの適用可否やSQL構文の互換性、サポート期限の確認など、バージョンを正確に把握することはDBA(データベース管理者)の基本スキルです。
この記事では、Oracleデータベースのバージョンを確認する11の方法を「SQL」「コマンドライン」「GUIツール」のカテゴリに分けて網羅的に解説します。それぞれの方法で必要な権限や確認できる情報の違いも整理しているので、状況に応じた最適な方法を選べるようになります。
この記事で分かること
- V$VERSION・PRODUCT_COMPONENT_VERSION・V$INSTANCE などSQLで確認する5つの方法
- sqlplus -v・OPatch などコマンドラインで確認する3つの方法
- SQL Developer・Oracle Enterprise Manager などGUIで確認する3つの方法
- バージョン番号(19.21.0.0.0)の各桁の意味と読み方
- 12c以前と18c以降のバージョニング体系の変遷
- 権限不足で確認できない場合の対処法
Oracleのバージョン番号の読み方と体系
確認方法を見る前に、Oracleのバージョン番号が何を意味するかを理解しておくと、確認結果をより正しく読み解けます。
バージョン番号の構造
Oracleのバージョンは5桁のドット区切りで表記されます。
バージョニング体系の変遷(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」と表示されます。
エディションの種類
エディションはバージョン確認時の出力に含まれます。たとえば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;
▼ 実行結果の例
—————————————————————-
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;
▼ 実行結果の例
——————————— ———– ————– ———-
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;
▼ 実行結果の例
————- ———- ———– ————– —— ———-
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; /
▼ 実行結果の例
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 で利用可能な主な定数
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;
▼ 実行結果の例
—————————— ———– ————– ——-
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」になっている場合は、datapatchやutlrp.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経由でバージョンを確認します。一方、OPatchはOSレベルで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;を直接実行する方法もあります。
確認方法の比較表(どの方法をいつ使うべきか)
よくあるトラブルと対処法
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$VERSIONやV$INSTANCEはCDBレベルの情報を返します。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実行環境があれば即確認可能)
BANNER_FULL 列または PRODUCT_COMPONENT_VERSION
OPatch lspatches
DBMS_DB_VERSION パッケージ
sqlplus -v や OPatch で確認可能
状況や権限に応じて最適な方法を選びましょう。基本はV$VERSIONで十分ですが、パッチ管理や障害調査ではOPatchとDBA_REGISTRYの併用が確実です。
関連記事として、「Oracleユーザ権限を確認する方法」「Oracle表領域の作成・削除・変更・確認方法」「Oracleデータベース内の全テーブルを確認する方法」「SQLの実行計画を確認する方法」も参考にしてください。
