もしもみなみんがDBをクラウドで動かしてみたら 連載Indexページ
※本記事は2020/08/25時点のものになります
みなさん、こんにちは。今回は、Database Cloud Service (DBCS) と Exadata Cloud Service (ExaCS) 上のバージョンやパッチについて、考え方やパッチ適用方法を解説していきたいと思います。
目次
1. DBCSとExaCSのS/Wバージョンの考え方
Oracle Cloud 上でOracle Databaseを利用する上での選択肢として検討にあがるのは、主にPaaSサービスもしくはIaaS(Compute)上で利用するパターンになると思います。PaaSサービスの種類は第9回でご紹介しましたが、PaaSサービスの中にもFull-Managed型のAutonomous DatabaseとUser-Managed型のDBCS/ExaCSがあります。Aunomous Databaseの場合は、Full-Managedとしてソフトウェア・バージョンの管理も含むOracle Databaseの管理はオラクルが責任を持つため、バージョンやパッチレベルなどは基本的に最新のものを使う形になります。一方でDBCSやExaCSの場合は、OS以上はユーザー管理のためOracle DatabaseやGrid Infrastructureなどのバージョンやパッチレベルを、提供されている選択肢の中からお客様で選択して簡単に構築することができます。OS以上の中に含まれるデフォルトでインストール済のS/Wは、OS、Grid Infrastructure(GI)、Database(DB)、そしてPaaSサービスの管理のためのクラウド・ツールがあります。
DBCSやExaCSの場合、データベースを作成時に選択可能なバージョンはサポート提供中の各バージョンの最新リリースから選択が可能です。これは、Oracle Databaseのライフタイム・サポートに準拠している形となっており、Premier or Extended Supportの期間のものが対象になります。具体的には、現時点(2020/07)で利用可能なバージョンは、19/18/12.2.0.1/12.1.0.2/11.2.0.4の5種類となります。それぞれのパッチレベル(RU/BP/PSU)は、クラウド上でリリースされていてる最新(デフォルト)と最新から2つ前までの、計3種類が提供されているので少し古いイメージでも作成可能です。これは、セキュリティ・ポリシーに準拠して、サービスとしてのイメージの提供は古くても最新から2つ前までとなっています。

また、Premier or Extended Supportの最終日がクラウド上でのサポートの最終日となります。この日を過ぎるとどうなるのかが一番気になると思いますが、OS以上はユーザー管理となるため、その日を過ぎたら勝手に削除されるということはありません。ただ、新規で作成が不可能となりクラウドの機能(コンソールやCLIなど)としてのサポートが終了することになるので、サポート終了日までにアップグレードをご検討いただくことが推奨です。
参考
・MOS Doc ID 742060.1: Release Schedule of Current Database Releases
・MOS Doc ID 2333222.1: Exadata Cloud Service Software Versions
・Oracle Lifetime Support Policy
2. H/Wモデルの考え方
インフラはオラクルが管理するため、普段あまり気にする必要のないH/Wについてですが、DBCSやExaCSなどはDBシステム(インスタンス)を作成する際に選択する”シェイプ”でH/Wの世代が決まっています。例えば、DBCSの場合はシェイプ名のVM.Standard2.2、ExaCSの場合はExadata.Quarter3.100の、それぞれの2セクション目(青字)の部分がH/Wモデルになります。(タイミングによっては、H/WモデルのEOLを意識する必要が出てくる可能性がありえますが、また別の回で解説したいと思います)
参考
・Doc ID 2649066.1: OCI – Oracle Database Exadata Cloud Service (ExaCS) Support Dates
3. パッチ適用方法
DBCSやExaCSはOS以上がユーザー管理となるため、OS以上のOS、Grid Infrastructure、Database、そしてPaaSサービスの管理のためのクラウド・ツールに対するパッチ適用は、ユーザー側でパッチ適用の計画と適用実施が可能です。ここでは、それぞれのパッチ適用方法についてご紹介します。
まずは、DatabaseとGrid Infrastructureについて。それぞれ、RU/BP/PSUのパッチがコンソールやAPI/CLIなどから適用可能です。ここで適用可能なパッチイメージは、定期的にリリースされて自動で使えるようになるので、ユーザー側でイメージのダウンロードなどは不要です。なお、DBCS/ExaCSでは、DBシステムのバージョンと表示されるものがGrid Infrastructureのバージョンを指します。
なお、Grid Infrastructure(Oracle Clusterware)は自分と同じもしくは下位のバージョン・パッチレベルのDatabaseの管理が可能です。そのため、もしDatabaseにパッチ適用することで、Grid Infrastructureよりも上位になる場合、先にGrid Infrastructure側にパッチ適用をしましょう。
DBCSの場合
DBシステム(Grid Infrastructure)
『DBシステムの詳細』ページで、「DBシステム・バージョン」というのが、Grid Infrastructureのバージョンを指します。今回の環境は、19.5.0.0 の状態です。

