配置 Oracle 迁移先决条件
要从Oracle源数据库运行迁移作业,可能需要对数据库进行一些配置更改。如果Relational Migrator确定数据库需要更改配置,它会自动生成包含所需更改的SQL脚本。建议让数据库管理员 (数据库管理员 (DBA))查看此脚本中的命令并在数据库服务器上执行这些命令。 Oracle配置取决于迁移作业的类型:
快照迁移作业迁移所有数据,然后停止。
持续迁移作业运行快照,然后进入 CDC 阶段以持续复制数据更改。
有关支持的Oracle版本的详细信息,请参阅支持的数据库和版本。
关于此任务
如果您要从 Oracle 12c 实例迁移,则必须以 SYSDBA 角色运行命令。
在Oracle 12 c 中,引入了可插入数据库的概念。 其中一些命令可以在 PDB(可插入数据库)上运行,而启用
ARCHIVELOG
等命令必须在 CDB(容器/主数据库)上运行。 有关每种架构的详细信息,请参阅 容器数据库和可插入数据库概述。Oracle Express 版本中不允许使用补充日志记录。
步骤
设置用户权限
以下代码为 Relational Migrator 创建一个新的 Oracle 服务帐户,以连接到 Oracle 实例。 或者,您可以使用现有的 Oracle 服务帐户,通过适当的权限连接到 Relational Migrator。
创建服务帐户:
CREATE USER '<user>'@'localhost' IDENTIFIED BY '<password>'; 向服务帐户授予选择权限:
服务帐户所需的权限取决于这些表是否由用于运行迁移作业的服务帐户拥有。要检查表所有权,请运行以下查询:
SELECT TABLE_NAME, OWNER FROM ALL_TABLES WHERE TABLE_NAME ='<table_name>' ORDER BY OWNER, TABLE_NAME; 如果服务帐户是表所有者:
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 创建一个新的 Oracle 服务帐户,以连接到 Oracle 实例。 或者,您可以使用现有的 Oracle 服务帐户,通过适当的权限连接到 Relational Migrator。
创建服务帐户:
CREATE USER '<user>'@'localhost' IDENTIFIED BY '<password>'; 向服务帐户授予选择权限:
服务帐户所需的权限取决于这些表是否由用于运行迁移作业的服务帐户拥有。要检查表所有权,请运行以下查询:
SELECT TABLE_NAME, OWNER FROM ALL_TABLES WHERE TABLE_NAME ='<table_name>' ORDER BY OWNER, TABLE_NAME; 如果服务帐户是表所有者:
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>;
向服务帐户授予其他权限以运行持续迁移作业:
GRANT SET CONTAINER TO <user>; GRANT EXECUTE_CATALOG_ROLE TO <user>; GRANT SELECT ANY TRANSACTION TO <user>; GRANT LOGMINING TO <user>; GRANT CREATE TABLE TO <user>; GRANT LOCK ANY TABLE TO <user>; GRANT CREATE SEQUENCE TO <user>; GRANT SELECT ON DBA_TABLESPACES TO <user>; GRANT EXECUTE ON DBMS_LOGMNR TO <user>; GRANT EXECUTE ON DBMS_LOGMNR_D TO <user>; GRANT SELECT ON V$LOG TO <user>; GRANT SELECT ON V$LOG_HISTORY TO <user>; GRANT SELECT ON V$LOGMNR_LOGS TO <user>; GRANT SELECT ON V$LOGMNR_CONTENTS TO <user>; GRANT SELECT ON V$LOGMNR_PARAMETERS TO <user>; GRANT SELECT ON V$LOGFILE TO <user>; GRANT SELECT ON V$ARCHIVED_LOG TO <user>; GRANT SELECT ON V$ARCHIVE_DEST_STATUS TO <user>; GRANT SELECT ON V$TRANSACTION TO <user>;
在数据库级别开启LogMiner
要针对Oracle运行连续作业,您必须在数据库级别启用LogMiner
。 以下代码块是自动生成的代码示例,您可以通过替换数据库名称来手动运行这些代码:
ALTER SYSTEM SET db_recovery_file_dest_size = 10G; ALTER SYSTEM SET db_recovery_file_dest = '/opt/oracle/oradata/recovery_area' SCOPE=spfile; SHUTDOWN IMMEDIATE; STARTUP MOUNT ALTER DATABASE ARCHIVELOG; ALTER DATABASE OPEN;
提示
要检查LogMiner
是否已启用,请运行以下查询:
SELECT LOG_MODE FROM V$DATABASE;
了解详情
Relational Migrator依赖开源 DebeziumConnector来捕获行级更改。 有关更多详细信息,请参阅 Debezium Oracle
有关启用存档日志记录的详细信息,请参阅 管理存档重做日志。
有关其他故障排除和调试信息,请参阅 Debezium Oracle帮助博文文 。