Oracle エンドポイントのトラブルシューティング - AWS データベース移行サービス

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

Oracle エンドポイントのトラブルシューティング

このセクションでは、Oracle に固有のレプリケーションシナリオについて説明します。

ソースの読み取りが停止した

AWS DMS は、次のシナリオで Oracle ソースからの読み取りを停止します。この動作は仕様です。原因はタスクログを使用して調査できます。タスクログで次のメッセージを調べます。タスクログのオペレーションの詳細については、「AWS DMS タスクログの表示と管理」を参照してください。

  • SORTER メッセージ: DMS がレプリケーションインスタンスにトランザクションをキャッシュしていることを示します。詳細については、「タスクログの SORTER メッセージ」を参照してください。

  • デバッグタスクログ: DMS が読み取りプロセスを中断した場合、タスクはコンテキストフィールドやタイムスタンプを変更せずに、次のメッセージをデバッグタスクログに繰り返し書き込みます。

    • Binary Reader:

      [SOURCE_CAPTURE ]T: Produce CTI event: context '00000020.f23ec6e5.00000002.000a.00.0000:190805.3477731.16' xid [00000000001e0018] timestamp '2021-07-19 06:57:55' thread 2 (oradcdc_oralog.c:817)
    • Logminer:

      [SOURCE_CAPTURE ]T: Produce INSERT event: object id 1309826 context '000000000F2CECAA010000010005A8F500000275016C0000000000000F2CEC58' xid [000014e06411d996] timestamp '2021-08-12 09:20:32' thread 1 (oracdc_reader.c:2269)
  • AWS DMS は、新しい REDO またはアーカイブされたログオペレーションごとに次のメッセージを記録します。

    00007298: 2021-08-13T22:00:34 [SOURCE_CAPTURE ]I: Start processing archived Redo log sequence 14850 thread 2 name XXXXX/XXXXX/ARCHIVELOG/2021_08_14/thread_2_seq_14850.22977.1080547209 (oradcdc_redo.c:754)

    ソースに新しい REDO オペレーションまたはアーカイブされたログオペレーションがあり、AWS DMS がこのようなメッセージをログに書き込んでいない場合は、タスクがイベントを処理していないことを意味します。

大量の REDO 生成

タスクが REDO ログまたはアーカイブされたログを処理しているものの、ソースのレイテンシーが依然として高い場合は、REDO ログの生成速度と生成パターンを特定します。REDO ログの生成レベルが高い場合は、レプリケートしたテーブルに関連する変更をフェッチするタスクが REDO ログとアーカイブログをすべて読み取るため、ソースのレイテンシーが増大します。

REDO 生成率を判断するには、次のクエリを使用します。

  • 1 日あたりの REDO 生成率:

    select trunc(COMPLETION_TIME,'DD') Day, thread#, round(sum(BLOCKS*BLOCK_SIZE)/1024/1024/1024) GB, count(*) Archives_Generated from v$archived_log where completion_time > sysdate- 1 group by trunc(COMPLETION_TIME,'DD'),thread# order by 1;
  • 1 時間あたりの REDO 生成率:

    Alter session set nls_date_format = 'DD-MON-YYYY HH24:MI:SS'; select trunc(COMPLETION_TIME,'HH') Hour,thread# , round(sum(BLOCKS*BLOCK_SIZE)/1024/1024) "REDO PER HOUR (MB)", count(*) Archives from v$archived_log where completion_time > sysdate- 1 group by trunc(COMPLETION_TIME,'HH'),thread# order by 1 ;

このシナリオでレイテンシーのトラブルシューティングを行うには、次の点を確認します。

  • レプリケーションのネットワーク帯域幅とシングルスレッドのパフォーマンスを調べて、基盤となるネットワークがソースの REDO 生成速度をサポートできることを確認します。ネットワーク帯域幅によるレプリケーションのパフォーマンスへの影響の詳細については、前の「ネットワーク速度と帯域幅」を参照してください。

  • 補足ログが適切に設定されているかを確認します。テーブルのすべての列でログを有効にするなど、ソースでの余分なログ記録は避けます。補足ログの設定の詳細については、「サプリメンタル ロギングの設定」を参照してください。

  • REDO ログまたはアーカイブされたログを読み取るために適切な API を使用していることを確認します。AWS DMS は、Oracle LogMiner または Binary Reader のいずれかを使用できます。LogMiner はオンラインの REDO ログとアーカイブされた REDO ログファイルを読み取ります。Binary Reader は raw REDO ログファイルを直接読み取り、解析します。このため、Binary Reader を使用するとパフォーマンスが向上します。REDO ログの生成が 1 時間あたり 10 GBを超える場合は、Binary Reader を使用することをお勧めします。詳細については、「CDC での Oracle LogMiner または AWS DMS Binary Reader の使用」を参照してください。

  • ArchivedLogsOnlyY に設定しているかを確認します。このエンドポイント設定が指定されている場合、AWS DMS はアーカイブされた REDO ログから読み取ります。AWS DMS はオンライン REDO ログがアーカイブされるまで待機してから読み取りを行うため、これによりソースのレイテンシーが増大します。詳細については、「ArchivedLogsOnly」を参照してください。

  • Oracle ソースで自動ストレージ管理 (ASM) を使用している場合にデータストアを適切に設定する方法については、「AWS DMS のソースとして Oracle を使用する場合の REDO の Oracle ASM への保存」を参照してください。追加接続属性(ECA) asmUsePLSQLArray を使用して、読み取りパフォーマンスをさらに最適化できる場合もあります。asmUsePLSQLArray の使用の詳細については、「AWS DMS のソースとして Oracle を使用する場合のエンドポイントの設定」を参照してください。