Informatica Enterprise Data Integrator > Prerequisites > Prepare an Oracle source
  

Prepare an Oracle source

Perform the following steps to prepare and use an Oracle source for replication:

Oracle source preparation

Usage notes

Oracle privileges

To deploy and run a replication task that has an Oracle source, the source connection must specify a user who has the required privileges.
Privileges for incremental load processing
For a replication task that performs an incremental load or combined initial and incremental load, ensure that the replication user (rep_user) has been granted the following privileges:
Note: If the Oracle logs are managed by ASM, the user must have SYSASM or SYSDBA authority.
GRANT CREATE SESSION TO <rep_user>;

GRANT SELECT ON table TO <rep_user>; -- For each source table created by user
GRANT EXECUTE ON DBMS_FLASHBACK TO <rep_user>;

-- The following grant is required for combined initial and incremental loads only. Do not
-- use ANY TABLE unless your security policy allows it.
GRANT FLASHBACK ON table|ANY TABLE TO <rep_user>;


GRANT SELECT ON DBA_CONSTRAINTS TO <rep_user>;
GRANT SELECT ON DBA_CONS_COLUMNS TO <rep_user>;
GRANT SELECT ON DBA_INDEXES TO <rep_user>;
GRANT SELECT ON DBA_LOG_GROUPS TO <rep_user>;
GRANT SELECT ON DBA_LOG_GROUP_COLUMNS TO <rep_user>;
GRANT SELECT ON DBA_OBJECTS TO <rep_user>;
GRANT SELECT ON DBA_OBJECT_TABLES TO <rep_user>;
GRANT SELECT ON DBA_TABLES TO <rep_user>;
GRANT SELECT ON DBA_TABLESPACES TO <rep_user>;
GRANT SELECT ON DBA_USERS TO <rep_user>;

GRANT SELECT ON "PUBLIC".V$ARCHIVED_LOG TO <rep_user>;
GRANT SELECT ON "PUBLIC".V$CONTAINERS TO <rep_user>; -- For Oracle multitenant environments
GRANT SELECT ON "PUBLIC".V$DATABASE TO <rep_user>;
GRANT SELECT ON "PUBLIC".V$DATABASE_INCARNATION TO <rep_user>;
GRANT SELECT ON "PUBLIC".V$ENCRYPTION_WALLET TO <rep_user>; -- For Oracle TDE access
GRANT SELECT ON "PUBLIC".V$LOG TO <rep_user>;
GRANT SELECT ON "PUBLIC".V$LOGFILE TO <rep_user>;
GRANT SELECT ON "PUBLIC".V$PARAMETER TO <rep_user>;
GRANT SELECT ON "PUBLIC".V$PDBS TO <rep_user>; -- For Oracle multitenant environments
GRANT SELECT ON "PUBLIC".V$SPPARAMETER TO <rep_user>;
GRANT SELECT ON "PUBLIC".V$STANDBY_LOG TO <rep_user>;
GRANT SELECT ON "PUBLIC".V$THREAD TO <rep_user>;
GRANT SELECT ON "PUBLIC".V$TRANSACTION TO <rep_user>;
GRANT SELECT ON "PUBLIC".V$TRANSPORTABLE_PLATFORM TO <rep_user>;
GRANT SELECT ON "PUBLIC".V$VERSION TO <rep_user>;

