Résolution des problèmes liés à Amazon RDS pour DB2 - Amazon Relational Database Service

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Résolution des problèmes liés à Amazon RDS pour DB2

Le contenu suivant peut vous aider à résoudre les problèmes que vous rencontrez avec RDS pour DB2.

Pour plus d'informations sur les problèmes généraux de résolution des problèmes liés à Amazon RDS, consultezDépannage d'Amazon RDS.

Erreur de connexion de base de données

Le message d'erreur suivant indique qu'une base de données n'a pas pu se connecter car le serveur ne dispose pas de suffisamment de mémoire.

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

Augmentez la mémoire de votre instance de base de données, puis réessayez de vous connecter à votre base de données. Pour plus d'informations sur l'utilisation de la mémoire et les recommandations relatives aux bases de données, consultezPlusieurs bases de données sur une instance de base de données Amazon RDS pour DB2. Pour plus d'informations sur la mise à jour de la mémoire d'une base de données RDS pour DB2, consultez. rdsadmin.update_db_param

I/O Erreur de fichier

Vous pouvez rencontrer une I/O erreur de fichier pour différentes raisons, par exemple lorsque vous utilisez la LOAD commande ou que vous appelez la procédure rdsadmin.restore_database stockée.

Dans cet exemple, vous exécutez la LOAD commande suivante.

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 ')"

La LOAD commande renvoie le message suivant :

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

Pour afficher le message d'erreur, vous devez exécuter la commande SQL comme suggéré dans la réponse précédente. SELECT SQLCODE, MSG FROM TABLE(SYSPROC.ADMIN_GET_MSGS('1594987316_285548770')) AS MSGrenvoie le message suivant :

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

Les journaux de diagnostic Db2 contiennent un fichier journal similaire au suivant :

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

Cette I/O erreur de fichier peut être le résultat de différents scénarios. Par exemple, le VPC associé au groupe de sécurité utilisé pour créer votre instance de base de données RDS pour DB2 peut ne pas disposer d'un point de terminaison de passerelle Amazon S3. Ce point de terminaison est essentiel pour permettre à RDS pour Db2 d'accéder à Amazon S3. Si votre instance de base de données RDS pour DB2 se trouve dans des sous-réseaux privés, un point de terminaison de passerelle Amazon S3 est requis. Vous pouvez spécifier si votre instance de base de données utilise des sous-réseaux privés ou publics en configurant des groupes de sous-réseaux Amazon RDS. Pour de plus amples informations, veuillez consulter Utilisation de groupes de sous-réseaux DB.

Étape 1 : créer un point de terminaison de passerelle VPC pour Amazon S3

Pour que votre instance de base de données RDS for Db2 interagisse avec Amazon S3, créez un VPC, puis un point de terminaison de passerelle Amazon S3 que les sous-réseaux privés pourront utiliser.

Pour créer un point de terminaison de passerelle VPC pour S3
  1. Créez un VPC. Pour plus d'informations, consultez la section Créer un VPC dans le guide de l'utilisateur d'Amazon Virtual Private Cloud.

  2. Créez un point de terminaison Amazon S3 pour les sous-réseaux privés à utiliser. Pour plus d'informations, consultez la section Points de terminaison de la passerelle dans le AWS PrivateLink Guide.

Étape 2 : Vérifiez que le point de terminaison de votre passerelle VPC pour Amazon S3 existe

Vérifiez que vous avez correctement créé un point de terminaison de passerelle Amazon S3 à l'aide du AWS Management Console ou du AWS CLI.

Pour confirmer un point de terminaison d'une passerelle Amazon S3
  1. Connectez-vous à la console Amazon VPC AWS Management Console et ouvrez-la à l'adresse. https://console.aws.amazon.com/vpc

  2. Dans le coin supérieur droit de la console, choisissez celui Région AWS de votre VPC.

  3. Sélectionnez le VPC que vous avez créé.

  4. Dans l'onglet Carte des ressources, sous Connexions réseau, vérifiez qu'un point de terminaison de passerelle Amazon S3 est répertorié.