opatchコマンドでも確認してみます。
[grid@emee ~]$ /u01/app/19.0.0.0/grid/OPatch/opatch lspatches 30269395;ACFS Interim patch for 30269395 30125133;Database Release Update : 19.5.0.0.191015 (30125133) 30122149;OCW RELEASE UPDATE 19.5.0.0.0 (30122149) 29401763;TOMCAT RELEASE UPDATE 19.0.0.0.0 (29401763) OPatch succeeded.
そのまま下の方にスクロールして、リソースの『パッチ』を選択すると、適用可能なパッチリストが表示されます。

今回は19.8.0.0を適用してみます。適用したいパッチの右の…をクリックして、『事前チェック』をしてみましょう。この環境に適用できるかどうか(コンフリクトなど)をチェックが走ります。Opatchのprereqなどが実行されるイメージです。確認画面で『OK』をクリックします。

事前チェックで問題がなければ、『適用』をしてみましょう。確認画面で『OK』をクリックします。

Real Application Clustersで2ノード構成になっている場合は、ローリングで一台ずつ適用されます。適用が完了すると、DBシステムのステータスが「使用可能」になります。バージョンが、19.8.0.0になってますね。

念のため、Opatchコマンドでも確認してみましょう。
[grid@emee ~]$ /u01/app/19.0.0.0/grid/OPatch/opatch lspatches 31335188;TOMCAT RELEASE UPDATE 19.0.0.0.0 (31335188) 31305087;OCW RELEASE UPDATE 19.8.0.0.0 (31305087) 31304218;ACFS RELEASE UPDATE 19.8.0.0.0 (31304218) 31281355;Database Release Update : 19.8.0.0.200714 (31281355) OPatch succeeded.
Database
「データベース詳細」のページで、『データベース・バージョン』を確認します。今回の環境は、19.5.0.0になります。パッチのセクションに、このデータベースに対して適用可能なパッチリストが表示されます。
opatchコマンドでも確認してみます。
[oracle@emee ~]$ /u01/app/oracle/product/19.0.0.0/dbhome_1/OPatch/opatch lspatches 30423135;REINSTATE IS FAILING POST APPLYING 19C OCT19 PATCHES 30128191;OJVM RELEASE UPDATE: 19.5.0.0.191015 (30128191) 30125133;Database Release Update : 19.5.0.0.191015 (30125133) 30122149;OCW RELEASE UPDATE 19.5.0.0.0 (30122149) OPatch succeeded.
今回は19.8.0.0を適用してみます。適用したいパッチの右の…をクリックして、『事前チェック』をしてみましょう。この環境に適用できるかどうか(コンフリクトなど)をチェックが走ります。Opatchのprereqなどが実行されるイメージです。

事前チェックで問題がなければ、『適用』をクリックして確認画面で『OK』をクリックします。

Real Application Clustersで2ノード構成になっている場合は、ローリングで一台ずつ適用されます。適用が完了すると、DBシステムのステータスが「使用可能」になります。バージョンが、19.8.0.0になってますね。また、適用したパッチは、「パッチ履歴」のリストに表示されます。
念のため、Opatchコマンドでも確認してみましょう。
[oracle@emee ~]$ /u01/app/oracle/product/19.0.0.0/dbhome_1/OPatch/opatch lspatches 31301460;JDK BUNDLE PATCH 19.0.0.0.200714 30432118;MERGE REQUEST ON TOP OF 19.0.0.0.0 FOR BUGS 28852325 29997937 31305087;OCW RELEASE UPDATE 19.8.0.0.0 (31305087) 31281355;Database Release Update : 19.8.0.0.200714 (31281355) 30128191;OJVM RELEASE UPDATE: 19.5.0.0.191015 (30128191) OPatch succeeded.
クラウド・ツール
DBCSのOS上/コンピュート内のクラウド・ツール=CLIも定期的にアップデートをしておくことが推奨です。クラウド・サービスの新機能やそれに伴う既存機能の改善を反映することができます。Real Application Clustersの2ノード環境では、各ノードで実行して下さい。
[root@emee bin]# /opt/oracle/dcs/bin/cliadm update-dbcli
参考) Oracle Cloud Infrastructure ドキュメント CLI Update Command
OS
OSのアップデートに関しては、コンソールやAPI/CLIなどのクラウドの機能としては提供しているわけではなく、yumコマンドを使います。実際の手順は、下記ドキュメントに従って実施してください。
参考) Oracle Cloud Infrastructure ドキュメント OS Updates
ExaCSの場合
DBシステム(Grid Infrastructure)
『DBシステムの詳細』ページで、「DBシステム・バージョン」というのが、Grid Infrastructureのバージョンを指します。今回の環境は、19.7.0.0 の状態です。

