配置Oracle的迁移先决条件
要从Oracle源数据库运行迁移作业,数据库可能需要一些配置更改。如果关系数据库迁移器确定数据库需要配置更改,它将自动生成包含所需更改的SQL脚本。建议数据库管理员(DBA)审查此脚本中的命令并在数据库服务器上执行它们。Oracle配置取决于迁移作业类型。
快照迁移作业迁移所有数据后停止。
连续迁移作业运行快照然后进入CDC阶段以持续复制数据变更。
有关Oracle支持版本的信息,请参见支持的数据库和版本.
关于此任务
如果您从Oracle 12c实例迁移,必须以SYSDBA角色运行命令。
在Oracle 12c中引入了可插拔数据库的概念。其中一些命令可以在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;
了解更多
关系迁移器依赖于开源的Debezium连接器来捕获行级更改。有关详细信息,请参阅 Debezium Oracle
有关启用归档日志的详细信息,请参阅管理归档重做日志。
有关额外的故障排除和调试信息,请参阅Debezium Oracle 帮助博客文章。