Pour confirmer un point de terminaison de passerelle Amazon S3, exécutez la describe-vpc-endpointscommande. Dans l'exemple suivant, remplacez vpc_id par l'ID VPC, par votre et region par le Région AWS nom profile de votre profil.

Pour LinuxmacOS, ou 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

Dans 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

Cette commande produit une sortie similaire à l'exemple suivant s'il existe un point de terminaison de passerelle Amazon S3.

[ "vpce-0ea810434ff0b97e4" ]

Cette commande produit un résultat similaire à celui de l'exemple suivant s'il n'existe pas de point de terminaison de passerelle Amazon S3.

[]

Si aucun point de terminaison de passerelle Amazon S3 n'est répertorié, alorsÉtape 1 : créer un point de terminaison de passerelle VPC pour Amazon S3.

Erreurs de procédure stockée

Cette section décrit les différentes erreurs renvoyées lors de l'appel de procédures stockées et explique comment les résoudre.

Catégorie Erreurs de procédure stockée

Bases de données

Erreurs rdsadmin.activate_database

Bases de données

Erreurs rdsadmin.create_database

Bases de données

Erreurs rdsadmin.deactivate_database

Bases de données

Erreurs rdsadmin.drop_database

Bases de données

Erreurs rdsadmin.reactivate_database

Bases de données

Erreurs rdsadmin.restore_database

Bases de données

Erreurs rdsadmin.update_db_param

Espaces de table

Erreurs rdsadmin.alter_tablespace

Erreurs rdsadmin.activate_database

Les erreurs suivantes peuvent se produire lorsque vous appelez la procédure rdsadmin.activate_database stockée.

Erreur Message d’erreur

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.

Impossible d'allouer de la mémoire partagée

Le message d'erreur suivant indique que la procédure stockée n'a pas réussi à activer une base de données car l'instance de base de données ne dispose pas de suffisamment de mémoire.

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

Augmentez la mémoire de votre instance de base de données, puis appelez à nouveau la procédure rdsadmin.activate_database stockée. Pour plus d'informations sur l'utilisation de la mémoire et les recommandations relatives aux bases de données, consultezPlusieurs bases de données sur une instance de base de données Amazon RDS pour DB2.

Impossible d'activer en raison de processus en cours

Le message d'erreur suivant indique que la procédure stockée n'a pas pu activer de base de données car elle est en cours d'exécution. rdsadmin.create_database rdsadmin.restore_database

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

Patientez quelques minutes, puis appelez à nouveau la procédure rdsadmin.activate_database stockée.

Erreurs rdsadmin.alter_tablespace

Les erreurs suivantes peuvent se produire lorsque vous appelez la procédure rdsadmin.alter_tablespace stockée.

Erreur Message d’erreur

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.

Déclaration non valide

Le message d'erreur suivant indique que la procédure stockée a combiné des paramètres facultatifs mutuellement exclusifs avec d'autres paramètres facultatifs. Les paramètres facultatifs reduce_max, reduce_stopreduce_value,lower_high_water,lower_high_water_stop, et switch_online de la procédure rdsadmin.alter_tablespace stockée s'excluent mutuellement. Vous ne pouvez pas les combiner avec d'autres paramètres facultatifsbuffer_pool_name, comme dans la procédure rdsadmin.alter_tablespace stockée. Si vous les combinez, Db2 renvoie ce message d'erreur lorsque vous appelez la fonction rdsadmin.get_task_status définie par l'utilisateur.

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"

Appelez à nouveau la procédure rdsadmin.alter_tablespace stockée sans combiner des paramètres facultatifs mutuellement exclusifs avec d'autres paramètres facultatifs. Appelez ensuite la fonction rdsadmin.get_task_status définie par l'utilisateur. Pour plus d'informations, consultez rdsadmin.alter_tablespace et rdsadmin.get_task_status.

valeur tablespace_prefetch_size non valide

Le message d'erreur suivant indique que vous n'avez pas défini tablespace_prefetch_size de valeur numérique positive AUTOMATIC ou non positive. Par exemple, vous avez essayé de le définir surtestinput.

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

Appelez à nouveau la procédure rdsadmin.alter_tablespace stockée et réglez-la tablespace_prefetch_size sur AUTOMATIC ou sur une valeur numérique non positive.

