アイマスクを付けて寝るようになってから睡眠の質が良くなった気がしている技術2課の山﨑です
本日は以下の記事の内容に関連した内容で実際にRDS for Oracleを11gから19cにメジャーアップグレードしてみたのでその手順等をご紹介したいと思います。
※Licenseインクルード版の11gは2020年10月末が期限です。その他注意事項については下記ブログをご参照ください。
アップグレード手順
アップグレードのおおよその流れは以下の通りです

※アップグレードの所要時間についてはインスタンスクラスやストレージに格納されているデータ容量等によって変動します。そのためテストDBをアップグレードする際におよその所要時間を測定し、本番環境のアップグレードではテストDBでかかった時間にさらにバッファを持たせた上でスケジュールを立てることをお勧めします。
今回はこの中でも「テスト用DB構築→19cにアップグレード」と「切り戻し」についてご紹介したいと思います
テスト用DB構築→19cにアップグレード
まずはアップグレード対象のRDSのスナップショットを復元してテスト用DBを構築します
テスト用DBの構築なので自動バックアップウィンドウで取得したスナップショットを利用します

次にアップグレード後にアタッチするオプショングループとパラメータグループを新規で作成します。
※設定値は基本的には既存の設定を踏襲しますが、19cで廃止されているパラメータもなかにはあるのでこの段階で既存の設定値を適用できるかどうか確認しておきます。
以下のパラメータは、Oracle 12c バージョンで 12.2.0.1 で削除されました。
global_context_pool_size
max_enabled_roles
optimizer_adaptive_features
parallel_automatic_tuning
parallel_degree_level
use_indirect_data_buffers
以下のパラメータは、Oracle 12c バージョン 12.2.0.1 以降ではサポート対象外となりました。
sec_case_sensitive_logon
参照ドキュメント:https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/CHAP_Oracle.html


パラメータグループの設定変更はコンソール画面でポチポチ変更していく方法も1つですが、CLIを使っても可能ですのでお好みの方法を選択してください
aws rds modify-db-parameter-group \ --db-parameter-group-name test-database-params-oracle-se2-19 \ --parameters "ParameterName='db_cache_size',ParameterValue=2684354560,ApplyMethod=immediate" \
※参照ドキュメント:DB パラメータグループを使用する - Amazon Relational Database Service


ここまできたら、復元したテスト用DBをアップグレードします



アップグレードが始まると自動でアップグレード前のスナップショットが生成されます。スナップショット名には「preupgrade」という文字がついています。

これでアップグレードが始まります。しばらくすると以下のようにアップグレードが完了します。

※パラメータグループが同期中になっていることを確認します。同期中になっていない場合は再起動が必要になりますのでご注意ください
切り戻し
今回の切り戻しでは以下の点に注意して行います。
- Oracleのバージョンをダウングレードすることはできないため、新規にDBインスタンスを構築する必要がある
- DB識別子を変えてしまうとRDSのエンドポイントが変わってしまうのでエンドポイントを変えたくない場合はDB識別子を変えないように復元する
実作業
まずはアップグレードしたインスタンスのDB識別子を変更します。この際に変更前のDB識別子とエンドポイントをメモしておきます。

次にアップグレード時に生成されたスナップショットを使って作業前のDBインスタンスを復元します。この時、DB識別子には上記でメモした変更前のDB識別子を利用します。

復元が完了したらエンドポイントが復旧作業前のインスタンスのそれと同じか念の為に確認しておきます


復旧作業はこれで完了です。あとは不要になったDBインスタンスを削除しておけばOKです。
まとめ
メジャーアップグレードはアプリケーションの改修が必要になる可能性があるためできる限り早めの対応をしたいところです。RDS for Oracleに限らずアップグレード対応は早め早めの対応を心がけましょう!