同種データベース移行に関する考慮事項 - AWS 規範ガイダンス

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

同種データベース移行に関する考慮事項

このセクションでは、同種移行の主要なベストプラクティスについて説明します。データベースをオンプレミスの Exadata から Amazon EC2 の Amazon RDS for Oracle または Oracle に移行するときは、以下のサブセクションで説明されているガイドラインを検討してください。

Encryption

データセキュリティは の最優先事項です AWS。 AWS では、顧客の機密性、完全性、可用性を保護するために、厳格な契約上、技術的、組織的な対策を実施しています。データベースの場合、暗号化は個人情報と機密データを保護するため、重要です。Oracle on Amazon EC2 と Amazon RDS for Oracle は、保管中のデータに対して 2 つの暗号化方法をサポートしています。

どちらのオプションも、Oracle データベースとすべてのデータベースバックアップのユーザーデータを暗号化します。暗号化は、アプリケーションから発行された DML ステートメントに対しても透過的です。

転送中のデータの場合、Oracle on Amazon EC2 と Amazon RDS for Oracle は Oracle ネイティブネットワーク暗号化 (NNE) をサポートしています。NNE サポートの詳細については、Amazon RDS ドキュメントを参照してください。

データのパーティション化

Oracle パーティショニングでは、テーブルやインデックスなどのデータベース内の単一の論理オブジェクトが小さな物理データベースオブジェクトに分割されるため、管理性、パフォーマンス、可用性が向上します。Oracle パーティション分割には Oracle ライセンスが必要です。

大規模なデータベースワークロードがある場合は、テーブルをパーティション化することを検討してください。パーティションプルーニングにより、Oracle Database オプティマイザは SQL ステートメントの FROMおよび WHERE句を分析し、パーティションアクセスリストを構築するときに不要なパーティションを排除できます。Oracle Database は、SQL ステートメントに関連するパーティションに対してのみオペレーションを実行するため、通常はパフォーマンスが向上します。

パーティション分割は可用性にも役立ちます。パーティションがオフラインになり、SQL ステートメントがオペレーションを完了するためにオフラインパーティションを必要としない場合、SQL ステートメントは成功します。ただし、パーティション化されていない Oracle Database テーブル内でデータブロックが失われた場合、復元オペレーションが完了するまでテーブル全体が使用できなくなります。

データ圧縮

データ圧縮の場合、Oracle は HCC と Advanced Compression の両方を提供します。Advanced Compression は、リレーショナルデータ (テーブル)、非構造化データ (ファイル)、インデックス、Data Guard REDO データ、ネットワークデータ、RMAN バックアップ、およびその他のタイプのデータのデータベースストレージフットプリントを削減することで、パフォーマンスを向上させ、ストレージコストを削減します。高度な圧縮は、メモリやネットワーク帯域幅などのデータベースインフラストラクチャコンポーネントのパフォーマンスを向上させることもできます。

Oracle のドキュメントによると、Advanced Compression の平均圧縮率は少なくとも 2 倍です。したがって、通常、100 GiB のデータは 50 GiB のストレージスペースに格納できます。Oracle データベースを に移行するときは AWS、OLTP データベースとデータウェアハウスデータベースの両方を使用して、inAmazon RDS for Oracle および Oracle on Amazon EC2 で Advanced Compression を使用できます。で Oracle データベースで Advanced Compression を使用することを検討 AWS して、Exadata で使用していない場合でも、パフォーマンスを向上させ、Amazon EBS ストレージコストを削減できます。Advanced Compression には Oracle ライセンスが必要です。

ILM 戦略

情報ライフサイクル管理 (ILM) は、使用頻度に基づいてデータベース内の情報を管理するのに役立つプロセス、ポリシー、コンポーネントを提供します。で Exadata から Oracle に移行する場合は AWS、移行前または移行後にデータを消去できるかどうかを決定する必要があります AWS。では AWS、ルールを適用して、特定の期間のみデータを維持できます。Oracle パーティショニングと Oracle Advanced Compression を実装して、データライフサイクルポリシーを設定できます。これにより、ビジネスをサポートするために必要なデータのみを維持しながら、パフォーマンスを向上させることができます。