valeur numérique tablespace_prefetch_size non valide

Le message d'erreur suivant indique que vous avez défini une valeur numérique supérieure tablespace_prefetch_size à 32 767.

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

Appelez à nouveau la procédure rdsadmin.alter_tablespace stockée et tablespace_prefetch_size réglez-la sur une valeur numérique positive différente de zéro inférieure ou égale à 32767.

Le paramètre ne peut pas être utilisé avec tablespace_prefetch_size

Le message d'erreur suivant indique que vous avez essayé de l'utiliser tablespace_prefetch_size avec un paramètre incompatible.

You can't use tablespace_prefetch_size with {parameter}.

Appelez à nouveau la procédure rdsadmin.alter_tablespace stockée et utilisez-la uniquement tablespace_prefetch_size avec des paramètres compatibles. Pour plus d'informations sur les paramètres que vous pouvez utilisertablespace_prefetch_size, consultezrdsadmin.alter_tablespace.

Le changement de tablespace a échoué

Le message d'erreur suivant indique que vous avez essayé de modifier un tablespace.

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

Erreurs rdsadmin.create_database

L'erreur suivante peut se produire lorsque vous appelez la procédure rdsadmin.create_database stockée.

Erreur Message d’erreur

Failed to allocate shared memory

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

Impossible d'allouer de la mémoire partagée

Le message d'erreur suivant indique que la procédure stockée n'a pas réussi à créer une base de données car l'instance de base de données ne dispose pas de suffisamment de mémoire.

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

Augmentez la mémoire de votre instance de base de données, puis appelez à nouveau la procédure rdsadmin.create_database stockée. Pour plus d'informations sur l'utilisation de la mémoire et les recommandations relatives aux bases de données, consultezPlusieurs bases de données sur une instance de base de données Amazon RDS pour DB2.

Pour confirmer que la base de données a été créée, appelez la fonction rdsadmin.list_databases définie par l'utilisateur et vérifiez que la nouvelle base de données est répertoriée.

Erreurs rdsadmin.deactivate_database

L'erreur suivante peut se produire lorsque vous appelez la procédure rdsadmin.deactivate_database stockée.

Erreur Message d’erreur

Unable to deactivate because of running processes

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

Impossible de désactiver en raison de processus en cours

Le message d'erreur suivant indique que la procédure stockée n'a pas pu désactiver une base de données car elle est en cours d'exécution. rdsadmin.create_database rdsadmin.restore_database

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

Patientez quelques minutes, puis appelez à nouveau la procédure rdsadmin.deactivate_database stockée.

Erreurs rdsadmin.drop_database

Les erreurs suivantes peuvent se produire lorsque vous appelez la procédure rdsadmin.drop_database stockée.

Erreur Message d’erreur

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

Le nom de la base de données n'existe pas

Le message d'erreur suivant indique que vous avez transmis un nom de base de données incorrect dans la procédure rdsadmin.drop_database stockée.

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

Appelez à nouveau la procédure rdsadmin.drop_database stockée avec un nom de base de données correct. Pour confirmer que la base de données a été supprimée, appelez la fonction rdsadmin.list_databases définie par l'utilisateur et vérifiez que la base de données supprimée n'est pas répertoriée.

État du retour = 0

Le message d'erreur suivant indique que la procédure stockée n'a pas pu être terminée.

Return Status = 0

Après réceptionReturn Status = 0, appelez la fonction définie par l'utilisateur rdsadmin.get_task_status.

La suppression de la base de données est interdite

Le message d'erreur suivant indique que vous avez créé la base de données à l'aide de la console Amazon RDS ou du AWS CLI. Vous ne pouvez utiliser la procédure rdsadmin.drop_database stockée que si vous avez créé la base de données en appelant la procédure rdsadmin.create_database stockée.

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

Pour supprimer une base de données que vous avez créée à l'aide de la console Amazon RDS ou du AWS CLI, utilisez un client pour vous connecter à la base de données, puis exécutez la commande appropriée.

Erreurs rdsadmin.reactivate_database

