转换工作区会将所有转换问题汇总到各个组和类别中,以帮助您规划如何修正转换错误和警告。每个类别都表示您可能需要执行的工作类型,以解决相应问题(检查、重构、调整数据类型)。组可提供进一步的汇总,因为它们可在较低级别区分具体情况:


下表列出了您在架构转换期间可能会遇到的所有转换问题组:
问题组 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_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 集返回函数。我们建议您根据自己的使用情形调整代码。以下是一些示例,可帮助您开始使用:
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 语法。建议您探索由 Gemini 提供支持的自动转换功能,以调整代码。 如需了解详情,请参阅 在 Gemini 的协助下转换 Oracle 代码和架构。 |
|||
CW_OP0401 |
不受支持的 SQL 语法 | ||
可能的根本原因 您的源代码使用了 Database Migration Service 不支持的 SQL 语法或元素。例如,不支持 Oracle |
|||
可能的缓解措施
|
|||
CW_OP0402 |
不受支持的 PL/SQL 语法 | ||
可能的根本原因 您的源代码使用了 Database Migration Service 不支持的 PL/SQL 语法或元素。例如,基于记录的 |
|||
可能的缓解措施
将代码更改为使用在功能上等效的 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 高级队列软件包( |
|||
可能的缓解措施
您可以考虑采取以下方案:
|
|||
CW_OP0804 |
需要重构数据库电子邮件 |
||
可能的根本原因 Cloud SQL for PostgreSQL 不支持直接从数据库发送电子邮件。我们也不支持启用此功能的扩展程序。
因此,Database Migration Service 不会转换
|
|||
可能的缓解措施
重构数据库电子邮件代码,并将发送电子邮件的责任转移到应用层。您仍然可以使用数据库来捕获需要发送电子邮件的条件。 一种可能的实现方式是将电子邮件详细信息写入专用表。此表还可以充当电子邮件队列,您可以使用 Cloud Run functions 函数轮询该队列,并处理实际的 SMTP 处理。 |
|||
CW_OP0805 |
需要重构作业和调度 |
||
可能的根本原因
|
|||
可能的缓解措施
对于没有依赖关系的简单作业,您可以使用
对于 |
|||
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 |
一般转换问题 |
||
潜在的根本原因
此群组包含不属于任何其他更具体的问题类别或群组的所有问题。 |
|||
可能的缓解措施
建议您根据对源数据模型和代码的了解来检查转换后的代码,并根据需要进行调整。 |