转换工作区操作

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

查看转化状态

转换工作区屏幕,其中包含“转换概览”标签页,您可以在其中查看已转换对象的数量、转换问题和 Gemini 辅助转换增强功能。
图 1. 转换工作区概览界面。 (点击可放大)
转换工作区界面,其中包含“转换概览”标签页,您可以在其中查看已转换对象的数量、转换问题和 Gemini 辅助转换增强功能。

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

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

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

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

    前往转换工作区

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

从源架构中移除对象

从来源架构中移除对象,以将其从转换中排除。 日后,您可以根据需要 添加已移除的对象。

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

    前往转换工作区

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

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

向来源架构添加对象

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

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

    前往转换工作区

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

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

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

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

拉取来源架构和代码快照

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

拉取更新后的数据库架构和代码不会重置转换工作区中存在的任何自定义映射,除非您明确选择移除自定义映射。此外,拉取源代码不会覆盖代码对象上的 SQL 更改。您可以直接在对象级别重置这些更改。

如果您使用上传到 Cloud Storage 的 JSON 元数据文件初始化了转换工作区,则系统无法自动检测到新对象,因为这些文件是数据库对象的静态表示。如需刷新源架构并保留现有的自定义映射和 SQL 修改,请再次执行提取操作,并将更新后的架构文件上传到 Cloud Storage 存储桶中的同一文件夹(覆盖之前的文件),然后再重新拉取快照。如需了解详情,请参阅 使用 Python 脚本提取架构元数据。如果您改为使用修改来源配置将工作区切换到其他 Cloud Storage 文件夹或来源连接配置文件,Database Migration Service 会重置工作区并移除所有选定对象、草稿架构、自定义映射和 DDL 修改。

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

    前往转换工作区

  2. 依次点击 修改配置 > 再次拉取来源架构快照。
  3. 在对话框中:
    1. 可选:选择移除任何自定义映射,以移除现有自定义映射。拉取源架构不会重置对象上的 SQL 代码修改。
    2. 点击拉取架构快照。

      Database Migration Service 会从您配置的来源中拉取新快照。

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

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

使用自定义转化映射

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

编写自定义映射文件

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

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

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

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

添加自定义映射文件

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

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

    前往转换工作区

  2. 在转换编辑器页面上,依次选择 修改配置 > 使用配置文件自定义映射。
  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-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 对象。

如需解决在架构中发现的转换问题,请执行以下操作:

  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. 在转化问题标签页中,点击相应问题旁边的标记为已解决。 现在,您可以从转化概览中滤除这些问题。

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

在目标数据库中测试架构

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

  1. 确保您的专用迁移用户具有 CREATEDB 权限。如需了解详情,请参阅 创建和配置 Cloud SQL 目标实例。

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

    前往转换工作区

  3. 点击要使用的转换工作区的显示名称。

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

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

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

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

  6. 点击定义并继续。

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

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

  8. 点击测试应用。

    您可以在 Cloud SQL for PostgreSQL 标签页中查看应用状态。

将架构应用于目标

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

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

    前往转换工作区

  2. 点击要使用的转换工作区的显示名称。

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

  3. 依次点击应用到目标 > 应用。

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

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

  5. 点击定义并继续。

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

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

  7. 点击应用到目标。

    您可以在 Cloud SQL 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 属性支持以下字面量,可与等式 (=) 和不等式 (!=) 运算符搭配使用: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*)

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

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

使用 Python 脚本提取架构元数据

创建转换工作区时,您可以选择使用 Database Migration Service 或使用 Google 提供的 Python 提取脚本手动创建初始架构快照。如果来源架构发生变化,或者您想添加其他对象,则必须再次运行提取操作,以刷新转换工作区。请按照以下步骤操作:

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

    前往转换工作区

  2. 点击设置工作区。
  3. 在创建转换工作区页面上:
    1. 输入工作区名称、标识符和区域。
    2. 从源数据库引擎下拉菜单中,选择 Oracle。
    3. 从目标数据库引擎下拉菜单中,选择 Cloud SQL for PostgreSQL。
    4. 可选:为您的工作区启用 Gemini 设置,然后点击继续。如果您不打算使用此工作区进行转换,而只想检索 Python 提取脚本,则可以跳过这些设置。
  4. 在定义来源和拉取架构快照页面上的来源连接方法部分中,选择 Cloud Storage。
  5. 在选择文件夹之前部分中,点击 Oracle 元数据提取器标题旁边的打开。
  6. 按照侧边栏中的说明,下载并针对源数据库运行提取实用程序,以生成架构元数据 JSON 文件。此实用程序要求您能够与源数据库建立网络连接。
  7. 将提取的元数据 JSON 文件上传到专用 Cloud Storage 存储桶中的同一文件夹,覆盖之前的文件。

您现在可以使用新的来源架构快照刷新转换工作区。 请参阅 拉取来源架构和代码快照。