配置源 Oracle 数据库以进行一次性迁移

本页介绍了如何配置 Oracle 源数据库,以便使用 Database Migration Service 进行一次性迁移。您必须先向用于连接到源 Oracle 数据库并访问架构和代码对象的用户账号授予适当的权限,然后才能使用 Database Migration Service 从源 Oracle 数据库中拉取数据。

默认情况下,Database Migration Service 会尝试通过 DBA_VIEWS 访问所有对象定义。通过 SELECT ANY DICTIONARY 权限授予对 DBA_VIEWS 的访问权限。 如果迁移用户账号无法访问 DBA 视图,Database Migration Service 会回退到 ALL_VIEWS。这种方法可让您最灵活地定义最符合您要求的安全模型。

如需了解确切的配置步骤,请参阅相应源数据库的部分:

配置 Amazon RDS for Oracle 数据库

如需为一次性迁移配置 Amazon RDS 源数据库,请向 Database Migration Service 将使用的用户账号授予相应权限

对于每个命令,将 USER_NAME 替换为您用于迁移的用户账号的名称。运行这些命令将授予从 V$DATABASE 读取数据的权限(验证时需要)。

GRANT CONNECT TO USER_NAME;
GRANT CREATE SESSION TO USER_NAME;
GRANT SELECT ANY TABLE TO USER_NAME;
GRANT SELECT ANY DICTIONARY TO USER_NAME;
exec rdsadmin.rdsadmin_util.grant_sys_object('V_$DATABASE','USER_NAME','SELECT');

配置 Oracle 数据库

如需配置 Oracle 源数据库以进行一次性迁移,请向 Database Migration Service 将使用的用户账号授予适当的权限

对于每个命令,将 USER_NAME 替换为您用于迁移的用户账号的名称。运行这些命令将授予从 V$DATABASE 读取数据的权限(验证时需要)。

GRANT CONNECT TO USER_NAME;
GRANT CREATE SESSION TO USER_NAME;
GRANT SELECT ANY TABLE TO USER_NAME;
GRANT SELECT ANY DICTIONARY TO USER_NAME;
GRANT SELECT ON SYS.V_$DATABASE TO USER_NAME;

配置 Oracle 可插拔数据库 (PDB)

Database Migration Service 支持 Oracle 多租户架构,其中单个 容器数据库 (CDB) 包含一个或多个可插入数据库 (PDB)。每个可插拔数据库都是一个独立的数据库,具有唯一的 ID 和名称,并且可以单独进行管理。

如需配置 Oracle 可插拔数据库,以便将其与 Database Migration Service 搭配使用,请执行以下步骤:

  1. 创建 普通用户

    普通用户在 CDB$ROOT 容器和可插拔数据库中具有相同的身份。普通用户可以连接到根并在其中执行操作,还可以连接到具有相应权限的任何可插拔数据库并在其中执行操作。普通用户名必须以 C##c## 开头。

  2. 向将用于连接到数据库的普通用户授予适当的权限。在 CDB$ROOT 容器和可插拔数据库级别,需要不同的权限。

    对于每个命令,将 USER_NAME 替换为您用于迁移的用户账号的名称。运行这些命令会授予从 V$DATABASE 读取数据的权限,这是验证所必需的。

    • 连接到 CDB$ROOT 容器并运行以下命令:
      GRANT CREATE SESSION TO USER_NAME;
      GRANT SET CONTAINER TO USER_NAME;
      GRANT SELECT ON SYS.V_$DATABASE TO USER_NAME;
      GRANT EXECUTE_CATALOG_ROLE TO USER_NAME;
    • 连接到可插拔数据库并运行以下命令:
      GRANT CREATE SESSION TO USER_NAME;
      GRANT SET CONTAINER TO USER_NAME;
      GRANT SELECT ANY TABLE TO USER_NAME;
      GRANT SELECT ANY DICTIONARY TO USER_NAME;
      GRANT SELECT ON SYS.V_$DATABASE TO USER_NAME;