Docs 菜单
Docs 主页
/
Relational Migrator
/ /

配置 Oracle 迁移先决条件

在此页面上

  • 关于此任务
  • 步骤
  • 了解详情

要从 Oracle 源数据库运行同步作业,可能需要对数据库进行一些配置更改。 如果 Relational Migrator 确定数据库需要更改配置,它会自动生成包含所需更改的 SQL 脚本。 建议让数据库管理员 (DBA) 查看此脚本中的命令并在数据库服务器上执行这些命令。 Oracle 配置取决于同步作业的类型:

  • 快照同步作业会迁移所有数据,然后停止。

  • 连续同步作业运行快照,然后进入 CDC 阶段以连续复制数据更改。

有关支持的 Oracle 版本的详细信息,请参阅支持的数据库和版本。

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

  • 在 Oracle12 c 中,引入了可插入数据库的概念。其中一些命令可以在 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