转换工作区操作

借助转换工作区,您可以修正转换问题、使用交互式编辑器修改对象,并将转换后的架构应用到目标数据库。本页面简要介绍了您可以使用转化工作区执行的所有操作。

升级工作区以启用 Gemini 赋能的自动转换功能

升级后的转换工作区可提供对 由 Gemini 提供支持的自动转换 转换概览功能的访问权限。

如需升级转化工作区,请执行以下操作:

  1. 在 Google Cloud 控制台中,前往转换工作区,然后选择您的工作区。

    前往转换工作区

  2. 点击了解升级后可享有的功能,然后在对话框中接受优惠:

    对话框,显示转换工作区界面中的转换工作区升级优惠。
    图 1. 转换工作区升级优惠。(点击可放大)
    对话框,显示转换工作区界面中的转换工作区升级优惠。

查看转化状态

转换工作区界面,其中显示了“转换概览”标签页,您可以在该标签页中查看转换的对象数量、转换问题以及 Gemini 辅助转换增强功能。
图 2. 转换工作区概览界面。 (点击可放大)
转换工作区界面,其中显示了“转换概览”标签页,您可以在该标签页中查看转换的对象数量、转换问题以及 Gemini 辅助转换增强功能。

转换概览部分,您可以查看有关架构转换的所有信息:转换对象的数量和类型、转换状态(包括未解决或已解决的问题),以及 Gemini 辅助的自动转换提供的增强功能列表。

您还可以使用每个类别中的过滤条件,按对象的类型、问题严重程度、未解决或已解决的问题来缩小树状视图中显示的对象数量。转化概览仅适用于 升级后的转化工作区

如需查看有关代码和架构转换进度的详细信息,请执行以下操作:

  1. 在 Google Cloud 控制台中,前往转换工作区,然后选择您的工作区。

    前往转换工作区

  2. Oracle 标签页中,使用架构树状视图执行以下操作之一:
    • 选择 Oracle 可查看工作区中所有已转换架构中所有对象的信息。
    • 选择特定架构或对象,以查看部分对象的转换详细信息。
  3. 转化概览标签页中,探索转化对象摘要部分中的信息。使用显示对象按钮可将任何过滤条件应用到 Oracle 标签页中的树状视图。
  4. 使用转化问题标签页开始解决转化问题。如需了解详情,请参阅 解决转化问题

从源架构中移除对象

从来源架构中移除对象,以将其排除在转换之外。 如果需要,您可以稍后 添加已移除的对象

  1. 在 Google Cloud 控制台中,前往转换工作区,然后选择您的工作区。

    前往转换工作区

  2. Oracle 标签页中,选择要移除的对象旁边的 更多图标 > 移除
  3. 移除对象确认对话框中,点击移除
  4. 刷新转换后的架构。点击 转换来源。 Database Migration Service 现在可以分析您的更改并生成更新后的 PostgreSQL 架构。

    您可以在 AlloyDB for PostgreSQL 草稿标签页中检查转换后的架构。

向源架构添加对象

您可以添加之前从来源架构中移除的对象,以将其纳入转换。

  1. 在 Google Cloud 控制台中,前往转换工作区,然后选择您的工作区。

    前往转换工作区

  2. Oracle 标签页中,点击 Add objects
  3. 添加对象部分中,使用源列表选择要添加到源架构中的所有实体。

    您可以使用过滤对象按钮来减少显示的对象数量。 请参阅 在来源架构视图中过滤对象

  4. 点击添加对象
  5. 刷新转换后的架构。点击 转换来源。 Database Migration Service 现在可以分析您的更改并生成更新后的 PostgreSQL 架构。

    您可以在 AlloyDB for PostgreSQL 草稿标签页中检查转换后的架构。

拉取来源架构和代码快照

您可以随时将架构和代码从源数据库拉取到转换工作区中。拉取来源可让您有机会在转化中添加新对象或更新现有对象。

拉取更新后的数据库架构和代码不会重置转换工作区中存在的任何自定义映射,除非您明确选择移除自定义映射。

此外,拉取源代码不会覆盖代码对象上的 SQL 更改。您可以直接在对象级别重置这些更改。

  1. 在 Google Cloud 控制台中,前往转换工作区,然后选择您的工作区。

    前往转换工作区

  2. 依次点击 修改配置 > 再次拉取来源架构快照
  3. 在该对话框中:
    1. 可选:选择重置自定义映射,以移除现有的自定义映射和 DDL 修改项。
    2. 点击拉取架构快照

      Database Migration Service 会从源数据库中提取新的快照。

  4. 刷新转换后的架构。点击 转换来源。 Database Migration Service 现在可以分析您的更改并生成更新后的 PostgreSQL 架构。

    您可以在 AlloyDB for PostgreSQL 草稿标签页中检查转换后的架构。

使用自定义转化映射

您可以使用转化映射文件自定义转化逻辑。转换映射文件是一个文本文件,其中包含有关如何将 Oracle 对象转换为 PostgreSQL 对象的精确说明(称为转换指令)。

编写自定义映射文件

