旧版转换工作区是一种较旧且功能更有限的转换工作区。旧版转换工作区不支持 Gemini 增强型转换功能或交互式 SQL 编辑器。您只能使用它们通过 Ora2Pg 迁移工具转换源架构。
我们不建议在迁移中使用旧版转化工作区,因为它们对转化工作流程有许多其他限制:
互动式转换工作区 | 旧版转换工作区 |
---|---|
架构和代码对象转换在 Database Migration Service 中进行。 | 您可以使用 Ora2Pg 迁移工具在 Database Migration Service 外部执行架构和代码对象转换。 |
您可以在 Database Migration Service 中将转换后的来源直接应用于目标数据库。 | 您负责将转换后的架构应用到 Cloud SQL for PostgreSQL 目标实例中的目标数据库。 |
您可以直接在 Database Migration Service 中测试草稿架构和代码,以确保它们可以成功应用于目标实例。 | 您无法在不影响目标实例的情况下测试草稿架构和代码。 |
自动为没有主键和唯一性限制条件的表添加缺失的 rowid 列。 |
应用架构后,您必须向目标表添加缺失的主键。 |
使用旧版转换工作区
如果您的方案需要使用旧版转化工作区,请通过以下操作修改迁移流程:
编写 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
配置指令来限制要迁移的记录。- 创建旧版转换工作区,然后上传 Ora2Pg 文件以转换架构。
手动将转换后的架构应用到目标数据库。
创建 Ora2Pg 配置并创建工作区后,您必须自行直接在目标数据库上应用生成的代码。
迁移没有主键的表。
Database Migration Service 仅迁移具有主键的表。 如果源数据库包含没有主键的表,您需要在应用转换后的架构后,在目标数据库的转换后的表中手动创建主键或唯一性约束。展开即可下部分即可查看更多详情。
在目标数据库中添加主键约束
如需迁移没有主键的 Oracle 表,请执行以下操作:
- 使用 SQL 客户端连接到 Cloud SQL 目标实例。您可以使用以下方法:
-
psql
客户端。您可以使用此方法连接到实例专用 IP,但可能需要您创建 Compute Engine 虚拟机。 -
gcloud sql connect
命令。此命令仅适用于已启用公共 IP 地址的 Cloud SQL 实例。
-
- 为表创建缺失的主键限制条件。如需详细了解主键,请参阅 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, ...);
创建此类复合主键时,您需要明确列出要使用的所有列名称。无法使用语句来检索所有列名称以实现此目的。
使用
ROWID
伪列创建唯一性限制条件Oracle 数据库使用
ROWID
伪列来存储表中每一行的位置。如需迁移没有主键的 Oracle 表,您可以在目标 PostgreSQL 数据库中添加ROWID
列。Database Migration Service 会使用源 OracleROWID
伪列中的相应数值填充该列。如需添加列并将其设为主键,请运行以下命令:
ALTER TABLE TABLE_NAME ADD COLUMN rowid numeric(33,0) NOT NULL; CREATE SEQUENCE TABLE_NAME_rowid_seq INCREMENT BY -1 START WITH -1 OWNED BY TABLE_NAME.rowid; ALTER TABLE TABLE_NAME ALTER COLUMN rowid SET DEFAULT nextval('TABLE_NAME_rowid_seq'); ALTER TABLE TABLE_NAME ADD CONSTRAINT CONSTRAINT_DISPLAY_NAME PRIMARY KEY (rowid);
- 使用 SQL 客户端连接到 Cloud SQL 目标实例。您可以使用以下方法:
后续步骤
使用旧版工作区执行转换工作流程后,您可以继续执行标准迁移程序。请参阅 创建迁移作业。