Resolución de problemas de Amazon RDS para Db2 - Amazon Relational Database Service

Resolución de problemas de Amazon RDS para Db2

El siguiente contenido puede ayudarle a solucionar algunos problemas que puede encontrarse con RDS para Db2.

Para obtener más información acerca de cómo solucionar problemas generales de Amazon RDS, consulte Solución de problemas de Amazon RDS.

Error de conexión a la base

El siguiente mensaje de error indica que una base de datos no se ha podido conectar porque el servidor no tiene suficiente memoria.

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

Aumente la memoria de la instancia de base de datos y, a continuación, intente conectarse de nuevo a la base de datos. Para obtener información sobre el uso de la memoria y las recomendaciones para las bases de datos, consulte Varias bases de datos en una instancia de base de datos de Amazon RDS para Db2. Para obtener más información sobre cómo actualizar la memoria de una base de datos de RDS para Db2, consulte rdsadmin.update_db_param.

Error de E/S de archivos

Es posible que se produzca un error de E/S en un archivo por distintos motivos; por ejemplo, al utilizar el comando LOAD o al llamar al procedimiento rdsadmin.restore_database almacenado.

En este ejemplo, puede ejecutar el comando LOAD siguiente:

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

El comando LOAD devuelve el siguiente mensaje:

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

Para ver el mensaje de error, ejecute el comando de SQL como se sugiere en la respuesta anterior. SELECT SQLCODE, MSG FROM TABLE(SYSPROC.ADMIN_GET_MSGS('1594987316_285548770')) AS MSG devuelve el siguiente mensaje:

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

Los registros de diagnóstico de Db2 contienen un archivo de registro similar al siguiente:

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

Este error de E/S del archivo puede deberse a varios casos distintos. Por ejemplo, es posible que la VPC asociada al grupo de seguridad utilizado para crear la instancia de base de datos de RDS para Db2 no tenga un punto de conexión de puerta de enlace de Amazon S3. El punto de conexión es esencial para permitir de que RDS para Db2 acceda a Amazon S3. Si la instancia de base de datos de RDS para Db2 está en subredes privadas, necesitará un punto de conexión de puerta de enlace de Amazon S3. Puede especificar si su instancia de base de datos utiliza subredes públicas o privadas configurando los grupos de subredes de Amazon RDS. Para obtener más información, consulte Uso de los grupos de subredes de base de datos.

Paso 1: crear un punto de conexión de puerta de enlace de VPC para Amazon S3

Para que la instancia de base de datos de RDS para Db2 interactúe con Amazon S3, cree una VPC y, a continuación, un punto de conexión de puerta de enlace de Amazon S3 para que lo utilicen las subredes privadas.

Creación de un punto de conexión de puerta de enlace de VPC para S3
  1. Cree una VPC. Para obtener más información, consulte Creación de una VPC en la Guía del usuario de Amazon Virtual Private Cloud.

  2. Cree un punto de conexión de puerta de enlace de Amazon S3 para que lo utilicen las subredes privadas. Para obtener más información, consulte Puntos de conexión de la puerta de enlace en la Guía de AWS PrivateLink.

Paso 2: confirme que existe el punto de conexión de la puerta de enlace de Amazon S3

Confirme que ha creado correctamente un punto de conexión de la puerta de enlace de Amazon S3 mediante el AWS Management Console o el AWS CLI.

Confirmación de un punto de conexión de puerta de enlace de Amazon S3
  1. Inicie sesión en la AWS Management Console y abra la consola de Amazon VPC en https://console.aws.amazon.com/vpc.

  2. En la esquina superior derecha de la consola, elija la Región de AWS de su VPC.

  3. Seleccione la VPC que ha creado.

  4. En la pestaña Mapa de recursos, en Conexiones de red, confirme que aparezca un punto de conexión de puerta de enlace de Amazon S3.

Para confirmar un punto de conexión de la puerta de enlace de Amazon S3, ejecute el comando describe-vpc-endpoints. En el siguiente ejemplo, sustituya vpc_id por el ID de VPC, la región por su Región de AWSy el perfil por su nombre de perfil.

Para Linux, macOS o 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

Para 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

El resultado de este comando debería ser similar al siguiente ejemplo si existe un punto de conexión de la puerta de enlace de Amazon S3.

[ "vpce-0ea810434ff0b97e4" ]

El resultado de este comando debería ser similar al siguiente ejemplo si no existe un punto de conexión de la puerta de enlace de Amazon S3.

[]

Si no ve ningún punto de conexión de la puerta de enlace de Amazon S3 en la lista, entonces Paso 1: crear un punto de conexión de puerta de enlace de VPC para Amazon S3.

Errores en los procedimientos almacenados

En esta sección se describen varios errores que se muestran al llamar a los procedimientos almacenados y cómo solucionarlos.

Errores de rdsadmin.activate_database

Los siguientes errores pueden producirse al llamar al procedimiento almacenado .

Error Mensaje de error

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.

No se ha podido asignar la memoria compartida

El siguiente mensaje de error indica que el procedimiento almacenado no ha podido activar la base de datos porque la instancia de base de datos no tiene suficiente memoria.

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

