既知の制限事項と推奨事項

このページでは、既知の制限事項( 主キーや 外部キー、トリガーなどのエンティティの 処理に関する特別な考慮事項を含む)と、Database Migration Service を使用した異種 Oracle 移行の 推奨事項について説明します。

移行されないもの

  • ユーザーと権限は移行されません。
  • アクティブな移行ジョブ中に発生したスキーマの変更は、自動的に 移行されません。移行中にスキーマを変更する場合は、まずスキーマの変更でコンバージョン ワークスペースを更新してから、 関連する移行ジョブを更新する必要があります。詳細については、 移行ジョブに更新されたスキーマまたはテーブルを追加するをご覧ください。
  • SAVEPOINT ステートメントはサポートされておらず、 ロールバック時にデータの不整合が発生する可能性があります。
  • Database Migration Service はユーザー定義データ型を複製しますが、ユーザー定義型の派生元の基本データ型のみを保存します。たとえば、USERNAME データ型に基づいて VARCHAR2 データ型を定義した場合、データは VARCHAR として宛先に保存されます。

データベース、トランザクション、データの整合性

  • Database Migration Service は各トランザクションが発生したときに複製しないため、移行は最終的に整合性のあるものになります。移行では、複数のテーブルからデータが取り込まれます 。宛先にデータが読み込まれる順序は異なる場合がありますが、移行元への書き込みが停止され、移行バッファがクリアされると、移行元と再調整されます。
  • 異種 Oracle 移行の場合、Database Migration Service は移行ジョブごとに 1 つのデータベースのみを移行できます。
  • Database Migration Service は Oracle マルチテナント アーキテクチャ(CDB/PDB)をサポートしていますが、 移行ジョブごとに移行できるプラガブル データベースは 1 つだけです。
  • Oracle Label Security(OLS)は複製されません。
  • 移行プロセス中に移行元データベースでロールバックされたトランザクションは、宛先に一時的に表示されることがあります(トランザクションが十分に長い場合)。
  • Database Migration Service は、Oracle Real Application Clusters(RAC)環境の単一クライアント アクセス名(SCAN)機能を使用するデータベースへの直接接続をサポートしていません。このような環境でパブリック IP 許可リスト接続を使用する場合の解決策については、 Oracle SCAN エラーのトラブルシューティングをご覧ください。

データのエンコード

  • Database Migration Service は、UTF8 セット エンコードのみを 移行先データベースでサポートしています。`UTF8` エンコード セットに含まれていない文字を含むスキーマ名とテーブル名は対象外です。
  • Database Migration Service は、Oracle データベース用に次の文字セット エンコードをサポートしています:
    • AL16UTF16
    • AL32UTF8
    • IN8ISCII
    • IW8ISO8859P8
    • JA16SJIS
    • JA16SJISTILDE
    • KO16MSWIN949
    • US7ASCII
    • UTF8
    • WE8ISO8859P1
    • WE8ISO8859P9
    • WE8ISO8859P15
    • WE8MSWIN1252
    • ZHT16BIG5

