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

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

Amazon RDS for Db2 的故障診斷

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

如需一般 Amazon RDS 故障診斷問題的詳細資訊,請參閱 Amazon RDS 故障診斷

資料庫連線錯誤

下列錯誤訊息指出資料庫無法連線,因為伺服器沒有足夠的記憶體。

SQL1643C The database manager failed to allocate shared memory because the database manager instance memory limit has been reached.

增加資料庫執行個體的記憶體,然後嘗試再次連線至資料庫。如需資料庫的記憶體用量和建議的相關資訊,請參閱 Amazon RDS for Db2 資料庫執行個體上的多個資料庫。如需如何更新 RDS for Db2 資料庫記憶體的詳細資訊,請參閱rdsadmin.update_db_param

檔案輸入/輸出錯誤

您可能會因為不同的原因而遇到檔案 I/O 錯誤,例如當您使用 LOAD命令或呼叫rdsadmin.restore_database預存程序時。

在此範例中,您會執行下列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 資料庫執行個體之安全群組相關聯的 VPC 可能缺少 Amazon S3 閘道端點。此端點對於啟用 RDS for Db2 存取 Amazon S3 至關重要。如果您的 RDS for Db2 資料庫執行個體位於私有子網路中,則需要 Amazon S3 閘道端點。您可以設定 Amazon RDS 子網路群組,指定資料庫執行個體使用私有或公有子網路。如需詳細資訊,請參閱使用資料庫子網路群組

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

若要讓 RDS for Db2 資料庫執行個體與 Amazon S3 互動,請建立 VPC,然後建立 Amazon S3 閘道端點,供私有子網路使用。

為 S3 建立 VPC 閘道端點
  1. 建立 VPC。如需詳細資訊,請參閱《Amazon Virtual Private Cloud 使用者指南》中的建立 VPCAmazon Virtual Private Cloud

  2. 為要使用的私有子網路建立 Amazon S3 閘道端點。如需詳細資訊,請參閱《 AWS PrivateLink 指南》中的閘道端點

步驟 2:確認 Amazon S3 的 VPC 閘道端點存在

確認您已成功使用 AWS Management Console 或 建立 Amazon S3 閘道端點 AWS CLI。

確認 Amazon S3 閘道端點
  1. 登入 AWS Management Console 並在 開啟 Amazon VPC 主控台https://console.aws.amazon.com/vpc

  2. 在主控台的右上角,選擇 VPC AWS 區域 的 。

  3. 選取您建立的 VPC。

  4. 資源地圖索引標籤的網路連線下,確認已列出 Amazon S3 閘道端點。

若要確認 Amazon S3 閘道端點,請執行 describe-vpc-endpoints命令。在下列範例中,將 vpc_id 取代為 VPC ID、將區域取代為 AWS 區域,並將設定檔取代為設定檔名稱。

對於 Linux、 macOS或 Unix:

aws ec2 describe-vpc-endpoints \ --filters "Name=vpc-id,Values=$vpc_id" \ "Name=service-name,\ Values=com.amazonaws.${region}.s3" \ --region $region --profile=$profile \ --query "VpcEndpoints[*].VpcEndpointId" --output text

在 Windows 中:

aws ec2 describe-vpc-endpoints ^ --filters "Name=vpc-id,Values=$vpc_id" ^ "Name=service-name,^ Values=com.amazonaws.${region}.s3" ^ --region $region --profile=$profile ^ --query "VpcEndpoints[*].VpcEndpointId" --output text

如果存在 Amazon S3 閘道端點,此命令會產生類似下列範例的輸出。

[ "vpce-0ea810434ff0b97e4" ]

如果 Amazon S3 閘道端點不存在,此命令會產生類似下列範例的輸出。

[]

如果您沒有看到列出的 Amazon S3 閘道端點,則 步驟 1:建立 Amazon S3 的 VPC 閘道端點

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

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

rdsadmin.activate_database 錯誤

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

錯誤 錯誤訊息

Failed to allocate shared memory

SQL1643C The database manager failed to allocate shared memory because the database manager instance memory limit has been reached.

無法配置共用記憶體