Aumente la memoria de la instancia de base de datos y, a continuación, vuelva a llamar al procedimiento rdsadmin.activate_database almacenado. Para obtener información sobre el uso de la memoria y las recomendaciones para las bases de datos, consulte Varias bases de datos en una instancia de base de datos de Amazon RDS para Db2.

No se puede activar debido a procesos en ejecución

El siguiente mensaje de error indica que el procedimiento almacenado no ha podido activar una base de datos porque el procedimiento almacenado rdsadmin.create_database o rdsadmin.restore_database se está ejecutando.

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

Espere unos minutos y vuelva a llamar al procedimiento almacenado rdsadmin.activate_database.

Errores de rdsadmin.alter_tablespace

Los siguientes errores pueden producirse al llamar al procedimiento almacenado rdsadmin.alter_tablespace.

Error Mensaje de error

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.

La instrucción no es válida

El siguiente mensaje de error indica que el procedimiento almacenado combinó parámetros opcionales mutuamente excluyentes con otros parámetros opcionales. Los parámetros opcionales reduce_max, reduce_stop, reduce_value, lower_high_water, lower_high_water_stop y switch_online del procedimiento almacenado rdsadmin.alter_tablespace son mutuamente excluyentes. No puede combinarlos con ningún otro parámetro opcional, por ejemplo buffer_pool_name, en el procedimiento almacenado rdsadmin.alter_tablespace. Si los combina, al llamar a la función rdsadmin.get_task_status definida por el usuario, Db2 devolverá este mensaje de error.

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"

Vuelva a llamar al procedimiento almacenado rdsadmin.alter_tablespace sin combinar parámetros opcionales mutuamente excluyentes con otros parámetros opcionales. A continuación, llame a la función rdsadmin.get_task_status definida por el usuario. Para obtener más información, consulte rdsadmin.alter_tablespace y rdsadmin.get_task_status.

Valor de tablespace_prefetch_size no válido

El siguiente mensaje de error indica que no ha establecido tablespace_prefetch_size en AUTOMATIC o un valor numérico no positivo. Por ejemplo, ha intentado establecerlo en testinput.

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

Vuelva a llamar al procedimiento almacenado rdsadmin.alter_tablespace y establezca tablespace_prefetch_size en AUTOMATIC o en un valor numérico no positivo.

El valor numérico tablespace_prefetch_size no es válido

El siguiente mensaje de error indica que ha establecido tablespace_prefetch_size en un valor numérico superior a 32767.

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

Vuelva a llamar al procedimiento almacenado rdsadmin.alter_tablespace y establezca tablespace_prefetch_size en un valor numérico positivo que no sea cero inferior o igual a 32767.

El parámetro no se puede usar con tablespace_prefetch_size

El siguiente mensaje de error indica que intentó utilizar tablespace_prefetch_size con un parámetro no compatible.

You can't use tablespace_prefetch_size with {parameter}.

Vuelva a llamar al procedimiento almacenado rdsadmin.alter_tablespace y use tablespace_prefetch_size solo con parámetros compatibles. Para obtener información acerca de parámetros que puede usar con tablespace_prefetch_size, consulte rdsadmin.alter_tablespace.

Error al cambiar el espacio de tablas

El siguiente mensaje de error indica que intentó modificar un espacio de tabla.

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

Errores de rdsadmin.create_database

El siguiente error puede producirse al llamar al procedimiento almacenado rdsadmin.create_database.

Error Mensaje de error

Failed to allocate shared memory

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

No se ha podido asignar la memoria compartida

El siguiente mensaje de error indica que el procedimiento almacenado no ha podido crear la base de datos porque la instancia de base de datos no tiene suficiente memoria.

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

Aumente la memoria de la instancia de base de datos y, a continuación, vuelva a llamar al procedimiento rdsadmin.create_database almacenado. Para obtener información sobre el uso de la memoria y las recomendaciones para las bases de datos, consulte Varias bases de datos en una instancia de base de datos de Amazon RDS para Db2.

Para confirmar que se ha creado la base de datos, llame a la función rdsadmin.list_databases definida por el usuario y compruebe que la nueva base de datos aparezca en la lista.

Errores de rdsadmin.deactivate_database

El siguiente error puede producirse al llamar al procedimiento almacenado .

Error Mensaje de error

Unable to deactivate because of running processes

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

No se puede desactivar debido a procesos en ejecución

El siguiente mensaje de error indica que el procedimiento almacenado no ha podido desactivar una base de datos porque el procedimiento almacenado rdsadmin.create_database o rdsadmin.restore_database se está ejecutando.

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

Espere unos minutos y vuelva a llamar al procedimiento almacenado rdsadmin.deactivate_database.

Errores de rdsadmin.drop_database

Los siguientes errores pueden producirse al llamar al procedimiento almacenado rdsadmin.drop_database.

Error Mensaje de error

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

El nombre de la base de datos no existe

El siguiente mensaje de error indica que ha pasado un nombre de base de datos incorrecto en el procedimiento almacenado rdsadmin.drop_database.

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

