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.

DB インスタンスのメモリを増やしてから、データベースに再度接続してください。データベースのメモリ使用量と推奨事項については、「Amazon RDS for Db2 DB インスタンス上の複数のデータベース」を参照してください。RDS for Db2 データベースのメモリを更新する方法については、「rdsadmin.update_db_param」を参照してください。

ファイル I/O エラー

LOAD コマンドを使用したり、rdsadmin.restore_database ストアドプロシージャを呼び出したりすると、さまざまな理由によるファイル 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 DB インスタンスの作成に使用したセキュリティグループの VPC に、Amazon S3 ゲートウェイエンドポイントがない可能性があります。このエンドポイントがない場合、RDS for Db2 は Amazon S3 にアクセスできません。RDS for Db2 DB インスタンスがプライベートサブネットに存在する場合は、Amazon S3 ゲートウェイエンドポイントが必要です。Amazon RDS サブネットグループを設定することで、DB インスタンスがプライベートとパブリックのどちらのサブネットを使用するかを指定できます。詳細については、「DB サブネットグループの使用」を参照してください。

ステップ 1: これにより、Amazon S3 用の VPC ゲートウェイエンドポイントを作成する

RDS for Db2 DB インスタンスから Amazon S3 と対話するには、VPC を作成し、続いてプライベートサブネットの Amazon S3 ゲートウェイエンドポイントを作成します。

S3 の VPC ゲートウェイエンドポイントを作成するには
  1. VPC を作成します。詳細については、「Amazon Virtual Private Cloud ユーザーガイド」の「VPC を作成する」を参照してください。

  2. プライベートサブネットの Amazon S3 ゲートウェイエンドポイントを作成します。詳細については、「AWS PrivateLink ガイド」の「Gateway endpoints」を参照してください。

ステップ 2: Amazon S3 の VPC ゲートウェイエンドポイントが存在することを確認する

AWS Management Consoleまたは AWS CLI を使用して、Amazon S3 ゲートウェイエンドポイントが正常に作成されたことを確認します。

Amazon S3 ゲートウェイエンドポイントを確認するには
  1. AWS Management Console にサインインし、https://console.aws.amazon.com/vpc で Amazon VPC コンソールを開きます。

  2. コンソールの右上で、VPC の AWS リージョン を選択します。

  3. 作成した VPC を選択します。

  4. [リソースマップ] タブの [ネットワーク接続] で、Amazon S3 ゲートウェイエンドポイントがリストに表示されていることを確認します。

Amazon S3 ゲートウェイエンドポイントを確認するには、describe-vpc-endpoints コマンドを実行します。次の例では、vpc_id を VPC ID に、region を AWS リージョンに、profile をプロファイル名に置き換えてください。

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.create_database エラー

データベース

rdsadmin.deactivate_database エラー

データベース

rdsadmin.drop_database エラー

データベース

rdsadmin.reactivate_database エラー

データベース

rdsadmin.restore_database エラー

データベース

rdsadmin.update_db_param エラー

テーブルスペース

rdsadmin.alter_tablespace エラー

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.

Unable to activate because of running processes

The database can’t be activated because it's in the process of being created or restored.

共有メモリの割り当てに失敗した

次のエラーメッセージは、DB インスタンスに十分なメモリがないため、ストアドプロシージャがデータベースのアクティブ化に失敗したことを示しています。

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

DB インスタンスのメモリを増やしてから、rdsadmin.activate_database ストアドプロシージャを再度呼び出してください。データベースのメモリ使用量と推奨事項については、「Amazon RDS for Db2 DB インスタンス上の複数のデータベース」を参照してください。

実行中のプロセスが原因でアクティブ化できない

次のエラーメッセージは、rdsadmin.create_database または rdsadmin.restore_database ストアドプロシージャが実行されているため、ストアドプロシージャがデータベースをアクティブ化できなかったことを示しています。

The database can’t be activated because it's in the process of being created or restored.

数分間待ってから、再度 rdsadmin.activate_database ストアドプロシージャを呼び出してください。

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 ストアドプロシージャのオプションパラメータ reduce_max, reduce_stopreduce_valuelower_high_waterlower_high_water_stopswitch_online は、相互に排他的です。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_tablespace」および「rdsadmin.get_task_status」を参照してください。

tablespace_prefetch_size 値が無効です

次のエラーメッセージは、tablespace_prefetch_sizeAUTOMATIC または正でない数値に設定していないことを示しています。例えば、testinput に設定しようとしました。

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

