借助转换工作区,您可以解决转换问题、使用交互式编辑器修改对象,以及将转换的架构应用于目标数据库。本页面简要介绍了您可以使用转化工作区执行的所有操作。
从来源架构中移除对象
从来源架构中移除对象,以将其从转换中排除。 如有必要,您可以稍后 添加已移除的对象。
- 在 Google Cloud 控制台中,前往转化工作区,然后选择您的工作区。
- 在 Oracle 标签页中,找到要移除的对象,然后依次选择 > 移除。 更多
- 在移除对象确认对话框中,点击移除。
- 刷新转换后的架构。点击
您可以在 AlloyDB for PostgreSQL 草稿标签页中检查转换后的架构。
转换来源。
Database Migration Service 现在会分析您的更改并生成更新后的 PostgreSQL 架构。
将对象添加到来源架构中
您可以添加之前从来源架构中移除的对象,以将其添加到转换中。
- 在 Google Cloud 控制台中,前往转化工作区,然后选择您的工作区。
- 在 Oracle 标签页中,点击 Add objects(添加对象)。
- 在添加对象部分中,使用来源列表选择要添加到来源架构中的所有实体。
您可以使用过滤对象按钮来减少显示的对象数量。 请参阅 在“来源架构”视图中过滤对象
- 点击添加对象。
- 刷新转换后的架构。点击
您可以在 AlloyDB for PostgreSQL 草稿标签页中检查转换后的架构。
转换来源。
Database Migration Service 现在会分析您的更改并生成更新后的 PostgreSQL 架构。
拉取来源架构和代码快照
您可以随时将架构和代码从源数据库拉取到转换工作区。拉取来源后,您可以添加新的对象或更新转化中的现有对象。
拉取更新后的数据库架构和代码不会重置转换工作区中存在的任何自定义映射,除非您明确选择移除自定义映射。
此外,拉取源代码不会替换对代码对象的 SQL 更改。您可以直接在对象级别重置这些更改。
- 在 Google Cloud 控制台中,前往转化工作区,然后选择您的工作区。
- 依次点击 > Pull source schema snapshot again(再次拉取来源架构快照)。 Edit configuration(修改配置)
- 在对话框中:
- (可选)选择重置自定义映射以移除现有自定义映射和 DDL 修改。
- 点击拉取架构快照。
Database Migration Service 会从源数据库中拉取新的快照。
- 刷新转换后的架构。点击
您可以在 AlloyDB for PostgreSQL 草稿标签页中检查转换后的架构。
转换来源。
Database Migration Service 现在会分析您的更改并生成更新后的 PostgreSQL 架构。
使用自定义转化映射
您可以使用转化映射文件自定义转化逻辑。转换映射文件是一种文本文件,其中包含有关如何将 Oracle 对象转换为 PostgreSQL 对象的精确说明(称为转换指令)。
编写自定义映射文件
如需编写自定义映射文件,请执行以下操作:
请使用 示例配置文件作为参考。
在文本编辑器中编写自定义转化映射,然后将其上传到转化工作区。
添加自定义映射文件
如需向工作区添加自定义转化映射文件,请执行以下操作:
- 在 Google Cloud 控制台中,前往转化工作区,然后选择您的工作区。
- 在转化数据编辑器页面上,依次选择 > 使用配置文件自定义映射。 修改配置
- 在配置文件框中,点击浏览,然后使用系统文件选择器选择配置文件。
- 依次点击 > Create mapping(创建映射)。 Add 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-issues \ my-conversion-workspace \ --region=us-central1 \ > ./my-conversion-issues.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.
解决转换问题
Database Migration Service 可能无法自动转换您的整个源代码。对于大多数 Oracle 对象,您可以直接在 Database Migration Service 中使用转换编辑器来调整生成的 SQL。对于其他对象,您可能需要直接在源数据库中更改对象,然后再次拉取源快照。
如需查看 Database Migration Service 支持直接在转换工作区中修改的对象的完整列表,请参阅 可修改的 Oracle 对象。
修复了内置编辑器支持的对象存在的问题
如需解决工作区编辑器中不支持的对象遇到的问题,请执行以下任一操作:
修复了内置编辑器不支持的对象存在的问题
如需解决工作区编辑器中不支持的对象遇到的问题,请执行以下任一操作:
- 更新来源中的有缺陷的对象
- 对于某些问题,您可能需要直接在源数据库中更改 Oracle 语句。执行以下操作:
- 直接在源数据库中更新架构和代码。
- 将更新后的来源拉取到 Database Migration Service。
- 再次转换来源,然后检查问题是否仍然存在。
- 使用转化映射文件提供其他映射
-
您可以使用转换映射文件,精确定义 Database Migration Service 应如何转换特定 PostgreSQL 对象。如需使用转化映射文件,请执行以下操作:
- 尝试从“来源”标签页中移除对象
- 借助 Database Migration Service,您可以转换 为了取消屏蔽转化流程,您可以决定稍后再仔细查看有缺陷的对象。 从“来源”标签页中移除对象。
在目标位置测试架构
在将架构应用于目标数据库之前,您可以先执行测试运行,以主动检查是否存在可能的问题。为了执行测试,Database Migration Service 会创建一个临时数据库。测试运行不会影响您的目标 AlloyDB for PostgreSQL 集群。
确保您的专用迁移用户具有
CREATEDB
权限。如需了解详情,请参阅 创建和配置目标 AlloyDB for PostgreSQL 集群。在 Google Cloud 控制台中,前往转化工作区。
点击要使用的转化工作区的显示名称。
系统随即会打开转换工作区编辑器。
依次点击应用到目标平台 > 测试(推荐)。
系统随即会显示用于将架构应用于目标数据库的向导。
在定义目标位置部分,选择指向目标数据库的连接配置文件。
点击定义并继续。
在选择对象和测试应用部分,选择要针对目标数据库测试的数据库实体的架构。
您可以使用过滤对象按钮来减少显示的对象数量。请参阅 在“来源架构”视图中过滤对象。
点击测试应用。
您可以在 AlloyDB for PostgreSQL 标签页中查看申请状态。
将架构应用于目标
当您希望在目标数据库中使用的架构根据您的要求和映射进行转换后,您可以将结果应用于目标数据库。在目标位置应用架构不会更改源数据库中的任何数据。
在 Google Cloud 控制台中,前往转化工作区。
点击要使用的转化工作区的显示名称。
系统随即会打开转换工作区编辑器。
依次点击应用到目标位置 > 应用。
系统随即会显示用于将架构应用于目标数据库的向导。
在定义目标位置部分,选择指向目标数据库的连接配置文件。
点击定义并继续。
在查看对象并将转换应用到目标位置部分,选择您要在目标数据库中创建的数据库实体的架构。
您可以使用过滤对象按钮来减少显示的对象数量。请参阅 在“来源架构”视图中过滤对象。
点击应用到目标。
您可以在 AlloyDB for PostgreSQL 标签页中查看申请状态。
在转化编辑器中创建迁移作业
您可以直接在转化数据分析工具界面中创建使用转换工作区的迁移作业。
在 Google Cloud 控制台中,前往转化工作区。
点击要使用的转化工作区的显示名称。
系统随即会打开转换工作区编辑器。
点击创建迁移作业。
继续执行标准迁移作业步骤,如 创建迁移作业中所述。
在“来源架构”视图中过滤对象
数据库架构通常包含数千个对象,因此很难对转换工作进行分区。将架构快照中的对象添加到源架构视图时,您可以使用过滤条件来限制显示的对象数量。借助过滤条件,您可以更精细地添加对象,并专注于转换架构的部分子集。
在向来源架构视图添加对象时,请使用过滤视图:
- 在过滤条件字段中,使用以下过滤方法之一:
- 从媒体资源列表中,选择以下自动建议的选项之一:
- 对象名称,用于按名称(例如
ADMIN
)过滤对象。 - 对象类型,用于按多种类型(例如函数或表)过滤对象。
- 转化状态,用于按转化状态(例如需要执行操作或无问题)过滤对象。
您可以将过滤条件属性与逻辑运算符结合使用。
- 对象名称,用于按名称(例如
- 输入您的查询。例如:
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*)
因此,过滤器会显示所有匹配的表:
