文档菜单
文档首页
/
关系数据库迁移器
/ /

配置Oracle的迁移先决条件

本页内容

  • 关于此任务
  • 步骤
  • 了解更多

要从Oracle源数据库运行迁移作业,数据库可能需要一些配置更改。如果关系数据库迁移器确定数据库需要配置更改,它将自动生成包含所需更改的SQL脚本。建议数据库管理员(DBA)审查此脚本中的命令并在数据库服务器上执行它们。Oracle配置取决于迁移作业类型。

  • 快照迁移作业迁移所有数据后停止。

  • 连续迁移作业运行快照然后进入CDC阶段以持续复制数据变更。

有关Oracle支持版本的信息,请参见支持的数据库和版本.

  • 如果您从Oracle 12c实例迁移,必须以SYSDBA角色运行命令。

  • 在Oracle 12c中引入了可插拔数据库的概念。其中一些命令可以在PDB(可插拔数据库)上运行,而像启用ARCHIVELOG这样的命令则必须在CDB(容器/主数据库)上运行。有关每种架构的详细信息,请参见容器数据库和可插拔数据库概述.

  • Oracle Express版本不允许补充日志。

1

以下代码为Relational Migrator创建一个新的Oracle服务账户,以便连接到Oracle实例。或者,您可以使用现有的Oracle服务账户,并授予相应的权限来连接到Relational Migrator。

  1. 创建服务账户

    CREATE USER '<user>'@'localhost' IDENTIFIED BY '<password>';
  2. 授予服务账户选择权限

    服务账户所需的权限取决于迁移作业使用的服务账户是否拥有表。要检查表的所有权,请运行以下查询

    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>;
1

以下代码为Relational Migrator创建一个新的Oracle服务账户,以便连接到Oracle实例。或者,您可以使用现有的Oracle服务账户,并授予相应的权限来连接到Relational Migrator。

  1. 创建服务账户

    CREATE USER '<user>'@'localhost' IDENTIFIED BY '<password>';
  2. 授予服务账户选择权限

    服务账户所需的权限取决于迁移作业使用的服务账户是否拥有表。要检查表的所有权,请运行以下查询

    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>;
  1. 授予服务账户运行持续迁移作业的额外权限

    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>;
2

要针对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;
3
  1. 为了运行针对Oracle的持续迁移作业,必须在数据库级别启用补充日志

    ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;
  2. 您还必须在迁移的每个表中启用补充日志

    ALTER TABLE schemaName.tableName ADD SUPPLEMENTAL LOG DATA (ALL) COLUMNS;
    /* Additional ALTER TABLE STATEMENTS... */

返回

MySQL