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

所要時間2分
0

Binary Reader for Amazon Relational Database Service (Amazon RDS) for Oracle の使用中に 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 を使用する場合、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 rMeecursive 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)」([TASK_MANAGER ]E: ORA-00604: 再帰 SQL レベル 1 でエラーが発生しました ORA-20900: ディレクトリに無効なパスが使用されました: awsdms_dir_test ORA-06512: 「RDSADMIN.RDSADMIN」、行 321 ORA-06512: 行 2 ; 無効な RDS Oracle バイナリリーダー db 設定、replacePathPrefix を TRUE に設定し、usePathPrefix を「/rdsdbdata/log/」に設定する必要があります; 無効な RDS Oracle バイナリリーダー db 設定、useAlternateFolderForOnline を TRUE に設定する必要があります; 無効な RDS Oracle バイナリリーダー db 設定、oraclePathPrefix を空にしないでください; 無効な RDS Oracle バイナリリーダー db 設定; ストリームコンポーネント「st_0_4MGMBIOJCILNOU3UHICCDBCNFQ」の準備中に失敗しました; サブタスクを初期化できません; ストリームコンポーネント「st_0_4MGMBIOJCILNOU3UHICCDBCNFQ」が終了しました [1020418] (replicationtask.c:2680))

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

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

関連情報

AWS が管理する Oracle ソースで AWS DMS のために必要なユーザーアカウント権限

オンラインおよびアーカイブ REDO ログへのアクセス

Migrate an on-premises Oracle database to Amazon RDS for PostgreSQL using an Oracle bystander and AWS DMS (Oracle バイスタンダーと AWS DMS を使用して、オンプレミスの Oracle データベースを Amazon RDS for PostgreSQL に移行する)

AWS公式
AWS公式更新しました 1年前
コメントはありません

関連するコンテンツ