在转换工作区中,您可以修正转换问题、使用交互式编辑器修改对象,以及将转换后的架构应用到目标数据库。本页面简要介绍了您可以使用转化工作区执行的所有操作。
查看转化状态
在转换概览部分,您可以查看有关架构转换的所有信息:转换后的对象的数量和类型、其转换状态(包括未解决或已解决的问题),以及 Gemini 辅助自动转换提供的增强功能列表。
您还可以使用每个类别中的过滤条件,按对象类型、问题严重程度、未解决或已解决的问题来缩小树状视图中显示的对象数量。转化概览仅适用于 升级后的转化工作区。
如需查看有关代码和架构转换进度的详细信息,请执行以下操作:
- 在 Google Cloud 控制台中,前往转换工作区,然后选择您的工作区。
- 在 Oracle 标签页中,使用架构树状视图执行以下操作之一:
- 选择 Oracle 可查看工作区中所有已转换架构中所有对象的信息。
- 选择特定架构或对象,以查看部分对象的转换详细信息。
- 在转化概览标签页中,探索转化对象摘要部分中的信息。使用显示对象按钮可将任何过滤条件应用到 Oracle 标签页中的树状视图。
- 使用转化问题标签页开始解决转化问题。如需了解详情,请参阅 解决转化问题。
从源架构中移除对象
从来源架构中移除对象,以将其排除在转换之外。 如果需要,您可以稍后 添加已移除的对象。
- 在 Google Cloud 控制台中,前往转换工作区,然后选择您的工作区。
- 在 Oracle 标签页中,选择要移除的对象旁边的 更多图标 > 移除。
- 在移除对象确认对话框中,点击移除。
- 刷新转换后的架构。点击
转换来源。
Database Migration Service 现在可以分析您的更改并生成更新后的 PostgreSQL 架构。
您可以在 Cloud SQL for PostgreSQL 草稿标签页中检查转换后的架构。
向源架构添加对象
您可以添加之前从源架构中移除的对象,以将其添加到转换中。
- 在 Google Cloud 控制台中,前往转换工作区,然后选择您的工作区。
- 在 Oracle 标签页中,点击 添加对象。
- 在添加对象部分中,使用源列表选择要添加到源架构中的所有实体。
您可以使用过滤对象按钮来减少显示的对象数量。 请参阅 在来源架构视图中过滤对象
- 点击添加对象。
- 刷新转换后的架构。点击
转换来源。
Database Migration Service 现在可以分析您的更改并生成更新后的 PostgreSQL 架构。
您可以在 Cloud SQL for PostgreSQL 草稿标签页中检查转换后的架构。
拉取来源架构和代码快照
您可以随时将架构和代码从源数据库拉取到转换工作区中。提取来源可让您有机会在转化中添加新对象或更新现有对象。
拉取更新后的数据库架构和代码不会重置转换工作区中存在的任何自定义映射,除非您明确选择移除自定义映射。
此外,拉取源代码不会覆盖代码对象上的 SQL 更改。您可以直接在对象级别重置这些更改。
- 在 Google Cloud 控制台中,前往转换工作区,然后选择您的工作区。
- 依次点击 修改配置 > 再次拉取来源架构快照。
- 在对话框中:
- 可选:选择重置自定义映射,以移除现有的自定义映射和 DDL 修改项。
- 点击拉取架构快照。
Database Migration Service 会从源数据库中提取新的快照。
- 刷新转换后的架构。点击
转换来源。
Database Migration Service 现在可以分析您的更改并生成更新后的 PostgreSQL 架构。
您可以在 Cloud SQL for PostgreSQL 草稿标签页中检查转换后的架构。
使用自定义转化映射
您可以使用转化映射文件自定义转化逻辑。转换映射文件是一个文本文件,其中包含有关如何将 Oracle 对象转换为 PostgreSQL 对象的精确说明(称为转换指令)。
编写自定义映射文件
如需编写自定义映射文件,请执行以下操作:
使用 示例配置文件作为参考点。
在文本编辑器中编写自定义转化映射,然后将其上传到转化工作区。
添加自定义映射文件
如需向工作区添加自定义转化映射文件,请执行以下操作:
- 在 Google Cloud 控制台中,前往转换工作区,然后选择您的工作区。
- 在转化编辑器页面上,依次选择 Edit configuration > Customize mapping with a configuration file。
- 在配置文件框中,点击浏览,然后使用系统文件选择器选择您的配置文件。
- 依次点击 添加文件 > 创建映射。
移除自定义映射文件
如需从工作区中移除自定义转化映射文件,请执行以下操作:
- 在 Google Cloud 控制台中,前往转换工作区,然后选择您的工作区。
- 在转化编辑器页面上,依次选择 修改配置 > 移除自定义映射。
查看转换结果
执行来源转化后,您可以在工作区编辑器区域中查看每个已转换对象的转换结果和可能存在的问题。您还可以使用 Google Cloud CLI 将所有结果和问题批量保存到文本文件中。
控制台
在 Google Cloud 控制台中,前往转换工作区。
点击要处理的转化工作区的显示名称。
系统随即会打开转换工作区编辑器。
选择 Oracle 标签页,然后在树状视图表格中找到要查看转换结果的对象。
选择对象。使用 SQL 和转换问题标签页查看转换。
如果您确定问题属于警告,无需采取任何措施,可以 将其标记为已解决。否则,您可以进一步调查,并 在转化编辑器中修复此问题。
gcloud
借助 Google Cloud CLI,您可以将所有转换结果或问题输出到终端。将输出重定向到文件,以便更方便地批量审核对象。
获取转化结果列表
gcloud CLI 会在终端中以数据定义语言 (DDL) 语句的形式显示转换结果。如需将转换结果保存到文件中,请执行以下命令:
gcloud database-migration conversion-workspaces describe-ddls \
CONVERSION_WORKSPACE_ID \
--region=REGION_ID \
> OUTPUT_FILE_PATH
将
CONVERSION_WORKSPACE_ID,其中包含转化工作区标识符。 如需了解如何检索转换工作区标识符,请参阅 查看转换工作区详细信息。- 将
REGION_ID替换为转换工作区所在的区域的名称。 将
OUTPUT_FILE_PATH替换为要保存输出的文本文件的路径。示例:
gcloud database-migration conversion-workspaces describe-ddls \ my-conversion-workspace \ --region=us-central1 \ > ./my-ddls-list.txt结果:
您的架构转换结果会以文本格式保存,其中第一行显示
DDLs,后续行则包含 SQL 语句:DDLs CREATE SCHEMA IF NOT EXISTS "SCHEMA1"; ALTER TABLE "SCHEMA1"."EMPLOYEES" ADD CONSTRAINT PK_ID PRIMARY KEY ("ID"); CREATE OR REPLACE FUNCTION mockschema.func_test_datatype(str1 VARCHAR(65000)) RETURNS DECIMAL LANGUAGE plpgsql AS $$ DECLARE str2 VARCHAR(100); BEGIN SELECT employees.first_name INTO STRICT STR2 FROM mockschema.employees WHERE employees.employee_id = CAST(FUNC_TEST_DATATYPE.str1 as DECIMAL) ; RAISE NOTICE '%', concat('Input : ', FUNC_TEST_DATATYPE.str1, ' Output : ', str2); RETURN 0; END; $$; CREATE OR REPLACE PROCEDURE greetings AS BEGIN dbms_output.put_line('Hello World!'); END; CREATE SYNONYM TABLE "SCHEMA1"."SYNONYM1" ON "SCHEMA1"."EMPLOYEES"; CREATE OR REPLACE VIEW "SCHEMA1"."VIEW1" AS SELECT * FROM JOBS;
获取转化问题列表
如需将转换问题保存到文件中,请执行以下命令:
gcloud database-migration conversion-workspaces describe-issues \
CONVERSION_WORKSPACE_ID \
--region=REGION_ID \
> OUTPUT_FILE_PATH
您需要进行如下替换:
-
CONVERSION_WORKSPACE_ID,其中包含转化工作区标识符。 如需了解如何检索转换工作区标识符,请参阅 查看转换工作区详细信息。 -
REGION_ID替换为转换工作区所在的区域的名称。 -
将
OUTPUT_FILE_PATH替换为要保存输出的文本文件的路径。
示例:
gcloud database-migration conversion-workspaces describe-issues \
my-conversion-workspace \
--region=us-central1 \
> ./my-conversion-issues.txt
结果:
工作区中包含的所有转化问题都会以文本格式保存,其中第一行包含列标题,后续各行分别包含一个转化问题:
PARENT NAME ENTITY_TYPE ISSUE_TYPE ISSUE_SEVERITY ISSUE_CODE ISSUE_MESSAGE
SCHEMA1 EMPLOYEES TABLE DDL ERROR 500 unable to parse DDL.
SCHEMA1 EMPLOYEES TABLE CONVERT WARNING 206 no conversion done.
SCHEMA1 STORED_PROCEDURE1 STORED_PROCEDURE DDL ERROR 500 invalid DDL.
SCHEMA1 SYNONYM1 SYNONYM CONVERT WARNING 206 synonym warning message.
我们还建议您针对转换后的对象运行 Gemini 质量评估报告。这些评估会分析转换后的代码,并提供有关其正确性和行为(与源代码相比)的反馈。如需了解详情,请参阅 Gemini 质量评估。
解决转换问题
Database Migration Service 可能无法自动转换整个源。对于大多数 Oracle 对象,您可以直接在 Database Migration Service 中使用转换编辑器来调整生成的 SQL。对于其他对象,您可能需要直接在源数据库中更改对象,然后再次拉取源快照。
如需查看 Database Migration Service 支持在转换工作区中直接修改的对象的完整列表,请参阅 可修改的 Oracle 对象。
如需修正架构中发现的转化问题,请执行以下操作:
- 在 Google Cloud 控制台中,前往转换工作区,然后选择您的工作区。
-
查看转换结果并找出可能存在的问题。
您可以使用 Google Cloud 控制台查看单个对象,也可以使用 gcloud CLI 批量查看所有对象。
-
根据问题的类型,您可以直接在工作区编辑器中修复问题,也可以提供自定义的转换映射文件。展开即可下部分可了解详情。
无论您遇到的是哪种类型的问题,都可以尝试使用 Gemini 赋能的转换助理来寻找解决方案。 如需了解详情,请参阅 使用 Gemini 转化助理。 如果您确定问题只是警告,无需采取任何措施,可以 将其标记为已解决。
修复内置编辑器支持的对象存在的问题
如需解决在工作区编辑器中遇到的与受支持对象相关的问题,请执行以下操作:
- 在 Oracle 树状视图中找到您的问题,然后选择代码标签页。
- 使用 SQL 编辑器更新生成的代码。Database Migration Service 不会验证您在编辑器中添加的 SQL 代码是否正确。
修复了内置编辑器不支持的对象的相关问题
如需解决在工作区编辑器中遇到的不支持的对象问题,请执行以下任一操作:
- 更新来源中的错误对象
- 对于某些问题,您可能需要在源数据库中直接更改 Oracle 语句。执行以下操作:
- 使用转化映射文件提供其他映射
-
您可以使用转换映射文件来精确定义 Database Migration Service 应如何转换某些 PostgreSQL 对象。如需使用转化映射文件,请执行以下操作:
- 编写转化映射文件。
- 将配置文件添加到工作区。
- 再次转换来源,并检查问题是否仍然存在。
- 尝试从“来源”标签页中移除相应对象
- Database Migration Service 可让您转换 . 如需解除转换流程的阻塞状态,您可以决定稍后仔细查看有问题的对象。 从“来源”标签页中移除对象。
- 测试您的架构,以验证 Database Migration Service 是否能正确地将您的代码应用于目标数据库。
-
如果测试成功,建议您使用转化问题标签页将问题标记为已解决。 这样,您就可以从转化概览中过滤掉这些问题,并在稍后从上次停下的地方继续。
将问题标记为已解决
在检查和修正转化问题时,您可能需要跟踪已修正的问题(或确定这些问题不会影响迁移,无需采取任何措施)。您可以使用标记为已解决功能过滤掉此类问题,以便更轻松地浏览问题列表。
如需将问题标记为已解决,请执行以下操作:
- 在 Google Cloud 控制台中,前往转换工作区,然后选择您的工作区。
- 使用源树视图选择存在转换问题的对象。
-
在转化问题标签页中,点击相应问题旁边的标记为已解决。 现在,您可以从转化概览中过滤掉这些问题。
图 2. “转换问题”界面,您可以在其中将问题标记为已解决。(点击可放大)
在目标平台中测试架构
在将架构应用到目标数据库之前,您可以先执行一次测试运行,主动检查可能存在的问题。 为了执行测试,Database Migration Service 会创建一个临时数据库。测试运行不会影响您的 Cloud SQL 目标实例。
确保您的专用迁移用户拥有
CREATEDB权限。如需了解详情,请参阅 创建和配置 Cloud SQL 目标实例。在 Google Cloud 控制台中,前往转换工作区。
点击要处理的转化工作区的显示名称。
系统随即会打开转换工作区编辑器。
依次点击应用到目标平台 > 测试(推荐)。
系统会显示将架构应用到目标数据库的向导。
在定义目标位置部分,选择指向目标数据库的连接配置文件。
点击定义并继续。
在选择对象和测试应用部分中,选择要针对目标数据库测试的数据库实体架构。
您可以使用过滤对象按钮来减少显示的对象数量。 请参阅 在来源架构视图中过滤对象。
点击测试应用。
您可以在 Cloud SQL for PostgreSQL 标签页中查看申请状态。
将架构应用于目标
当您希望在目标数据库中使用的架构根据您的要求和映射进行转换后,您可以将结果应用到目标数据库。在目标数据库中应用架构不会更改源数据库中的任何数据。
在 Google Cloud 控制台中,前往转换工作区。
点击要处理的转化工作区的显示名称。
系统随即会打开转换工作区编辑器。
依次点击应用到目的地 > 应用。
系统会显示将架构应用到目标数据库的向导。
在定义目标位置部分,选择指向目标数据库的连接配置文件。
点击定义并继续。
在查看对象并将转换应用到目标部分中,选择要在目标数据库中创建的数据库实体的架构。
您可以使用过滤对象按钮来减少显示的对象数量。 请参阅 在来源架构视图中过滤对象。
点击应用到目的地。
您可以在 Cloud SQL for PostgreSQL 标签页中查看申请状态。
在转换编辑器中创建迁移作业
您可以直接从转换编辑器界面创建使用转换工作区的迁移作业。
在 Google Cloud 控制台中,前往转换工作区。
点击要处理的转化工作区的显示名称。
系统随即会打开转换工作区编辑器。
点击创建迁移作业。
按照 创建迁移作业中所述,继续执行标准迁移作业步骤。
在来源架构视图中过滤对象
数据库架构通常包含数千个对象,因此很难划分转换工作。将对象从架构快照添加到源架构视图时,您可以使用过滤条件来限制显示的对象数量。借助过滤条件,您可以更精细地添加对象,并专注于转换架构中的特定子集。
向来源架构视图添加对象时,请使用过滤后的视图:
- 在过滤条件字段中,使用以下过滤方法之一:
- 从属性列表中,选择以下自动建议的选项之一:
- 对象名称:按名称过滤对象,例如
ADMIN。 - 对象类型:按多种类型过滤对象,例如函数或表。
- 转换状态,按转换状态(例如需要采取行动或无问题)过滤对象。
- 由 Gemini 增强的对象,以过滤通过 Gemini 自动转换功能转换的对象。
您可以将过滤条件属性与逻辑运算符结合使用。
- 对象名称:按名称过滤对象,例如
- 输入查询内容。例如:
type=table。如需详细了解过滤语法,请参阅 支持的过滤语法。
- 选择要添加到源架构视图中的对象。
支持的文本过滤语法
您可以使用基本的自由文本搜索按名称过滤对象,也可以使用专用 type 属性。这两种方法都支持
Google API 正式过滤规范,这意味着您可以使用带通配符的字面值,以及逻辑运算符和比较运算符。
- 自由文本过滤
-
使用自由文本按名称过滤对象。此方法区分大小写,并支持通配符。
示例:
*JOB*查询使用通配符搜索包含JOB子字符串的实体。过滤后的视图会返回一些表和一个存储过程:
- 使用
type属性进行过滤 -
您可以按 Database Migration Service 支持的所有标准类型过滤对象。
type属性支持以下字面值,并支持等式 (=) 和不等式 (!=) 运算符:database、schema、table、column、index、sequence、stored_procedure、function、view、synonym、materialized_view、udt、constraint、database_package、trigger和event_trigger。示例:
type=table过滤条件仅返回架构中存在的表:
组合文本过滤条件
您可以使用逻辑运算符组合多个条件。
例如,若要仅搜索名称包含 JOB 或 EMPLOYEE 子字符串的表,请使用以下查询:
type=table AND (*JOB* OR *EMPLOYEE*)
因此,该过滤条件会显示所有匹配的表格: