Privileges required for Oracle Migration users
The new preparation script only prepares the GGADMIN or C##GGADMIN migration users for offline and online migrations. These are the only supported users to use for initial load and replication. If you need to prepare your GGADMIN or C##GGADMIN users manually, these are the required grants:
Note:
The assessment functionality only supports source databases with version equal or higher than Oracle Database 19c (19.23). Only GGADMIN is supported for initial load and replication.
For scenarios where the database is earlier than Oracle Database 19c (19.23), you need to use the Create migration feature under Migration menu.
For non-ADB pluggable databases or single-tenant databases running Oracle Database 19c (19.23) or later, and for offline migrations:
CREATE USER GGADMIN IDENTIFIED BY "<password>"
DEFAULT TABLESPACE USERS
TEMPORARY TABLESPACE TEMP;
GRANT CREATE SESSION TO GGADMIN;
GRANT DV_GOLDENGATE_ADMIN TO GGADMIN;
GRANT DV_GOLDENGATE_REDO_ACCESS TO GGADMIN;
GRANT ALTER USER TO GGADMIN;
GRANT DATAPUMP_EXP_FULL_DATABASE TO GGADMIN;
GRANT DATAPUMP_IMP_FULL_DATABASE TO GGADMIN;
GRANT SELECT ANY DICTIONARY TO GGADMIN;
GRANT SELECT ANY TRANSACTION TO GGADMIN;
GRANT LOCK ANY TABLE TO GGADMIN;
GRANT CREATE ANY CLUSTER TO GGADMIN;
GRANT CREATE ANY INDEXTYPE TO GGADMIN;
GRANT CREATE ANY OPERATOR TO GGADMIN;
GRANT CREATE ANY SEQUENCE TO GGADMIN;
GRANT CREATE ANY TRIGGER TO GGADMIN;
GRANT CREATE ANY TYPE TO GGADMIN;
GRANT ALTER ANY TABLE TO GGADMIN;
GRANT ALTER ANY CLUSTER TO GGADMIN;
GRANT ALTER ANY INDEXTYPE TO GGADMIN;
GRANT ALTER ANY OPERATOR TO GGADMIN;
GRANT ALTER ANY SEQUENCE TO GGADMIN;
GRANT ALTER ANY TRIGGER TO GGADMIN;
GRANT ALTER ANY TYPE TO GGADMIN;
GRANT CREATE DATABASE LINK TO GGADMIN;
GRANT ALTER SYSTEM TO GGADMIN;
GRANT ALTER DATABASE TO GGADMIN;
GRANT INSERT ANY TABLE TO GGADMIN;
GRANT UPDATE ANY TABLE TO GGADMIN;
GRANT DELETE ANY TABLE TO GGADMIN;
GRANT DROP ANY TABLE TO GGADMIN;
GRANT DROP ANY INDEX TO GGADMIN;
GRANT DROP ANY VIEW TO GGADMIN;
GRANT DROP ANY PROCEDURE TO GGADMIN;
GRANT CREATE ANY TABLE TO GGADMIN;
GRANT CREATE ANY INDEX TO GGADMIN;
GRANT CREATE ANY PROCEDURE TO GGADMIN;
GRANT CREATE ANY VIEW TO GGADMIN;
GRANT ALTER ANY INDEX TO GGADMIN;
GRANT ALTER ANY PROCEDURE TO GGADMIN;
GRANT SELECT ON V_$SESSION TO GGADMIN;
GRANT SELECT ON V_$TRANSACTION TO GGADMIN;
GRANT SELECT ON V_$DATABASE TO GGADMIN;For online migrations when the database version is earlier than Oracle AI Database 26ai, also run:
EXEC DBMS_GOLDENGATE_AUTH.GRANT_ADMIN_PRIVILEGE('GGADMIN', CONTAINER=>'CURRENT');For online migrations when the database version is Oracle AI Database 26ai, grant:
GRANT OGG_CAPTURE TO GGADMIN;
GRANT OGG_APPLY TO GGADMIN;
GRANT OGG_APPLY_PROCREP TO GGADMIN;If the database is multitenant, the database version is earlier than Oracle Database 19c (19.23), and the migration is online, create the common user in CDB$ROOT:
CREATE USER C##GGADMIN IDENTIFIED BY "<password>"
CONTAINER=ALL
DEFAULT TABLESPACE USERS
TEMPORARY TABLESPACE TEMP
QUOTA UNLIMITED ON USERS;
GRANT CREATE SESSION TO C##GGADMIN CONTAINER=ALL;
GRANT CREATE VIEW TO C##GGADMIN CONTAINER=ALL;
GRANT CREATE TABLE TO C##GGADMIN CONTAINER=ALL;
GRANT ALTER SYSTEM TO C##GGADMIN CONTAINER=ALL;
GRANT SELECT ANY DICTIONARY TO C##GGADMIN CONTAINER=ALL;
GRANT DV_GOLDENGATE_ADMIN TO C##GGADMIN CONTAINER=ALL;
GRANT DV_GOLDENGATE_REDO_ACCESS TO C##GGADMIN CONTAINER=ALL;
EXEC DBMS_GOLDENGATE_AUTH.GRANT_ADMIN_PRIVILEGE(
'C##GGADMIN',
CONTAINER => 'ALL'
);When Autonomous AI Database is the instance, run the following with ADMIN user:
GRANT PDB_DBA TO GGADMIN;
GRANT SELECT ON SYS.V_$SESSION TO GGADMIN;
GRANT SELECT ON SYS.V_$TRANSACTION TO GGADMIN;
GRANT SELECT ON SYS.V_$DATABASE TO GGADMIN;
ALTER USER GGADMIN IDENTIFIED BY "<password>" ACCOUNT UNLOCK;
EXEC DBMS_CLOUD_ADMIN.ENABLE_RESOURCE_PRINCIPAL(
username => 'GGADMIN'
);For Oracle RDS, grant:
GRANT UNLIMITED TABLESPACE TO GGADMIN;
EXEC RDSADMIN.RDSADMIN_UTIL.GRANT_SYS_OBJECT('CDEF$', 'GGADMIN', 'SELECT');
EXEC RDSADMIN.RDSADMIN_UTIL.GRANT_SYS_OBJECT('USER$', 'GGADMIN', 'SELECT');
EXEC RDSADMIN.RDSADMIN_UTIL.GRANT_SYS_OBJECT('COL$', 'GGADMIN', 'SELECT');
EXEC RDSADMIN.RDSADMIN_UTIL.GRANT_SYS_OBJECT('CON$', 'GGADMIN', 'SELECT');
EXEC RDSADMIN.RDSADMIN_UTIL.GRANT_SYS_OBJECT('OBJ$', 'GGADMIN', 'SELECT');
EXEC RDSADMIN.RDSADMIN_UTIL.GRANT_SYS_OBJECT('SEG$', 'GGADMIN', 'SELECT');
EXEC RDSADMIN.RDSADMIN_UTIL.GRANT_SYS_OBJECT('TAB$', 'GGADMIN', 'SELECT');
EXEC RDSADMIN.RDSADMIN_UTIL.GRANT_SYS_OBJECT('V_$SESSION', 'GGADMIN', 'SELECT');
EXEC RDSADMIN.RDSADMIN_UTIL.GRANT_SYS_OBJECT('V_$TRANSACTION', 'GGADMIN', 'SELECT');
EXEC RDSADMIN.RDSADMIN_UTIL.GRANT_SYS_OBJECT('V_$DATABASE', 'GGADMIN', 'SELECT');
EXEC RDSADMIN.RDSADMIN_DBMS_GOLDENGATE_AUTH.GRANT_ADMIN_PRIVILEGE(
GRANTEE => 'GGADMIN',
PRIVILEGE_TYPE => 'CAPTURE',
GRANT_SELECT_PRIVILEGES => TRUE,
DO_GRANTS => TRUE
);
GRANT CREATE SESSION TO GGADMIN;
GRANT SELECT ANY DICTIONARY TO GGADMIN;
GRANT SELECT_CATALOG_ROLE TO GGADMIN;
GRANT CREATE VIEW TO GGADMIN;
GRANT DATAPUMP_EXP_FULL_DATABASE TO GGADMIN;
GRANT DATAPUMP_IMP_FULL_DATABASE TO GGADMIN;
GRANT READ ON DIRECTORY BDUMP TO GGADMIN;