The following list identifies considerations for preparing and using Oracle targets.
Target preparation
•Database Ingestion and Replication requires users to have certain privileges to load data to Oracle target databases. For on-premises Oracle targets, grant the following user privileges to the Database Ingestion and Replication user (cmid_user) who connects to the Oracle target:
GRANT CREATE SESSION TO cmid_user;
GRANT SELECT ON "PUBLIC".V$DATABASE TO cmid_user; GRANT SELECT ON "PUBLIC".V$CONTAINERS TO cmid_user;
GRANT SELECT ON DBA_USERS TO cmid_user; GRANT SELECT ON DBA_TABLES TO cmid_user; GRANT SELECT ON DBA_OBJECT_TABLES TO cmid_user; GRANT SELECT ON DBA_INDEXES TO cmid_user; GRANT SELECT ON DBA_OBJECTS TO cmid_user; GRANT SELECT ON DBA_VIEWS TO cmid_user;
GRANT CREATE TABLE <schema.table> TO cmid_user; <--Unless you grant on ANY TABLE GRANT SELECT ON ALL_CONSTRAINTS TO cmid_user; GRANT SELECT ON ALL_OBJECTS TO cmid_user;
GRANT SELECT ON SYS.TAB$ TO cmid_user; GRANT SELECT ON SYS.RECYCLEBIN$ TO cmid_user; GRANT SELECT ON SYS.COL$ TO cmid_user; <-- If cmid_user is the owner of the target schema GRANT SELECT ON SYS.CCOL$ TO <cmid_user>; GRANT SELECT ON SYS.CDEF$ TO cmid_user; GRANT SELECT ON SYS.OBJ$ TO cmid_user; GRANT SELECT ON SYS.COLTYPE$ TO cmid_user; GRANT SELECT ON SYS.ATTRCOL$ TO cmid_user; GRANT SELECT ON SYS.IDNSEQ$ TO cmid_user; GRANT SELECT ON SYS.ATTRCOL$ TO cmid_user; GRANT SELECT ON SYS.IDNSEQ$ TO cmid_user; GRANT SELECT ON SYS.IND$ TO cmid_user;
-- Grant the following if cmid_user is NOT the owner of the target schema. If you prefer, you -- can grant to individual target tables and indexes instead of to ANY TABLE or ANY INDEX. GRANT ALTER SESSION TO cmid_user; GRANT RESOURCE TO cmid_user; GRANT SELECT ANY TABLE TO cmid_user; GRANT SELECT ANY DICTIONARY TO <cmid_user>; GRANT ALTER ANY TABLE TO cmid_user; GRANT CREATE ANY TABLE TO cmid_user; GRANT DROP ANY TABLE TO cmid_user; GRANT INSERT ANY TABLE TO cmid_user; GRANT UPDATE ANY TABLE TO cmid_user; GRANT DELETE ANY TABLE TO cmid_user; GRANT CREATE ANY INDEX TO cmid_user; GRANT ALTER ANY INDEX TO cmid_user; GRANT DROP ANY INDEX TO cmid_user;
•For Amazon RDS for Oracle targets, log in to RDS as the master user and grant the following user privileges to the Database Ingestion and Replication user (cmid_user) who connects to the Oracle target:
GRANT CREATE SESSION TO cmid_user;
GRANT SELECT on "PUBLIC".V$DATABASE TO cmid_user;
GRANT SELECT on DBA_USERS TO cmid_user; GRANT SELECT on DBA_TABLES TO cmid_user; GRANT SELECT on DBA_INDEXES TO cmid_user; GRANT SELECT ON DBA_VIEWS TO cmid_user;
GRANT CREATE TABLE <schema.table> TO cmid_user; GRANT SELECT on SYS.TAB$ TO cmid_user; GRANT SELECT on SYS.COL$ TO cmid_user; GRANT SELECT on SYS.OBJ$ TO cmid_user; GRANT SELECT on SYS.IND$ TO cmid_user;
-- Grant the following if cmid_user is NOT the owner of the target schema. If you prefer, you -- can grant to individual target tables and indexes instead of to ANY TABLE or INDEX. GRANT ALTER SESSION TO cmid_user; GRANT RESOURCE TO cmid_user; GRANT SELECT ANY TABLE TO cmid_user; GRANT SELECT ANY DICTIONARY TO <cmid_user>; GRANT ALTER ANY TABLE TO cmid_user; GRANT CREATE ANY TABLE TO cmid_user; GRANT DROP ANY TABLE TO cmid_user; GRANT INSERT ANY TABLE TO cmid_user; GRANT UPDATE ANY TABLE TO cmid_user; GRANT DELETE ANY TABLE TO cmid_user; GRANT CREATE ANY INDEX TO cmid_user; GRANT ALTER ANY INDEX TO cmid_user; GRANT DROP ANY INDEX TO cmid_user;
Also, run the following Amazon RDS procedures to grant additional SELECT privileges to cmid_user:
•Database Ingestion and Replication uses the minimum source constraints needed for replication when generating Oracle target objects. If a source has a primary key, the job preferentially uses the primary key and no other constraint when creating the target object. If a source in a database ingestion and replication task does not have a primary key but does have unique indexes, the task chooses the best unique index for replication in the following order of priority: 1) the unique index that has only NOT NULL columns, 2) if multiple unique indexes have only NOT NULL columns, the unique index with the least number of columns, or 3) if no source primary key or unique NOT NULL index exists, the unique index with the greatest number of columns. Only a single primary key or unique index is used.
Source object properties that are not required for replication, such as for storage and partitioning, are not reflected on the target.
•By default, Database Ingestion and Replication disables logging for the Oracle target table to optimize performance. You can enable logging by setting the writerOracleNoLogging custom property to false on the Target page in the database ingestion and replication task wizard.
•When loading data to an Oracle target, ensure that the total number of columns in the Oracle table or view does not exceed 1000.