如需编写自定义映射文件,请执行以下操作:

  1. 查看支持的转化指令列表

  2. 使用 示例配置文件作为参考点。

  3. 在文本编辑器中编写自定义转化映射,然后将其上传到转化工作区。

添加自定义映射文件

如需向工作区添加自定义转化映射文件,请执行以下操作:

  1. 在 Google Cloud 控制台中,前往转换工作区,然后选择您的工作区。

    前往转换工作区

  2. 在转化编辑器页面上,依次选择 Edit configuration > Customize mapping with a configuration file
  3. 配置文件框中,点击浏览,然后使用系统文件选择器选择您的配置文件。
  4. 依次点击 添加文件 > 创建映射

移除自定义映射文件

如需从工作区中移除自定义转化映射文件,请执行以下操作:

  1. 在 Google Cloud 控制台中,前往转换工作区,然后选择您的工作区。

    前往转换工作区

  2. 在转化编辑器页面上,依次选择 修改配置 > 移除自定义映射

查看转换结果

执行源转换后,您可以在工作区编辑器区域中查看每个已转换对象的转换结果和可能存在的问题。您还可以使用 Google Cloud CLI 将所有结果和问题批量保存到文本文件中。

控制台

  1. 在 Google Cloud 控制台中,前往转换工作区

    前往转换工作区

  2. 点击要处理的转化工作区的显示名称。

    系统随即会打开转换工作区编辑器。

  3. 选择 Oracle 标签页,然后在树状视图表格中找到要查看转换结果的对象。

  4. 选择对象。使用 SQL转换问题标签页查看转换。

  5. 如果您确定问题属于警告,无需采取任何措施,可以 将其标记为已解决。否则,您可以进一步调查,并 在转化编辑器中修复此问题

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 对象

如需修正架构中发现的转化问题,请执行以下操作:

  1. 在 Google Cloud 控制台中,前往转换工作区,然后选择您的工作区。

    前往转换工作区

  2. 查看转换结果,并找出可能存在的问题。

    您可以使用 Google Cloud 控制台查看单个对象,也可以使用 gcloud CLI 批量查看所有对象。

  3. 您可以直接在工作区编辑器中修复问题,也可以根据问题的类型提供自定义的转换映射文件。展开即可下部分可了解详情。

    无论您遇到哪种类型的问题,都可以尝试使用 Gemini 赋能的转换助理来寻找解决方案。 如需了解详情,请参阅 使用 Gemini 转化助理。 如果您确定问题只是警告,无需采取任何措施,可以 将其标记为已解决

    修复了内置编辑器支持的对象存在的问题

    如需解决在工作区编辑器中遇到的与受支持对象相关的问题,请执行以下操作:

    1. Oracle 树状视图中找到相应问题,然后选择代码标签页。
    2. 使用 SQL 编辑器更新生成的代码。Database Migration Service 不会验证您在编辑器中添加的 SQL 代码是否正确。

    修复了内置编辑器不支持的对象的相关问题

    如需解决在工作区编辑器中遇到的不支持的对象问题,请执行以下任一操作:

    更新来源中的错误对象
    对于某些问题,您可能需要在源数据库中直接更改 Oracle 语句。执行以下操作:
    1. 直接在源数据库中更新架构和代码。
    2. 将更新后的来源拉取到 Database Migration Service。
    3. 再次转换来源,并检查问题是否仍然存在。
    使用转化映射文件提供其他映射

    您可以使用转换映射文件来精确定义 Database Migration Service 应如何转换某些 PostgreSQL 对象。如需使用转化映射文件,请执行以下操作:

    1. 编写转化映射文件
    2. 将配置文件添加到工作区
    3. 再次转换来源,并检查问题是否仍然存在。
    尝试从“来源”标签页中移除相应对象
    借助 Database Migration Service,您可以转换 . 如需解除转化流程的阻塞状态,您可以决定稍后仔细查看有问题的对象。 从“来源”标签页中移除对象
  4. 测试您的架构,以验证 Database Migration Service 是否能正确地将您的代码应用于目标数据库。
  5. 如果测试成功,建议您使用转化问题标签页将问题标记为已解决。 这样,您就可以从转化概览中过滤掉这些问题,稍后从上次停下的地方继续。

将问题标记为已解决

在检查和修正转化问题时,您可能需要记录已修正的问题(或确定这些问题不会影响迁移,无需采取任何措施)。您可以使用标记为已解决功能过滤掉此类问题,以便更轻松地浏览问题列表。

如需将问题标记为已解决,请执行以下操作:

  1. 在 Google Cloud 控制台中,前往转换工作区,然后选择您的工作区。

    前往转换工作区

  2. 使用来源树视图选择存在转化问题的对象。
  3. 转化问题标签页中,点击相应问题旁边的标记为已解决。 现在,您可以从转化概览中过滤掉这些问题。

    问题解决界面,您可以在其中将转化问题标记为已解决,以便在转化概览界面中过滤掉这些问题。
    图 3. “转换问题”界面,您可以在其中将问题标记为已解决。(点击可放大)
    问题解决界面,您可以在其中将转化问题标记为已解决,以便在转化概览界面中过滤掉这些问题。

