All Products
Search
Document Center

:Prepare an Oracle database

Last Updated:Apr 19, 2024

Before you use Data Transmission Service (DTS) to transfer data from or dump data to an Oracle database, you must understand the capabilities and limits of DTS and the preparations for connecting an Oracle database to DTS. This helps you smoothly synchronize or migrate data.

Limits on an Oracle database

Self-managed Oracle database as the source

Item

Description

Version

Supports Oracle 10g, 11g, 12c, 18c, and 19c.

Architecture

  • Supports the single-node and Real Application Cluster (RAC) architectures.

    Note

    You cannot add nodes to or remove nodes from an Oracle database in the RAC architecture. Otherwise, the DTS task fails.

  • Supports the multitenant and non-multitenant architectures for Oracle 12c and later.

    Note

    A DTS task can migrate data from only one pluggable database (PDB).

Data to be synchronized or migrated

  • Supports common tables, indexes including function indexes, data types, and character sets. For more information about the supported data types and character sets, see the Appendix section of this topic.

  • Supports cascade delete and update operations.

  • Supports DML operations on the partitioned tables that contain only one level or two levels of partitions, and does not support DDL operations on partitioned tables. This does not affect the DTS task.

  • Supports log parsing for distributed transactions.

  • Supports the full and partial rollback of transactions.

  • Supports an object to be synchronized or migrated whose name is more than 30 bytes in length.

  • Supports the synchronization or migration of empty objects created by using the EMPTY_BLOB() or EMPTY_CLOB() function.

  • Supports the synchronization or migration of virtual columns.

  • Supports the synchronization or migration of data that uses hybrid columnar compression (HCC).

  • Supports the synchronization or migration of invisible columns during full data synchronization or migration but not during incremental data synchronization or migration.

  • Supports the object name mapping feature that allows you to change the capitalization of object names such as table names and column names.

Network bandwidth

Supports a network bandwidth of at least 100 MB/s.

Business requirements

  • The total size of logs must be less than 1 TB. The average size of logs per hour must be less than 50 GB. The peak traffic must be less than 15 MB/s.

    Important

    By default, DTS pulls the logs of the entire database instance. If the objects that are not synchronized or migrated contain a large number of data changes, the DTS task is also delayed.

  • When you update a large amount of data or modify large fields such as those of the CLOB, BLOB, and LONG types, the DTS task may be delayed. We recommend that you perform such operations in batches or do not perform such operations.

  • Do not frequently delete or modify tables without primary keys. Otherwise, the DTS task may be delayed.

  • Do not frequently perform DDL operations. We recommend that you execute at most 10 DDL statements per second. Otherwise, the DTS task may be delayed.

  • Do not run large transactions, such as a transaction whose total size of logs exceeds 100 GB. Otherwise, the DTS task may fail.

Access method

  • Supports the public and private IP addresses of an Oracle database.

  • Supports the Single Client Access Name (SCAN) IP addresses of an RAC cluster and the virtual IP address (VIP) or physical IP address of an individual node in an RAC cluster.

  • Supports connections over Express Connect circuits. This access method does not support the SCAN IP addresses of an RAC cluster.

  • Supports primary and standby databases in the Active Data Guard (ADG) architecture.

    Note

    If a standby Oracle database in the ADG architecture is used and online redo log files are not archived, the DTS task is delayed.

  • Supports Amazon RDS for Oracle instances.

Other limits

  • Before you synchronize or migrate data, evaluate the impact of data synchronization or migration on the performance of the source and destination databases. We recommend that you synchronize or migrate data during off-peak hours. During full data synchronization or migration, DTS uses the read resources of the source database. This may increase the loads on the database server. In most cases, full data synchronization or migration occupies less than 2 CPU cores and less than 4 GB of memory. The increased loads vary based on the database status.

  • The tables to be synchronized or migrated must have PRIMARY KEY or UNIQUE constraints, and all fields must be unique. Otherwise, the DTS task may be delayed and the destination database may contain duplicate data records.

  • The character sets of written data can be different from the character set of an Oracle database.

    Note

    In this case, you must configure the Actual Write Code parameter.

  • Do not run the resetlogs command when the DTS task is running. Otherwise, the DTS task may fail.

  • Data control language (DCL) operations are not supported.

  • Triggers cannot be synchronized or migrated during incremental data synchronization or migration. You must disable the triggers in the destination Oracle database.

  • The data that has FOREIGN KEY constraints cannot be synchronized or migrated during incremental data synchronization or migration.

  • When you synchronize or migrate the data that has no primary keys or unique keys:

    • If data is written at a slow speed, the DTS task may be delayed.

    • Data consistency cannot be ensured. The destination database may contain duplicate data records.

  • The name of an object to be synchronized or migrated cannot exceed 30 bytes in length.

  • Consecutive RENAME TABLE operations cannot be synchronized or migrated. Otherwise, the DTS task may fail.

  • Global temporary tables cannot be synchronized or migrated. This does not affect the DTS task.

  • The tables that use functions to specify default values cannot be synchronized or migrated. Otherwise, data inconsistency occurs.

  • The tables that use expressions to specify default values cannot be synchronized or migrated.

  • Computed columns and encrypted columns cannot be synchronized or migrated.

  • Virtual private databases (VPDs) cannot be synchronized or migrated.

  • The jobs created by using DBMS_SCHEDULER or DBMS_JOB cannot be synchronized or migrated.

  • Schema name changes cannot be synchronized or migrated.

  • Nested tables cannot be synchronized or migrated. Otherwise, the DTS task reports an error.

  • Materialized views cannot be synchronized or migrated.

  • DDL operations on objects whose names contain keywords or special characters cannot be synchronized or migrated.

  • The operations that cause ROWID changes are not supported, such as SPLIT PARTITION, TABLE MOVE, TABLE SHRINK, and MOVE PARTITION KEY. If you perform such operations, data may be inconsistent or the DTS task may fail.

  • SSL-encrypted transmission is not supported.

  • Oracle Label Security is not supported.