GRANT SELECT ON SYS.ATTRCOL$ TO <rep_user>;
GRANT SELECT ON SYS.CCOL$ TO <rep_user>;
GRANT SELECT ON SYS.CDEF$ TO <rep_user>;
GRANT SELECT ON SYS.COL$ TO <rep_user>;
GRANT SELECT ON SYS.COLTYPE$ TO <rep_user>;
GRANT SELECT ON SYS.IDNSEQ$ TO <rep_user>;
GRANT SELECT ON SYS.IND$ TO <rep_user>;
GRANT SELECT ON SYS.INDPART$ TO <rep_user>;
GRANT SELECT ON SYS.OBJ$ TO <rep_user>;
GRANT SELECT ON SYS.PARTOBJ$ TO <rep_user>;
GRANT SELECT ON SYS.RECYCLEBIN$ TO <rep_user>;
GRANT SELECT ON SYS.TAB$ TO <rep_user>;
GRANT SELECT ON SYS.TABCOMPART$ TO <rep_user>;
GRANT SELECT ON SYS.TABPART$ TO <rep_user>;
GRANT SELECT ON SYS.TABSUBPART$ TO <rep_user>;

-- Also ensure that the user has access to the following ALL_* views:
ALL_CONSTRAINTS
ALL_CONS_COLUMNS
ALL_ENCRYPTED_COLUMNS
ALL_INDEXES
ALL_IND_COLUMNS
ALL_OBJECTS
ALL_TABLES
ALL_TAB_COLS
ALL_TAB_PARTITIONS
ALL_USERS
Privileges for initial load processing
For a replication task that performs an initial load, ensure that the user has the following privileges at minimum:
GRANT CREATE SESSION TO <rep_user>;

GRANT SELECT ON DBA_INDEXES TO <rep_user>;
GRANT SELECT ON DBA_OBJECT_TABLES TO <rep_user>;
GRANT SELECT ON DBA_OBJECTS TO rep_user;
GRANT SELECT ON DBA_TABLES TO <rep_user>;
GRANT SELECT ON DBA_USERS TO <rep_user>;
GRANT SELECT ON DBA_VIEWS TO <rep_user>; -- Only if you unload data from views

GRANT SELECT ANY TABLE TO <rep_user>;
-or-
GRANT SELECT ON table TO <rep_user>; -- For each source table created by user

GRANT SELECT ON ALL_CONSTRAINTS TO <rep_user>;
GRANT SELECT ON ALL_CONS_COLUMNS TO <rep_user>;
GRANT SELECT ON ALL_ENCRYPTED_COLUMNS TO <rep_user>;
GRANT SELECT ON ALL_IND_COLUMNS TO <rep_user>;
GRANT SELECT ON ALL_INDEXES TO <rep_user>;
GRANT SELECT ON ALL_OBJECTS TO <rep_user>;
GRANT SELECT ON ALL_TAB_COLS TO <rep_user>;
GRANT SELECT ON ALL_USERS TO <rep_user>;

GRANT SELECT ON "PUBLIC"."V$DATABASE" TO rep_user;
GRANT SELECT ON "PUBLIC"."V$CONTAINERS" TO rep_user;
GRANT SELECT ON SYS.ATTRCOL$ TO <rep_user>;
GRANT SELECT ON SYS.CCOL$ TO <rep_user>;
GRANT SELECT ON SYS.CDEF$ TO <rep_user>;
GRANT SELECT ON SYS.COL$ TO <rep_user>;
GRANT SELECT ON SYS.COLTYPE$ TO <rep_user>;
GRANT SELECT ON SYS.IND$ TO <rep_user>;
GRANT SELECT ON SYS.IDNSEQ$ TO rep_user;
GRANT SELECT ON SYS.OBJ$ TO <rep_user>;
GRANT SELECT ON SYS.RECYCLEBIN$ TO <rep_user>;
GRANT SELECT ON SYS.TAB$ TO <rep_user>;
Privileges for Amazon RDS for Oracle sources
Important: You must log in to Amazon RDS under the master username to run GRANT statements and procedures.
Grant the SELECT privilege, at minimum, on objects and system tables that are required for change data capture processing to the replication user (rep_user). Some additional grants are required in certain situations.
Use the following GRANT statements:
GRANT SELECT ON "PUBLIC"."V$ARCHIVED_LOG" TO "cmid_user";