たとえば、複数のテビバイトの非圧縮データを消費するテーブルがあるとします。現在、12 年間のデータがあり、14 年間データを保持する必要があります。すべてのクエリの約 90% が、2 年未満のデータにアクセスします。通常、データ使用量は前月比、前四半期比、前年比で比較します。30 か月後にデータを更新することはできませんが、最大 12 年前の履歴データにアクセスする必要がある場合があります。この場合、次の ILM ポリシーを検討できます。

  • 高度な圧縮を実装します。高度な圧縮で Oracle ヒートマップと自動データ最適化 (ADO) を活用します。

  • 日付列に間隔パーティショニングを設定します。

  • 14 年以上前のパーティションを毎月削除する関数を使用します。

  • 読み取り専用テーブルスペースを使用して、30 か月以上経過したデータを保持します。読み取り専用のテーブルスペースの主な目的は、データベースの大規模な静的な部分のバックアップとリカバリを実行する必要がないことです (Amazon EC2 で Oracle で Oracle RMAN を使用する場合)。読み取り専用テーブルスペースは、ユーザーが変更できないように履歴データを保護する方法も提供します。テーブルスペースを読み取り専用にすると、ユーザーの更新権限レベルに関係なく、テーブルスペース内のすべてのテーブルの更新が防止されます。

ユーザーは、アクティブなデータ、アクセス頻度の低いデータ、アーカイブデータを 1 つの Oracle データベースに保存することがよくあります。Oracle データベースの への移行中に AWS、アクセス頻度の低いデータ、履歴監査データ、アーカイブデータを Amazon S3 または Amazon Glacier に直接移行できます。これにより、データベースのパフォーマンスに影響を与えることなく、長期的なデータ保持のためのガバナンスとコンプライアンスのニーズを満たすことができます。リレーショナルデータベースのデータが古くなると、Amazon S3 または Amazon Glacier にアーカイブできます。Amazon Amazon Athena Amazon Glacier Select を使用して、アーカイブされたデータを簡単にクエリできます。

OEM 統合

Oracle ワークロードを に移行するときは AWS、Oracle Enterprise Manager (OEM) Cloud Control を実装することをお勧めします AWS。OEM は、Oracle 環境を管理するための単一のインターフェイスを提供する Oracle の管理プラットフォームです。

Oracle on Amazon EC2 と Amazon RDS for Oracle は、OEM 環境のターゲットにすることができます。Amazon EC2 上の Oracle は、オンプレミス上の Oracle と同じプロセスに従って OEM と統合します。Amazon RDS for Oracle で OEM をアクティブ化するには:

  1. にサインイン AWS Management Console し、https://console.aws.amazon.com/rds/ で Amazon RDS コンソールを開きます。

  2. ナビゲーションペインで、オプショングループを選択します。

  3. OEM_AGENT オプションを新規または既存のオプショングループに追加します。

  4. OEM 管理サーバーのホスト名、ポート、OEM エージェント登録パスワードなどの OEM 設定情報を追加します。

Amazon RDS for Oracle と Amazon EC2 上の Oracle は、オンプレミスで実行されている OEM 環境のターゲットにすることもできます。ただし、そのためには、ファイアウォールを介してすべての OEM ポートにアクセスする必要があります。

Amazon CloudWatch との統合

Amazon CloudWatch は、ログ、メトリクス、イベントの形式でモニタリングおよび運用データを収集します。自動ダッシュボードを使用してデータを視覚化し、 AWS とオンプレミスで実行される AWS リソース、アプリケーション、サービスの統合ビューを提供します。Amazon EC2 および Amazon RDS for Oracle でホストされている Oracle データベースは、CloudWatch を使用できます。

CloudWatch と Amazon Simple Notification Service (Amazon SNS) は統合されているため、アクティブなすべての Amazon SNS 通知のメトリクスを収集、表示、分析できます。たとえば、Oracle Database アラートログ内の特定の Oracle エラーメッセージなど、指定されたアクションが発生した場合に E メール通知または SMS を送信するようにアラームを設定できます。

Amazon EC2 で Oracle で CloudWatch と Amazon SNS を使用するには、CloudWatch エージェントをインストールして、Oracle アラートログ、監査ログ、トレースログ、OEM ログ、リスナーログを CloudWatch にプッシュする必要があります。Amazon RDS for Oracle をデプロイする場合は、これらのログを CloudWatch に送信できるように Oracle インスタンスを変更する必要があります。CloudWatch 統合の詳細については、Amazon SNSドキュメント」のCloudWatch を使用した Amazon SNS Topis のモニタリング」を参照してください。 Amazon SNS

Amazon RDS for Oracle には、CPU 使用率、データベース接続数、使用可能なメモリ、空きストレージ容量、ストレージ IOPS、ディスクスループット、レプリケーションラグなど、多数のイベントに対する CloudWatch アラームも組み込まれています。

オンプレミスの Exadata から移行するほとんどのユーザーは、 AWS 引き続き OEM を使用し、CloudWatch を AWS の Oracle データベースと統合します。

