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 网关端点时选择的路由表。](images/vpc-endpoint-route-table-selected.png)
有关更多信息,请参阅《Amazon VPC 用户指南》中的 Create a gateway endpoint。
步骤 2:将出站规则添加到安全组
此步骤假定您已在步骤 1:为 Amazon S3 创建 VPC 网关端点中创建了网关端点。在此步骤中,您将在 VPC 的安全组中向私有子网添加出站规则。这些出站规则支持 HTTP 和 HTTPS 流量。
对于目标值,打开搜索的上下文(右键单击)菜单,然后在前缀列表下,选择您创建的网关端点的前缀。前缀的格式为 com.amazonaws.
,例如 Amazon Web Services 区域
.s3com.amazonaws.us-west-2.s3
。
![发往 S3 的 HTTP 和 HTTPS 流量的出站规则。](images/security-group-outbound-rules.png)
有关更多信息,请参阅 Amazon VPC 用户指南中的安全组规则。