Amazon RDS for Db2 的故障診斷 - Amazon Relational Database Service

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

Amazon RDS for Db2 的故障診斷

下列內容可協助您針對 Db2 遇到的問題RDS進行疑難排解。

如需一般 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或位於相同的 中 AWS 區域。無論何種情況,解決方案都相同:您需要建立VPC閘道端點,然後將傳出規則新增至安全群組。

步驟 1:建立 Amazon S3 的VPC閘道端點

當您第一次建立RDS適用於 Db2 資料庫執行個體的 時,Amazon 會RDS建立具有三個私有子網路、安全群組且沒有公有存取權的資料庫執行個體。安全群組可防止任何 S3 流量離開私有子網路。

若要允許 RDS Db2 資料庫執行個體和 S3 之間的流量,您需要建立連線至 S3 的閘道端點。建立端點時,請務必選取要與此端點建立關聯的路由表。

注意

如果您在建立端點時遇到錯誤VPC,指出選取的路由表已經有路由,請執行下列其中一個選項:

  • 建立新的 VPC。然後,當您建立閘道端點時,選取新的 VPC。如需詳細資訊,請參閱 Amazon 使用者指南 中的建立 VPC VPC

  • 建立閘道端點,而不選取路由表。建立閘道端點之後,請建立新的路由表,並將其與VPC閘道端點建立關聯。如需詳細資訊,請參閱 Amazon VPC使用者指南 中的使用閘道路由表建立自訂路由表和控制進入 的流量VPC

建立VPC閘道端點時選取的路由表。

如需詳細資訊,請參閱 Amazon VPC使用者指南 中的建立閘道端點

步驟 2:將傳出規則新增至安全群組

此步驟假設您在 中建立閘道端點步驟 1:建立 Amazon S3 的VPC閘道端點。在此步驟中,您將傳出規則新增至 安全群組中的私有子網路VPC。這些傳出規則允許 HTTP和 HTTPS 流量。

對於目的地值,開啟搜尋 的內容 (按滑鼠右鍵) 選單,然後在字首清單下,選擇您建立的閘道端點字首。字首的格式為 com.amazonaws.AWS 區域.s3,例如 com.amazonaws.us-west-2.s3

S3 的傳出規則HTTP和HTTPS流量。

如需詳細資訊,請參閱 Amazon VPC使用者指南 中的安全群組規則

對預存程序的錯誤進行故障診斷

本主題描述呼叫預存程序時傳回的各種錯誤,以及如何解決這些錯誤。

類別 儲存的程序錯誤

資料庫

rdsadmin.restore_database 錯誤

rdsadmin.restore_database 錯誤

當您呼叫rdsadmin.restore_database預存程序時,可能會發生下列錯誤:

錯誤 錯誤訊息

Insufficient disk space

Aborting task. Reason Restoring your database failed because of insufficient disk space. Increase the storage for your DB instance and rerun the rdsadmin.restore_database stored procedure.

Internal error

Caught exception during executing task id 104, Aborting task. Reason Internal Error

Non-fenced routines not allowed

Caught exception during executing task id 2, Aborting task. Reason Non fenced routines are not allowed. Please delete the routines and retry the restore.

Tablespaces not restored

Reason SQL0970N The system attempted to write to a read-only file. Reason SQL2563W The Restore process has completed successfully. However one or more table spaces from the backup were not restored.

磁碟空間不足

下列錯誤訊息指出您的資料庫執行個體沒有足夠的磁碟空間來還原資料庫:

Aborting task. Reason Restoring your database failed because of insufficient disk space. Increase the storage for your DB instance and rerun the rdsadmin.restore_database stored procedure.

資料庫執行個體上的可用空間必須比備份映像大小的兩倍多。如果已壓縮備份映像,則資料庫執行個體的可用空間必須比備份映像大小的三倍多。如需詳細資訊,請參閱增加資料庫執行個體的儲存容量

內部錯誤

下列錯誤訊息表示儲存的程序發生內部錯誤:

Caught exception during executing task id 104, Aborting task. Reason Internal Error

聯絡 AWS 支援

不允許非 fenced 例行程序

下列錯誤訊息指出您的資料庫包含非圍欄式常式:

Caught exception during executing task id 2, Aborting task. Reason Non fenced routines are not allowed. Please delete the routines and retry the restore.

RDS for Db2 不支援非掛鉤例行程序。從來源資料庫中移除非掛鉤例行程序,然後rdsadmin.restore_database再次呼叫 。如需詳細資訊,請參閱非圍欄例程

資料表空間未還原

下列錯誤訊息指出RDS,對於 Db2,已成功還原您的資料庫,但無法還原一或多個資料表空間:

Reason SQL0970N The system attempted to write to a read-only file. Reason SQL2563W The Restore process has completed successfully. However one or more table spaces from the backup were not restored.

RDS for Db2 不支援非自動儲存。將非自動儲存轉換為自動儲存,然後rdsadmin.restore_database再次呼叫。如需詳細資訊,請參閱在 中轉換非自動儲存資料庫以使用自動儲存 IBM Db2 文件中)。

具有非自動SMS儲存體的資料庫需要手動還原。如果您的資料庫具有非自動SMS儲存,請聯絡 AWS 支援

如需有關非自動儲存體和一次性遷移的資訊,請參閱 移轉期間的非自動儲存體表格空間