诊断 Oracle 到 PostgreSQL 迁移中的问题

迁移作业流程在运行时可能会出错。

  • 某些错误(例如源数据库上的密码错误)可以恢复。解决这些错误后,迁移作业会自动恢复。
  • 某些错误是不可恢复的,例如数据复制中的错误。解决这些错误后,您必须重启迁移作业。

发生错误时,迁移作业状态会更改为 Failed,并且子状态会反映失败前的最后状态。如需排查错误,请前往失败的迁移作业以查看错误,然后按照错误消息中列出的步骤操作。 如需查看有关该错误的更多详细信息,请使用迁移作业中的链接前往 Cloud Monitoring。日志会过滤到特定的迁移作业。

在下表中,您可以查看一些问题示例以及解决方法:

症状 可能的原因 可以尝试的操作
错误消息:Cloud DMS can't set up a tunnel to be connected to the bastion host Database Migration Service 无法访问堡垒主机,或者堡垒主机不接受连接。 请验证连接配置文件中的转发 SSH 隧道设置,以及堡垒主机配置,然后重试。
错误消息:Cloud DMS can't connect to the databaseCloud DMS private connectivity error, cannot connect to the database Database Migration Service 无法与源 Oracle 数据库建立连接。

验证您是否可以从项目访问来源 Oracle 数据库,并确保您已在来源连接配置文件中正确配置了连接设置

如果包含特定的 Oracle 错误代码(例如 ORA-12170: TNS:Connect timeout occurred),请参阅 Oracle 文档了解详情。

错误消息:Archiving mode is not ARCHIVELOG 来源未正确配置。 正确配置来源。如需了解详情,请参阅配置源 Oracle 数据库
错误消息:Supplemental logging ("ALL COLUMN LOGGING") isn't turned on for the tables listed below 来源未正确配置。 正确配置来源。如需了解详情,请参阅配置源 Oracle 数据库
错误消息:No Archive Log Files were found in the source Database Migration Service 仅读取已关闭的归档日志,但在源数据库中未找到任何日志。
  1. 在源数据库中运行以下命令以关闭当前日志文件:ALTER SYSTEM SWITCH LOGFILE
  2. 请再次尝试查找日志。

如果数据库没有任何有效的写入操作,您可能需要执行至少 1 项 INSERT 操作才能触发日志创建。

错误消息:We're missing the necessary permissions to read from the source 来源未正确配置。 正确配置来源。如需了解详情,请参阅配置源 Oracle 数据库
错误消息:Unable to connect to the destination database 连接到目标数据库时出现问题。 验证目标 PostgreSQL 连接配置文件中的设置。如需了解专用连接,请参阅排查 Private Service Connect 错误
错误消息:database {database_name} does not exist Database Migration Service 要求目标数据库名称与用户名一致。 确保目标连接配置文件中指明的用户名与目标数据库名称一致。重新创建目标数据库,或创建与目标数据库匹配的其他用户名。如需了解详情,请参阅配置 Cloud SQL for PostgreSQL 目标数据库

确保您已运行 Ora2pg 以在目标数据库中创建架构。

错误消息:The following tables don't exist in the destination database: {table_names} 您尝试迁移的列表中所列的表在目标数据库中不存在。 确保您已运行 Ora2pg 在目标数据库中创建架构,或修改了迁移作业设置
错误消息:password authentication failed for user {username} 目标数据库的用户名或密码配置有误。 确保使用正确的用户名和密码正确配置目标 PostgreSQL 连接配置文件。
错误消息:The following tables in the destination database don't have primary keys: {table_names} 所列表存在于目标数据库中,但缺少主键。 确保您已运行 Ora2pg 以在目标数据库中创建架构。如果源表缺少主键,请在目标数据库中手动创建主键。
警告:The following tables have foreign keys: {table_names} 所列表存在于目标数据库中,但具有外键。 Database Migration Service 不会以事务方式复制数据,因此表可能会乱序迁移。如果存在外键,并且使用外键的子表在其父表之前迁移,则可能会遇到复制错误。

为避免此类数据完整性问题,请为迁移用户使用 REPLICATION 选项跳过外键。如需了解详情,请参阅 配置目标

错误消息:Unable to resume replication as log position is lost 当复制过程长时间暂停时,可能会发生此错误,从而导致日志位置丢失。 迁移作业暂停的时长不得接近日志保留期限。出现错误时,请重新创建迁移作业。
错误消息:ORA-00942: table or view does not exist 此错误可能是由于 Oracle 服务器上存在缓存而导致的。 重新创建数据库用户以解决缓存问题。
迁移作业会停留在完整转储阶段,不会推进到变更数据捕获 (CDC) 阶段。 Database Migration Service 仍在为某些表执行完整转储,或者一个或多个表因错误而无法完成完整转储。
  • 检查迁移作业错误,并修正应用于表的错误,或从作业中移除关联的表。
  • 检查 Database Migration Service 日志,确认是否有正在进行的完整转储活动,并等待其完成。