opatchコマンドでも確認してみます。
[grid@emexa1-fzexn1 ~]$ /u01/app/19.0.0.0/grid/OPatch/opatch lspatches 30898856;TOMCAT RELEASE UPDATE 19.0.0.0.0 (30898856) 30894985;OCW RELEASE UPDATE 19.7.0.0.0 (30894985) 30869304;ACFS RELEASE UPDATE 19.7.0.0.0 (30869304) 30869156;Database Release Update : 19.7.0.0.200414 (30869156) OPatch succeeded.
「使用可能な最新パッチ」の横にある『表示』をクリックします。

「データベース・システム」のセクションに、適用可能なパッチリストが表示されます。今回は19.8.0.0を適用してみます。適用したいパッチの右の…をクリックして、『事前チェック』をしてみましょう。この環境に適用できるかどうか(コンフリクトなど)をチェックが走ります。Opatchのprereqなどが実行されるイメージです。

事前チェックで問題がなければ、『適用』をクリックして確認画面で『OK』をクリックします。

ExaCSはReal Application Clusters構成になっているので、ローリングで一台ずつ適用されます。適用が完了すると、DBシステムのステータスが「使用可能」になります。バージョンが、19.8.0.0になってますね。

念のため、Opatchコマンドでも確認してみましょう。
[grid@emexa1-fzexn1 ~]$ /u01/app/19.0.0.0/grid/OPatch/opatch lspatches 31335188;TOMCAT RELEASE UPDATE 19.0.0.0.0 (31335188) 31305087;OCW RELEASE UPDATE 19.8.0.0.0 (31305087) 31304218;ACFS RELEASE UPDATE 19.8.0.0.0 (31304218) 31281355;Database Release Update : 19.8.0.0.200714 (31281355) OPatch succeeded.
参考) Oracle Cloud Infrastructure ドキュメント Patching an Exadata DB System
CLIで実行したい場合はこちら Patching an Exadata DB System Manually
Database
ExaCSの場合、1つの環境上に複数バージョンの複数のデータベースが作成可能です。また、複数データベースで1つのデータベース・ホーム(ORACLE_HOME)を共有可能です。データベースのパッチは、”データベース・ホーム”に適用されるので、コンソール上の表示としてもデータベースごとではなくデータベース・ホームに対して作業をしていきます。今回は、対象のデータベース「EMDB」が属するデータベース・ホーム「dbhome202007」に適用していきます。バージョンは19.7.0.0になります。

opatchコマンドでも確認してみます。
[oracle@emexa1-fzexn1 ~]$ opatch lspatches 30432118;MERGE REQUEST ON TOP OF 19.0.0.0.0 FOR BUGS 28852325 29997937 29997959;DSTV34 UPDATE - TZDATA2019B - NEED OJVM FIX 30805684;OJVM RELEASE UPDATE: 19.7.0.0.200414 (30805684) 30894985;OCW RELEASE UPDATE 19.7.0.0.0 (30894985) 30869156;Database Release Update : 19.7.0.0.200414 (30869156) OPatch succeeded.
「データベース・ソフトウェア・バージョン」の「使用可能な最新パッチ」の横の『表示』をクリックします。

Grid Infrastructureと同じ「パッチ」ページへ遷移しました。
「データベース・システム」のセクションに、適用可能なパッチリストが表示されます。適用したいパッチの右の…をクリックして、『事前チェック』をしてみましょう。この環境に適用できるかどうか(コンフリクトなど)をチェックが走ります。Opatchのprereqなどが実行されるイメージです。

事前チェックで問題がなければ、『適用』をクリックして確認画面で『OK』をクリックします。

ExaCSはReal Application Clusters構成になっているので、ローリングで一台ずつ適用されます。適用が完了すると、DBシステムのステータスが「使用可能」になります。バージョンが、19.8.0.0になってますね。