Vuelva a llamar al procedimiento almacenado rdsadmin.drop_database con un nombre de base de datos correcto. Para confirmar que se ha descartado la base de datos, llame a la función rdsadmin.list_databases definida por el usuario y compruebe que la nueva base de datos descartada no aparezca en la lista.

Estado de devolución = 0

El siguiente mensaje de error indica que no se ha podido completar el procedimiento almacenado.

Return Status = 0

Una vez recibido Return Status = 0, llame a la función rdsadmin.get_task_status definida por el usuario.

No se permite borrar la base de datos

El siguiente mensaje de error indica que creó la base de datos mediante la consola de Amazon RDS o mediante la AWS CLI. Solo puede utilizar el procedimiento almacenado rdsadmin.drop_database si ha creado la base de datos llamando al procedimiento almacenado 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

Para eliminar una base de datos que haya creado mediante la consola de Amazon RDS o la AWS CLI, utilice un cliente para conectarse a la base de datos y, a continuación, ejecute el comando correspondiente.

Errores de rdsadmin.reactivate_database

El siguiente error puede producirse al llamar al procedimiento almacenado .

Error Mensaje de error

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.

No se ha podido asignar la memoria compartida

El siguiente mensaje de error indica que el procedimiento almacenado no ha podido activar la base de datos porque la instancia de base de datos no tiene suficiente memoria.

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

Aumente la memoria de la instancia de base de datos y, a continuación, vuelva a llamar al procedimiento rdsadmin.activate_database almacenado. Para obtener información sobre el uso de la memoria y las recomendaciones para las bases de datos, consulte Varias bases de datos en una instancia de base de datos de Amazon RDS para Db2.

No se puede reactivar debido a procesos en ejecución

El siguiente mensaje de error indica que el procedimiento almacenado no ha podido reactivar una base de datos porque el procedimiento almacenado rdsadmin.create_database o rdsadmin.restore_database se está ejecutando.

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

Espere unos minutos y vuelva a llamar al procedimiento almacenado rdsadmin.reactivate_database.

Errores de rdsadmin.restore_database

Los siguientes errores pueden producirse al llamar al procedimiento almacenado rdsadmin.restore_database.

Error Mensaje de error

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.

Espacio en disco insuficiente

El siguiente mensaje de error indica que la instancia de base de datos no tiene suficiente espacio en disco para restaurar la base de datos:

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.

El espacio libre en la instancia de base de datos debe ser más del doble que el tamaño de la imagen de copia de seguridad. Si la imagen de copia de seguridad está comprimida, el espacio libre en la instancia de base de datos debe ser más del triple que el tamaño de la imagen de copia de seguridad. Para obtener más información, consulte Aumento de la capacidad de almacenamiento de la instancia de base de datos.

Aumente el espacio en disco y, a continuación, vuelva a ejecutar el procedimiento rdsadmin.restore_database almacenado. Para confirmar que se ha restaurado la base de datos, llame a la función rdsadmin.list_databases definida por el usuario y compruebe que la base de datos restaurada aparezca en la lista.

Error interno

El siguiente mensaje de error indica que el procedimiento almacenado ha detectado un error interno:

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

Contacte con AWS Support.

No se permiten rutinas no restringidas

El siguiente mensaje de error indica que la base de datos incluye rutinas no restringidas:

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 para Db2 no admite la creación de rutinas no restringidas. Elimine las rutinas no restringidas de la base de datos de origen y, a continuación, vuelva a llamar a rdsadmin.restore_database. Para confirmar que se ha restaurado la base de datos, llame a la función rdsadmin.list_databases definida por el usuario y compruebe que la base de datos restaurada aparezca en la lista. Para obtener más información, consulte Rutinas no restringidas.

No se han restaurado los espacios de tablas

El siguiente mensaje de error indica que RDS para Db2 ha restaurado correctamente la base de datos, pero no ha podido restaurar uno o varios espacios de tabla:

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 para Db2 no admite almacenamiento no automático. Convierta el almacenamiento no automático en almacenamiento automático y, a continuación, vuelva a llamar a rdsadmin.restore_database. Para obtener más información, consulte la sección Converting a nonautomatic storage database to use automatic storage en la documentación de IBM Db2.

Las bases de datos con almacenamiento de SMS no automático requieren una restauración manual. Si su base de datos tiene almacenamiento de SMS no automático, póngase en contacto con AWS Support.

Para obtener información sobre las migraciones únicas y el almacenamiento no automático, consulte Espacios de tablas de almacenamiento no automáticos durante la migración.

Errores de rdsadmin.update_db_param

El siguiente error puede producirse al llamar al procedimiento almacenado rdsadmin.update_db_param.

Error Mensaje de error

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

El parámetro no es compatible ni se puede modificar

El siguiente mensaje de error indica que intentó modificar un parámetro de configuración de base de datos que no es compatible o no se puede modificar.

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

Puede ver qué parámetros se pueden modificar consultando sus grupos de parámetros. Para obtener más información, consulte Visualización de los valores de parámetros de un grupo de parámetros de base de datos en Amazon RDS.