GRANT SELECT ON "PUBLIC"."V$DATABASE" TO "rep_user";
GRANT SELECT ON "PUBLIC"."V$LOG" TO "rep_user";
GRANT SELECT ON "PUBLIC"."V$LOGFILE" TO "rep_user";
GRANT SELECT ON "PUBLIC"."V$TRANSPORTABLE_PLATFORM" TO "rep_user";
GRANT SELECT ON "PUBLIC"."V$THREAD" TO "rep_user";
GRANT SELECT ON "PUBLIC"."V$DATABASE_INCARNATION" TO "rep_user";
GRANT SELECT ON "PUBLIC"."V$TRANSACTION" TO "rep_user";

GRANT SELECT ON "SYS"."DBA_CONS_COLUMNS" TO "rep_user";
GRANT SELECT ON "SYS"."DBA_CONSTRAINTS" TO "rep_user";
GRANT SELECT ON DBA_INDEXES TO "rep_user";
GRANT SELECT ON "SYS"."DBA_LOG_GROUP_COLUMNS" TO "rep_user";
GRANT SELECT ON "SYS"."DBA_TABLESPACES" TO "rep_user";

GRANT SELECT ON "SYS"."OBJ$" TO "rep_user";
GRANT SELECT ON "SYS"."TAB$" TO "rep_user";
GRANT SELECT ON "SYS"."IND$" TO "rep_user";
GRANT SELECT ON "SYS"."COL$" TO "rep_user";

GRANT SELECT ON "SYS"."PARTOBJ$" TO "rep_user";
GRANT SELECT ON "SYS"."TABPART$" TO "rep_user";
GRANT SELECT ON "SYS"."TABCOMPART$" TO "rep_user";
GRANT SELECT ON "SYS"."TABSUBPART$" TO "rep_user";
COMMIT;

/* For combined load jobs:*/
GRANT EXECUTE ON DBMS_FLASHBACK TO "rep_user";

