当您从Oracle源数据库迁移数据时, Relational Migrator会自动检查数据库是否存在所需的配置更改,并生成SQL脚本来实现这些更改。让数据库管理员 (数据库管理员 (DBA))查看脚本并在数据库服务器上运行命令。本页提供有关所需配置步骤的更多详细信息。
有关支持的Oracle版本的详细信息,请参阅支持的数据库和版本。
关于此任务
如果您要从 Oracle 12c 实例迁移,则必须以 SYSDBA 角色运行命令。
Oracle 12c 引入了可插入数据库(PDB) 的概念。某些命令可以在 PDB 上运行,而启用
ARCHIVELOG等命令必须在容器/主数据库(CDB) 上运行。有关每种架构的详细信息,请参阅 容器数据库和可插入数据库概述。某些命令会根据数据库是单租户还是多租户而有所不同。在多租户数据库中,权限必须包含后缀
CONTAINER=ALL。要检查数据库是否为多租户数据库,运行以下SQL查询:SELECT cdb AS is_multitenant FROM v$database;
步骤
要为快照作业配置Oracle实例,请执行以下操作:
设置用户权限
以下代码为 Relational Migrator 创建一个新的 Oracle 服务帐户,以连接到 Oracle 实例。 或者,您可以使用现有的 Oracle 服务帐户,通过适当的权限连接到 Relational Migrator。
提示
要从多租户容器数据库迁移数据,请创建表空间和普通用户。
创建服务帐户:
CREATE USER <user> IDENTIFIED BY "<password>"; 确认该服务帐户拥有迁移作业中的表。
所需的权限取决于服务帐户是否拥有迁移作业中使用的表。 要检查表所有权,运行以下查询:
SELECT TABLE_NAME, OWNER FROM ALL_TABLES WHERE TABLE_NAME ='<table_name>' ORDER BY OWNER, TABLE_NAME; 向服务帐户授予权限。
重要
如果您以普通用户身份迁移多租户容器数据库,请在授予权限时附加
CONTAINER=ALL。 示例:GRANT CREATE SESSION TO <user> CONTAINER=ALL; 如果服务帐户是表所有者:
GRANT CREATE SESSION TO <user>; GRANT SELECT ON V_$DATABASE TO <user>; 如果服务帐户不是表所有者:
GRANT CREATE SESSION TO <user>; GRANT SELECT_CATALOG_ROLE TO <user>; GRANT SELECT ANY TABLE TO <user>; GRANT SELECT ON V_$DATABASE TO <user>; GRANT FLASHBACK ANY TABLE TO <user>;
了解详情
Relational Migrator依赖开源 DebeziumConnector来捕获行级更改。有关更多详细信息,请参阅 Debezium Oracle
有关启用存档日志记录的详细信息,请参阅管理存档重做日志。
有关其他故障排除和调试信息,请参阅Debezium Oracle帮助博文。