下列錯誤訊息指出儲存的程序無法啟用資料庫,因為資料庫執行個體沒有足夠的記憶體。

SQL1643C The database manager failed to allocate shared memory because the database manager instance memory limit has been reached.

增加資料庫執行個體的記憶體,然後再次呼叫rdsadmin.activate_database預存程序。如需資料庫的記憶體用量和建議的相關資訊,請參閱Amazon RDS for Db2 資料庫執行個體上的多個資料庫

rdsadmin.alter_tablespace 錯誤

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

錯誤 錯誤訊息

Statement not valid

DB21034E The command was processed as an SQL statement because it was not a valid Command Line Processor command. During SQL processing it returned:

SQL1763N Invalid ALTER TABLESPACE statement for table space "TBSP_TEST" due to reason "12"

tablespace_prefetch_size value not valid

Invalid tablespace_prefetch_size. Set value to AUTOMATIC or to a non-zero positive numerical value.

tablespace_prefetch_size numerical value not valid

Invalid tablespace_prefetch_size. The number of pages can't be greater than 32767.

Parameter can't be used with tablespace_prefetch_size

You can't use tablespace_prefetch_size with {parameter}.

Tablespace change failed

The change to tablespace {tablespace_name} failed because you can only alter LARGE or REGULAR tablespaces.

陳述式無效

下列錯誤訊息指出預存程序結合了互斥選用參數和其他選用參數。rdsadmin.alter_tablespace 預存程序switch_online的選用參數 reduce_max, reduce_stoplower_high_water_stop、、 reduce_value lower_high_water和 是互斥的。您無法在rdsadmin.alter_tablespace預存程序中將它們與任何其他選用參數結合buffer_pool_name,例如 。如果您合併它們,則當您呼叫rdsadmin.get_task_status使用者定義的函數時,Db2 會傳回此錯誤訊息。

DB21034E The command was processed as an SQL statement because it was not a valid Command Line Processor command. During SQL processing it returned: SQL1763N Invalid ALTER TABLESPACE statement for table space "TBSP_TEST" due to reason "12"

再次呼叫rdsadmin.alter_tablespace預存程序,而不將互斥的選用參數與其他選用參數結合。然後呼叫rdsadmin.get_task_status使用者定義的函數。如需詳細資訊,請參閱 rdsadmin.alter_tablespacerdsadmin.get_task_status

tablespace_prefetch_size 值無效

下列錯誤訊息表示您未tablespace_prefetch_size將 設定為 AUTOMATIC或非正數值。例如,您嘗試將其設定為 testinput

Invalid tablespace_prefetch_size. Set value to AUTOMATIC or to a non-zero positive numerical value.

再次呼叫rdsadmin.alter_tablespace預存程序,並將 tablespace_prefetch_size設定為 AUTOMATIC或非正數值。

tablespace_prefetch_size 數值無效

下列錯誤訊息表示您tablespace_prefetch_size設定為大於 32767 的數值。

Invalid tablespace_prefetch_size. The number of pages can't be greater than 32767.

再次呼叫rdsadmin.alter_tablespace預存程序,並將 tablespace_prefetch_size設定為小於或等於 32767 的非零正數值。

參數無法與 tablespace_prefetch_size 搭配使用

下列錯誤訊息表示您嘗試tablespace_prefetch_size搭配不相容的 參數使用 。

You can't use tablespace_prefetch_size with {parameter}.

再次呼叫rdsadmin.alter_tablespace預存程序,並僅tablespace_prefetch_size搭配相容的參數使用 。如需可與 搭配使用之參數的相關資訊tablespace_prefetch_size,請參閱 rdsadmin.alter_tablespace

資料表空間變更失敗

下列錯誤訊息表示您嘗試變更資料表空間。

The change to tablespace {tablespace_name} failed because you can only alter LARGE or REGULAR tablespaces.

rdsadmin.create_database 錯誤

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

錯誤 錯誤訊息

Failed to allocate shared memory

SQL1643C The database manager failed to allocate shared memory because the database manager instance memory limit has been reached.

無法配置共用記憶體

下列錯誤訊息指出預存程序無法建立資料庫,因為資料庫執行個體沒有足夠的記憶體。