Amazon RDS for Oracle instance as the source

Item

Description

Version

Supports Oracle 10g, 11g, 12c, 18c, and 19c.

Architecture

  • Supports the single-node and RAC architectures.

  • Supports only non-multitenant architectures for Oracle 12c, 18c, and 19c.

Data to be synchronized or migrated

  • Supports common tables, indexes including function indexes, data types, and character sets. For more information about the supported data types and character sets, see the Appendix section of this topic.

  • Supports cascade delete and update operations.

  • Supports DML operations on the partitioned tables that contain only one level or two levels of partitions, and does not support DDL operations on partitioned tables. This does not affect the DTS task.

  • Supports log parsing for distributed transactions.

  • Supports the full and partial rollback of transactions.

  • Supports an object to be synchronized or migrated whose name is more than 30 bytes in length.

  • Supports the synchronization or migration of empty objects created by using the EMPTY_BLOB() or EMPTY_CLOB() function.

  • Supports the synchronization or migration of virtual columns.

  • Supports the synchronization or migration of data that uses hybrid columnar compression (HCC).

  • Supports the synchronization or migration of invisible columns during full data synchronization or migration but not during incremental data synchronization or migration.

  • Supports the object name mapping feature that allows you to change the capitalization of object names such as table names and column names.

Network bandwidth

Supports a network bandwidth of at least 100 MB/s.

Business requirements

  • The total size of logs must be less than 1 TB. The average size of logs per hour must be less than 50 GB. The peak traffic must be less than 15 MB/s.

    Important

    By default, DTS pulls the logs of the entire database instance. If the objects that are not synchronized or migrated contain a large number of data changes, the DTS task is also delayed.

  • When you update a large amount of data or modify large fields such as those of the CLOB, BLOB, and LONG types, the DTS task may be delayed. We recommend that you perform such operations in batches or do not perform such operations.

  • Do not frequently delete or modify tables without primary keys. Otherwise, the DTS task may be delayed.

  • Do not frequently perform DDL operations. We recommend that you execute at most 10 DDL statements per second. Otherwise, the DTS task may be delayed.

  • Do not run large transactions, such as a transaction whose total size of logs exceeds 100 GB. Otherwise, the DTS task may fail.

Access method

  • Supports the public and private IP addresses of an Oracle database.

  • Supports the Single Client Access Name (SCAN) IP addresses of an RAC cluster and the virtual IP address (VIP) or physical IP address of an individual node in an RAC cluster.

  • Supports connections over Express Connect circuits. This access method does not support the SCAN IP addresses of an RAC cluster.

  • Supports primary and standby databases in the Active Data Guard (ADG) architecture.

    Note

    If a standby Oracle database in the ADG architecture is used and online redo log files are not archived, the DTS task is delayed.

