こんにちは。Re:QのエンジニアH.Sと申します。
本記事ではOracleのRU適用に関する内容を記載していきます。
RUとは?
RUは「Release Update」の略で、OracleDBのメンテナンスを目的とした定期的なアップデートパッケージです。
内容としてバグの修正やセキュリティの強化、パフォーマンス改善等が挙げられます。四半期ごとにリリースされ、毎年1月、4月、7月、10月にリリースされます。
なぜRU適用を行う必要があるのか?
RUはリリースされるごとにバージョンが上がり、その度にバグの修正やセキュリティの強化が行われます。
そのため、RUを適用しないままでいると以下のリスクがあります。
- セキュリティ脆弱性やバグによる不具合
RUには、セキュリティの脆弱性やバージョン特有の不具合に対する修正が含まれています。
RUを適用しなければ、外部攻撃のリスク増大や既知のバグが発生するなどの障害が発生し、業務停止につながるおそれがあります。 - Oracleサポートの期限切れリスク
Oracleサポートは最新バージョンのRU~最新バージョンから1年位前のものを前提としている場合が多いです。そのため、2~3年以上にリリースされたバージョンを使用し続けた場合、トラブルや不具合等が発生した際にOracleサポートに対応してもらえない可能性があります。 - 監査や法令遵守(コンプライアンス)違反
金融や医療、公共等の職種はセキュリティパッチ適用が義務化もしくは指導対象になる場合があります。
RU未適用は内部監査や外部監査で問題視される可能性もあります。
RU適用の流れ
RU適用の流れについて簡単に説明します。RU適用は以下のような手順で行われます。
1. 適用するRUの確認・準備
- 1-1. 適用するRUの選定/確認
→My Oracle Supportで確認
※原則として最新版のひとつ前のバージョンを選定する場合が多いです。
最新版と比べて検証期間の確保することが可能である他、
他社やコミュニティによる実運用での検証期間が確保され安定度が高まります。 - 1-2. RUのREADMEを確認
READMEはパッチの取扱説明書のようなものです。忘れずに確認しましょう。 - 1-3. OPatchバージョンを確認
古いバージョンの場合は最新版に更新します。(確認例)
GRID側
[grid@node01 ~]# $ORACLE_HOME/OPatch/opatch version
OPatch Version: 12.2.0.1.45
OPatch succeeded.
[grid@node01 ~]#
DB側
[oracle@node01 ~]$ $ORACLE_HOME/OPatch/opatch version
OPatch Version: 12.2.0.1.45
OPatch succeeded.
[oracle@node01 ~]$
2.RUパッチのダウンロードおよび展開
My Oracle SupportからRUパッチをダウンロードし、ダウンロードしたファイルをパッチ適用するサーバに展開します。
3.RUの適用
- 3-1. DBの停止
DBを停止します。RAC環境はGRIDも停止します。
※RAC環境=Real Application Clustersの略で、複数のサーバーで一つのデータベースを構成するクラスタ技術です。
高可用性と負荷分散を実現可能としています。 - 3-2. パッチ適用
既存の適用パッチとのコンフリクト(競合)がないか確認し、パッチを適用します。
※下記コマンドは一例となりますので、詳細はRUのREADMEをご確認ください。
[oracle@node01 ~]$ $ORACLE_HOME/OPatch/opatch prereq CheckConflictAgainstOHWithDetail -phBaseDir <パッチunzip先ディレクト>
- 3-3. DB起動
パッチの適用が完了したらDBを起動します。
※RAC環境はGRIDも起動 - 3-4. パッチ適用状況の確認
(確認例)
GRID側
[grid@node01 ~]$ $ORACLE_HOME/OPatch/opatch lspatches
37328150;MERGE ON DATABASE RU 19.26.0.0.0 OF 37075705
32043701;SEQUENCE.NEXTVAL WITH NOCACHE ON 19C SLOWER THAN 12.1 DUE TO ROW CACHE LOCK
37617711;IN KPNXBICBK CHECK IF INSERT WITH VALUES HAS A LONG BIND CALL SHOULD BE CALLED ONLY IF ITS SHARD SQL
34774667;ORA-7445 IN PURGE QUEUE TABLE
34672698;ORA-00800 SOFT EXTERNAL ERROR, ARGUMENTS [SET PRIORITY FAILED], [VKTM] , DISM(16)
36758186;DBWLM RELEASE UPDATE 19.0.0.0.0 (36758186)
37461387;TOMCAT RELEASE UPDATE 19.0.0.0.0 (37461387)
37266638;ACFS RELEASE UPDATE 19.26.0.0.0 (37266638)
37268031;OCW RELEASE UPDATE 19.26.0.0.0 (37268031)
37260974;Database Release Update : 19.26.0.0.250121 (37260974)
OPatch succeeded.
[grid@node01 ~]$DB側
[oracle@node01 ~]$ $ORACLE_HOME/OPatch/opatch lspatches
37328150;MERGE ON DATABASE RU 19.26.0.0.0 OF 37075705
32043701;SEQUENCE.NEXTVAL WITH NOCACHE ON 19C SLOWER THAN 12.1 DUE TO ROW CACHE LOCK
37470729;DATAPUMP BUNDLE PATCH 19.26.0.0.0
37617711;IN KPNXBICBK CHECK IF INSERT WITH VALUES HAS A LONG BIND CALL SHOULD BE CALLED ONLY IF ITS SHARD SQL
34774667;ORA-7445 IN PURGE QUEUE TABLE
34672698;ORA-00800 SOFT EXTERNAL ERROR, ARGUMENTS [SET PRIORITY FAILED], [VKTM] , DISM(16)
37102264;OJVM RELEASE UPDATE: 19.26.0.0.250121 (37102264)
37268031;OCW RELEASE UPDATE 19.26.0.0.0 (37268031)
37260974;Database Release Update : 19.26.0.0.250121 (37260974)
OPatch succeeded.
[oracle@node01 ~]$
- 3-5. datapatchの実行
ORACLE_HOMEにRUは適用されてますが、データベース内部には反映されていない状態です。
そのためdatapatchでデータベース内部に反映させます。[oracle@node01 ~]$ $ORACLE_HOME/OPatch/datapatch -verbose
- 3-6. 動作確認
アラートログの確認やDBが正常に起動しているか、パフォーマンスに異常がないか等を確認します。
RU適用を実施する際の注意点
- バックアップの取得
システムバックアップを必ず取得し、パッチ適用が失敗した場合に備えてロールバックできるように準備しておきます。
※ロールバック=パッチ適用前の状態に戻すこと - 適用予定パッチのREADMEを確認
READMEには対応バージョンや適用条件、適用手順が記載されております。またRUでもバージョンによっては手順が変わる可能性があるため、事前に確認しておきましょう。
※RU適用の流れの所でも記載いたしましたが、README=パッチの取扱説明書です。 - OPatchのバージョン確認/更新をすること
古いバージョンだとRUが適用できない、もしくは適用中にエラーが発生します。
そのため、古いバージョンの場合はOracleサポートから最新版のOPatchを入手して更新する必要があります。 - datapatchを実行すること
RU適用後、datapatchを実行しないと、Oracleデータベース内部のSQLコンポーネントに対するパッチが適用されないため、完全な反映ができません。 - 事前に検証を実施
本番作業の前に同一構成のテスト環境で事前に適用・動作検証を実施するのが望ましいです。
→事前に検証することで問題なく実施できるか確認可能な他、RU適用時のエラーを事前に対策することが可能となります。 - 作業ログの取得・保存
作業中のログは忘れずに保存しておきましょう。何かトラブルがあった時やOracleサポートに問い合わせ等をする際に作業ログが必要な場合があります。そのため、タイムスタンプを入れておくと作業実施した日時が分かるので、設定しておくことが望ましいです。(タイムスタンプの表示例)
↓この部分がタイムスタンプ
[2025-05-01 11:47:07.357] [oracle@node01 ~]$ $ORACLE_HOME/OPatch/opatch lsinventory | grep -e 34672698 -e 34774667 -e 37617711 -e 37470729 -e 32043701 -e 37328150
[2025-05-01 11:48:02.060] Patch 37328150 : applied on Thu May 01 11:45:02 JST 2025
[2025-05-01 11:48:02.063] Patch 32043701 : applied on Thu May 01 11:42:30 JST 2025
[2025-05-01 11:48:02.065] Patch 37470729 : applied on Thu May 01 11:39:42 JST 2025
[2025-05-01 11:48:02.066] Patch 37617711 : applied on Thu May 01 11:37:00 JST 2025
[2025-05-01 11:48:02.070] Patch 34774667 : applied on Thu May 01 11:33:15 JST 2025
[2025-05-01 11:48:02.076] Patch 34672698 : applied on Thu May 01 11:29:54 JST 2025
[2025-05-01 11:48:02.228] [oracle@node01 ~]$
まとめ
このように、RU適用を実施しないと不具合が生じたり、法令遵守(コンプライアンス)違反となる可能性があります。
また、RUは四半期に1回新しいバージョンがリリースされるため、一度実施すればいいものではなく、定期的に実施する必要があります。
RU適用の流れの所で基本的な流れを記載いたしましたが、適用するバージョンや環境の構成等によって手順が変わっていきます。そのため、バージョンや環境の構成等は事前に確認しておきましょう。
OracleのRU適用について、この記事が少しでも皆様の理解を深める助けになれば幸いです。