データベースオプティマイザの統計

Oracle Database オプティマイザの統計は、データベースとそのテーブル、列、インデックス、システムに関する情報を提供します。オプティマイザはこの情報を使用して、クエリのテーブル、パーティション、またはインデックスから取得される行数とバイト数を見積もり、アクセスコストを見積もり、コストが最も低い SQL 実行プランを選択します。

Oracle RMAN を使用して Exadata オンプレミスデータベースを Amazon EC2 に復元すると、Oracle は Exadata 環境を反映する統計を自動的に提供します。Exadata データベースを Amazon EC2 に復元するか、Amazon RDS for Oracle で初期ロードが完了したら、できるだけ早く統計情報を収集することをお勧めします。これは、Oracle DBMS_STATS パッケージを実行することで実現できます。

AWR 設定

Oracle 自動ワークロードリポジトリ (AWR) は、Oracle データベースのパフォーマンス関連の統計を保存します。デフォルトでは、Oracle Database は 1 時間に 1 回スナップショットを生成し、スナップショットを 8 日間保持します。スナップショットを手動で作成または削除し、スナップショット設定を変更できます。

本番稼働用 Oracle データベースの場合、AWR 保持期間を 60 日または 90 日に延長し、AWR 間隔を 15 分または 30 分に短縮する必要があります。これらの設定はmonth-over-monthの比較をサポートし、AWR データを表示するとより詳細になります。これらの変更は、比較的小さな (ギビバイト単位で測定される) データベース領域を消費し、追加の履歴の利点を提供します。AWR 保持期間を 60 日間、AWR 間隔を 15 分に設定するには、次のコマンドを実行します (パラメータ値は分単位です)。

BEGIN DBMS_WORKLOAD_REPOSITORY.modify_snapshot_settings (interval => 15, retention => 86400 ); END; /

Oracle RMAN または Oracle Data Guard を使用して Exadata オンプレミスデータベースを Amazon EC2 上の Oracle に移行する場合は、データベースが Exadata で実行されている間にキャプチャされた AWR スナップショットを削除する必要があります。これを行うには、 DBMS_WORKLOAD_REPOSITORY.DROP_SNAPSHOT_RANGEの手順を使用します AWS。

Oracle RAC に関する考慮事項

デフォルトでは、Exadata は Oracle Real Application Clusters (RAC) を使用します。これにより、1 つの Oracle データベースを複数のサーバーで実行して可用性を最大化し、水平スケーラビリティを実現できます。Oracle RAC は共有ストレージを使用します。最小の Exadata サービスには、Oracle RAC を使用して設定された 2 つのノードが含まれています。

RPO 要件が 0 で、RTO 要件が 2 分以下の場合は、マルチ AZ を使用して Amazon RDS for Oracle を実装できます。この設定は、99.95% の月間稼働時間コミットメントを提供します。これは、Oracle RAC を使用するマネージド Oracle データベースを含む、業界のマネージド Oracle クラウドデータベースと同等かそれ以上です。

さらに、Oracle on Amazon EC2 では、Oracle Maximum Availability Architecture (MAA) の多くのコンポーネントを使用して、高可用性データベースを実装できます。これらのコンポーネントには、Active Data Guard、RMAN、Flashback Technologies、エディションベースの再定義、GoldenGate が含まれますが、これらに限定されません。

Oracle RAC を実装するためのさまざまな代替方法もあります AWS。の RAC オプションの詳細については AWS、アカウント AWS チームに問い合わせることをお勧めします。

同種移行に関するその他のベストプラクティス

