Amazon RDS for Db2 故障排除 - Amazon Relational Database Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

Amazon RDS for Db2 故障排除

以下内容可以帮助您解决在 RDS for Db2 中遇到的问题。

有关一般 Amazon RDS 故障排除问题的更多信息,请参阅 Amazon RDS 故障排除

文件 I/O 错误

使用 LOAD 命令时,可能会遇到文件 I/O 错误。例如,您运行以下 LOAD 命令:

db2 "call sysproc.admin_cmd('load from "DB2REMOTE://s3test//public/datapump/t6.del" of del lobs from "DB2REMOTE://s3test/public/datapump/" modified by lobsinfile MESSAGES ON SERVER insert INTO RDSDB.t6 nonrecoverable ')"

LOAD 命令将返回以下消息:

Result set 1 -------------- ROWS_READ ROWS_SKIPPED ROWS_LOADED ROWS_REJECTED ROWS_DELETED ROWS_COMMITTED ROWS_PARTITIONED NUM_AGENTINFO_ENTRIES MSG_RETRIEVAL MSG_REMOVAL -------------------- -------------------- -------------------- -------------------- -------------------- -------------------- -------------------- --------------------- -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- - - - - - - - - SELECT SQLCODE, MSG FROM TABLE(SYSPROC.ADMIN_GET_MSGS('1594987316_285548770')) AS MSG CALL SYSPROC.ADMIN_REMOVE_MSGS('1594987316_285548770') 1 record(s) selected. Return Status = 0 SQL20397W Routine "SYSPROC.ADMIN_CMD" execution has completed, but at least one error, "SQL1652", was encountered during the execution. More information is available. SQLSTATE=01H52

要查看错误消息,请按照上一个响应中建议的方式运行 SQL 命令。SELECT SQLCODE, MSG FROM TABLE(SYSPROC.ADMIN_GET_MSGS('1594987316_285548770')) AS MSG 返回以下消息:

SQLCODE MSG --------- ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- SQL2025N An I/O error occurred. Error code “438”. Media on which this error occurred: “DB2REMOTE://s3test//public/datapump/t6.del” SQL3500W The utility is beginning the LOAD phase at time “07/05/2024 21:21:48.082954” SQL1652N File I/O error occurred

Db2 诊断日志包含与以下内容类似的日志文件:

2024-07-05-21.20.09.440609+000 I1191321E864 LEVEL: Error PID : 2710 TID : 139619509200640 PROC : db2sysc 0 INSTANCE: rdsdb NODE : 000 DB : NTP APPHDL : 0-12180 APPID: xxx.xx.x.xxx.xxxxx.xxxxxxxxxxxx UOWID : 5 ACTID: 1 AUTHID : ADMIN HOSTNAME: ip-xx-xx-x-xx EDUID : 147 EDUNAME: db2lmr 0 FUNCTION: DB2 UDB, oper system services, sqloS3Client_GetObjectInfo, probe:219 MESSAGE : ZRC=0x870F01B6=-2029059658=SQLO_FAILED "An unexpected error is encountered" DATA #1 : String, 29 bytes S3:HeadObject request failed. DATA #2 : signed integer, 4 bytes 99 DATA #3 : String, 0 bytes Object not dumped: Address: 0x00007EFC08A9AE38 Size: 0 Reason: Zero-length data DATA #4 : String, 33 bytes curlCode: 28, Timeout was reached

此文件 I/O 错误可能是由多种不同的情况造成的。例如,RDS for Db2 数据库实例和 Amazon S3 存储桶可能未使用相同的 VPC 或位于同一 Amazon Web Services 区域中。无论是哪种情况,都使用同一种解决方案:您需要创建一个 VPC 网关端点,然后向安全组添加出站规则。

步骤 1:为 Amazon S3 创建 VPC 网关端点

首次创建 RDS for Db2 数据库实例时,Amazon RDS 会创建具有三个私有子网、一个安全组且没有公有访问权限的数据库实例。安全组可防止任何 S3 流量离开私有子网。

要支持 RDS for Db2 数据库实例和 S3 之间的流量,您需要创建一个连接到 S3 的网关端点。创建端点时,请务必选择要与此端点关联的路由表。

注意

如果您在创建 VPC 端点时遇到错误,错误表明所选路由表已有路由,请执行以下选项之一:

  • 创建新的 VPC。然后,在创建网关端点时,选择新的 VPC。有关更多信息,请参阅 Amazon VPC 用户指南中的创建 VPC

  • 在不选择路由表的情况下创建网关端点。创建网关端点后,创建新的路由表并将其与 VPC 网关端点关联。有关更多信息,请参阅《Amazon VPC 用户指南》中的创建自定义路由表使用网关路由表控制进入 VPC 的流量

创建 VPC 网关端点时选择的路由表。

有关更多信息,请参阅《Amazon VPC 用户指南》中的 Create a gateway endpoint

步骤 2:将出站规则添加到安全组

此步骤假定您已在步骤 1:为 Amazon S3 创建 VPC 网关端点中创建了网关端点。在此步骤中,您将在 VPC 的安全组中向私有子网添加出站规则。这些出站规则支持 HTTP 和 HTTPS 流量。

对于目标值,打开搜索的上下文(右键单击)菜单,然后在前缀列表下,选择您创建的网关端点的前缀。前缀的格式为 com.amazonaws.Amazon Web Services 区域.s3,例如 com.amazonaws.us-west-2.s3

发往 S3 的 HTTP 和 HTTPS 流量的出站规则。

有关更多信息,请参阅 Amazon VPC 用户指南中的安全组规则