本页列出了以下内容的已知错误和建议的问题排查步骤:
迁移作业错误
迁移作业进程在运行时可能会出错。
- 某些错误(例如源数据库上的密码错误)可以恢复。 修复这些错误后,迁移作业会自动恢复。
- 某些错误(例如数据复制错误)无法恢复。修复这些错误后,您必须重启迁移作业。
发生错误时,迁移作业状态会变为 Failed,子状态会反映失败前的最后一个状态。
如需排查错误,请前往失败的迁移作业以查看错误,然后按照错误消息中列出的步骤操作。
如需查看有关该错误的更多详细信息,请使用迁移作业中的链接前往 Cloud Monitoring。日志会按特定的迁移作业进行过滤。
在下表中,您可以找到一些问题示例以及解决这些问题的方法:
| 症状 | 可能的原因 | 可以尝试的操作 |
|---|---|---|
错误消息:Database Migration Service can't set up a tunnel to be
connected to the bastion host。
|
Database Migration Service 无法访问堡垒主机,或者堡垒主机 不接受连接。 | 验证源连接配置文件中的转发 SSH 隧道设置和 SSH 隧道服务器配置,然后重试。 |
错误消息:Database Migration Service can't connect to the database
或
Database Migration Service private connectivity error, cannot connect to the database.
|
Database Migration Service 无法与源 Oracle 数据库建立连接。 |
验证您是否可以从项目中访问源数据库。 检查与源连接配置方法相关的设置。 如果其中包含特定的 Oracle 错误代码(例如
|
错误消息:Archiving mode is not ARCHIVELOG。 |
您的源数据库未在 ARCHIVELOG 模式下运行。 |
将源数据库配置为使用 ARCHIVELOG 模式。
如需了解详情,请参阅
配置源 Oracle 数据库。
|
错误消息:Supplemental logging ("ALL COLUMN LOGGING") isn't turned
on for the tables listed below。
|
您的源数据库未启用补充日志数据。 | 启用补充日志数据,并将其模式设置为 ALL。
如需了解详情,请参阅
配置源 Oracle 数据库。
|
错误消息:No Archive Log Files were found in the source。 |
Database Migration Service 仅读取已关闭的归档日志,并且在 源数据库中未找到任何日志。 |
如果数据库没有任何活跃的写入操作,您可能需要
执行至少一个 |
错误消息:We're missing the necessary permissions to read
from the source。
|
源数据库中的迁移用户账号没有所需的 权限。 |
Database Migration Service 会以您在源连接配置文件中配置的用户账号连接到您的源数据库。该账号需要一组特定的
权限(例如 确保迁移用户账号具有必要的权限。 如需了解详情,请参阅 配置源 Oracle 数据库。 |
错误消息:Unable to connect to the destination database。 |
连接到目标数据库时出现问题。 | 验证您是否可以从项目中访问目标数据库。 检查与目标连接配置方法相关的设置。 |
错误消息:The following tables don't exist in the destination database: {table_names}。 |
您尝试迁移的列出表格在 目标数据库中不存在。 | 当您 转换源架构时,Database Migration Service 会创建必要的表格和定义。 |
错误消息:password authentication failed for user {username}。 |
目标数据库的用户名或密码配置错误。 | 确保目标 PostgreSQL 连接配置文件已使用正确的用户名和密码正确配置。 |
错误消息:The following tables in the destination database
don't have primary keys: {table_names}。
|
错误消息中列出的表格存在于目标数据库中, 但缺少主键。 |
当您转换架构时,Database Migration Service 转换工作区会自动为没有主键的表格添加主键。 如果您使用旧版转换工作区,则需要在目标数据库中手动创建 主键。如需了解详情,请参阅 旧版转换工作区。 |
警告:The following tables have foreign keys: {table_names}。 |
错误消息中列出的表格存在于目标数据库中, 但具有外键。 |
Database Migration Service 不会以事务方式复制数据,因此表格可能会以无序方式迁移。如果存在外键, 并且使用外键的子表在其父表之前迁移, 您可能会遇到复制错误。 为避免此类数据完整性问题,请使用迁移用户的
|
错误消息:Unable to resume replication as log position is lost。 |
当复制过程长时间暂停时,可能会发生此错误,从而导致日志位置丢失。 | 迁移作业的暂停时长不得超过(或接近)日志 保留期限。如果日志位置丢失,您需要重新创建 迁移作业。 |
错误消息:ORA-00942: table or view does not exist。 |
此错误可能是由 Oracle 服务器上的缓存导致的。 | 重新创建数据库用户以解决缓存问题。 |
| 迁移作业仍处于完整转储阶段,不会进入变更数据捕获 (CDC) 阶段。 | Database Migration Service 仍在为某些表格执行完整转储, 或者一个或多个表格由于错误而无法完成完整转储。 |
|
连接问题
本部分列出了潜在的网络连接问题,并介绍了相应的问题排查步骤。
无法连接到目标数据库:EOF
运行连接测试会返回 [DATABASE] unable to connect to the destination database: EOF 错误消息。
可能的原因: 服务连接配置不正确。
可以尝试的操作: 确保在
服务连接 Terraform 配置文件中将enable_proxy_protocol设置为
false。
代理协议仅适用于 HTTP 服务器,例如 NGINX 和 Apache。
使用 gcloud 创建 Private Service Connect 设置时,代理协议默认处于停用状态。
连接超时,连接被拒绝
运行连接测试失败或超时。这很可能是由 Private Service Connect 设置中的路由配置错误导致的。 此问题可能有多种原因。
可能的原因: 缺少防火墙规则,该规则允许 Private Service Connect NAT CIDR 范围访问堡垒主机所在的 Private Service Connect 子网,特别是堡垒主机虚拟机 nic0 接口。
可能的原因: 代理服务器已关闭。提供的端口上没有监听器,因此连接挂起。
可以尝试的操作: 您可以尝试与堡垒主机虚拟机建立 SSH 连接,并使用以下命令搜索代理:
netstat -tunalp | grep PORT
分析命令的响应:
如果您收到空响应,则表示代理服务器已关闭。尝试运行以下命令:
sudo su; cd /,然后运行sudo dpkg -s dante-server检查是否安装了 Dante 服务器:如果代理正在运行并监听提供的端口,请尝试通过以下方式打开与该端口的连接:
安装 PostgreSQL 客户端:
sudo apt-get install postgresql-client。连接到 PostgreSQL 数据库:
psql -h 127.0.0.1 -p PORT -U DBUSERNAME -W(系统会提示您输入密码)。替换以下内容:
PORT:数据库端口号。DBUSERNAME:用于连接到 PostgreSQL 数据库的用户名。
安装 telnet 客户端:
sudo apt-get install telnet连接到 telnet 客户端:
telnet 127.0.0.1 PORT将
PORT替换为数据库端口号。
根据命令的结果:
如果命令无法打开连接,请尝试查看代理日志以找出根本原因。根本原因可能因 AlloyDB for PostgreSQL 实例设置而异。
如果使用 telnet 打开连接但在客户端中挂起,则可能存在堡垒主机 IP 地址路由问题。在虚拟机上,在终端中输入
ip route。查看是否可以找到使用辅助nic(nic1,DB_SUBNETWORK_GATEWAYIP 地址)将连接路由到 AlloyDB for PostgreSQL 实例专用 IP 地址的路由规则。
可能的原因: 服务连接不接受来自 Database Migration Service 的端点连接。服务连接包含一个接受的项目列表,而 Database Migration Service 项目未包含在该列表中。
可以尝试的操作: 如需解决此问题,请尝试以下任一方法:
在 Google Cloud 控制台中,前往 Private Service Connect。
在已发布的服务 标签页中,接受来自 Database Migration Service 的服务连接连接(如果连接处于待处理状态)。
将请求项目添加到服务连接中的允许的项目(如果连接被拒绝)。
如需详细了解如何在 Terraform 中添加允许的项目,请参阅 Terraform 文档。
如需详细了解如何在
gcloud中添加允许的项目, 请参阅 Google Cloud CLI 参考文档。
如果此操作无法解决问题,请重新创建连接配置文件。
删除与 Private Service Connect 连接关联的连接配置文件,然后重新创建该文件。
排查 Oracle SCAN 错误
本部分介绍了使用单个客户端访问名称 (SCAN) 功能从 Oracle Real Application Clusters (RAC) 来源进行迁移时可能遇到的问题。
无法与 Oracle SCAN 数据库建立连接
运行连接测试失败或超时。
可能的原因: 您可能尝试直接与 Oracle SCAN 源数据库建立连接。Database Migration Service 不支持使用 Oracle RAC 环境中的 SCAN 功能直接连接到数据库。
可以尝试的操作: 如需解决此问题,请尝试以下任一方法:
直接连接到其中一个节点。
使用反向代理解决方案(例如 HAProxy)创建专用连接配置。