テーブル、スキーマ、その他のオブジェクト

  • 移行中、データ、スキーマ、 メタデータに対するデータ定義言語(DDL)の変更はサポートされていません。移行中にスキーマを更新する場合は、 変更をコンバージョン ワークスペースにプルし、コードを変換して、 宛先をクリーンアップし、移行ジョブを再度実行する必要があります。
  • 英数字 文字またはアンダースコア(_)以外の文字を含むテーブル列名はサポートされていません。
  • テーブルまたは列の最大名は 30 文字です。 Database Migration Service は、この上限を超えるテーブルや、名前がこの上限を超える列を含むテーブルを複製できません。
  • 索引構成表(IOT)はサポートされていません。
  • グローバル一時テーブルには、宛先に pgtt PostgreSQL 拡張機能をインストールして作成する必要があります。
  • 列のタイプが BFILE の場合、ファイルへのパスのみが 複製されます。ファイルの内容は複製されません。
  • Oracle 11g では、データ型 ANYDATA または UDT の列のあるテーブルはサポートされておらず、テーブル全体が複製されません。
  • dbms_job または dbms_scheduler を使用してスケジュールされたジョブは移行されません。
  • マテリアライズド ビューの定義は移行されますが、マテリアライズド データ は移行されません。移行が完了したら、移行したテーブルのデータを入力するために マテリアライズド ビューを更新します。
  • シーケンス値は移行されますが、移行が完了する前に移行元データベースの値が進行し続ける可能性があります。移行が完了したら、移行先インスタンスのシーケンス値を更新して、移行元データベースの値と一致させます。
  • 移行ジョブは 10,000 テーブルに制限されています。
  • 行のサイズは 100 MB に制限されています。100 MB の上限を超える行は 移行されず、移行ジョブでエラーとして表示されます。
  • 移行開始後に作成されたテーブルは自動的に移行されません 。まず、コンバージョン ワークスペースでスキーマをプルし、 変換された定義を宛先に適用して、移行ジョブを更新する必要があります。
  • バイナリ列を含み、主キーのない移行元テーブルは、 継続的移行でのデータ移行ではサポートされていません。

データ型の制限

Oracle 移行では、次のデータ型はサポートされていません。

  • ANYDATA(Oracle 11g の場合、ANYDATA を含むテーブルは完全にサポートされておらず、複製されません)
  • BFILE
  • INTERVAL DAY TO SECOND
  • INTERVAL YEAR TO MONTH
  • LONG/LONG RAW
  • SDO_GEOMETRY
  • UDT
  • UROWID
  • XMLTYPE
  • TIMESTAMPゼロ日付

主キーに関する考慮事項

主キーのないテーブルでは、一貫したレプリケーションは保証されません。Database Migration Service は、主キーのあるテーブルのみを移行します。 移行元データベースに主キーのないテーブルが含まれている場合、Database Migration Service コンバージョン ワークスペースによって、ソースコードとスキーマを 変換すると、移行先テーブルに不足している主キーが自動的に作成されます。 GENERATE_MISSING_PK 変換ディレクティブを使用して、主キーの自動生成を無効にすることもできます。

継続的移行の場合: バイナリ列を含み、 主キーのない移行元テーブルは、継続的移行でのデータ移行ではサポートされていません。

レガシー コンバージョン ワークスペースを使用する場合は、移行を開始する前に、移行先データベースの変換済みテーブルに主キー制約を手動で作成する必要があります。詳細については、 レガシー コンバージョン ワークスペースをご覧ください。

外部キーとトリガーに関する考慮事項

移行元データベースに存在する外部キーとトリガーは、データの完全性の問題を引き起こしたり、移行ジョブが失敗したりする可能性があります。移行ユーザーに REPLICATION オプションを使用して外部キーとトリガー をスキップすると、これらの問題を回避できます。 または、移行先データベースのすべての外部キーとトリガーを削除し、移行が完了したら再作成することもできます。

トリガー

Database Migration Service によって複製されたデータには、移行元データベースのトリガーによって行われた変更がすでに組み込まれています。宛先でトリガーが有効になっている場合、トリガーが再度起動してデータを操作し、データの完全性や重複の問題が発生する可能性があります。

外部キー

Database Migration Service はトランザクション方式でデータを複製しないため、テーブルが順序どおりに移行されない可能性があります。外部キーが存在し、外部キーを使用する子テーブルが親テーブルより先に移行されると、レプリケーション エラーが発生する可能性があります。

推奨事項

割り当て

  • 同時に最大 2,000 個の接続プロファイルと 1,000 個の移行ジョブを維持できます。この上限に達した後で他の作業を行うには、移行ジョブ(完了したジョブを含む) または接続プロファイルを削除します。