--Source 授權
--privileges for dbms_datapump
GRANT EXP_FULL_DATABASE TO XXXSOURCEUSER;
GRANT FLASHBACK ANY TABLE TO XXXSOURCEUSER;
GRANT CREATE SESSION TO XXXSOURCEUSER;
ALTER USER XXXSOURCEUSER DEFAULT ROLE ALL; --最後是這個解決此問題 !!!ORA-31631: privileges are required (註1:不一定要寫’ALL’,而是讓其EXP_FULL_DATABASE 角色 DEFULT_ROLE的flag變為YES )
(註2:select * from session_roles; 知道每次此User登錄Session時,會預設授與的角色)
GRANT SELECT ON sys.v_$instance TO XXXSOURCEUSER;
GRANT EXECUTE ON sys.dbms_flashback TO XXXSOURCEUSER;
--Target上的授權
--privileges for dbms_datapump
GRANT IMP_FULL_DATABASE TO XXXTARGETUSERARCH;
GRANT DROP USER TO XXXTARGETUSERARCH;
GRANT ALTER USER TO XXXTARGETUSERARCH;
GRANT CREATE SESSION TO XXXTARGETUSERARCH;
GRANT CREATE TABLE TO XXXTARGETUSERARCH;
--GRANT FLASHBACK ANY TABLE TO target_user;
ALTER USER XXXTARGETUSERARCH DEFAULT ROLE ALL;
ALTER USER XXXTARGETUSERARCH QUOTA UNLIMITED ON users;
GRANT SELECT ON sys.dba_users TO XXXTARGETUSERARCH;
GRANT EXECUTE ON sys.dbms_flashback TO XXXTARGETUSERARCH;
針對Default Role Flag屬性 理解:
SELECT * FROM USER_ROLE_PRIVS; -- 此User的權限 (留意DEFAULT_ROLE欄位)
SELECT * FROM SESSION_ROLES ; --此USER登錄後的Session下的授與角色。