Other limits

  • Before you synchronize or migrate data, evaluate the impact of data synchronization or migration on the performance of the source and destination databases. We recommend that you synchronize or migrate data during off-peak hours. During full data synchronization or migration, DTS uses the read resources of the source database. This may increase the loads on the database server. In most cases, full data synchronization or migration occupies less than 2 CPU cores and less than 4 GB of memory. The increased loads vary based on the database status.

  • The tables to be synchronized or migrated must have PRIMARY KEY or UNIQUE constraints, and all fields must be unique. Otherwise, the DTS task may be delayed and the destination database may contain duplicate data records.

  • The character sets of written data can be different from the character set of an Oracle database.

    Note

    In this case, you must configure the Actual Write Code parameter.

  • Do not run the resetlogs command when the DTS task is running. Otherwise, the DTS task may fail.

  • Data control language (DCL) operations are not supported.

  • Triggers cannot be synchronized or migrated during incremental data synchronization or migration. You must disable the triggers in the destination Oracle database.

  • The data that has FOREIGN KEY constraints cannot be synchronized or migrated during incremental data synchronization or migration.

  • When you synchronize or migrate the data that has no primary keys or unique keys:

    • If data is written at a slow speed, the DTS task may be delayed.

    • Data consistency cannot be ensured. The destination database may contain duplicate data records.

  • The name of an object to be synchronized or migrated cannot exceed 30 bytes in length.

  • Consecutive RENAME TABLE operations cannot be synchronized or migrated. Otherwise, the DTS task may fail.

  • Global temporary tables cannot be synchronized or migrated. This does not affect the DTS task.

  • The tables that use functions to specify default values cannot be synchronized or migrated. Otherwise, data inconsistency occurs.

  • The tables that use expressions to specify default values cannot be synchronized or migrated.

  • Computed columns and encrypted columns cannot be synchronized or migrated.

  • Virtual private databases (VPDs) cannot be synchronized or migrated.

  • The jobs created by using DBMS_SCHEDULER or DBMS_JOB cannot be synchronized or migrated.

  • Schema name changes cannot be synchronized or migrated.

  • Nested tables cannot be synchronized or migrated. Otherwise, the DTS task reports an error.

  • Materialized views cannot be synchronized or migrated.

  • DDL operations on objects whose names contain keywords or special characters cannot be synchronized or migrated.

  • The operations that cause ROWID changes are not supported, such as SPLIT PARTITION, TABLE MOVE, TABLE SHRINK, and MOVE PARTITION KEY. If you perform such operations, data may be inconsistent or the DTS task may fail.

  • SSL-encrypted transmission is not supported.

  • Oracle Label Security is not supported.

Oracle database as the destination

Item

Description

Version

Supports Oracle 10g, 11g, 12c, 18c, and 19c.

Architecture

  • Supports the single-node and Real Application Cluster (RAC) architectures.

    Note

    You cannot add nodes to or remove nodes from an Oracle database in the RAC architecture. Otherwise, the DTS task fails.

  • Supports the multitenant and non-multitenant architectures for Oracle 12c and later.

    Note

    A DTS task can migrate data from only one pluggable database (PDB).

Network bandwidth

Supports a network bandwidth of at least 100 MB/s.

Access method

  • Supports the public and private IP addresses of an Oracle database.

  • Supports the Single Client Access Name (SCAN) IP addresses of an RAC cluster and the virtual IP address (VIP) or physical IP address of an individual node in an RAC cluster.

  • Supports connections over Express Connect circuits. This access method does not support the SCAN IP addresses of an RAC cluster.

  • Supports primary and standby databases in the Active Data Guard (ADG) architecture.

    Note

    If a standby Oracle database in the ADG architecture is used and online redo log files are not archived, the DTS task is delayed.

  • Supports Amazon RDS for Oracle instances.

Other limits

  • Before you synchronize or migrate data, evaluate the impact of data synchronization or migration on the performance of the destination database. We recommend that you synchronize or migrate data during off-peak hours. During full data synchronization or migration, DTS uses the network and write resources of the destination database. This may increase the loads on the database server.

  • During full data synchronization or migration, concurrent INSERT operations cause fragmentation in the tables of the destination database. After full data synchronization or migration is complete, the size of used tablespace of the destination database is larger than that of the source database.

Configure an Oracle database

  • Full data synchronization or migration from an Oracle database: No configurations are required in the source database.

  • Incremental data synchronization or migration from an Oracle database: To obtain incremental data, you must complete the following configurations in the Oracle database to capture and parse source database logs.

  • Full or incremental data synchronization or migration to an Oracle database: No configurations are required in the destination database.

Self-managed Oracle database as the source

Enable the log archiving mode

  1. Execute the following statement to check whether the log archiving mode is enabled for the source database:

    archive log list;
    Note
    • If the value of the Database log mode parameter is Archive Mode, the log archiving mode is enabled. In this case, continue to enable supplemental logging.

    • Archived logs must be retained for at least three days.

  2. Execute the following statements to restart the database:

    Important

    We recommend that you perform this operation during off-peak hours to prevent service interruption.

    shutdown immediate;
    startup mount;
  3. Execute the following statements to enable the log archiving mode:

    alter database archivelog;
    alter database open;
  4. Execute the following statement to check whether the log archiving mode is enabled:

    archive log list;

Enable supplemental logging

DTS supports supplemental logging at the database or table level. Choose a type of supplemental logging based on your business requirements.

  • You can enable database-level supplemental logging to ensure the stability of DTS tasks.

  • You can enable table-level supplemental logging to reduce the disk usage of the source Oracle database. If you select databases as the objects to be migrated, the tables that are created by using DDL statements and for which supplemental logging is not enabled cannot be migrated.