デベロッパーは、Exadata を実装するときに SQL チューニング手法やベストプラクティスを無視することがよくあります。Exadata は多くの設計上の問題を隠しているため、SQL ステートメントは許容可能な経過時間内に完了するため、実行計画やリソースの消費量を評価することなく本番環境にデプロイされる可能性があります。Exadata オンプレミスデータベースを 上の Oracle に移行する場合は、以下の追加のプラクティスに従ってください AWS。

  • 最新の Oracle Release Update (RU) または Release Update Revision (RUR) を適用します。

  • COMPATIBLE 初期化パラメータに 3 つのレベル (19.0.0 など) のみが含まれていることを確認します。への移行後にアップグレードが発生した場合は AWS、アップグレードプロセス中にこのパラメータが変更されていることを確認してください。

  • I/O を最小限に抑えるために、シーケンス番号をキャッシュすることを検討してください。 デフォルト値は 20 です。シーケンス番号のキャッシュが不十分な場合、競合が発生する可能性があり、DML のサービス時間の増加として表示されます。

  • シーケンスを使用する場合は、シーケンスの不整合を避けるために、ソースデータベース (オンプレミスのExadata) に対してシーケンス値を検証します。

  • 接続プーリングがアプリケーション層に実装されていない場合、またはアプリケーション層の数によってデータベース接続の数が非常に多い場合は、Oracle Database Resident Connection Pooling (DRCP) の実装を検討してください。この機能は、データベースサーバーのメモリとコンピューティングリソースを効率的に処理します。

  • HugePages の使用を検討してください。Oracle では、Linux 用の標準の HugePages を使用することをお勧めします。HugePages を有効にすると、オペレーティングシステムがデフォルト (通常は 4 KB) より大きいメモリページをサポートできるようになります。非常に大きなページサイズを使用すると、ページテーブルエントリへのアクセスに必要なシステムリソースの量を減らすことで、システムパフォーマンスを向上させることができます。

  • の Oracle データベースにデータベースリンク AWS がある場合は、 OPEN_LINKSおよび OPEN_LINKS_PER_INSTANCE初期化パラメータがデフォルト値 (4) に設定されていないことを確認します。この値が低すぎると、データベースリンクを持つ SQL ステートメントは最大値に達するとキューに入れ始め、パフォーマンスに悪影響を及ぼします。

  • 初期データロードは、ネットワーク経由で送信できない場合があります。例えば、理論的には、1 Gbps リンク経由で 100 TiB を転送するのを中断することなく、少なくとも 9 日間かかります。より良いアプローチは、AWS Snow Familyデバイスを使用してデータベースを に移行することです AWS。

  • Exadata 固有の非表示パラメータをすべて削除します (Oracle MOS Note 1274318.1 を参照)。これらの非表示の Exadata 初期化パラメータはアクティブ化しないでください AWS。不安定、パフォーマンスの問題、破損、クラッシュを引き起こす可能性があります。

  • データを Oracle に移行した後、すべての非SYSオブジェクトとSYSTEM無効なオブジェクトを解決してみてください AWS。

  • Oracle System Global Area (SGA) で頻繁にアクセスされる静的テーブルをキャッシュすることを検討してください。

  • Oracle SGA 設定が大きいメモリ最適化インスタンスを選択して、追加の I/O オンのチャレンジを軽減します AWS。ターゲットインスタンスでの負荷テスト中に Oracle SGA アドバイザリレポートを使用して、最適な Oracle SGA 設定を見つけることができます。

  • 多くのフルテーブルスキャンを処理するテーブルにインデックスを作成します。V$SEGMENT_STATISTICS ビューには候補セグメントが一覧表示されます。

  • リソースを大量に消費する上位のクエリを特定し、実行計画を改善するために最適化します。Oracle Tuning Pack でライセンスされている Oracle SQL Tuning Advisor は、自動 SQL チューニングに役立ちます。場合によっては、クエリを書き換えたり、複雑なクエリを小さなチャンクに分割したりする必要があります。

  • 読み取り専用ワークロードに対応するために、Amazon ElastiCacheOracle Active Data Guard などの Amazon RDS for Oracle リードレプリカなどのキャッシュソリューションを実装することを検討してください。

  • 開発者にクエリ最適化手法をトレーニングし、標準運用手順を構築して、クエリを本番環境にデプロイする前に評価します。

  • のデータベースオブジェクト数が Exadata オンプレミスデータベース AWS と同じであることを確認します。テーブル、インデックス、プロシージャ、トリガー、関数、パッケージ、制約、その他のオブジェクトを検証します。

  • 可能であれば、アプリケーションの変更を検討してください。(場合によっては、パッケージ化された ISV アプリケーションと同様にアプリケーションを変更することはできません。) 不要な呼び出しを避け、必要な呼び出しの頻度を減らします。SQL ステートメントによって取得されるデータボリュームを最小限に抑えます。コミット頻度がビジネスロジックに適しているが、過剰ではないことを確認してください。アプリケーションレベルのキャッシュの使用を改善してみてください。

  • データベースは、 のプライベート仮想プライベートクラウド (VPC) に存在する必要があります AWS。インバウンドトラフィックとアウトバウンドトラフィックのネットワークアクセスを最小特権モデルに制限します。セキュリティグループのソースは、 AWS アカウントのセキュリティグループ、プレフィックスリスト、または特定の IP アドレスのセットを参照する必要があります (x.x.x.x/32 形式を使用)。セキュリティグループのソースは CIDR を使用してはならず、セキュリティグループはパブリックインターネット (0.0.0.0/0) からアクセスすることはできません。