SQL1643C The database manager failed to allocate shared memory because the database manager instance memory limit has been reached.

增加資料庫執行個體的記憶體,然後再次呼叫rdsadmin.create_database預存程序。如需資料庫的記憶體用量和建議的相關資訊,請參閱Amazon RDS for Db2 資料庫執行個體上的多個資料庫

若要確認資料庫已建立,請呼叫rdsadmin.list_databases使用者定義的函數,並檢查是否已列出新的資料庫。

rdsadmin.drop_database 錯誤

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

錯誤 錯誤訊息

Database name doesn't exist

SQL0438N Application raised error or warning with diagnostic text: "Cannot drop database. Database with provided name does not exist". SQLSTATE=99993

Return status = 0

Return Status = 0

Dropping database not allowed

1 ERROR DROP_DATABASE RDSDB 2023-10-10-16.33.03.744122 2023-10-10-16.33.30.143797 - 2023-10-10-16.33.30.098857 Task execution has started. 2023-10-10-16.33.30.143797 Caught exception during executing task id 1, Aborting task. Reason Dropping database created via rds CreateDBInstance api is not allowed. Only database created using rdsadmin.create_database can be dropped

資料庫名稱不存在

下列錯誤訊息指出您在rdsadmin.drop_database預存程序中傳遞不正確的資料庫名稱。

QL0438N Application raised error or warning with diagnostic text: "Cannot drop database. Database with provided name does not exist". SQLSTATE=99993

使用正確的資料庫名稱再次呼叫rdsadmin.drop_database預存程序。若要確認資料庫已捨棄,請呼叫rdsadmin.list_databases使用者定義的函數,並檢查捨棄的資料庫是否未列出。

傳回狀態 = 0

下列錯誤訊息指出儲存的程序無法完成。

Return Status = 0

收到 後Return Status = 0,請呼叫 rdsadmin.get_task_status 使用者定義函數。

不允許捨棄資料庫

下列錯誤訊息指出您使用 Amazon RDS 主控台或 建立資料庫 AWS CLI。只有在您透過呼叫rdsadmin.drop_database預存程序建立資料庫時,才能使用預rdsadmin.create_database存程序。

1 ERROR DROP_DATABASE RDSDB 2023-10-10-16.33.03.744122 2023-10-10-16.33.30.143797 - 2023-10-10-16.33.30.098857 Task execution has started. 2023-10-10-16.33.30.143797 Caught exception during executing task id 1, Aborting task. Reason Dropping database created via rds CreateDBInstance api is not allowed. Only database created using rdsadmin.create_database can be dropped

若要捨棄使用 Amazon RDS 主控台或 建立的資料庫 AWS CLI,請使用用戶端連線至資料庫,然後執行適當的命令。

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.

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

增加您的磁碟空間,然後再次呼叫rdsadmin.restore_database預存程序。若要確認資料庫已還原,請呼叫rdsadmin.list_databases使用者定義的函數,並檢查還原的資料庫是否已列出。

內部錯誤

下列錯誤訊息指出預存程序發生內部錯誤:

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

聯絡 AWS 支援

不允許非 fenced 常式

下列錯誤訊息指出您的資料庫包含非 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再次呼叫 。若要確認資料庫已還原,請呼叫rdsadmin.list_databases使用者定義的函數,並檢查還原的資料庫是否已列出。如需詳細資訊,請參閱非 fenced 常式

資料表空間未還原

下列錯誤訊息指出 RDS for 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 Support

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

rdsadmin.update_db_param 錯誤

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

錯誤 錯誤訊息

Parameter not supported or modifiable

QL0438N Application raised error or warning with diagnostic text: "Parameter is either not supported or not modifiable to customers". SQLSTATE=99993

不支援或可修改的參數

下列錯誤訊息表示您嘗試修改不支援或無法修改的資料庫組態參數。

SQL0438N Application raised error or warning with diagnostic text: "Parameter is either not supported or not modifiable to customers". SQLSTATE=99993

您可以檢視參數群組,查看哪些參數可以修改。如需詳細資訊,請參閱檢視 Amazon RDS Amazon 中資料庫參數群組的參數值