当我使用 Oracle 作为源端点时,AWS DMS 需要什么权限?

3 分钟阅读
0

我有一个 AWS Database Migration Service(AWS DMS)任务,其使用 Oracle 作为源端点。我想知道 AWS DMS 所需的最低权限是什么。

简述

AWS DMS 需要从源数据库读取数据的权限,才能将数据迁移到目标。根据 AWS DMS 任务设置和执行的迁移类型,所需权限可能有所不同。

解决方案

AWS 管理的 Oracle 源数据库

有关 Amazon 管理的 Oracle 数据库的信息,请参阅Working with an AWS managed Oracle database as a source for AWS DMS。这包括诸如 Amazon Relational Database Service(Amazon RDS)之类的 Oracle 数据库。

自行管理的 Oracle 源数据库

对于自行管理的 Oracle 数据库,需要以下权限:

GRANT SELECT on V_$DATABASE to <dms_user>;
GRANT SELECT on V_$THREAD to <dms_user>;
GRANT SELECT on V_$PARAMETER to <dms_user>;
GRANT SELECT on V_$NLS_PARAMETERS to <dms_user>;
GRANT SELECT on V_$TIMEZONE_NAMES to <dms_user>;
GRANT SELECT on ALL_INDEXES to <dms_user>;
GRANT SELECT on ALL_OBJECTS to <dms_user>;
GRANT SELECT on ALL_TABLES to <dms_user>;
GRANT SELECT on ALL_USERS to <dms_user>;
GRANT SELECT on ALL_CATALOG to <dms_user>;
GRANT SELECT on ALL_CONSTRAINTS to <dms_user>;
GRANT SELECT on ALL_CONS_COLUMNS to <dms_user>;
GRANT SELECT on ALL_TAB_COLS to <dms_user>;
GRANT SELECT on ALL_IND_COLUMNS to <dms_user>;
GRANT SELECT on ALL_LOG_GROUPS to <dms_user>;
GRANT SELECT on SYS.DBA_REGISTRY to <dms_user>;
GRANT SELECT on SYS.OBJ$ to <dms_user>;
GRANT SELECT on DBA_TABLESPACES to <dms_user>;
GRANT SELECT on ALL_TAB_PARTITIONS to <dms_user>;
GRANT SELECT on ALL_ENCRYPTED_COLUMNS to <dms_user>;
GRANT SELECT ANY TRANSACTION to <dms_user>;
GRANT SELECT on V_$LOGMNR_LOGS to <dms_user>;
GRANT SELECT on V_$LOGMNR_CONTENTS to <dms_user>;
GRANT SELECT on V_$LOG to <dms_user>;
GRANT SELECT on V_$ARCHIVED_LOG to <dms_user>;
GRANT SELECT on V_$LOGFILE to <dms_user>;
GRANT SELECT on V_$TRANSACTION to <dms_user>;

要显示视图,需要下面的权限:

GRANT SELECT on ALL\_VIEWS to <dms\_user>;

**注意:**要公开视图,您还必须将这些额外连接属性添加到源端点:

exposeViews=true

您可以在复制任务中使用与表名称匹配的模式。您还可以允许源数据库用户从不同的架构中读取表。要执行任一任务,请添加下列权限:

GRANT SELECT ANY TABLE to <dms\_user>;

要在复制任务中指定表列表,需要下列权限:

GRANT SELECT on <schema>.<table > ;

**注意:**为表列表中的所有表添加这些权限。要从 Oracle RAC 迁移,必须对前缀为 gv_$v_$ 的实体化视图授予 SELECT 权限。

要为大型对象(LOB)启用 AWS DMS 验证,需要下列权限:

GRANT execute on sys.dbms_crypto to <dms_user>;

如果使用 addSupplementalLogging 额外连接属性,则需要下列权限:

GRANT ALTER ANY TABLE to <dms\_user>

具有正在进行的复制任务的 Oracle 源数据库

Oracle 提供了两种方法来在正在进行的复制期间读取重做日志: Oracle LogMiner 和 Oracle Binary Reader。根据所使用的方法,在授予前面提到的所需权限后,您必须向源用户授予其他权限。

要使用 LogMiner,需要下列权限:

GRANT EXECUTE ON dbms\_logmnr TO <dms\_user>;

对于 Oracle 12c 及更高版本,需要下列权限:

GRANT LOGMINING TO <dms\_user>;

Binary Reader 使用 Oracle 目录来读取重做和存档日志。您必须授予 AWS DMS 访问权限,才能在源数据库上创建 Oracle 目录:

GRANT CREATE ANY DIRECTORY to <dms\_user>;

要使用 AWS DMS 创建 Oracle 目录,您必须授予 CREATE ANY DIRECTORY 权限。AWS DMS 会创建带有 DMS_ 前缀的目录名称。如果不授予 CREATE ANY DIRECTORY 权限,则必须手动创建目录。手动创建 Oracle 目录时,在端点上指定的 Oracle 用户并不总是创建目录的用户。在这些情况下,您必须授予 READ on DIRECTORY 权限。

GRANT READ ON DIRECTORY <RedoLog_directory_name> to <dms_user>;
GRANT READ ON DIRECTORY <ArchiveLog_directory_name> to <dms_user>;

要确认已创建目录,请查询 ALL_DIRECTORIES 表。要使用 Binary Reader 访问自动存储管理(ASM)中的重做日志,请在端点上向 Oracle 用户授予下列权限:

GRANT SELECT ON v_$transportable_platform  to <dms_user>; - Grant this privilege if the redo logs are stored in Oracle Automatic Storage Management (ASM) and AWS DMS accesses them from ASM.
GRANT SYSASM to <ASM_USER>; - To access the ASM account with Oracle 11g Release 2 (version 11.2.0.2) and higher, grant the Oracle endpoint user the SYSASM privilege. For older supported Oracle versions, it's typically sufficient to grant the Oracle endpoint user the SYSDBA privilege.

Where the Oracle source uses ASM, you can work with high-performance options in Binary Reader for transaction processing at scale. These options include extra connection attributes to specify the number of parallel threads (parallelASMReadThreads) and the number of read-ahead buffers (readAheadBlocks). Setting these attributes together can significantly improve the performance of the CDC task. The following settings provide good results for most ASM configurations.

**注意:**AWS DMS 支持 Oracle Active Data Guard Standby 作为来源。在 Active Data Guard 模式下,您可以在只读模式下打开备用数据库。在主实例上授予前面提到的权限后,执行几次日志切换以将权限复制到备用数据库。有关详细信息,请参阅 Oracle 网站上的 Forcing log switches

相关信息

Using an Oracle database as a source for AWS DMS

Using a self-managed Oracle Standby as a source with Binary Reader for CDC in AWS DMS

AWS 官方
AWS 官方已更新 5 个月前