念のため、Opatchコマンドでも確認してみましょう。
[oracle@emexa1-fzexn1 ~]$ opatch lspatches 30432118;MERGE REQUEST ON TOP OF 19.0.0.0.0 FOR BUGS 28852325 29997937 29997959;DSTV34 UPDATE - TZDATA2019B - NEED OJVM FIX 31301460;JDK BUNDLE PATCH 19.0.0.0.200714 31219897;OJVM RELEASE UPDATE: 19.8.0.0.200714 (31219897) 31305087;OCW RELEASE UPDATE 19.8.0.0.0 (31305087) 31281355;Database Release Update : 19.8.0.0.200714 (31281355) OPatch succeeded.
参考) Oracle Cloud Infrastructure ドキュメント Patching an Exadata DB System
CLIで実行したい場合はこちら Doc ID 2676835.1: Manual Install of Database Patch Updates on the Exadata Cloud Service in OCI
クラウド・ツール
ExaCSのOS上/コンピュート内のクラウド・ツールは、デフォルトで自動アップデートが毎週実行されるように設定されています。実際にはrpmのパッケージのアップデートが実行されるイメージなので、データベースやGrid Infrastructureなど、システムへの影響はありません。また、このツールが最新になることで、クラウド・サービスの新機能やそれに伴う既存機能の改善が使えるようになるため、自動アップデートは有効のままにしておくことが推奨です。
・クラウド・ツールのバージョンの確認
# rpm -qa|grep -i dbaastools_exa
dbaastools_exa-1.0-1+20.1.1.0.0_200620.0101.x86_64
自動アップデートは毎週1回ですが、すぐに新機能を使いたい場合や既知問題の対応など、手動でアップデートしたい場合は下記のコマンドでアップデート可能です。
・適用可能なパッチリスト
# dbaascli patch tools list DBAAS CLI version 20.1.1.0.0 Executing command patch tools list Checking tools on all nodes Current Patchid on emexa1-fzexn1: 20.1.1.0.0_200620.0101 Available Patches Patchid : 20.1.1.0.0_200709.1315(LATEST) Install tools patch using dbaascli patch tools apply --patchid 20.1.1.0.0_200709.1315 or dbaascli patch tools apply --patchid LATEST All Nodes have the same tools version
・パッチ適用(最新を適用 ★推奨)
# dbaascli patch tools apply --patchid LATEST
・パッチ適用(IDを指定して適用)
# dbaascli patch tools apply --patchid <パッチID>
参考) Oracle Cloud Infrastructure ドキュメント Updating Tooling on an Exadata DB System
OS
OSのアップデートに関しては、コンソールやAPI/CLIなどのクラウドの機能としては提供しているわけではなく、Exadataのpatchmgrを使います。実際の手順は、下記ドキュメントに従って実施してください。
参考) Oracle Cloud Infrastructure ドキュメント OS Updates
4. まとめ
DBCS/ExaCSはOS以上はユーザー管理のため、パッチ適用のタイミングや適用するか否かの判断をユーザー側でできるという柔軟度はあります。ただし、ずっとパッチを適用しない(塩漬け)でいいというわけではありません。パッチを古いまま使い続けることはセキュリティ面や既知の不具合などリスクがあること、また、環境の再作成が必要になった場合に古いイメージで新規作成ができないことなどのリスクが考えられます。そのため、ぜひ定期的なパッチ適用を行っていただければ幸いです。
よくある質問
Q1) DBCS/ExaCS上のGrid InfrastructureやDatabaseに対する個別パッチは、コンソールから適用できますか
A1) コンソールなどクラウドのツールで適用可能なパッチとして提供されているのは、RU/BP/PSUになります。そのため、個別パッチについては、従来通りSRでお問い合わせの上、手動(Opatch)にて適用してください。
Q2) DBCS/ExaCS上のGrid InfrastructureやDatabaseに対して、パッチ適用をせずにそのまま使い続けた場合、自動で適用されたり削除されたりしますか。
A2) DBCS/ExaCSの場合OS以上はユーザー管理領域となるため、オラクル側で勝手に自動パッチ適用や削除などは行いません。ただし、パッチを古いまま使い続けることはセキュリティ面や既知の不具合などリスクがありますので、定期的なパッチ適用の計画・実施をしていただくことを推奨いたします。
更新履歴
2020/08/25 ExaCSのDBシステム(Gird Infrastructure)とDatabaseのCLIでのパッチ適用方法のリンク追加
