Generally, AWS DMS Task Fail when using Binary Reader for Amazon Relational Database Service (Amazon RDS) for Oracle.
If the prerequisites aren’t met when we use Binary Reader, we may receive Permissions errors or Extra connection attribute errors.
Here, at Bobcares, we assist our customers with several AWS queries as part of our AWS Support Services.
Today, let us see how to resolve these errors.
AWS DMS Task Fail when using Binary Reader
To read the redo logs during the change data capture face Oracle provides two methods.
They are Oracle LogMiner and Binary Reader.
If we use Binary Reader for migrations that have a high volume of changes, it has less of an impact on the Oracle source database.
However, if we use Oracle LogMiner the impact is high because the archive logs copy and then parse on the replication instance.
How to resolve related Errors?
Moving ahead, let us see how our Support Techs go about errors that we may come across.
By creating directories on the source database, AWS DMS uses the Binary Reader.
Hence, its user account must have privileges to access the source Oracle endpoint and create necessary directories.
Suppose, it doesn’t have those permissions. Then we may receive the following log entry:
[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’  (oradcdc_bfilectx.c:164)
To resolve this, we use the Amazon RDS master user as the AWS DMS user.
Generally, when an AWS DMS task starts running it creates the directories.
If not, we log in to the Oracle database via the master user.
Then, to test if these directories can be created, we run:
SQL> exec rdsadmin.rdsadmin_master_util.create_archivelog_dir; SQL> exec rdsadmin.rdsadmin_master_util.create_onlinelog_dir;
After that, we check the results by querying the all_directories table:
SQL> select directory_path from all_directories where directory_name in ('ONLINELOG_DIR','ARCHIVELOG_DIR'); DIRECTORY_PATH -------------------------------------------------------------------------------- /rdsdbdata/log/arch /rdsdbdata/log/onlinelog
Once we create the directories ONLINELOG_DIR and ARCHIVELOG_DIR, we restart the AWS DMS task.
Extra connection attribute errors
If we use the Binary Reader but miss the necessary extra connection attributes for the Oracle source, we see the following error:
[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  (replicationtask.c:2680)
To use the Binary Reader to capture change data, we add the following extra connection attributes to the source endpoint:
[Need help with the resolution? We’d be happy to assist you]
In short, we saw how our Support Techs fix the permissions and extra connection attribute errors.