Oracle Databaseのアップグレードを検討する際の基本情報

この記事は、[JPOUG Advent Calendar 2023](https://adventar.org/calendars/8844) 4日目の記事です。3日目は charade_oo4 さんの記事 [「Oracle on Hyper-V 2023: RC Memo」](http://charade.seesaa.net/article/501451358.html)でした。

#### 概要
Oracle Databaseを運用するにあたり、パッチ提供を含むサポートサービスを継続して受けるリリースを利用し続けることは、データベースを安心して利用し続ける観点では重要なポイントです。

すべてのソフトウェアに共通ですが、ソフトウェアのリリース毎にパッチ提供を含むサポートサービスをベンダーから受けられる時期・期間が設定されているので、定期的にアップグレードを検討することが必要になってきます。

Oracle Databaseのアップグレード（メジャーリリースのアップグレード）を検討する場合、アップグレードの影響などを机上で検討することになります。その際に参考となる情報に関しては、オラクルのサポートサービスのサイト（My Oracle Support）の文書やマニュアルなどを中心に参照することができます。

本記事ではそのような調査のための情報源をお伝えします。基本的にオンプレミス環境のLinuxプラットフォームでのOracle Databaseに関する情報をお伝えします。OS毎に異なる情報はあまり触れませんが、多くの情報はOSに依存しない共通の情報です。

**記事の中で、My Oracle Support（MOS）の文書を多く紹介します。これは基本オラクルのサポートサービスの契約にともなってサイトへログインして参照できる情報です（MOSのサイトから参照できる情報です）。アップグレードのため調査にあったっては、サポート契約がされている場合、My Oracle Supportのサイトへのアクセスができるように調整して、その上で調査することがおすすめです。
例えば「Release Schedule of Current Database Releases (Doc ID 742060.1)」は、OS毎、リリース毎に提供予定のスケジュールを参照するための文書です。（多くのオラクル社からのドキュメントでリファーされています）MOSからでなくとも、下記URLから参照することもできます。**

[Release Schedule of Current Database Releases (Doc ID 742060.1)](https://support.oracle.com/knowledge/Oracle%20Database%20Products/742060_1.html)
**このページではMOSの該当のページを公開する形で参照できるようにされています。しかしながら、ページのアップデートのタイミングなどを考えると、最新の情報ではないので、できる限りMOSにログインして該当ドキュメントIDを参照することがよいです。下記のスクリーンショットは、MOSのページからDoc ID 742060.1を参照した場合の例です。**

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368742/5beecb79-2066-2139-0060-c126caaabe23.png)

2023年12月ごろの情報・環境を元に本記事は記載しています。

#### 1. Oracle Databaseのリリースモデル
Oracle Databaseのアップグレードを検討するにあたり、リリースモデルを理解することが必要です。その点から説明していきます。

Oracle Databaseのリリース（バージョン）を示す番号があります。細かくは5つの数字セグメントからなるのですが、近年のOracle Databaseのリリースに関して、このリリース番号は、まずは最初の2桁が重要です。

![スクリーンショット 2023-12-03 231758.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368742/aa681a95-7daa-4067-71ae-f8ed96704385.png)

図はOracle Database 19cでの例です。最初の数字がメジャーリリースを、2つ目がメジャーリリースにおける集積パッチのレベルを表します。集積パッチはリリースアップデート（Release Update = RU）と呼ばれています。Oracle DatabaseのドキュメントなどでRUと記載されている場合、このリリースアップデートが該当します。

[参考：マニュアル「Oracle Database 19c アップグレードガイド：1 Oracle Databaseのアップグレードの概要：Oracle Databaseのリリース番号について](https://docs.oracle.com/cd/F19136_01/upgrd/oracle-database-release-numbers.html#GUID-1E2F3945-C0EE-4EB2-A933-8D1862D8ECE2)

現在（2023年12月)は、12.2より以前のリリースからのアップグレードを検討する場合が多いと考えられます。12.2より前はリリースの番号のルールが現在（19c）と異なるものでした。12.2より前のリリースに関しては、4桁（例：12.2.0.4 とか 11.2.0.4 とか）まで確認するとよいです。

**2つの種類のメジャーリリース**
Oracle Databaseのメジャーリリースには、「Long Term Release」「Innovation Release」の二つのタイプがあります。

Long Term Release
* パッチ提供をともなうサポート期間が長い(基本、Premier Support5年間、Extended Support3年間)
* 安定性を重視し、長期間にわたってパッチ修正を提供
* 長期間安定して運用したいシステム向け
* Oracle Database 19cとOracle Database 23cが該当

Innovation Release
* Premier Support2年間、Extended Supportは提供しない
* 新しい機能を試したいケース向け
* Long Term Releaseではないものが該当（Oracle Database 18c、21c）

**現在少し前のリリース（12.2など）を利用していて、メジャーリリースのアップグレードを検討する場合には、多くのケースでLong Term Releaseを対象に検討することになると考えられます。2023年12月時点では、オンプレミス環境で提供されている最新のLong Term Releaseは19cなので、19cへのアップグレードを中心に検討されることになります。さらに、アップグレードの時期からRUも決めていくことになります。**
（私見ですが、2023年12月時点で23cに関しては、オンプレミス版がリリースされておらず、机上検討のための情報もそろっていません。オンプレミス版がリリースされしばらくしてから、導入検討が多く進められると考えられます。）

#### 2. メジャーリリースのリリーススケジュールとサポート期間に関する情報
アップグレード先となるメジャーリリースを検討するにあたっては、まずは各メジャーリリースのリリース状況とサポート期間の情報をもとに検討します。さらに対応するOSのリリースや、接続されているソフトウェアの対応状況も確認することになります。

つまりOracle Databaseのアップグレードとあわせて、必要に応じてOSや接続するソフトウェアのアップグレードも検討することになります。（もちろんOSのアップグレードを中心に検討されるケースもあるでしょう。）

##### 2.1. リリーススケジュールとサポート期間
Oracle Databaseのリリースを選定する上で、一番重要で基本的な情報は、MOSの下記のページから提供されています。

**Release Schedule of Current Database Releases (Doc ID 742060.1)**

このページには、まだリリースされてないメジャーリリースのリリース予定の情報がプラットフォーム・OS毎に提供されています。（オンプレミス環境のOracle DatabaseとOracle Cloud InfrastructureのOracle DatabaseのPaaSサービスに関して、それぞれ提供されています）

提供されている予定は、あくまでOracle社の開発が「予定」として開示できる範囲です。さらに予定が変更されることがある点が、免責事項（Disclaimer）に記述されています。このような前提はありますが、このページの情報がもっとも確かで**公式**な情報です。

このページの情報は、リリースに関する情報の変更や追加にともなって修正・追記がされますので、アップグレードの検討においては適宜参照することになります。

##### 2.2. 各メジャーリリースで対応するOSリリース
Oracle Databaseの各メジャーリリースに対して、対応しているOSのリリースの情報を調査するには、My Oracle Supportの画面上部のタブの「Certifications」から検索します。下記の画像は、Oracle Database 19cに関して、対応しているOSのリリースを検索するための入力です。

![スクリーンショット 2023-12-04 013107.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368742/5b3c008a-7d26-e31d-8358-ec2e0bf45025.png)

上部のタブ「Certifications」で表示される画面から、「Product」「Release」と入力選択していきます。「Platform」は「Any」でも特定のOSを選択しても構いません。それから「Search」をクリックすると指定された組み合わせに対応しているOSの情報が表示されます。

やや古いですが、下記のページにこの「Certifications」の使い方のガイドがあります。

**My Oracle Support のデータベース・サーバーの動作保証情報の場所 (Doc ID 1914955.1)**

##### 2.3. メジャーリリース間での接続性に関する情報
Oracle Databaseに接続するクライアントとの接続性に関しては、下記のページを参照します。

**クライアント / サーバー 異なるバージョン間の互換性サポート・マトリクス (Doc ID 2127402.1)**

このページには、多くの注意事項の記載があるので確認するようにしてください。データベースリンクをつかった異なるリリースのOracle Database間の対応に関しても、このページの情報を参照します。「一般的な注意」にデータベースリンクでの考え方に関する記載があります。

アップグレードの際には、データ・ポンプ（エキスポート、インポート）を使う場面が多く想定されます。異なるOracle Databaseリリース間でのデータ・ポンプの対応に関しては、下記のページを参照します。

**エクスポート/インポート データ・ポンプのパラメータ VERSION - 異なる Oracle バージョン間のデータ・ポンプの互換性 (Doc ID 2364786.1)**

##### 2.5. そのほかのソフトウェアの対応に関する情報

Oracle社が提供するOracle Fusion MiddlewareとOracle Databaseの対応に関しては、下記のドキュメントを参考にします。（My Oracle Supportの「Certification」のタブから検索できる情報も参考になります）

[Oracle Fusion Middleware Supported System Configurations](https://www.oracle.com/middleware/technologies/fusion-certification.html)

リンク先からは、各Oracle Fusion Middlewareのリリース毎に、対応しているOS、ソフトウェア（Oracle Database含む）の情報を含むExcelシートをダウンロードできるようになっています。このExcelシートの情報は、なかなか読み解くのが難しいところもあるので、必要であれば該当のソフトウェアを購入したベンダーに相談するとよいです。

Oracle社以外のベンダーから提供されているソフトウェアのOracle Databaseへの対応リリースの確認は、該当するベンダーのWebサイトなどの情報から確認します。

#### 3. 4半期ごとに提供される累積パッチ（リリースアップデート：RU）に関する情報
アップグレード先のメジャーリリースを決めたのちには、アップグレードする時期を念頭に、RUを決めることになります。アップグレードの際は、基本その時点での最新のRUを適用することになると考えられます。

RUは、セキュリティ関連の修正と優先度の高い非セキュリティ修正の両方をサポートするため、四半期毎に提供されるOracle DatabaseとGrid Infrastructureの修正の累積的なコレクションです。

オラクル社は、最新のRUの適用を推奨しています。不具合に対する修正には、
Interim Patch (暫定パッチ/個別パッチ)が提供されるケースもあります。すでに提供されているRUに対応したい不具合の修正が含まれる場合、次のような理由でInterim Patchではなく、RUの適用が推奨されています。

**オラクル社の開発部門でリリース前におこなっているテストの種類・量ともに大きな違いがある**
* Interim Patch：個別環境での特定の不具合を修正するためのパッチのため不具合修正テストのみ実施
* Release Update：リリースより6～12週前にコードをフリーズし、 広範なテストを経て出荷(100万以上の機能テスト、ストレス・テストと破壊的テスト、パフォーマンス・テスト etc)

**Interim Patchの過剰な適用により、世界に一つの「独自の環境」になってしまう可能性が高くなる**

[参考：Database Technology Night2023：「新たなパッチ提供形態(MRP)とOracle Database 23c Free」の前半資料（プロアクティブ・パッチの適用と新たなパッチ提供形態）](https://developer.oracle.com/ja/community/japan-events/database-technology-night2023.html)

メジャーリリースのアップグレードを実施したあとの運用での検討になりますが、オラクル社は下記のようなRUの特徴から定期的なRU適用を推奨しています。

* 100万以上の機能テスト、ストレス・テストと破壊的テスト、パフォーマンス・テストといった、広範なテストが行われています。
* 最新のセキュリティ・パッチに加えて、広く該当する可能性がある不具合の修正が提供されています。セキュリティと不具合の両方に対して問題が起きる前に対応できます。
* 実行計画に影響するオプティマイザの修正は、デフォルトで無効になっています。そのため、負荷が高いパフォーマンス・テストをおこなう必要はありません。
* 常にRACローリングとStandby Firstでインストール可能です。
* 累積パッチであるため、四半期ごとの適用が難しい場合には半期ごとの適用も可能です(それ以下の頻度は推奨しない)。

Oracle Databaseのパッチ開発を含むサポートサービス(Premier Support,Extended Support)が提供されているメジャーリリースであっても、RUが古いものであった場合は、Oracle社からRUを新しい（最新のものなど）にした上でないとパッチ開発が進められない、と指摘されることがあります（Error Correction Policy）。その観点でも定期的に最新のRUにすることが推奨されます。

**Oracle Database 19cのRUに関する情報**
2023年12月時点では、アップグレード先のメジャーリリースとして最も多いのはOracle Database 19cになると考えられます。アップグレード先のメジャーリリースを確定したのちはRUの提供状況を確認します。Oracle Database 19cのRUに関しては、下記ページから確認することができます。

**Oracle Database 19c Proactive Patch Information (Doc ID 2521164.1)**
このページの「Oracle Database 19c Release Update」「R19c Grid Infrastructure Release Update (Update)」から提供されているRUの情報を確認できます。

#### 4. Oracle Databaseのメジャーリリースアップグレード後の動作への影響の机上調査
Oracle Databaseアップグレードの動作への影響の検討に関しては、図のようなステップで実施します。

![スクリーンショット 2023-12-04 183039.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368742/2bd0caa0-1e7f-aa61-a30f-8a38740fa060.png)

対象のデータベースの重要度や性質、調査にかけられる時間や人のリソースによって、調査の粒度・深度は大きく異なると思われます。ここの記事では、机上で調査検討ができる最初の2つのステップ「仕様の変更の確認」「重大な製品不具合の確認」の情報源に関してお伝えします。

Oracle Databaseは非常に多くの機能が実装されており、各システムで利用されている機能は、そのなかの一部です。「仕様の変更」「製品の不具合」に関して提供されている情報は、利用されているシステムには影響しないものが非常に多く含まれます。そのことを念頭にそれぞれの情報を参照するようにするとよいです。

また、基本的に可能な限り最新のRUを選択することで不具合が影響する可能性を小さくすることができる、と考えられます。

##### 4.1. 仕様の変更と不具合
仕様の変更と不具合は、下記のような違いがあります。

**仕様の変更**
「動作の変更」と「非推奨となった機能」「サポートが終了した機能」があります。いずれもマニュアルが情報源となります。
* 動作の変更：新しいリリースで動作が変更になった機能。
* 非推奨となった機能：新しいリリースでは利用を推奨しない機能。将来のリリースでサポートされない可能性があります。
* サポートが終了した機能：新しいリリースでサポートされなくなった機能。

**重大な製品の不具合**
* アップグレード先とするRelease Update(RU)で判明している重大な製品の不具合の影響が考えられます。
* 可能な限り最新のRUを選択することで、製品の不具合が影響する可能性を小さくすることができます。
* 製品の既知の不具合に関しては、My Oracle Supportが情報源となります。

##### 4.2. 仕様の変更に関する情報
Oracle Database 19cへのアップグレード検討にあたって、主要な仕様の変更に関しては、マニュアル 「データベース・アップグレード・ガイド」を参照ください。

[データベース・アップグレード・ガイド 19c (19c, 18c, 12.2での仕様の変更に関する情報)](https://docs.oracle.com/cd/F19136_01/upgrd/index.html#Oracle%C2%AE-Database
)
（上記マニュアルより）
![スクリーンショット 2023-12-04 190551.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/368742/2ada570e-2161-28f8-df6f-92f9d5f9e20a.png)

[Oracle Database アップグレード・ガイド 12cリリース1 (12.1での仕様の変更に関する情報)](https://docs.oracle.com/cd/E57425_01/121/UPGRD/toc.htm)
上記マニュアルの「8 : Oracle Database 12cで非推奨となった機能とサポートが終了した機能」

特定の機能に関して、より詳細に仕様の変更に関する情報を収集するためには個別のマニュアルを確認します。下記が例です。

[SQL言語リファレンス 19c：Oracle Databaseリリース19cにおける変更点](https://docs.oracle.com/cd/F19136_01/sqlrf/#Oracle%C2%AE-Database)

[Real Application Clusters管理およびデプロイメント・ガイド 19c：Oracle Real Application Clusters リリース19cでの変更内容](https://docs.oracle.com/cd/F19136_01/racad/index.html#Oracle%C2%AE-Real-Application-Clusters)
ただ、すべての機能に関して個別にマニュアルを参照することは難しいケースが多いと考えられます。対象のデータベースで特に重要と考えられる機能に関して、個別のマニュアルも確認するとよいです。

###### 4.2.1. パラメータの変更に関する情報
仕様の変更の一部ですが、Oracle Databaseの初期化パラメータの変更に関しては、かならずアップグレードの際に調査する項目になると考えられます。マニュアルから調査することもできますが大変なので、このようなケースではORAdiffというツールが利用できます。Oradiffの使い方に関しては、下記の記事が参考になるので参照ください。初期化パラメータの比較などで利用できることが説明されています。初期化パラメータの違い以外にも、同じメジャーリリースの異なるRU間での含まれる修正(FIX)の差なども確認できます。

[[23c Oracle] ORAdiffツールリリース！超簡単。2つのDBでパッチレベルの機能差異比較](https://qiita.com/nisshii0/items/0cdb3f9bf0e538394d40)

[OracleDatabaseのアップグレード（バージョンアップ）やパッチ適用の手助けとなるツール、ORAdiffについて](https://qiita.com/yohattor/items/80341b4c3032def7f159)

なおOradiffの利用にはログインすることが必要で、ここでMOS(My Oracle Support)のアカウントを利用するとOradiffの機能をすべて利用できます。
##### 4.3. 重大な不具合に関する情報
Release Updateに含まれていない重要なパッチに関しては、My Oracle Supportの下記の2系統の情報を元に調査し必要に応じて適用を検討します。この検討においては対象とするRUが決まっていることが前提です。つまり、ターゲットとするRUに含まれない重要なパッチ（RUでは修正されない不具合）にどのようなものがあるのか確認します。

**A: Primary Note for Database Proactive Patch Program (Doc ID 888.1)の中の「6.2 Database 19」に記載があるMonthly Recommended Patches (MRPs)**

**B: Oracle Database 19c Important Recommended One-off Patches (Doc ID 555.1)**

Aに記載したMonthly Recommended Patches (MRPs)というのは、各RUに含まれていない重要な不具合の修正をまとめたものです。**Linux版Oracle Database 19.17以降**に対して、月次で提供されています。MRPの詳細に関しては、下記のセミナー資料・動画が参考になります。

[参考：Database Technology Night2023：「新たなパッチ提供形態(MRP)とOracle Database 23c Free」の前半資料（プロアクティブ・パッチの適用と新たなパッチ提供形態）](https://developer.oracle.com/ja/community/japan-events/database-technology-night2023.html)

BはOracle Database 19cの直近の世代のRU毎に推奨されるInterim Patch (暫定パッチ/ 個別パッチ)の情報です。

A.のMonthly Recommended Patchesは、 RAC Rollingでの適用が可能です。
B.にはRAC Rollingでの適用ができないパッチが含まれます。

#### 5. 参考
[Oracle Database 19c へのアップグレード検討時の参考資料 (リンク集)](https://qiita.com/shi6maSencho/items/fd61c3f0645498a02416)

この記事は、[JPOUG Advent Calendar 2023](https://adventar.org/calendars/8844) 4日目の記事でした。
5日目は Oracle ACE Proの渡部さん の記事 [コーソル流 KVM環境Tips集](https://cosol.jp/techdb/2023/12/cosol_kvm_tips/)です。