RDS for Oracleを11gから19cにメジャーアップグレードしてみた

記事タイトルとURLをコピーする

アイマスクを付けて寝るようになってから睡眠の質が良くなった気がしている技術2課の山﨑です

本日は以下の記事の内容に関連した内容で実際にRDS for Oracleを11gから19cにメジャーアップグレードしてみたのでその手順等をご紹介したいと思います。

※Licenseインクルード版の11gは2020年10月末が期限です。その他注意事項については下記ブログをご参照ください。

blog.serverworks.co.jp

blog.serverworks.co.jp

アップグレード手順

アップグレードのおおよその流れは以下の通りです

アップグレード手順
アップグレード手順

※アップグレードの所要時間についてはインスタンスクラスやストレージに格納されているデータ容量等によって変動します。そのためテスト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をアップグレードします

DBエンジンのバージョンを19cに指定
オプショングループ・パラメータグループを変更
変更内容を確認して変更

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

アップグレード前のスナップショットが自動生成される

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

19cにアップグレードが完了

※パラメータグループが同期中になっていることを確認します。同期中になっていない場合は再起動が必要になりますのでご注意ください

切り戻し

今回の切り戻しでは以下の点に注意して行います。

  • Oracleのバージョンをダウングレードすることはできないため、新規にDBインスタンスを構築する必要がある
  • DB識別子を変えてしまうとRDSのエンドポイントが変わってしまうのでエンドポイントを変えたくない場合はDB識別子を変えないように復元する

実作業

まずはアップグレードしたインスタンスのDB識別子を変更します。この際に変更前のDB識別子とエンドポイントをメモしておきます。

DB識別子を変更

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

アップグレード前のDBインスタンスをスナップショットから復元

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

復旧作業前
復旧作業後

復旧作業はこれで完了です。あとは不要になったDBインスタンスを削除しておけばOKです。

まとめ

メジャーアップグレードはアプリケーションの改修が必要になる可能性があるためできる限り早めの対応をしたいところです。RDS for Oracleに限らずアップグレード対応は早め早めの対応を心がけましょう!