Amazon RDS Oracle の Binary Reader の使用時に AWS DMS タスクが失敗したのはなぜですか?

最終更新日: 2019 年 10 月 2 日

Amazon Relational Database Service (Amazon RDS) for Oracle で Binary Reader の使用中に、AWS Database Migration Service (AWS DMS) タスクが失敗した理由を教えてください。

簡単な説明

変更データキャプチャ (CDC) フェーズ中に、Oracle は REDO ログを読み取る方法として Oracle LogMiner と Binary Reader の 2 つを提供しています。Oracle LogMiner は、オンラインおよびアーカイブされた REDO ログにアクセスする SQL インターフェイスです。Binary Reader は、REDO ログを直接読み取り、解析する AWS DMS 機能です。

大量の変更がある移行に Binary Reader を使用する場合、アーカイブログがレプリケーションインスタンスでコピーされて解析されるため、Binary Reader は Oracle LogMiner を使用するよりも Oracle ソースデータベースへの影響が少なくなります。大量の変更がある移行の場合、Binary Reader は通常 Oracle LogMiner を使用するよりも CDC のパフォーマンスが向上します。ネットワークパフォーマンスのボトルネックを避けるために、十分なネットワーク帯域幅をプロビジョニングしてください。

Binary Reader の使用時に前提条件が満たされていない場合、次の 2 種類のエラーが発生することがあります。

  • アクセス許可エラー
  • 追加の接続属性エラー

解決方法

アクセス許可エラー

AWS DMS は、ソースデータベースにディレクトリを作成して Binary Reader を使用します。その結果、AWS DMS ユーザーアカウントには、ソースの Oracle エンドポイントにアクセスし、必要なディレクトリを作成するために必要な権限が必要になります。AWS DMS にアクセス許可がない場合、次のようなログエントリが表示されます。

メッセージ
[SOURCE_CAPTURE ]E: OCI error 'ORA-00604: error occurred at recursive SQL level 1 ORA-20900: Invalid path used for directory: /rdsdbdata/log/arch ORA-06512: at "RDSADMIN.RDSADMIN", line 321 ORA-06512: at line 2' [1022307] (oradcdc_bfilectx.c:164)

これらのエラーを解決するには、Amazon RDS マスターユーザーを AWS DMS ユーザーとして使用してください。ディレクトリは、AWS DMS タスクの実行を開始すると自動的に作成されます。ディレクトリが作成されない場合は、マスターユーザーを使用して Oracle データベースにログインします。次に、以下のコマンドを実行して、これらのディレクトリを作成できるかどうかをテストします。

SQL> exec rdsadmin.rdsadmin_master_util.create_archivelog_dir;
SQL> exec rdsadmin.rdsadmin_master_util.create_onlinelog_dir;

all_directories テーブルをクエリして結果を確認します。

SQL> select directory_path from all_directories where directory_name in ('ONLINELOG_DIR','ARCHIVELOG_DIR');
DIRECTORY_PATH
--------------------------------------------------------------------------------
/rdsdbdata/log/arch
/rdsdbdata/log/onlinelog

必要なディレクトリ ONLINELOG_DIRARCHIVELOG_DIR を作成し、AWS DMS タスクを再起動します。

追加の接続属性エラー

Binary Reader を使用するものの、Oracle ソースに必要な追加の接続属性がない場合は、次のログエントリが表示されます。

メッセージ
[TASK_MANAGER ]E: ORA-00604: error occurred at recursive SQL level 1 ORA-20900: Invalid path used for directory: awsdms_dir_test ORA-06512: at "RDSADMIN.RDSADMIN", line 321 ORA-06512: at line 2 ; Invalid RDS Oracle binary reader db settings, replacePathPrefix should be set to TRUE and usePathPrefix should be set to '/rdsdbdata/log/'; Invalid RDS Oracle binary reader db settings, useAlternateFolderForOnline should be set to TRUE; Invalid RDS Oracle binary reader db setting, oraclePathPrefix should not be empty; Invalid RDS Oracle binary reader db settings; Failed while preparing stream component 'st_0_4MGMBIOJCILNOU3UHICCDBCNFQ'.; Cannot initialize subtask; Stream component 'st_0_4MGMBIOJCILNOU3UHICCDBCNFQ' terminated [1020418] (replicationtask.c:2680)

Binary Reader を使用して Amazon RDS Oracle ソースの変更データをキャプチャするには、ソースエンドポイントに次の追加の接続属性を追加します。

useLogMinerReader=N;useBfile=Y;replacePathPrefix=true;usePathPrefix=/rdsdbdata/log/;useAlternateFolderForOnline=true;oraclePathPrefix=/rdsdbdata/db/ORCL_A/;accessAlternateDirectly=false