/*To provide read access to the Amazon RDS online and archived redo logs:*/
GRANT READ ON DIRECTORY ONLINELOG_DIR TO "rep_user";
GRANT READ ON DIRECTORY ARCHIVELOG_DIR TO "rep_user";
Additionally, log in as the master user and run the following Amazon RDS procedures to grant the SELECT privilege on some more objects:
begin
rdsadmin.rdsadmin_util.grant_sys_object(
p_obj_name => 'DBA_TABLES',
p_grantee => 'cmid_user',
p_privilege => 'SELECT');
end;
/
begin
rdsadmin.rdsadmin_util.grant_sys_object(
p_obj_name => 'DBA_OBJECTS',
p_grantee => 'cmid_user',
p_privilege => 'SELECT');
end;
/
begin
rdsadmin.rdsadmin_util.grant_sys_object(
p_obj_name => 'DBA_OBJECT_TABLES',
p_grantee => 'cmid_user',
p_privilege => 'SELECT');
end;
/
begin
rdsadmin.rdsadmin_util.grant_sys_object(
p_obj_name => 'DBA_VIEWS',
p_grantee => 'cmid_user',
p_privilege => 'SELECT');
end;
/
/begin
rdsadmin.rdsadmin_util.grant_sys_object(
p_obj_name => 'DBA_USERS',
p_grantee => 'cmid_user',
p_privilege => 'SELECT',
p_grant_option => false);
end;
/
begin
rdsadmin.rdsadmin_util.grant_sys_object(
p_obj_name => 'V_$CONTAINERS',
p_grantee => 'cmid_user',
p_privilege => 'SELECT');
end;
/
begin
rdsadmin.rdsadmin_util.grant_sys_object(
p_obj_name => 'V_$PARAMETER',
p_grantee => 'cmid_user',
p_privilege => 'SELECT');
end;
/
begin
rdsadmin.rdsadmin_util.grant_sys_object(
p_obj_name => 'V_$SPPARAMETER',
p_grantee => 'cmid_user',
p_privilege => 'SELECT');
end;
/
begin
rdsadmin.rdsadmin_util.grant_sys_object(
p_obj_name => 'V_$STANDBY_LOG',
p_grantee => 'cmid_user',
p_privilege => 'SELECT');
end;
/
begin
rdsadmin.rdsadmin_util.grant_sys_object(
p_obj_name => 'V_$VERSION',
p_grantee => 'cmid_user',
p_privilege => 'SELECT');
end;
/
begin
rdsadmin.rdsadmin_util.grant_sys_object(
p_obj_name => 'ALL_CONS_COLUMNS',
p_grantee => 'cmid_user',
p_privilege => 'SELECT');
end;
/
begin
rdsadmin.rdsadmin_util.grant_sys_object(
p_obj_name => 'ALL_CONSTRAINTS',
p_grantee => 'cmid_user',
p_privilege => 'SELECT');
end;
/
begin
rdsadmin.rdsadmin_util.grant_sys_object(
p_obj_name => 'ALL_OBJECTS',
p_grantee => 'cmid_user',
p_privilege => 'SELECT');
end;
/
begin
rdsadmin.rdsadmin_util.grant_sys_object(
p_obj_name => 'ALL_TABLES',
p_grantee => 'cmid_user',
p_privilege => 'SELECT',
p_grant_option => false);
end;
/
begin
rdsadmin.rdsadmin_util.grant_sys_object(
p_obj_name => 'ALL_TAB_PARTITIONS',
p_grantee => 'cmid_user',
p_privilege => 'SELECT',
p_grant_option => false);
end;
/
begin
rdsadmin.rdsadmin_util.grant_sys_object(
p_obj_name => 'ALL_USERS',
p_grantee => 'cmid_user',
p_privilege => 'SELECT');
end;
/
begin
rdsadmin.rd 'ALL_TABLES',
p_grantee => 'sadmin_util.grant_sys_object(
p_obj_name => 'cmid_user
',
p_privilege => 'SELECT',
p_grant_option => false);
end;
/
begin
rdsadmin.rdsadmin_util.grant_sys_object(
p_obj_name => 'ALL_TAB_PARTITIONS',
p_grantee => 'cmid_user',
p_privilege => 'SELECT',
p_grant_option => false);
end;
/
begin
rdsadmin.rdsadmin_util.grant_sys_object(
p_obj_name => 'ATTRCOL$',
p_grantee => 'cmid_user',
p_privilege => 'SELECT');
end;
/
begin
rdsadmin.rdsadmin_util.grant_sys_object(
p_obj_name => 'CCOL$',
p_grantee => 'cmid_user',
p_privilege => 'SELECT');
end;
/
begin
rdsadmin.rdsadmin_util.grant_sys_object(
p_obj_name => 'COLTYPE$',
p_grantee => 'cmid_user',
p_privilege => 'SELECT');
end;
/
begin
rdsadmin.rdsadmin_util.grant_sys_object(
p_obj_name => 'INDPART$',
p_grantee => 'cmid_user',
p_privilege => 'SELECT');
end;
/
begin
rdsadmin.rdsadmin_util.grant_sys_object(
p_obj_name => 'IDNSEQ$',
p_grantee => 'cmid_user',
p_privilege => 'SELECT');
end;
/
begin
rdsadmin.rdsadmin_util.grant_sys_object(
p_obj_name => 'CDEF$',
p_grantee => 'cmid_user',
p_privilege => 'SELECT');
end;
/
begin
rdsadmin.rdsadmin_util.grant_sys_object(
p_obj_name => 'RECYCLEBIN$',
p_grantee => 'cmid_user',
p_privilege => 'SELECT');
end;
/
/* Only required for RDS21 which supports PDB*/
begin
rdsadmin.rdsadmin_util.grant_sys_object(
p_obj_name => 'V_$PDBS',
p_grantee => 'cmid_user',
p_privilege => 'SELECT');
end;
/