Oracleバージョン番号・表記の意味を抑えよう

Oracle データベースには、一定期間毎にそのリリースに対して作成された
不具合修正パッチが配布されており、PSR・PSU・CPU・個別パッチ がある。
個別パッチ以外は全て累積型であるため、最新リリースを適用することで
それまでの全ての修正を行うことができる。

Oracle12c, 18c でのバージョン表記


【2019/2/6 追記】
Oracle12c では、11g以前と同様に、以下のようになっている。
12c R1:12.1.0.2.0
12c R2:12.2.0.1.0
Oracle 18c からは、年次リリースとなり、クォータ単位のサポートサイクルに
変わるため、バージョン表記の意味合いが変わってくる。詳細はあらためて
解説記事を作る予定だが、以下のようになる。19c 以降もこの感じになりそうだ。
18c:18.4.1
リリース番号.アップデート番号.リビジョン

パッチの種類と確認コマンド

PSR (Patch Set Release)

安定したパッチセットであり、重要度の高いバグをフィックス可能。
後述の PSU や CPU 等を適用する上での前提条件であることも多い。
パッチの確認は、下記を参照した時に、バージョン番号の 4 桁目で識別できる。

select * from v$version;

例えば 10.2.0.5.0 ならPSRの 5 が適用済み、11.1.0.7.0 なら PSR の 7 が
適用済みであることがわかる。必ずしも 1 から配布されているわけではなく、
例えば Oracle11gR1 なら、 11.1.0.6.0 が初期出荷バージョンである。

PSRを適用する場合は、Oracle Universal Installer ( OUI )で Oracle ソフトウェアを更新し、
その後 dbua でデータベースのアップグレードを行う手順となる。

PSU(Patch Set Update)

四半期毎にリリースされる累積型の修正パッチであり、PSR 毎に提供されている。
パッチの確認は、下記を参照した時に、バージョン番号の 5 桁目で識別できる。
(未適用の場合は 0 )

select * from v$version;

例えば 10.2.0.5.4 なら、PSR 10.2.0.5 に対しての PSU 4 が適用済み、
11.1.0.7.5 なら、PSR 11.1.0.7 の PSU の 5 が適用済みであることがわかる。

PSU を適用する場合は、Oracle Universal Installer ( OUI )ではなく、
OPatch というパッチ適用ユーティリティを使用する。対象の PSU によっては
OPatch のバージョンについても前提条件があるので要確認。

CPU(Critical Patch Update)

PSU と同様に四半期毎にリリースされる、累積型のセキュリティ修正パッチ。

CPU は PSU の中にバンドルされていることが多いので、PSU を適用した後に個別に
CPU を適用する必要があるか確認。PSR や PSU とは異なり、v$version では
参照できない。(パッチの確認は、opatch lsinventory コマンドで参照する)

CPU を適用する場合は、Oracle Universal Installer(OUI)ではなく、
OPatch というパッチ適用ユーティリティを使用する。対象の CPU によっては
OPatch のバージョンについても前提条件があるので確認すること。

個別パッチ

次期 PSR や PSU などがリリースされるまでの間(またはリリース予定のない
バグ対処のため)、作成されるパッチの最少単位。

基本的には、回避策のないクリティカルな問題に対応するための手段であり、
環境によっては競合が発生する可能性があるため、慎重に行うべきである。

例えば、個別パッチ A を適用してある環境に、個別パッチ B を適用を試みたが、
B で修正されるモジュールが A と同じだったため、個々のパッチの修正自体に
問題は無いのにも関わらず、競合が発生するというケースもある。

つまりバグ対処を行える反面、適用すればするほど、以後アップデート時の際に
前提条件が増える可能性が高いということ。(Oracle に限ったことではない)

将来的に、その個別パッチが PSR や PSU 等にバンドルされることもあるので、
クリティカルな場合を除き、積極的に適用しないというスタンスでよいと思う。

関連記事