旧版转换工作区简介

旧版转换工作区是一种功能较为有限的旧版转换工作区。旧版转换工作区不支持 Gemini 增强型转换功能或交互式 SQL 编辑器。您只能使用它们通过 Ora2Pg 迁移工具转换源架构。

我们不建议您在迁移时使用旧版转化工作区,因为它们会对转化工作流造成多种其他限制:

互动式转化工作区旧版转换工作区
架构和代码对象转换在 Database Migration Service 中进行。 您可以使用 Ora2Pg 迁移工具在 Database Migration Service 之外执行架构和代码对象转换。
您可以在 Database Migration Service 中直接将转换后的源应用于目标数据库。 您负责将转换后的架构应用于 Cloud SQL for PostgreSQL 目标实例中的目标数据库。
您可以直接在 Database Migration Service 中测试草稿架构和代码,确保它们可以成功应用于目标实例。 您无法在不影响目标实例的情况下测试草稿架构和代码。
自动为没有主键的表添加缺少的 rowid 列。 应用架构后,您必须向目标表添加缺少的主键。
表 1:转化工作区功能对比

使用旧版转换工作区

如果您的场景需要使用旧版转化工作区,请执行以下操作来修改迁移流程:

  1. 编写 Ora2Pg 配置文件。

    如需有关如何使用 Ora2Pg 转换工具的指导,请参阅 Ora2Pg 文档。展开即可下部分,查看 Database Migration Service 支持的完整指令列表。

    Database Migration Service 支持的 Ora2Pg 配置

    Database Migration Service 支持 Ora2Pg 文件的以下配置项:

    • BOOLEAN_VALUES
    • DATA_TYPE
    • DEFAULT_NUMERIC
    • ENABLE_MICROSECOND
    • EXPORT_SCHEMA
    • MODIFY_STRUCT
    • MODIFY_TYPE
    • PG_INTEGER_TYPE
    • PG_NUMERIC_TYPE
    • PG_SCHEMA
    • PRESERVE_CASE
    • REPLACE_AS_BOOLEAN
    • REPLACE_COLS
    • REPLACE_TABLES
    • REPLACE_ZERO_DATE
    • SCHEMA

    Database Migration Service 使用连接配置文件来定义连接详细信息,因此您无需在 Or2Pg 配置文件中定义以下信息:

    • ORACLE_DSN
    • ORACLE_HOME
    • ORACLE_PWD
    • ORACLE_USER
    • PG_DSN
    • PG_PWD
    • PG_USER

    此外,Database Migration Service 不会使用 WHERE 配置指令来限制要迁移的记录。

  2. 创建旧版转换工作区,然后上传 Ora2Pg 文件以转换架构
  3. 手动将转换后的架构应用于目标数据库。

    创建 Ora2Pg 配置并创建工作区后,您必须直接在目标数据库上自行应用生成的代码。

  4. 迁移没有主键的表。

    Database Migration Service 仅迁移具有主键的表。 如果源数据库包含没有主键的表,则您需要在应用转换后的架构后,在目标数据库的转换表中手动创建主键约束条件。如需了解详情,请展开即可下部分。

    在目标数据库中添加主键约束条件

    如需迁移没有主键的 Oracle 表,请执行以下操作:

    1. 使用 SQL 客户端连接到目标 Cloud SQL 实例。您可以使用以下方法:
      • psql 客户端。您可以使用此方法连接到实例专用 IP,但可能需要创建 Compute Engine 虚拟机。
      • gcloud sql connect 命令。此命令仅适用于启用了公共 IP 地址的 Cloud SQL 实例。
    2. 为表创建缺少的主键约束条件。如需详细了解主键,请参阅 PostgreSQL 文档中的 主键

      您还可以展开即可下部分,查看 SQL 命令示例:

      使用现有列创建主键

      您的表可能已经具有基于列或列组合的逻辑主键。例如,可能存在配置了唯一性约束条件或索引的列。使用这些列为源数据库中的表生成新的主键。例如:

      ALTER TABLE TABLE_NAME
      ADD PRIMARY KEY (COLUMN_NAME);

      使用所有列创建主键

      如果您没有可用作主键的现有约束条件,请使用表中的所有列创建主键。确保主键的长度不超过 PostgreSQL 实例允许的上限。例如:

      ALTER TABLE TABLE_NAME
      ADD PRIMARY KEY (COLUMN_NAME_1, COLUMN_NAME_2, COLUMN_NAME_3, ...);

      创建这样的复合主键时,您需要明确列出要使用的所有列名称。为此目的,无法使用语句检索所有列名称。

后续步骤

使用旧版工作区执行转换工作流后,您可以继续执行标准迁移流程。请参阅 创建迁移作业