Enable database-level supplemental logging

  1. Execute the following statement to check whether database-level supplemental logging is enabled:

    SELECT supplemental_log_data_min, supplemental_log_data_pk,supplemental_log_data_ui FROM v$database;

    The following example shows that database-level supplemental logging is enabled. In this case, skip subsequent steps.

    SUPPLEME SUP SUP
    -------- --- ---
    IMPLICIT YES YES
  2. Execute the following statement to enable minimal database-level supplemental logging:

    alter database add supplemental log data;
  3. Execute the following statement to enable database-level supplemental logging for primary keys and unique keys:

    alter database add supplemental log data (primary key,unique index) columns;
  4. Execute the following statement to check whether database-level supplemental logging is enabled:

    SELECT supplemental_log_data_min, supplemental_log_data_pk,supplemental_log_data_ui FROM v$database;

Enable table-level supplemental logging

  1. Execute the following statement to enable minimal supplemental logging:

    alter database add supplemental log data;
  2. Execute one of the following statements to enable table-level supplemental logging:

    • Execute the following statement to enable table-level supplemental logging for primary keys:

      alter table <table_name> add supplemental log data (primary key) columns;
    • Execute the following statement to enable table-level supplemental logging for all columns:

      alter table <table_name> add supplemental log data (all) columns;

Amazon RDS for Oracle instance as the source

Enable the log archiving mode

Execute the following statements to query and set the retention period for archived logs:

exec rdsadmin.rdsadmin_util.show_configuration;
exec rdsadmin.rdsadmin_util.set_configuration('archivelog retention hours', 72);

Enable supplemental logging

DTS supports supplemental logging at the database or table level. Choose a type of supplemental logging based on your business requirements.

  • You can enable database-level supplemental logging to ensure the stability of DTS tasks.

  • You can enable table-level supplemental logging to reduce the disk usage of the source Oracle database. If you select databases as the objects to be migrated, the tables that are created by using DDL statements and for which supplemental logging is not enabled cannot be migrated.

Enable database-level supplemental logging

  1. Execute the following statement to check whether database-level supplemental logging is enabled:

    SELECT supplemental_log_data_min, supplemental_log_data_pk,supplemental_log_data_ui FROM v$database;

    The following example shows that database-level supplemental logging is enabled. In this case, skip subsequent steps.

    SUPPLEME SUP SUP
    -------- --- ---
    IMPLICIT YES YES
  2. Execute the following statement to enable force logging:

    exec rdsadmin.rdsadmin_util.force_logging(p_enable => true);
  3. Execute the following statements to enable database-level supplemental logging for primary keys and unique keys:

    exec rdsadmin.rdsadmin_util.alter_supplemental_logging('ADD', 'PRIMARY KEY');
    exec rdsadmin.rdsadmin_util.alter_supplemental_logging('ADD', 'UNIQUE');

Enable table-level supplemental logging

  1. Execute the following statement to enable table-level supplemental logging for all columns:

    exec rdsadmin.rdsadmin_util.alter_supplemental_logging('ADD', 'ALL');
  2. Execute the following statement to enable table-level supplemental logging for primary keys:

    exec rdsadmin.rdsadmin_util.alter_supplemental_logging('ADD', 'PRIMARY KEY');

Oracle database as the destination

No configurations are required.

Prepare a database account

Oracle database as the source

When you use DTS to synchronize or migrate data from an Oracle database, you must create an account for data collection and grant permissions to the account. The following permissions are required for the account that is used to collect data:

  • Schema and full data synchronization or migration: database administrator (DBA) permissions or operation-specific permissions.

  • Incremental data synchronization or migration: operation-specific permissions.

    Important

    If the source database is an Oracle database in a non-multitenant architecture, you can also grant DBA permissions to the account for data collection during incremental data synchronization or migration.

Grant DBA permissions to an account

# Create a database account named rdsdt_dtsacct and grant permissions to the account.
create user rdsdt_dtsacct identified by rdsdt_dtsacct;
grant create session to rdsdt_dtsacct;

grant connect to rdsdt_dtsacct;
grant dba to rdsdt_dtsacct;

# Use the rdsdt_dtsacct account to log on to the database and check whether the required permissions are obtained.
select * from user_tab_privs;
select granted_role from user_role_privs;

Grant operation-specific permissions to an account for schema and full data synchronization or migration

# Create a database account named rdsdt_dtsacct and grant permissions to the account.
create user rdsdt_dtsacct identified by rdsdt_dtsacct;
grant create session to rdsdt_dtsacct;

grant connect to rdsdt_dtsacct;
grant select_catalog_role to rdsdt_dtsacct;
grant select any table to rdsdt_dtsacct;

# Use the rdsdt_dtsacct account to log on to the database and check whether the required permissions are obtained.
select * from user_role_privs;
select * from user_sys_privs;

Grant operation-specific permissions to an account for incremental data synchronization or migration

Oracle 10g and 11g

# Create a database account named rdsdt_dtsacct and grant permissions to the account.
create user rdsdt_dtsacct identified by rdsdt_dtsacct;
grant create session to rdsdt_dtsacct;

grant connect to rdsdt_dtsacct;
grant select_catalog_role to rdsdt_dtsacct;

grant select any table to rdsdt_dtsacct;
grant select any transaction to rdsdt_dtsacct;

grant select on all_objects to rdsdt_dtsacct;
grant select on all_tab_cols to rdsdt_dtsacct;
grant select on dba_registry to rdsdt_dtsacct;
grant execute on sys.dbms_logmnr to rdsdt_dtsacct;

grant select on v_$log to rdsdt_dtsacct;
grant select on v_$logfile to rdsdt_dtsacct;
grant select on v_$standby_log to rdsdt_dtsacct;
-- If the Oracle database is a standby database in the ADG architecture, you must grant the v_$standby_log permission to the account.
grant select on v_$archived_log to rdsdt_dtsacct;
grant select on v_$parameter to rdsdt_dtsacct;
grant select on v_$database to rdsdt_dtsacct;
grant select on v_$active_instances to rdsdt_dtsacct;
grant select on v_$instance to rdsdt_dtsacct;
grant select on v_$logmnr_contents to rdsdt_dtsacct;

grant select on sys.USER$ to rdsdt_dtsacct;
grant select on sys.OBJ$ to rdsdt_dtsacct;
grant select on sys.COL$ to rdsdt_dtsacct;
grant select on sys.IND$ to rdsdt_dtsacct;
grant select on sys.ICOL$ to rdsdt_dtsacct;
grant select on sys.CDEF$ to rdsdt_dtsacct;
grant select on sys.CCOL$ to rdsdt_dtsacct;
grant select on sys.TABPART$ to rdsdt_dtsacct;
grant select on sys.TABSUBPART$ to rdsdt_dtsacct;
grant select on sys.TABCOMPART$ to rdsdt_dtsacct;

# Use the rdsdt_dtsacct account to log on to the database and check whether the required permissions are obtained.
select * from user_role_privs;
select * from user_sys_privs;
select * from user_tab_privs;

Oracle 12c to 19c (non-multitenant)

# Create a database account named rdsdt_dtsacct and grant permissions to the account.
create user rdsdt_dtsacct IDENTIFIED BY rdsdt_dtsacct;
grant create session to rdsdt_dtsacct;

grant connect to rdsdt_dtsacct;
grant select_catalog_role to rdsdt_dtsacct;
grant logmining to rdsdt_dtsacct;
grant execute_catalog_role to rdsdt_dtsacct;

grant select any table to rdsdt_dtsacct;
grant select any transaction to rdsdt_dtsacct;

grant select on all_objects to rdsdt_dtsacct;
grant select on all_tab_cols to rdsdt_dtsacct;
grant select on dba_registry to rdsdt_dtsacct;
grant execute on sys.dbms_logmnr to rdsdt_dtsacct;

grant select on v_$log to rdsdt_dtsacct;
grant select on v_$logfile to rdsdt_dtsacct;
grant select on v_$standby_log to rdsdt_dtsacct;
-- If the Oracle database is a standby database in the ADG architecture, you must grant the v_$standby_log permission to the account.
grant select on v_$archived_log to rdsdt_dtsacct;
grant select on v_$parameter to rdsdt_dtsacct;
grant select on v_$database to rdsdt_dtsacct;
grant select on v_$active_instances to rdsdt_dtsacct;
grant select on v_$instance to rdsdt_dtsacct;
grant select on v_$logmnr_contents to rdsdt_dtsacct;

grant select on sys.USER$ to rdsdt_dtsacct;
grant select on sys.OBJ$ to rdsdt_dtsacct;
grant select on sys.COL$ to rdsdt_dtsacct;
grant select on sys.IND$ to rdsdt_dtsacct;
grant select on sys.ICOL$ to rdsdt_dtsacct;
grant select on sys.CDEF$ to rdsdt_dtsacct;
grant select on sys.CCOL$ to rdsdt_dtsacct;
grant select on sys.TABPART$ to rdsdt_dtsacct;
grant select on sys.TABSUBPART$ to rdsdt_dtsacct;
grant select on sys.TABCOMPART$ to rdsdt_dtsacct;

# Use the rdsdt_dtsacct account to log on to the database and check whether the required permissions are obtained.
select * from user_role_privs;
select * from user_sys_privs;
select * from user_tab_privs;

Oracle 12c to 19c (multitenant)

Important

The account name created in a PDB must be the same as that created in the root container (CDB$ROOT) of the container database (CDB) to which the PDB belongs, excluding the C## prefix of a global account name.

# Switch to a PDB. Create a database account named rdsdt_dtsacct and grant permissions to the account.
alter session set container = ORCLPDB1;

create user rdsdt_dtsacct identified by rdsdt_dtsacct;
grant create session to rdsdt_dtsacct;

grant connect to rdsdt_dtsacct;
grant select_catalog_role to rdsdt_dtsacct;
grant logmining TO rdsdt_dtsacct;
grant execute_catalog_role to rdsdt_dtsacct;

grant select any table to rdsdt_dtsacct;
grant select any transaction to rdsdt_dtsacct;

grant select on all_objects to rdsdt_dtsacct;
grant select on all_tab_cols to rdsdt_dtsacct;
grant select on dba_registry to rdsdt_dtsacct;
grant execute on sys.dbms_logmnr to rdsdt_dtsacct;

grant select on v_$pdbs to rdsdt_dtsacct;
grant select on v_$log to rdsdt_dtsacct;
grant select on v_$logfile to rdsdt_dtsacct;
grant select on v_$standby_log to rdsdt_dtsacct;
-- If the Oracle database is a standby database in the ADG architecture, you must grant the v_$standby_log permission to the account.
grant select on v_$archived_log to rdsdt_dtsacct;
grant select on v_$parameter to rdsdt_dtsacct;
grant select on v_$database to rdsdt_dtsacct;
grant select on v_$active_instances to rdsdt_dtsacct;
grant select on v_$instance to rdsdt_dtsacct;
grant select on v_$logmnr_contents to rdsdt_dtsacct;

grant select on sys.USER$ to rdsdt_dtsacct;
grant select on sys.OBJ$ to rdsdt_dtsacct;
grant select on sys.COL$ to rdsdt_dtsacct;
grant select on sys.IND$ to rdsdt_dtsacct;
grant select on sys.ICOL$ to rdsdt_dtsacct;
grant select on sys.CDEF$ to rdsdt_dtsacct;
grant select on sys.CCOL$ to rdsdt_dtsacct;
grant select on sys.TABPART$ to rdsdt_dtsacct;
grant select on sys.TABSUBPART$ to rdsdt_dtsacct;
grant select on sys.TABCOMPART$ to rdsdt_dtsacct;

# Switch to the CDB$ROOT.
alter session set container = CDB$ROOT;

# Create a database account named rdsdt_dtsacct and grant permissions to the account. If you use this method, you must modify the default parameters of the Oracle database.
alter session set "_ORACLE_SCRIPT"=true;
create user rdsdt_dtsacct identified by rdsdt_dtsacct;
grant create session to rdsdt_dtsacct;
grant connect to rdsdt_dtsacct;
grant logmining to rdsdt_dtsacct;
grant execute_catalog_role to rdsdt_dtsacct;
grant select on v_$logmnr_contents to rdsdt_dtsacct;
grant execute on sys.dbms_logmnr to rdsdt_dtsacct;

# Use the rdsdt_dtsacct account to log on to the database and check whether the required permissions are obtained.
select * from user_role_privs;
select * from user_sys_privs;
select * from user_tab_privs;

Amazon RDS for Oracle instance (non-multitenant)

# Create a database account named RDSDT_DTSACCT and grant permissions to the account.
create user rdsdt_dtsacct identified by rdsdt_dtsacct;
grant create session to rdsdt_dtsacct;

grant connect to rdsdt_dtsacct;
grant logmining to rdsdt_dtsacct;
grant execute_catalog_role to rdsdt_dtsacct;

grant select any table to rdsdt_dtsacct;
grant select any transaction to rdsdt_dtsacct;