L'erreur suivante peut se produire lorsque vous appelez la procédure rdsadmin.reactivate_database stockée.

Erreur Message d’erreur

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.

Impossible d'allouer de la mémoire partagée

Le message d'erreur suivant indique que la procédure stockée n'a pas réussi à activer une base de données car l'instance de base de données ne dispose pas de suffisamment de mémoire.

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

Augmentez la mémoire de votre instance de base de données, puis appelez à nouveau la procédure rdsadmin.activate_database stockée. Pour plus d'informations sur l'utilisation de la mémoire et les recommandations relatives aux bases de données, consultezPlusieurs bases de données sur une instance de base de données Amazon RDS pour DB2.

Impossible de réactiver en raison de processus en cours

Le message d'erreur suivant indique que la procédure stockée n'a pas pu réactiver une base de données car elle est en cours d'exécution. rdsadmin.create_database rdsadmin.restore_database

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

Patientez quelques minutes, puis appelez à nouveau la procédure rdsadmin.reactivate_database stockée.

Erreurs rdsadmin.restore_database

Les erreurs suivantes peuvent se produire lorsque vous appelez la procédure rdsadmin.restore_database stockée :

Erreur Message d’erreur

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.

Espace disque insuffisant

Le message d'erreur suivant indique que l'espace disque de votre instance de base de données est insuffisant pour restaurer votre base de données :

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.

L'espace libre sur votre instance de base de données doit être plus du double de la taille de votre image de sauvegarde. Si votre image de sauvegarde est compressée, l'espace libre sur votre instance de base de données doit être plus du triple de la taille de votre image de sauvegarde. Pour de plus amples informations, veuillez consulter Augmentation de la capacité de stockage d'une instance de base de données.

Augmentez votre espace disque, puis appelez à nouveau la procédure rdsadmin.restore_database stockée. Pour confirmer que la base de données a été restaurée, appelez la fonction rdsadmin.list_databases définie par l'utilisateur et vérifiez que la base de données restaurée est répertoriée.

Erreur interne

Le message d'erreur suivant indique que la procédure stockée a rencontré une erreur interne :

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

Contactez AWS Support.

Les routines non clôturées ne sont pas autorisées

Le message d'erreur suivant indique que votre base de données contient des routines non clôturées :

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 pour DB2 ne prend pas en charge les routines non clôturées. Supprimez les routines non clôturées de la base de données source, puis appelez rdsadmin.restore_database à nouveau. Pour confirmer que la base de données a été restaurée, appelez la fonction rdsadmin.list_databases définie par l'utilisateur et vérifiez que la base de données restaurée est répertoriée. Pour de plus amples informations, veuillez consulter Routines non clôturées.

Tablespaces non restaurés

Le message d'erreur suivant indique que RDS for Db2 a correctement restauré votre base de données, mais n'a pas pu restaurer un ou plusieurs tablespaces :

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 pour DB2 ne prend pas en charge le stockage non automatique. Convertissez le stockage non automatique en stockage automatique, puis appelez rdsadmin.restore_database à nouveau. Pour plus d'informations, consultez la section Conversion d'une base de données de stockage non automatique pour utiliser le stockage automatique dans la IBM Db2 documentation.

Les bases de données avec stockage non automatique de SMS nécessitent une restauration manuelle. Si votre base de données contient un stockage non automatique des SMS, contactez le AWS Support.

Pour plus d'informations sur le stockage non automatique et les migrations ponctuelles, consultezTablespaces de stockage non automatiques pendant la migration.

Erreurs rdsadmin.update_db_param

L'erreur suivante peut se produire lorsque vous appelez la procédure rdsadmin.update_db_param stockée.

Erreur Message d’erreur

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

Paramètre non pris en charge ou non modifiable

Le message d'erreur suivant indique que vous avez essayé de modifier un paramètre de configuration de base de données qui n'est pas pris en charge ou qui n'est pas modifiable.

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

Vous pouvez voir quels paramètres sont modifiables en consultant vos groupes de paramètres. Pour de plus amples informations, veuillez consulter Affichage des valeurs de paramètres pour un groupe de paramètres de base de données dans RDSAmazon.