Amazon Web Services ブログ
Amazon RDS Custom for Oracle インスタンスの再作成を行う方法 : パート2
本投稿は、Jobin Joseph、 Dwarka RaoとNitin Saxenaによる記事Recreate an Amazon RDS Custom for Oracle database: Part 2を翻訳したものです。
このシリーズではサポートペリメーターに違反することなくAmazon Relational Database Service (Amazon RDS) Custom for Oracleのカスタマイズを行う方法についてベストプラクティスとステップ・バイ・ステップの手順を紹介します。
- パート1ではタイムゾーンの変更とデータベースの文字コードの変更についてご紹介します。
- パート2(本投稿)では、データベースの再作成を必要とするデフォルトのブロックサイズの変更についてご紹介します。
- パート3では、Oracle Flashback Databaseの有効化やTNS構成・データベースオプションの構成の変更、そしてRDS Custom for Oracleインスタンスにパッチを適用するためのベストプラクティスについてご紹介します。
Oracle Databaseにはデータベース作成後に変更できないいくつかの設定があります。デフォルトのブロックサイズは、変更するためにデータベースの再作成が必要な設定の一つです。本投稿では、以下のようなユースケースのためにRDS Custom for Oracleのデータベースを再作成する方法についてご紹介します:
- データベースの標準的なブロック・サイズの変更 – RDS Custom for Oracleインスタンスはデフォルトのデータベースブロックサイズ(DB_BLOCK_SIZE)である8Kで構築されており、これは多くのユースケースで適しています。このデフォルトのブロックサイズはデータベースの作成後は変更することができず、データベースの再作成が必要になります。一般的に、オンライントランザクションシステム(OLTP)には小さなブロックサイズ(4Kもしくは8K)が適しており、意思決定システム(DSS)には大きなブロックサイズ(8K、16K、32K)が適しています。非標準のブロックサイズ用の表領域を作成することもできますが、SGAの中のバッファキャッシュ領域に構成する非標準用のサブキャッシュ領域を構成する必要があるため、特にメモリ管理が複雑となり、管理が複雑になります。
- 変更するデータベースキャラクタセット(NLS_CHARACTERSET)が現在のキャラクタセットのスーパーセットではない場合 – このシリーズの最初のパートで議論したように、変更しようとするキャラクタセットが現在のキャラクタセットのスーパーセットの場合、
ALTER DATABASE
コマンドを用いることでRDS Custom for Oracleのキャラクタセットを変更することができます。そうではない場合、データベースの再作成をすることで任意のキャラクタセットを選択することができます。 - 各国語キャラクタセット(NLS_NCHAR_CHARCTERSET)の変更 – パート1で議論したように、内部スキーマに存在するNCHARデータ型の変更作業は複雑です。各国語キャラクタセットを
AL16UTF16
(デフォルト)からUTF8
に変更する手順は既存のデータベースを再作成するほうがシンプルです。 - 複数の変更を同時に行う – タイムゾーンやNLS_CHARACTERSET、NLS_NCHAR_CHARACTERSET、データベースのブロックサイズなど、複数の構成変更を行いたい時、希望する構成にあわせてデフォルトデータベースを再作成するほうがシンプルです。
データベースの再作成を行うかわりに、希望した構成で構築されている構成済のデータベースのコピーを既存のRDS Custom for Oracleデータベースを置き換える方法も選択できます。より詳細については、Physical migration of Oracle databases to Amazon RDS Custom using RMAN duplication と Physical migration of Oracle databases to Amazon RDS Custom using Data Guard を参照してください。
要件と制限
RDS Custom for Oracleのデータベース再作成を行う時、ドキュメントに記載されているRequirements and limitations for Amazon RDS Custom for Oracleの手順に従う必要があります。以下の制約が適用されます:
- プロビジョン時に指定したデータベース名(デフォルトはORCL)と同じものを使う必要があります。データベース名の変更を行いたい場合、希望するデータベース名で新しいRDS Custom for Oracleインスタンスをプロビジョンする必要があります。
- 本記事の作成時点では、RDS Custom for Oracleはマルチテナント構成をサポートしていません。したがって、再作成するデータベースはnon-CDBアーキテクチャである必要があります。
- オートメーションフレームワークはデータベースの物理的な配置場所と関連性があるため、データファイル(
datafile
、control_file
,redolog
)の物理的な場所は変更してはいけません。 - データベースは
archivelog
モードである必要があります。
RDS Customオートメーションの停止
RDS Custom for OracleのDBインスタンスをカスタマイズする前に、カスタマイズ作業とRDS Customのオートメーションと監視フレームワークが干渉しないようにオートメーションを停止する必要があります。Amazon RDSコンソールもしくはAWS Command Line Interface(AWS CLI)を用いてオートメーションの停止を行うことができます。具体的な手順については、Pausing and resuming RDS Custom automationのマニュアルを参照してください。メンテナンス作業を完了するために必要な時間を想定し、オートメーションを停止します。必要な時間の目処が立たない場合、いったん60分でオートメーションを停止し、停止期間が切れる前に延長することもできます。
データベースパスワードの取得
RDS Custom for Oracleの再作成を行うために、SYS、SYSTEM、RDSADMINユーザーのパスワードを保持しておく必要があります。これらのデータベースユーザーは同じパスワードを共有しますが、以下の手順でAWS Secrets Manager から取得できます:
- Amazon RDSコンソール上で、ナビゲーションペインからデータベースを選択し、再作成するデータベースを選択します。
- 設定タブを選択しインスタンスのリソースIDを控えておきます(
db-ABCDEFGHIJKLMNOPQRS0123456
といったフォーマットになっています)。 - Secrets Managerのコンソールで、同じ名前をシークレットIDを選択します
do-not-delete-custom-<resource_id>
。 - シークレットの値を取得するを選択し、データベースユーザーのパスワードを控えておきます。
EC2インスタンスへの接続
データベースを再作成するために、SSHキーあるいはAWS Systems Managerを用いて傘下のAmazon Elastic Compute Cloud(Amazon EC2)インスタンスに接続します。(具体的な手順は、Connecting to your RDS Custom DB instance using AWS Systems Managerを参照してください。)
ec2-user
でログインした後、Oracle Databaseのバイナリーの所持ユーザーであるrdsdb
ユーザーに変更できます。そうすることでsysdba
権限を用いてインスタンスに接続できます。以下のコードを参照してください:
データベース作成後のscriptの実行
以下のステップを完了してください:
- password verification functionsでプロファイルを作成し、DEFAULTプロファイルに設定します:
- 前段で作成したスクリプトを用いてRDS Custom固有のリソースを作成します:
- RDSADMINプロファイルをSYS、SYSTEM、DBSNMPユーザーに割り当て、
USER_LOCK
パッケージを作成するためuserlock.sql
を実行します:
Release Update(RU)の詳細に応じてSQLレジストリを更新するためdatapatchを実行します
以下のコードを実行します:
データベースの中にINVALIDなオブジェクトがないことを確認します:
オートメーションの再開
RDS Customのオートメーションと監視フレームワークを有効化するため、インスタンスのオートメーションを再開します。
RDS Customオートメーションフレームワークの確認
カスタマイズ作業を終えた後にオートメーションを再開すると、作業ステップが正常に進んでいる場合はAmazon RDSコンソールのインスタンスの状態が利用可能
になり、RDS Customインスタンスは自動バックアップを開始します。バックアップが完了した時、Amazon RDSコンソールのメンテナンスとバックアップのセクションを確認するか、AWS CLIで以下のように実行することで最も遅い復元可能な時刻を確認できます:
Amazon RDSコンソールからインスタンスによって作成された最新のスナップショットを確認することもできます(自動バックアップを選択し、データベースを選択し、システムスナップショットを選択します)もしくは、AWS CLIで以下のように実行します:
この例では、demo-2-replica
はRDS Custom for Oracleインスタンスのインスタンス識別子です。
オートメーションが再開された後に作成された最新のスナップショットを確認すると、最も早い復元可能な時刻はオートメーションを停止した時間を指していることが確認できます。10分後に再度同じクエリーを発行すると、インスタンスのステータスがhealthになっていることが確認できます。
まとめ
この投稿では、RDS Custom for Oracleのデフォルトデータベースに対してデフォルトブロックサイズの変更といったデータベースの再作成を必要とする変更を行う場合のステップバイステップのガイドとベストプラクティスについて紹介しました。
RDS Custom for Oracleのキャラクタセットの変更やタイムゾーンの変更といったカスタマイズを行う場合はパート1をご参照ください。パート3ではOracle Flashback Databaseの有効化やTNS構成やデータベースオプションの変更といったカスタマイズ、そしてRDS Custom for Oracleインスタンスにパッチを適用する場合のベストプラクティスについてご紹介します。
本投稿へのご意見はコメント欄にお願いします。
翻訳はソリューションアーキテクトの 矢木 覚 が担当しました。原文はこちらです。