转换工作区会将所有转换问题汇总到不同的组和类别中,以帮助您规划如何修复转换错误和警告。每个类别代表您可能需要执行的工作类型,以解决问题(审核、重构、调整数据类型)。组提供进一步的汇总,因为它们在较低级别区分特定情况:
下表列出了您在架构转换期间可能遇到的所有转换问题组:
| 问题组 ID | 说明 | ||
|---|---|---|---|
输入问题 (
|
|||
CW_OP0101 |
源代码无效 |
||
|
潜在根本原因
当 Database Migration Service 遇到未知语法或 Oracle 源代码无效(例如,存储过程缺少 |
|||
|
可能的缓解措施
更正 Oracle 源数据库中的无效对象。然后,在 Database Migration Service 中刷新源架构快照,并重试架构转换过程。或者,您也可以从迁移中排除该对象。 |
|||
CW_OP0102 |
缺少引用的对象 |
||
|
潜在根本原因 Database Migration Service 会使用源树中对象的元数据来提高依赖对象的代码转换质量。如果您的代码引用了源架构中未包含的对象,您可能会遇到转换问题,因为 Database Migration Service 无法确定缺失的引用列、属性或对象的结构或数据类型。 此组中可能出现的错误包括用户定义类型 (UDT) 的数据类型不正确,或列、参数或变量的默认 |
|||
| 可能的缓解措施
确保将所有引用的对象添加到 Database Migration Service 源树中,或者根据您对缺失依赖项的源数据模型的了解,手动调整 PostgreSQL 代码。 |
|||
CW_OP0103 |
没有主键的表 |
||
|
潜在根本原因 Database Migration Service 要求所有表都必须拥有主键。对于没有主键的表,Database Migration Service 会向目标 PostgreSQL 表添加一个名为 |
|||
|
可能的缓解措施
您可以在迁移后保留或移除 |
|||
不支持来源功能 (
|
|||
CW_OP0200 |
不受支持的 Oracle 内置功能 |
||
|
潜在根本原因 您可能使用了不受支持的内置 Oracle 功能。 |
|||
|
可能的缓解措施
在 PostgreSQL 中找到类似的功能,并相应地修改转换后的代码。在某些情况下,缺失的功能可能由 Orafce 扩展程序提供,该扩展程序可用于 Cloud SQL for PostgreSQL 和 AlloyDB for PostgreSQL 迁移。 |
|||
CW_OP0201 |
不支持 |
||
|
潜在根本原因 不支持转换 Oracle |
|||
|
可能的缓解措施
如果您的源代码不依赖于 如果您的源代码依赖于 |
|||
CW_OP0203 |
不支持 Oracle SQL 函数 |
||
|
潜在根本原因 Database Migration Service 不支持转换某些 Oracle 内置函数。
某些函数在 PostgreSQL 中可能有等效函数(例如 |
|||
|
可能的缓解措施
检查哪个 Oracle 函数引发了错误。
|
|||
CW_OP0204 |
不完全支持 Oracle 内置软件包 |
||
|
潜在根本原因 Database Migration Service 支持某些 Oracle 内置软件包,但许多软件包不提供完整的转换支持,例如 |
|||
|
可能的缓解措施
如果您使用任何不受支持的软件包,则可能需要:
|
|||
CW_OP0205 |
不支持转换 Oracle 数据类型 |
||
|
潜在根本原因 目前,某些 Oracle 数据类型不支持转换或数据移动。 |
|||
|
可能的缓解措施
在大多数情况下,PostgreSQL 都有等效的数据类型。您可以 使用转换映射文件自定义转换逻辑,并将不受支持的 Oracle 数据类型转换为所需的 PostgreSQL 数据类型。 如需详细了解数据类型支持,请参阅 转换工作区 - 概览和支持的对象。 |
|||
CW_OP0206 |
命名冲突 |
||
|
潜在根本原因 此组会捕获多个数据库对象(例如表、物化视图)在目标数据库中转换为使用相同名称的问题。例如,如果源对象的名称仅大小写不同,则可能会出现此问题。Oracle 对象名称不区分大小写,但 PostgreSQL 区分大小写,因此对象名称会转换为使用相同的字符串。 |
|||
|
可能的缓解措施
直接在源数据库中或在转换工作区编辑器中的转换后架构中重命名冲突的对象。您还可以
将转换映射文件与 |
|||
不支持来源功能 (
|
|||
CW_OP0300 |
不支持来源功能 |
||
|
潜在根本原因
此组会捕获与不支持转换的 Oracle 功能相关的所有一般问题。此组中的问题不属于任何其他更具体的问题组。 |
|||
可能的缓解措施
|
|||
CW_OP0301 |
不支持架构对象类型 |
||
|
潜在根本原因 Database Migration Service 不支持某些 Oracle 架构对象类型进行代码转换,因为 PostgreSQL 没有适当的等效项。示例包括索引组织表 (IOT)、文本搜索索引或用户定义类型 (UDT) 的主体。 |
|||
|
可能的缓解措施
Database Migration Service 会将不受支持的对象转换为最接近的 PostgreSQL 等效对象。例如,IOT 会变成具有主键限制条件的常规表,文本搜索索引会转换为 B 树索引。请注意,这些转换可能会导致原始对象类型特有的功能丢失。 |
|||
CW_OP0302 |
不支持 PL/SQL 功能 |
||
|
潜在根本原因
此组会捕获与不支持转换的 PL/SQL 功能相关的所有一般问题。此组中的问题不属于任何其他更具体的问题组。 |
|||
可能的缓解措施
|
|||
CW_OP0303 |
不支持批量绑定 |
||
|
潜在根本原因
Database Migration Service 代码转换目前不支持 Oracle 批量绑定功能,例如 |
|||
|
可能的缓解措施
如需解决此问题,您需要修改使用批量绑定功能的代码。 您可能需要考虑 PostgreSQL 和 Oracle 架构的差异,以及在您的用例中,PostgreSQL 是否需要数组处理。 在 PostgreSQL 中,有多种策略可用于处理 Oracle 批量绑定操作。这些工具的使用取决于您的具体场景,因此我们建议您使用 Gemini 赋能的转换辅助功能来处理您的特定需求。以下是一些其他示例建议,可帮助您快速入门:
|
|||
CW_OP0304 |
不支持集合 |
||
|
潜在根本原因 Database Migration Service 代码转换部分支持 Oracle 集合。 |
|||
|
可能的缓解措施
您需要相应地修改转换后的 PostgreSQL 代码。在解决集合问题时,请记住,PostgreSQL 数组绝不是稀疏的。如果您稀疏地分配元素,则 PostgreSQL 数组可能会返回与 Oracle 数组不同的结果和基数计数。
由于 PostgreSQL 不支持字符串索引数组,因此您可能会发现 |
|||
CW_OP0305 |
不支持流水线函数 |
||
|
潜在根本原因 Database Migration Service 不支持流水线函数。 |
|||
|
可能的缓解措施
您可以将 Oracle 流水线函数替换为 PostgreSQL 集合返回函数。我们建议您根据自己的应用场景调整代码。下面列出了一些示例,可供入门时参考:
PostgreSQL 中不需要源流水线函数的集合类型(在 Oracle 函数的 |
|||
CW_OP0306 |
不支持动态 SQL |
||
|
潜在根本原因
Database Migration Service 为转换动态 SQL 提供部分支持。
Oracle |
|||
|
可能的缓解措施
您需要修改转换后的代码,以满足您的要求。 我们强烈建议您使用 Gemini 赋能的转换辅助功能来处理动态 SQL。 |
|||
CW_OP0307 |
不支持 |
||
|
潜在根本原因 Database Migration Service 支持大多数 |
|||
|
可能的缓解措施
您无法以简单的方式复制 查看报告的 |
|||
CW_OP0308 |
不支持 JSON |
||
|
潜在根本原因 Database Migration Service 在支持
|
|||
可能的缓解措施
|
|||
CW_OP0309 |
锁定和事务问题 |
||
|
潜在根本原因 Database Migration Service 代码转换不支持 |
|||
可能的缓解措施
|
|||
CW_OP0310 |
不支持 XML |
||
|
潜在根本原因
Database Migration Service 不支持 Oracle |
|||
|
可能的缓解措施
虽然 Database Migration Service 不直接支持 如需迁移 XML 数据,请按以下步骤操作:
如需详细了解 PostgreSQL 如何与 |
|||
CW_OP0312 |
不支持 |
||
|
潜在根本原因 Database Migration Service 不支持使用 |
|||
|
可能的缓解措施
您可以通过使用
您可以通过多种方式在 PostgreSQL 中创建
|
|||
CW_OP0313 |
不支持 |
||
|
潜在根本原因 Database Migration Service 不会转换 |
|||
|
可能的缓解措施
将 Oracle |
|||
CW_OP0314 |
不支持 SQL 功能 |
||
|
潜在根本原因
此组会捕获与不支持转换的 SQL 功能相关的所有一般问题。此组中的问题不属于任何其他更具体的问题组。示例包括数据库事件触发器、 |
|||
可能的缓解措施
|
|||
不受支持的语法 (
|
|||
CW_OP0400 |
不受支持的语法 |
||
|
潜在根本原因
此组捕获与不受支持的 Oracle SQL 或 PL/SQL 语法相关的所有一般问题。此组中的问题不属于任何其他更具体的问题组。 |
|||
|
可能的缓解措施
更改代码以使用 PostgreSQL 功能等效的 PostgreSQL 语法。我们建议您探索由 Gemini 提供支持的自动转换功能,以调整代码。 如需了解详情,请参阅 在 Gemini 协助下转换 Oracle 代码和架构。 |
|||
CW_OP0401 |
不受支持的 SQL 语法 | ||
|
潜在根本原因 您的源代码使用了 Database Migration Service 不支持的 SQL 语法或元素。例如,不支持 Oracle |
|||
可能的缓解措施
|
|||
CW_OP0402 |
不受支持的 PL/SQL 语法 | ||
|
潜在根本原因 您的源代码使用了 Database Migration Service 不支持的 PL/SQL 语法或元素。例如,不支持基于记录的 |
|||
|
可能的缓解措施
更改代码以使用 PostgreSQL 功能等效的 PostgreSQL 语法。我们建议您探索由 Gemini 提供支持的自动转换功能,以调整代码。 如需了解详情,请参阅 在 Gemini 协助下转换 Oracle 代码和架构。 |
|||
CW_OP0403 |
不受支持的日期和时间戳语法 |
||
|
潜在根本原因
Database Migration Service 可能会针对不受支持的日期或时间戳语法、操作或表达式发出错误或警告。此类问题的示例包括不匹配的数据类型之间的比较,或在时间戳中使用 |
|||
|
可能的缓解措施
您可以使用 PostgreSQL 等效表达式重新创建大多数日期和时间戳表达式。 我们建议您探索由 Gemini 提供支持的自动转换功能,以加快此类修复。如需了解详情,请参阅 在 Gemini 协助下转换 Oracle 代码和架构。 |
|||
CW_OP0404 |
Oracle 异常处理语法中不受支持的元素 |
||
|
潜在根本原因 Database Migration Service 代码转换不支持以下 Oracle
|
|||
|
可能的缓解措施
您必须在转换后的代码中手动解决这些问题。 我们建议您探索由 Gemini 提供支持的自动转换功能,以加快此类修复。如需了解详情,请参阅 在 Gemini 协助下转换 Oracle 代码和架构。 |
|||
数据类型和转换 (
|
|||
CW_OP0500 |
数据类型和转换问题 |
||
|
潜在根本原因 Database Migration Service 可以根据上下文对转换问题进行分组(例如,
类型比较表达式中发生的转换问题)。 |
|||
|
可能的缓解措施
在大多数情况下,Database Migration Service 会在转换后的 PostgreSQL 代码中发出 |
|||
CW_OP0501 |
日期格式模型问题 |
||
|
潜在根本原因
在根据格式模型将日期或时间戳表达式转换为字符串或从字符串转换时,您可能会遇到警告或问题。当 Oracle 源代码中的类型转换不包含显式日期或时间戳格式模型时,Database Migration Service 会使用默认模型(目前为
如果为隐式转换发出的格式模型与同一表达式中的显式格式模型冲突,有时可能会导致转换后的代码出现问题。如果您的数据可能会受到
Oracle |
|||
|
可能的缓解措施
在转换工作区中查看并验证转换后的 PostgreSQL 表达式。 |
|||
CW_OP0502 |
数字格式模型问题 |
||
|
潜在根本原因 Database Migration Service 不支持所有
Oracle 格式模型。例如,不支持 |
|||
|
可能的缓解措施
对于在 PostgreSQL 中没有等效项的 Oracle 格式模型,您可能需要重构表达式或格式模型。 我们建议您探索由 Gemini 提供支持的自动转换功能,以加快此类修复。如需了解详情,请参阅 在 Gemini 协助下转换 Oracle 代码和架构。 |
|||
CW_OP0503 |
数据类型转换问题 |
||
|
潜在根本原因 您可能会因数据类型转换不受支持或不准确而遇到错误。Database Migration Service 通常会发出 |
|||
|
可能的缓解措施
调整 PostgreSQL 代码,确保数据类型转换正确。 这些更正要求您熟悉所引用的属性、变量和列。 |
|||
CW_OP0504 |
比较问题 |
||
|
潜在根本原因
在转换数据比较表达式时,Database Migration Service 可能没有足够的元数据或数据类型信息。例如,将用户定义类型 (UDT) 与 |
|||
|
可能的缓解措施
查看转换后的 PostgreSQL 表达式并解决问题。 我们建议您探索由 Gemini 提供支持的自动转换功能,以加快此类修复。如需了解详情,请参阅 在 Gemini 协助下转换 Oracle 代码和架构。 |
|||
可能的功能性细微差别 (
|
|||
|
此类别中的问题表示 Oracle 源代码已正确转换为最接近的 PostgreSQL 等效代码,但生成的代码可能存在细微的语义或功能差异,需要您进行审核。这是因为 Oracle 和 PostgreSQL 处理数据类型、格式或对象的方式存在差异。 乍一看,此类别似乎与
数据类型和转换 ( |
|||
CW_OP0601 |
查看日期格式模型 |
||
|
潜在根本原因
大多数
Oracle 日期和时间戳格式模型在 PostgreSQL 中都有适当的等效项,因此转换后的代码没有语义或功能差异。某些模型没有完全匹配项,其行为会有所不同。
一个示例是
Oracle |
|||
|
可能的缓解措施
查看并验证具有格式模型转换的表达式,以确保转换后的代码按预期运行。 |
|||
CW_OP0602 |
查看数字格式模型 |
||
|
潜在根本原因 大多数源数字格式模型在 PostgreSQL 中都有等效项,因此转换后的代码没有语义或功能差异。 不过,某些格式模型可能没有完全匹配的模型,或者行为略有不同。 |
|||
|
可能的缓解措施
查看并验证具有格式模型转换的表达式,以确保转换后的代码按预期运行。 |
|||
CW_OP0603 |
查看异常代码 |
||
|
潜在根本原因 当您将
|
|||
|
可能的缓解措施
请查看此行为,确定它是否适合您的需求。 仅当源错误代码对您的应用、支持团队或文档有意义时,才需要进行此审核。如果错误代码值本身没有意义,您可以忽略此警告。 |
|||
CW_OP0604 |
查看异常消息 |
||
|
潜在根本原因
|
|||
|
可能的缓解措施
如果您的应用、支持基础架构或文档依赖于错误文本,请查看转换。否则,您可以忽略此差异。 |
|||
CW_OP0605 |
查看 Oracle 内置函数的模拟情况 |
||
|
潜在根本原因 Database Migration Service 代码和架构转换旨在提供与 PostgreSQL 等效的 Oracle 函数行为,但结果可能并不总是能满足您的场景。 因此,转换工作区始终会提供建议警告,其中包含可能需要您审核的函数转换。 |
|||
|
可能的缓解措施
我们建议您查看转换工作区在 |
|||
CW_OP0606 |
查看外键列数据类型 |
||
|
潜在根本原因 Database Migration Service 发现父对象和子对象之间的数据类型规范不匹配(例如,父列为 |
|||
|
可能的缓解措施
在大多数情况下,轻微的数据类型不匹配不会导致数据库功能出现问题。不过,我们建议您检查转换后的数据模型是否存在不一致之处。 |
|||
建议审核功能性 (
|
|||
CW_OP0701 |
建议审核功能性 | ||
|
潜在根本原因
此组会捕获与 Oracle 和 PostgreSQL 代码中的潜在功能差异相关的所有一般性问题。此组中的问题不属于任何其他更具体的问题组。 |
|||
可能的缓解措施
|
|||
CW_OP0702 |
查看 Oracle 内置函数的模拟情况 |
||
|
潜在根本原因 许多 Oracle 内置函数在 PostgreSQL 中没有直接对应的等效函数。 为了帮助缓解迁移过程中的这一问题,Database Migration Service 会使用不同的 SQL 表达式转换代码,以便在 PostgreSQL 中产生等效的功能行为。 在某些情况下,转换后的表达式可能会很复杂。
Database Migration Service 会在 |
|||
|
可能的缓解措施
查看转换后的代码,确保转换后的函数在 PostgreSQL 环境中按预期运行。 |
|||
需要重构 (
|
|||
CW_OP0801 |
需要重构自治事务 |
||
|
潜在根本原因 PostgreSQL 不支持 自治事务。 |
|||
|
可能的缓解措施
您可以使用
|
|||
CW_OP0802 |
需要重构数据库链接 |
||
|
潜在根本原因 Database Migration Service 不支持 Oracle 数据库链接。使用链接的对象需要重构。 |
|||
|
可能的缓解措施
根据数据库链接的目标,您可以使用数据库扩展程序(例如
|
|||
CW_OP0803 |
需要重构高级排队 |
||
|
潜在根本原因 Oracle Advanced Queuing 软件包( |
|||
|
可能的缓解措施
您可以考虑采取以下方案:
|
|||
CW_OP0804 |
需要重构数据库邮件 |
||
|
潜在根本原因 AlloyDB for PostgreSQL 不支持直接从数据库发送电子邮件。此外,也不支持启用此功能的扩展程序。
因此,Database Migration Service 不会转换
|
|||
|
可能的缓解措施
重构数据库电子邮件代码,并将发送电子邮件的职责移至应用层。您仍然可以使用数据库来捕获需要发送电子邮件的条件。 一个示例实现是将电子邮件详细信息写入专用表。此表还可以充当电子邮件队列,您可以使用 Cloud Run functions 函数轮询该队列并处理实际的 SMTP 处理。 |
|||
CW_OP0805 |
需要重构作业和调度 |
||
|
潜在根本原因
Database Migration Service 不会转换
|
|||
|
可能的缓解措施
对于没有依赖项的简单作业,您可以使用
对于 |
|||
CW_OP0806 |
需要重构文件 I/O |
||
|
潜在根本原因 Database Migration Service 不支持 Oracle
Orafce 扩展程序包含 |
|||
可能的缓解措施
|
|||
CW_OP0807 |
同义词 |
||
|
潜在根本原因 PostgreSQL 不支持同义词。对于代码对象,Database Migration Service 会自动将同义词引用替换为其源架构和对象名称。如果您在代码对象之外使用同义词(例如在数据库应用用户的只读架构中),则需要手动转换它们。 |
|||
|
可能的缓解措施
对于代码对象之外的同义词用法,您可以使用 PostgreSQL
|
|||
CW_OP0808 |
需要重构全局临时表 |
||
|
潜在根本原因 此问题组是一条警告,表示 Database Migration Service 在 Oracle 源代码中检测到全局临时表。如需迁移全局临时表,您必须在目标数据库中安装并创建 pgtt PostgreSQL 扩展程序。 |
|||
|
可能的缓解措施
我们建议您验证是否已在目标数据库中安装并创建 pgtt PostgreSQL 扩展程序。 |
|||
Gemini 审核建议 (
|
|||
CW_AI9900 |
查看 Gemini 建议 |
||
| 可能的根本原因:
此问题组会捕获与 Gemini 增强型代码转换相关的所有一般错误和警告。 |
|||
可能的缓解措施:此处发现的问题不一定总是指向实际问题,但我们强烈建议您检查所有 Gemini 增强型转化,确保它们符合您的预期。 |
|||
CW_AI9901 |
查看 AI 增强型代码 |
||
| 潜在根本原因:此 DDL 代码是使用 Gemini 增强功能转换的,可能需要您审核其准确性。 | |||
可能的缓解措施:我们建议您仔细检查使用 AI 增强功能转换的代码,确保最终结果与源架构的功能一致。 |
|||
CW_AI9902 |
引用 |
||
| 可能的根本原因:Gemini 增强型建议可能包含引用自多个来源的内容。某些引用可能受许可限制。 我们建议您检查转换后的代码,看看是否有引用。 | |||
一般转换问题 (
|
|||
CW_OP0000 |
元数据转换问题 |
||
| 可能的根本原因:
此组涵盖不属于任何其他更具体问题组的所有转化问题。 |
|||
| 可能的缓解措施
我们建议您根据对源数据模型的了解,查看转换后的代码,并根据需要调整代码。 |
|||
CW_OP0001 |
元数据转换问题 |
||
| 可能的根本原因:
此组会捕获不属于任何其他更具体问题组的所有元数据跟踪问题。 |
|||
| 可能的缓解措施:
此组中的问题示例通常与编译错误或警告有关,这些错误或警告可能会导致转换后的 PostgreSQL 中的数据类型出现问题。我们建议您根据对源数据模型的了解,检查转换后的代码并调整错误的引用。 |
|||
CW_OP0002 |
请与支持团队联系 |
||
潜在根本原因 在特殊极端情况下,您可能会遇到有效 Oracle 源对象的内部错误。如果您遇到这种情况,请与支持团队联系,获取更多帮助。 |
|||
CW_OP0003 |
一般转换问题 |
||
| 潜在根本原因
此组包含不属于任何其他更具体的问题类别或组的所有问题。 |
|||
| 可能的缓解措施
我们建议您根据对源数据模型和代码的了解,查看转换后的代码,并根据需要进行调整。 |
|||