在目标位置测试架构

在将架构应用到目标数据库之前,您可以先执行一次测试运行,主动检查可能存在的问题。 为了执行测试,Database Migration Service 会创建一个临时数据库。测试运行不会影响目标 AlloyDB for PostgreSQL 集群。

  1. 确保您的专用迁移用户拥有 CREATEDB 权限。如需了解详情,请参阅 创建和配置 AlloyDB for PostgreSQL 目标集群

  2. 在 Google Cloud 控制台中,前往转换工作区

    前往转换工作区

  3. 点击要处理的转化工作区的显示名称。

    系统随即会打开转换工作区编辑器。

  4. 依次点击应用到目标平台 > 测试(推荐)

    系统会显示将架构应用到目标数据库的向导。

  5. 定义目标位置部分,选择指向目标数据库的连接配置文件。

  6. 点击定义并继续

  7. 选择对象和测试应用部分中,选择要针对目标数据库测试的数据库实体的架构。

    您可以使用过滤对象按钮来减少显示的对象数量。 请参阅 在来源架构视图中过滤对象

  8. 点击测试应用

    您可以在 AlloyDB for PostgreSQL 标签页中查看申请状态。

将架构应用于目标

当您希望在目标数据库中使用的架构根据您的要求和映射进行转换后,您可以将结果应用到目标数据库。在目标数据库中应用架构不会更改源数据库中的任何数据。

  1. 在 Google Cloud 控制台中,前往转换工作区

    前往转换工作区

  2. 点击要处理的转化工作区的显示名称。

    系统随即会打开转换工作区编辑器。

  3. 依次点击应用到目的地 > 应用

    系统会显示将架构应用到目标数据库的向导。

  4. 定义目标位置部分,选择指向目标数据库的连接配置文件。

  5. 点击定义并继续

  6. 查看对象并将转换应用到目标部分中,选择要在目标数据库中创建的数据库实体的架构。

    您可以使用过滤对象按钮来减少显示的对象数量。 请参阅 在来源架构视图中过滤对象

  7. 点击应用到目的地

    您可以在 AlloyDB for PostgreSQL 标签页中查看申请状态。

在转换编辑器中创建迁移作业

您可以直接从转换编辑器界面创建使用转换工作区的迁移作业。

  1. 在 Google Cloud 控制台中,前往转换工作区

    前往转换工作区

  2. 点击要处理的转化工作区的显示名称。

    系统随即会打开转换工作区编辑器。

  3. 点击创建迁移作业

  4. 按照 创建迁移作业中所述,继续执行标准迁移作业步骤。

在来源架构视图中过滤对象

数据库架构通常包含数千个对象,因此很难划分转换工作。将对象从架构快照添加到源架构视图时,您可以使用过滤条件来限制显示的对象数量。借助过滤条件,您可以更精细地添加对象,并专注于转换架构中的特定子集。

向来源架构视图添加对象时,请使用过滤后的视图:

  1. 过滤条件字段中,使用以下过滤方法之一:
  2. 属性列表中,选择以下自动建议的选项之一:
    1. 对象名称:按名称过滤对象,例如 ADMIN
    2. 对象类型:按多种类型过滤对象,例如函数
    3. 转换状态,按转换状态(例如需要采取行动无问题)过滤对象。
    4. 由 Gemini 增强,以过滤通过 Gemini 自动转换转换的对象。

    您可以将过滤条件属性与逻辑运算符结合使用。

  3. 输入查询内容。例如:type=table

    如需详细了解过滤语法,请参阅 支持的过滤语法

  4. 选择要添加到来源架构视图中的对象。

支持的文本过滤语法

您可以使用基本的自由文本搜索按名称过滤对象,也可以使用专用 type 属性。 这两种方法都支持 Google API 正式过滤规范,这意味着您可以使用带通配符的字面值,以及逻辑运算符和比较运算符。

使用自由文本按名称过滤对象。此方法区分大小写,并支持通配符。

示例

*JOB* 查询使用通配符搜索包含 JOB 子字符串的实体。过滤后的视图返回了一些表和一个存储过程:

按名称过滤对象的示例结果的屏幕截图。
使用 type 属性进行过滤

您可以按 Database Migration Service 支持的所有标准类型过滤对象。

type 属性支持以下字面值,并可搭配等式 (=) 和不等式 (!=) 运算符使用:databaseschematablecolumnindexsequencestored_procedurefunctionviewsynonymmaterialized_viewudtconstraintdatabase_packagetriggerevent_trigger

示例

type=table 过滤条件仅返回架构中存在的表:

按类型属性过滤对象的示例结果的屏幕截图。

组合文本过滤条件

您可以使用逻辑运算符组合多个条件。

例如,若要仅搜索名称包含 JOBEMPLOYEE 子字符串的表,请使用以下查询:

  type=table AND (*JOB* OR *EMPLOYEE*)

因此,过滤条件会显示所有匹配的表格:

按类型和名称属性的组合过滤对象的示例结果的屏幕截图。