パッチ適用って何？何をするの？

# はじめに
「パッチ適用ってナニ？」状態だった頃を思い出して、基本的なところからまとめてみました。
記事の順番としては、先に投稿していた「[Datapatch適用はオンライン状態でも実施可能か？](https://qiita.com/shi6maSencho/items/6eaed4705e949eda3a86)」よりも先に出しておくべき内容ですが、
やっとまとまりました！
# 1. パッチってナニ？
システム安定運用を持続させるために必要となるセキュリティ・既存/潜在バグの修正や機能拡張などをまとめた後付けプログラムのこと
例) 腕の傷を治すために、あるいは、これ以上酷くならないようバイ菌の感染に備えるために貼っておく **ばんそうこう** の役割
>既知の問題を回避できるようになるクリティカルな修正の高度にテストされたバンドルです。それらには通常、セキュリティ、リグレッション(不具合)、オプティマイザおよび機能(機能拡張も含まれることがある)といった修正タイプが含まれます。
[マニュアル] [リリース更新(RU)](https://docs.oracle.com/cd/F19136_01/dbptc/index.html#DBPTC-GUID-62637CAD-E7F6-4E31-B5E8-8C7508D0A785)
# 2. パッチ種類
大きく 3 つ種類があるかなと思います。
1. **Release Update (RU)** ([参考リンク](https://docs.oracle.com/cd/F19136_01/dbptc/index.html#DBPTC-GUID-62637CAD-E7F6-4E31-B5E8-8C7508D0A785))
Monthly Recommended Patch (MRP):1つのダウンロード可能なパッチを介して月次間隔で提供される推奨される個別修正のコレクション

2. **月次推奨パッチ(MRP)** ([参考リンク](https://docs.oracle.com/cd/F19136_01/dbptc/index.html#DBPTC-GUID-81B51932-3DD5-479B-9233-E0D37485DFC4))
2022/10のRU19.17以降に登場した、まとめてバンドルされたワンオフ・パッチのコレクション
これまでのリリース更新リビジョン(RUR)は2023/1以降に終了予定のようです
MRPは、RURパッチと同じ機能の多くを提供しているようです。
・[Monthly Recommended Patches (MRP) の概要および FAQ (Doc ID 2898740.1)](https://support.oracle.com/knowledge/Oracle%20Cloud/2898740_1.html)
・[19c RUR に関する段階的終了のお知らせと FAQ (Doc ID 2898381.1)](https://support.oracle.com/knowledge/Oracle%20Cloud/2898381_1.html)

3. **Critical Patch Update (CPU)** ([参考リンク](https://www.oracle.com/security-alerts/))
Oracle 製品のセキュリティ修正のコレクション
RUと同様に、四半期に一回リリースされます。

4.  **個別パッチ** ([参考リンク](https://docs.oracle.com/cd/F19136_01/dbptc/index.html#DBPTC-GUID-C761CF4F-CF53-4D65-A3BA-7EE79BB99980))
上記のような定期パッチ外で、障害対応用のパッチなど具体的な目的のためのプロアクティブなパッチ

他) **RUとMRPの違いは？** ([参考リンク](https://docs.oracle.com/cd/F19136_01/dbptc/index.html#DBPTC-GUID-45B32A1A-FF57-4D86-94F1-2D51BD1BC69C))
# 3. パッチ適用：手順
<font color="Red">※正確な手順は、パッチ適用する際に対象のreadmeをご覧ください。</font>
1. 現在適用されているパッチ情報/今回適用しようとしているパッチ情報・readmeの確認
・[OPatch lsinventory コマンドを使用して、Oracle ホームに適用されたパッチを確認する](https://docs.oracle.com/middleware/1221/core/OPATC/GUID-7CCCA18F-FFAD-4A47-95C4-FB6994C137B0.htm#OPATC116)
・[12c: 問い合わせ可能パッチ・インベントリに関するよくある質問(FAQ) (Doc ID 1530108.1)](https://support.oracle.com/knowledge/Oracle%20Database%20Products/1530108_1.html)
1. 最新OPatchをインストールする
・[最新バージョンの OPatch をダウンロードおよびインストールする方法 (Doc ID 274526.1)](https://support.oracle.com/epmos/faces/DocumentDisplay?id=274526.1&displayIndex=1)
・[OPatch - OPatch(6880880) の最新バージョンはどこにありますか？(Doc ID 224346.1)](https://support.oracle.com/knowledge/Oracle%20Database%20Products/224346_1.html)
・[[ブログ] なぜOPatchの最新バージョンを使用する必要があるのか?](https://mikedietrichde.com/2018/05/14/why-should-you-use-the-most-recent-version-of-opatch/)
1. 暫定パッチとの競合をチェック
1. DB をシャットダウン
2. 「既存Oracleホーム」または「新規で準備したOracleホーム」にOPatchを適用
3. DB を再起動
4. ダウンタイム終了！ユーザーはデータベースに接続できます
5. ./datapatch -verbose コマンドで Post-Installation (datapatch) を実行
6. 全てのDBへdatapatch適用が完了すれば、終了
※起動中のPDBのみにDatapatchが適用される
※ **Datapatch適用はオンライン状態でも実施可能か？** という疑問をお持ちの場合は、
　[こちらの記事](https://qiita.com/shi6maSencho/items/6eaed4705e949eda3a86)も併せてご確認ください。
# 4. Opatch と datapatch の違い
|  | 内容 | DBの状態 |
| :-- | :-: | :-: |
| Opatch | Oracle Homeにバイナリを適用 | 全インスタンスの停止 |
| Datapatch | sql / PL SQL の変更をDBに適用 | DB起動 |

※Opatchの基礎：Oracle Data Server Interim Patch Installation (OPatch) (Doc ID 189489.1)
※DBの設定環境によっては、datapatch適用時間が通常より長くなる可能性もあります。
　詳しくは、[Datapatch適用はオンライン状態でも実施可能か？](https://qiita.com/shi6maSencho/items/6eaed4705e949eda3a86) の [6. datapatchを遅くする設定](https://qiita.com/shi6maSencho/items/6eaed4705e949eda3a86#6-datapatch%E3%82%92%E9%81%85%E3%81%8F%E3%81%99%E3%82%8B%E8%A8%AD%E5%AE%9A) をご覧ください。

# 参考ドキュメント
**◆ 各パッチダウンロード先**
・アシスタント: Oracle データベース/GI アップデート、リビジョン、PSU、SPU(CPU)、バンドル パッチ、パッチセット、ベース リリースのダウンロード リファレンス (Doc ID 2118136.2)


**◆ Data Pump用のパッチ**
・[19.10 以降の Data Pump 推奨プロアクティブ パッチ (Doc ID 2819284.1)](https://support.oracle.com/knowledge/Oracle%20Database%20Products/2819284_1.html)

**◆ RAC利用時**
・[ローリングパッチ - RAC のOPatchサポート (Doc ID 244241.1)](https://support.oracle.com/knowledge/Oracle%20Cloud/244241_1.html)

**◆ Data Guard 利用時**
・[Oracle Patch Assurance - Data Guardスタンバイ・ファースト・パッチ適用 (Doc ID 1265700.1)](https://support.oracle.com/knowledge/Oracle%20Database%20Products/1265700_1.html)
・[PDBのリモートクローン、プラグイン実行時に、スタンバイデータベースの状態を適切に維持するための standby_pdb_source_file_dblink 及び standby_pdb_source_file_directory の使用方法 (Doc ID 2274735.1)](https://support.oracle.com/knowledge/Oracle%20Database%20Products/2274735_1.html)
→ [マニュアル] [3.6 プライマリ・データベースでのPDBの作成](https://docs.oracle.com/cd/F19136_01/sbydb/creating-oracle-data-guard-physical-standby.html#GUID-20D2DEAC-0355-4FBB-ADB8-37BF5F4328E2)
→ [マニュアル] [B.3 フィジカル・スタンバイ・データベースが存在する場合のOracle Databaseのアップグレード](https://docs.oracle.com/cd/F19136_01/sbydb/upgrading-patching-downgrading-oracle-data-guard-configuration.html#GUID-6431EFBF-6B00-4E7D-A106-63574225BDD9)

# おわりに
はじめての知る内容は、どこから手を付けたらよいのか分からない状態でしたが、
一個ずつこのようにまとめていくと、少しずつ全体像(流れや項目など)が見えるようになってきますね。
読むべきドキュメントも色々散らばっているので、調査に時間が掛かったものなど、
今後も少しずつまとめていきたいと思います！