rdsadmin.alter_tablespace ストアドプロシージャを再度呼び出し、tablespace_prefetch_sizeAUTOMATIC または正でない数値に設定します。

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.

共有メモリの割り当てに失敗した

次のエラーメッセージは、DB インスタンスに十分なメモリがないため、ストアドプロシージャがデータベースの作成に失敗したことを示しています。

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

DB インスタンスのメモリを増やしてから、rdsadmin.create_database ストアドプロシージャを再度呼び出してください。データベースのメモリ使用量と推奨事項については、「Amazon RDS for Db2 DB インスタンス上の複数のデータベース」を参照してください。

データベースが作成されたことを確認するには、rdsadmin.list_databases ユーザー定義関数を呼び出し、新しいデータベースがリストに表示されていることを確認します。

rdsadmin.deactivate_database エラー

rdsadmin.deactivate_database ストアドプロシージャを呼び出すと、次のエラーが発生する場合があります。

エラー エラーメッセージ

Unable to deactivate because of running processes

The database can’t be deactivated because it's in the process of being created or restored.

実行中のプロセスが原因で非アクティブ化できない

次のエラーメッセージは、rdsadmin.create_database または rdsadmin.restore_database ストアドプロシージャが実行されているため、ストアドプロシージャがデータベースを非アクティブ化できなかったことを示しています。

The database can’t be deactivated because it's in the process of being created or restored.

数分間待ってから、再度 rdsadmin.deactivate_database ストアドプロシージャを呼び出してください。

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 ストアドプロシージャで誤ったデータベース名を渡したことを示しています。

SQL0438N 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.reactivate_database エラー

rdsadmin.reactivate_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.

Unable to reactivate because of running processes

The database can’t be reactivated because it's in the process of being created or restored.

共有メモリの割り当てに失敗した

次のエラーメッセージは、DB インスタンスに十分なメモリがないため、ストアドプロシージャがデータベースのアクティブ化に失敗したことを示しています。

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

DB インスタンスのメモリを増やしてから、rdsadmin.activate_database ストアドプロシージャを再度呼び出してください。データベースのメモリ使用量と推奨事項については、「Amazon RDS for Db2 DB インスタンス上の複数のデータベース」を参照してください。

実行中のプロセスが原因で再アクティブ化できない

次のエラーメッセージは、rdsadmin.create_database または rdsadmin.restore_database ストアドプロシージャが実行されているため、ストアドプロシージャがデータベースを再アクティブ化できなかったことを示しています。

The database can’t be reactivated because it's in the process of being created or restored.

数分間待ってから、再度 rdsadmin.reactivate_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.

ディスク容量の不足

次のエラーメッセージは、DB インスタンスにデータベースを復元するのに十分なディスク容量がないことを示しています。

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.

DB インスタンスの空き容量は、バックアップイメージの 2 倍以上である必要があります。バックアップイメージが圧縮されている場合、DB インスタンスの空き容量はバックアップイメージの 3 倍以上である必要があります。詳細については、「DB インスタンスストレージの容量を増加する」を参照してください。

ディスク容量を増やしてから、rdsadmin.restore_database ストアドプロシージャを再度呼び出してください。データベースが復元されたことを確認するには、rdsadmin.list_databases ユーザー定義関数を呼び出し、復元されたデータベースがリストに表示されていることを確認します。

内部エラー

次のエラーメッセージは、ストアドプロシージャで内部エラーが発生したことを示します。

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

AWS Support にお問い合わせください。

フェンスなしのルーチンは許可されません

次のエラーメッセージは、データベースにフェンスのないルーチンが含まれていることを示します。

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 ユーザー定義関数を呼び出し、復元されたデータベースがリストに表示されていることを確認します。詳細については、「フェンスされていないルーチン」を参照してください。

テーブルスペースが復元されていません

次のエラーメッセージは、RDS for Db2 がデータベースを正常に復元したが、1 つ以上のテーブルスペースを復元できなかったことを示しています。

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 サポートにお問い合わせください。

非自動ストレージと 1 回限りの移行の詳細については、「移行中の非自動ストレージテーブルスペース」を参照してください。

rdsadmin.update_db_param エラー

rdsadmin.update_db_param ストアドプロシージャを呼び出すと、次のエラーが発生する場合があります。

エラー エラーメッセージ

Parameter not supported or modifiable

SQL0438N 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 のDB パラメータグループのパラメータ値の表示」を参照してください。