こんばんは、小寺です。
Amazon RDS for OracleがOracle Multitenantをサポートするようになりました。
https://aws.amazon.com/about-aws/whats-new/2023/11/amazon-rds-oracle-supports-oracle-multitenant/
Oracle Multitenantとは?
Oracle MultitenantはOracle 12cから導入された新機能で、Oracle Databaseをマルチテナント環境向けに提供するための仕組みです。
マルチテナント・アーキテクチャを使用すことで、Oracle Databaseをマルチテナント・コンテナ・データベース(以下、CDB)として利用できます。
CDBという器となるDBの中に、プラガブル・データベース(以降、PDB)と呼ばれるDBを複数作成できます。
アプリケーションレイヤーから見ると、今までのデータベースと変わらないためPDBを利用することによる変更等は不要です。
機能面ではオンプレミスでもクラウドでも、Oracle Multitenantを使用すると、アプリケーションはPDB内で変更されずに実行され、リソースの使用率、管理、および全体的なセキュリティが向上されます。
アップデート内容
マルチテナントをサポートするバージョンはOracle Enterprise Edition または Standard Edition 2 を実行する Oracle Database バージョン 19c および 21cです。
本アップデートにより、スタンドアロン・データベースをPDBとして作成するか、PDBに移行することによってデータベースの統合ができるようになります。
アップデートのメリットって?
既存の非CDBインスタンスをCDBに変換ができるようです。マルチテナント構成に変更して、複数のPDBを保持できるようにすることもできます。
統合メリットは、DBインスタンスのリソース使用率がアップし、複数のインスタンスを管理する負荷が軽減されることです。今回、注目したいのはトータルのライセンスも削減できるのではないか?ということです。
というのは、Amazon RDS for Oracle DB インスタンスは、インスタンスが非 CDB であるか、シングルテナント構成またはマルチテナント構成の CDB であるかに関係なく、同じ料金で課金されます。
ここからは私見ですが今までOracleを使いたいが、オンプレミスからクラウド移行時のライセンス費用面がネックになってRDSではなくOracle on EC2を選ばれていたケースにも対応できるのではないかと思います。
マルチテナント構成で作成してみる
ここからやってみた編です。
(1) RDSへマネジメントコンソールから接続します。データベースエンジンはOracleを選んでインスタンスを作成します。「マルチテナントアーキテクチャ」から「シングルテナント設定」と「マルチテナント設定」が選べるようになっています。
プルダウンでエンジンバージョンを確認しましたが、サポートされているのはOracle 19cと21cで、デフォルトではOracle 19cの最新バージョンが表示されています。
非CDBをCDBへ変更してみる
以下の前提条件があります。
・CDB から非 CDBの変換はサポートされておらず、非CDBからCDBにのみ変換できます。
・1回のmodify-db-instanceコールで非CDBをマルチテナント構成に変換することはできません。非CDBをCDBに変換した際はCDBはシングルテナント構成になります。シングルテナント構成をマルチテナント構成に変換するには、modify-db-instance を再度実行します。
・Oracle Data Guard が有効になっているプライマリ データベースまたはレプリカ データベースを変換することはできません。リードレプリカがある非CDBを変換するには、まずすべてのリードレプリカを削除する必要があります。
(1) まずは非CDBを作成しておきます。
(2) 作成した非CDB インスタンスを CDB へ変更します。変更から「マルチテナント」へチェックを入れます。
※CDB への変更とバージョンアップ(例えば 19c から 21c へのアップグレード)は出来ません。一度 CDB に変換した後に 21c へのメジャーバージョンアップ操作が必要です。
(3) DBインスタンスの変更をクリックして、すぐに適用するかもしくは次回のメンテナンス期間中に適用されるようにします。
適用後はダウンタイムが発生します。変更完了後にインスタンス名の後に(CDB)として表示されるようになります。