exec rdsadmin.rdsadmin_util.grant_sys_object('V_$LOGMNR_LOGS','RDSDT_DTSACCT','SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_OBJECTS','RDSDT_DTSACCT','SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('ALL_TAB_COLS','RDSDT_DTSACCT','SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('DBA_REGISTRY','RDSDT_DTSACCT','SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$LOG','RDSDT_DTSACCT','SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$LOGFILE','RDSDT_DTSACCT','SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$ARCHIVED_LOG','RDSDT_DTSACCT','SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$PARAMETER','RDSDT_DTSACCT','SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$DATABASE','RDSDT_DTSACCT','SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$ACTIVE_INSTANCES','RDSDT_DTSACCT','SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$INSTANCE','RDSDT_DTSACCT','SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$LOGMNR_CONTENTS','RDSDT_DTSACCT','SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('DBMS_LOGMNR','RDSDT_DTSACCT','EXECUTE');

exec rdsadmin.rdsadmin_util.grant_sys_object('USER$','RDSDT_DTSACCT','SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('OBJ$','RDSDT_DTSACCT','SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('COL$','RDSDT_DTSACCT','SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('IND$',  'RDSDT_DTSACCT','SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('ICOL$','RDSDT_DTSACCT','SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('CDEF$','RDSDT_DTSACCT','SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('CCOL$','RDSDT_DTSACCT','SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('TABPART$','RDSDT_DTSACCT','SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('TABSUBPART$','RDSDT_DTSACCT','SELECT');
exec rdsadmin.rdsadmin_util.grant_sys_object('TABCOMPART$','RDSDT_DTSACCT','SELECT');

# Use the RDSDT_DTSACCT account to log on to the database and check whether the required permissions are obtained.
select * from user_role_privs;
select * from user_sys_privs;
select * from user_tab_privs;

Oracle database as the destination

When you use DTS to synchronize or migrate data to an Oracle database, you must create an account for data replication and grant permissions to the account. The following permissions are required for the account that is used to replicate data:

  • Schema and full data synchronization or migration: DBA permissions.

  • Incremental data synchronization or migration: owner permissions of resources.

Grant DBA permissions to an account

# Create a database account named rdsdt_dtsacct and grant permissions to the account.
create user rdsdt_dtsacct identified by rdsdt_dtsacct;
grant create session to rdsdt_dtsacct;

grant connect to rdsdt_dtsacct;
grant dba to rdsdt_dtsacct;

# Use the rdsdt_dtsacct account to log on to the database and check whether the required permissions are obtained.
select * from user_tab_privs;
select granted_role from user_role_privs;

Grant the owner permissions of resources to an account

# Create a database account named rdsdt_dtsacct and grant permissions to the account.
create user rdsdt_dtsacct identified by rdsdt_dtsacct;
grant create session to rdsdt_dtsacct;

grant connect to rdsdt_dtsacct;
grant resource to rdsdt_dtsacct;

# Use the rdsdt_dtsacct account to log on to the database and check whether the required permissions are obtained.
select * from user_tab_privs;
select granted_role from user_role_privs;

What to do next

Configure a DTS task whose source or destination database is an Oracle database. For more information, see Overview of data synchronization scenarios or Overview of data migration scenarios.

Appendix

The following tables describe the Oracle data types and character sets supported for DTS tasks.

Data types

Supported

Not supported

  • NUMBER

  • FLOAT

  • REAL

  • BINARY_FLOAT

  • CHAR [(size [BYTE | CHAR])]

  • NCHAR[(size)]

  • VARCHAR2(size [BYTE | CHAR])

  • NVARCHAR2(size)

  • CLOB

  • NCLOB

  • LONG

  • DATE

  • XMLTYPE: The CLOB storage mode is supported. The BLOB storage mode is not supported.

    Note

    CLOB: character large object. BLOB: binary large object.

  • RAW(size)

  • LONG_RAW

  • BLOB

  • TIMESTAMP[fractional_seconds_precision]

  • TIMESTAMP [(fractional_seconds_precision)] WITH TIME ZONE

  • TIMESTAMP [(fractional_seconds_precision)] WITH LOCAL TIME ZONE

  • INTERVAL YEAR [(year_precision)] TO MONTH

  • INTERVAL DAY [(day_precision)] TO SECOND [(fractional_seconds_precision)]

  • SDO_GEOMETRY

  • SDO_TOPO_GEOMETRY

  • SDO_GEORASTER

  • ROWID

  • UROWID

  • ANYTYPE

  • ANYDATA

  • ANYDATASET

  • VARRAY

  • Custom data types

Character sets

Supported

Not supported

ASCII, ISO, UNICODE, US7ASCII, WE8HP, US8PC437, WE8EBCDIC285, WE8PC850, D7DEC, F7DEC, S7DEC, E7DEC, SF7ASCII, NDK7DEC, I7DEC, NL7DEC, CH7DEC, YUG7ASCII, SF7DEC, TR7DEC, IW7IS960, IN8ISCII, EE8ISO8859P2, SE8ISO8859P3, NEE8ISO8859P4, CL8ISO8859P5, AR8ISO8859P6, EL8ISO8859P7, IW8ISO8859P8, WE8ISO8859P9, NE8ISO8859P10, TH8TISASCII, BN8BSCII, VN8VN3, VN8MSWIN1258, WE8NEXTSTEP, AR8ASMO708PLUS, AR8EBCDICX, AR8XBASIC, EL8DEC, TR8DEC, WE8EBCDIC37, WE8EBCDIC37C, WE8EBCDIC500, WE8EBCDIC500C, WE8EBCDIC871, WE8EBCDIC284, EEC8EUROASCI, EEC8EUROPA3, LA8PASSPORT, BG8PC437S, EE8PC852, RU8PC866, RU8BESTA, IW8PC1507, RU8PC855, TR8PC857, CL8MACCYRILLIC, CL8MACCYRILLICS, WE8PC860, IS8PC861, EE8MSWIN1250, CL8MSWIN1251, ET8MSWIN923, BG8MSWIN, EL8MSWIN1253, IW8MSWIN1255, LT8MSWIN921, TR8MSWIN1254, WE8MSWIN1252, BLT8MSWIN1257, D8EBCDIC273, I8EBCDIC280, DK8EBCDIC277, S8EBCDIC278, F8EBCDIC297, IW8EBCDIC1086, N8PC865, BLT8CP921, LV8PC1117, LV8PC8LR, LV8RST104090, CL8KOI8R, BLT8PC775, F7SIEMENS9780X, E7SIEMENS9780X, S7SIEMENS9780X, DK7SIEMENS9780X, N7SIEMENS9780X, I7SIEMENS9780X, D7SIEMENS9780X, WE8GCOS7, EL8GCOS7, US8BS2000, D8BS2000, F8BS2000, E8BS2000, DK8BS2000, S8BS2000, WE8BS2000, WE8BS2000L5, CL8BS2000, WE8DG, WE8NCR4970, WE8ROMAN8, EE8MACCE, EE8MACCES, EE8MACCROATIAN, EE8MACCROATIANS, TR8MACTURKISH, TR8MACTURKISHS, IS8MACICELANDIC, IS8MACICELANDICS, EL8MACGREEK, EL8MACGREEKS, IW8MACHEBREW, IW8MACHEBREWS, US8ICL, WE8ICL, WE8ISOICLUK, WE8MACROMAN8, WE8MACROMAN8S, TH8MACTHAI, TH8MACTHAIS, HU8CWI2, EL8PC437S, EL8PC737, LT8PC772, LT8PC774, EL8PC869, EL8PC851, CDN8PC863, HU8ABMOD, AR8ASMO8X, AR8HPARABIC8T, AR8NAFITHA711, AR8NAFITHA711T, AR8SAKHR707, AR8SAKHR707T, AR8MUSSAD768, AR8MUSSAD768T, AR8ADOS710, AR8ADOS710T, AR8ADOS720, AR8ADOS720T, AR8APTEC715, AR8APTEC715T, AR8MSAWIN, AR8NAFITHA721, AR8NAFITHA721T, AR8SAKHR706, AR8ARABICMAC, AR8ARABICMACS, AR8ARABICMACT, LA8ISO6937, US8NOOP, WE8DEC, WE8DECTST, JA16VMS, JA16EUC, JA16EUCYEN, JA16EUCTILDE, JA16DBCS, JA16SJIS, JA16SJISTILDE, JA16SJISYEN, JA16EBCDIC930, JA16MACSJIS, KO16KSC5601, KO16DBCS, KO16KSCCS, KO16MSWIN949, ZHS16CGB231280, ZHS16MACCGB231280, ZHS16GBK, ZHS16DBCS, ZHS32GB18030, ZHT32EUC, ZHT32SOPS, ZHT16DBT, ZHT32TRIS, ZHT16DBCS, ZHT16BIG5, ZHT16CCDC, ZHT16MSWIN950, AL24UTFFSS, UTF8, UTFE, KO16TSTSET, JA16TSTSET2, JA16TSTSET, US16TSTFIXED, AL16UTF16LE, TH8TISEBCDIC, TH8TISEBCDICS, BLT8EBCDIC1112, BLT8EBCDIC1112S, CE8BS2000, CL8EBCDIC1025, CL8EBCDIC1025C, CL8EBCDIC1025R, CL8EBCDIC1025S, CL8EBCDIC1025X, CL8EBCDIC1158, CL8EBCDIC1158R, D8EBCDIC1141, DK8EBCDIC1142, EE8BS2000, EE8EBCDIC870, EE8EBCDIC870C, EE8EBCDIC870S, EL8EBCDIC423R, EL8EBCDIC875, EL8EBCDIC875S, EL8EBCDIC875R, F8EBCDIC1147, I8EBCDIC1144, WE8BS2000E, WE8EBCDIC1047, WE8EBCDIC1047E, WE8EBCDIC1140, WE8EBCDIC1140C, WE8EBCDIC1145, WE8EBCDIC1146, WE8EBCDIC1148, WE8EBCDIC1148C, AR8EBCDIC420S, IW8EBCDIC424, IW8EBCDIC424S, TR8EBCDIC1026, TR8EBCDIC1026S, ZHT16HKSCS, ZHT16HKSCS31, BLT8ISO8859P13, WE8ISO8859P1, WE8ISO8859P15, AR8MSWIN1256, S8EBCDIC1143, AZ8ISO8859P9E, CEL8ISO8859P14, CL8ISOIR111, CL8KOI8U, WE8PC858, WE8EBCDIC924, AL32UTF8, and AL16UTF16

Other character sets