Solução de problemas do Amazon RDS para Db2 - Amazon Relational Database Service

Solução de problemas do Amazon RDS para Db2

O conteúdo a seguir pode ajudar a solucionar problemas que você encontrar com o RDS para Db2.

Para ter mais informações sobre como solucionar problemas gerais do Amazon RDS, consulte Solução de problemas para o Amazon RDS.

Erro de conexão de banco de dados

A mensagem de erro a seguir indica que um banco de dados falhou na conexão porque o servidor não tem memória suficiente.

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

Aumente a memória da instância de banco de dados e tente se conectar ao banco de dados novamente. Para obter informações sobre o uso da memória e recomendações para bancos de dados, consulte Vários bancos de dados em uma instância de banco de dados do Amazon RDS para Db2. Para obter informações sobre como atualizar a memória de um banco de dados do RDS para Db2, consulte rdsadmin.update_db_param.

Erro de E/S de arquivo

Você pode encontrar um erro de E/S de arquivo por diferentes motivos, como quando você usa o comando LOAD ou chama o procedimento armazenado rdsadmin.restore_database.

Neste exemplo, você executa o comando LOAD a seguir.

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

O comando LOAD exibe a seguinte mensagem:

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 visualizar a mensagem de erro, execute o comando SQL conforme sugerido na resposta anterior. SELECT SQLCODE, MSG FROM TABLE(SYSPROC.ADMIN_GET_MSGS('1594987316_285548770')) AS MSG exibe a seguinte mensagem:

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

Os logs de diagnóstico do Db2 contêm um arquivo de log semelhante ao seguinte:

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

Esse erro de E/S do arquivo pode se originar de vários cenários diferentes. Por exemplo, a VPC associada ao grupo de segurança usado para criar a instância de banco de dados do RDS para Db2 pode não ter um endpoint do gateway do Amazon S3. Esse endpoint é essencial para permitir que o RDS para Db2 acesse o Amazon S3. Se a instância de banco de dados do RDS para Db2 estiver em sub-redes privadas, será necessário um endpoint do gateway do Amazon S3. É possível especificar se a instância de banco de dados usa sub-redes privadas ou públicas configurando grupos de sub-redes do Amazon RDS. Para obter mais informações, consulte Trabalhar com grupos de sub-redes de banco de dados.

Etapa 1: Criar um endpoint do gateway da VPC para o Amazon S3

Para que a instância de banco de dados do RDS para Db2 interaja com o Amazon S3, crie uma VPC e, em seguida, um endpoint do gateway do Amazon S3 para uso de sub-redes privadas.

Como criar um endpoint do gateway da VPC para o S3
  1. Crie uma VPC. Para obter mais informações, consulte Crie uma VPC no Guia do usuário da Amazon Virtual Private Cloud.

  2. Crie um endpoint do gateway do Amazon S3 para uso de sub-redes privadas. Para obter mais informações, consulte Gateway endpoints no Guia do AWS PrivateLink.

Etapa 2: Confirmar se o endpoint do gateway da VPC para o Amazon S3 existe

Confirme se você criou com sucesso um endpoint do gateway do Amazon S3 usando o AWS Management Console ou a AWS CLI.

Como confirmar um endpoint do gateway do Amazon S3
  1. Faça login no AWS Management Console e abra o console da Amazon VPC em https://console.aws.amazon.com/vpc.

  2. No canto superior direito do console, escolha a Região da AWS da VPC.

  3. Selecione a VPC que você criou.

  4. Na guia Mapa de recursos, em Conexões de rede, confirme se um endpoint do gateway do Amazon S3 está listado.

Para confirmar um endpoint do gateway do Amazon S3, execute o comando describe-vpc-endpoints. No exemplo a seguir, substitua vpc_id pelo ID da VPC, region pela sua Região da AWS, e profile pelo seu nome de perfil.

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

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

Este comando produz uma saída semelhante ao exemplo a seguir se existir um endpoint do gateway do Amazon S3.

[ "vpce-0ea810434ff0b97e4" ]

Este comando produz uma saída semelhante ao exemplo a seguir se não existir um endpoint do gateway do Amazon S3.

[]

Se você não vir um endpoint do gateway do Amazon S3 listado, então siga a Etapa 1: Criar um endpoint do gateway da VPC para o Amazon S3.

Erros de procedimentos armazenados

Esta sessão descreve vários erros exibidos ao chamar procedimentos armazenados e como resolvê-los.

Categoria Erros de procedimentos armazenados

Bancos de dados

Erros rdsadmin.activate_database

Bancos de dados

Erros rdsadmin.create_database

Bancos de dados

Erros rdsadmin.deactivate_database

Bancos de dados

Erros rdsadmin.drop_database

Bancos de dados

Erros rdsadmin.reactivate_database

Bancos de dados

erros rdsadmin.restore_database

Bancos de dados

Erros rdsadmin.update_db_param

Tablespaces

Erros rdsadmin.alter_tablespace

Erros rdsadmin.activate_database

Os erros a seguir podem ocorrer quando o procedimento armazenado rdsadmin.activate_database é chamado.

Erro Mensagem de erro

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.

Falha ao alocar memória compartilhada

A mensagem de erro a seguir indica que o procedimento armazenado falhou ao ativar um banco de dados porque a instância de banco de dados não tem memória suficiente.

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

Aumente a memória da instância de banco de dados e, em seguida, chame o procedimento armazenado rdsadmin.activate_database novamente. Para obter informações sobre o uso da memória e recomendações para bancos de dados, consulte Vários bancos de dados em uma instância de banco de dados do Amazon RDS para Db2.

Não é possível ativar devido a processos em execução

A mensagem de erro a seguir indica que o procedimento armazenado não pôde ativar um banco de dados porque o procedimento armazenado rdsadmin.create_database ou rdsadmin.restore_database está em execução.

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

Aguarde alguns minutos e, depois, chame o procedimento armazenado rdsadmin.activate_database novamente.

Erros rdsadmin.alter_tablespace

Os erros a seguir podem ocorrer quando o procedimento armazenado rdsadmin.alter_tablespace é chamado.

Erro Mensagem de erro

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.

Instrução não válida

A mensagem de erro a seguir indica que o procedimento armazenado combinou parâmetros opcionais mutuamente exclusivos com outros parâmetros opcionais. Os parâmetros opcionais reduce_max, reduce_stop, reduce_value, lower_high_water, lower_high_water_stop e switch_online para o procedimento armazenado rdsadmin.alter_tablespace são mutuamente exclusivos. Não é possível combiná-los com nenhum outro parâmetro opcional, como buffer_pool_name, no procedimento armazenado rdsadmin.alter_tablespace. Se você combiná-los, ao chamar a função rdsadmin.get_task_status definida pelo usuário, o Db2 exibirá essa mensagem de erro.

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"

Chame o procedimento armazenado rdsadmin.alter_tablespace novamente sem combinar parâmetros opcionais mutuamente exclusivos com outros parâmetros opcionais. Depois, chame a função definida pelo usuário rdsadmin.get_task_status. Para ter mais informações, consulte rdsadmin.alter_tablespace e rdsadmin.get_task_status.

valor de tablespace_prefetch_size inválido

A mensagem de erro a seguir indica que você não definiu tablespace_prefetch_size como AUTOMATIC ou um valor numérico não positivo. Por exemplo, você tentou configurá-lo como testinput.

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

Chame o procedimento armazenado rdsadmin.alter_tablespace novamente e defina tablespace_prefetch_size como AUTOMATIC ou um valor numérico não positivo.

valor numérico de tablespace_prefetch_size inválido

A mensagem de erro a seguir indica que você definiu tablespace_prefetch_size como um valor numérico maior que 32767.

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

Chame o procedimento armazenado rdsadmin.alter_tablespace novamente e defina tablespace_prefetch_size como um valor numérico positivo diferente de zero menor ou igual a 32767.

O parâmetro não pode ser usado com tablespace_prefetch_size

A mensagem de erro a seguir indica que você tentou usar tablespace_prefetch_size com um parâmetro incompatível.

You can't use tablespace_prefetch_size with {parameter}.

Chame o procedimento armazenado rdsadmin.alter_tablespace novamente e use somente tablespace_prefetch_size com parâmetros compatíveis. Consulte informações sobre parâmetros que podem ser usados com tablespace_prefetch_size em rdsadmin.alter_tablespace.

Falha na alteração do espaço de tabela

A mensagem de erro a seguir indica que você tentou alterar um espaço de tabela.

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

Erros rdsadmin.create_database

O erro a seguir pode ocorrer quando o procedimento armazenado rdsadmin.create_database é chamado.

Erro Mensagem de erro

Failed to allocate shared memory

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

Falha ao alocar memória compartilhada

A mensagem de erro a seguir indica que o procedimento armazenado falhou ao criar um banco de dados porque a instância de banco de dados não tem memória suficiente.

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

Aumente a memória da instância de banco de dados e, em seguida, chame o procedimento armazenado rdsadmin.create_database novamente. Para obter informações sobre o uso da memória e recomendações para bancos de dados, consulte Vários bancos de dados em uma instância de banco de dados do Amazon RDS para Db2.

Para confirmar que o banco de dados foi criado, chame a função rdsadmin.list_databases definida pelo usuário e verifique se o novo banco de dados está listado.

Erros rdsadmin.deactivate_database

O erro a seguir pode ocorrer quando o procedimento armazenado rdsadmin.deactivate_database é chamado.

Erro Mensagem de erro

Unable to deactivate because of running processes

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

Não é possível desativar devido a processos em execução

A mensagem de erro a seguir indica que o procedimento armazenado não pôde desativar um banco de dados porque o procedimento armazenado rdsadmin.create_database ou rdsadmin.restore_database está em execução.

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

Aguarde alguns minutos e, depois, chame o procedimento armazenado rdsadmin.deactivate_database novamente.

Erros rdsadmin.drop_database

Os erros a seguir podem ocorrer quando o procedimento armazenado rdsadmin.drop_database é chamado.

Erro Mensagem de erro

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

O nome do banco de dados não existe

A mensagem de erro a seguir indica que você transmitiu um nome de banco de dados incorreto no procedimento armazenado rdsadmin.drop_database.

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

Chame o procedimento armazenado rdsadmin.drop_database novamente com um nome de banco de dados correto. Para confirmar que o banco de dados foi descartado, chame a função rdsadmin.list_databases definida pelo usuário e verifique se o banco de dados descartado não está listado.

Status de retorno = 0

A mensagem de erro a seguir indica que o procedimento armazenado não pôde ser concluído.

Return Status = 0

Depois de receber Return Status = 0, chame a função definida pelo usuário rdsadmin.get_task_status.

Não é permitido descartar o banco de dados

A mensagem de erro a seguir indica que você criou o banco de dados usando o console do Amazon RDS ou a AWS CLI. Só é possível usar o procedimento armazenado rdsadmin.drop_database se você criou o banco de dados chamando o procedimento armazenado 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 descartar um banco de dados que foi criado usando o console do Amazon RDS ou a AWS CLI, use um cliente para se conectar ao banco de dados e execute o comando apropriado.

Erros rdsadmin.reactivate_database

O erro a seguir pode ocorrer quando o procedimento armazenado rdsadmin.reactivate_database é chamado.

Erro Mensagem de erro

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.

Falha ao alocar memória compartilhada

A mensagem de erro a seguir indica que o procedimento armazenado falhou ao ativar um banco de dados porque a instância de banco de dados não tem memória suficiente.

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

Aumente a memória da instância de banco de dados e, em seguida, chame o procedimento armazenado rdsadmin.activate_database novamente. Para obter informações sobre o uso da memória e recomendações para bancos de dados, consulte Vários bancos de dados em uma instância de banco de dados do Amazon RDS para Db2.

Não é possível reativar devido a processos em execução

A mensagem de erro a seguir indica que o procedimento armazenado não pôde reativar um banco de dados porque o procedimento armazenado rdsadmin.create_database ou rdsadmin.restore_database está em execução.

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

Aguarde alguns minutos e, depois, chame o procedimento armazenado rdsadmin.reactivate_database novamente.

erros rdsadmin.restore_database

Os seguintes erros podem ocorrer quando você chama o procedimento armazenado rdsadmin.restore_database:

Erro Mensagem de erro

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.

Espaço em disco insuficiente

A mensagem de erro a seguir indica que a instância de banco de dados não tem espaço em disco suficiente para restaurar o banco de dados:

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.

O espaço livre na instância de banco de dados deve ser mais de duas vezes maior que o tamanho da imagem de backup. Se a imagem de backup estiver compactada, o espaço livre na instância de banco de dados deverá ser mais de três vezes maior que o tamanho da imagem de backup. Para obter mais informações, consulte Aumento da capacidade de armazenamento da instância de banco de dados.

Aumente o espaço em disco e, em seguida, chame o procedimento armazenado rdsadmin.restore_database novamente. Para confirmar que o banco de dados foi restaurado, chame a função rdsadmin.list_databases definida pelo usuário e verifique se o banco de dados restaurado está listado.

Erro interno

A mensagem de erro a seguir indica que o procedimento armazenado encontrou um erro interno:

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

Entrar em contato com o AWS Support.

Rotinas não protegidas não são permitidas

A seguinte mensagem de erro indica que o banco de dados contém rotinas não protegidas:

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

O RDS para Db2 não permite rotinas não protegidas. Remova as rotinas não protegidas do banco de dados de origem e chame rdsadmin.restore_database novamente. Para confirmar que o banco de dados foi restaurado, chame a função rdsadmin.list_databases definida pelo usuário e verifique se o banco de dados restaurado está listado. Para obter mais informações, consulte Rotinas não protegidas.

Espaços de tabela não restaurados

A seguinte mensagem de erro indica que o RDS para Db2 restaurou com sucesso o banco de dados, mas não conseguiu restaurar um ou mais espaços de tabela:

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.

O RDS para Db2 não permite armazenamento não automático. Converta o armazenamento não automático em automático e chame rdsadmin.restore_database novamente. Consulte mais informações em Converting a nonautomatic storage database to use automatic storage na documentação do IBM Db2.

Bancos de dados com armazenamento não automático de SMS exigem restauração manual. Se o seu banco de dados tiver armazenamento não automático de SMS, entre em contato com o AWS Support.

Consulte informações sobre o armazenamento não automático e migrações únicas em Espaços de tabela de armazenamento não automáticos durante a migração.

Erros rdsadmin.update_db_param

O erro a seguir pode ocorrer quando o procedimento armazenado rdsadmin.update_db_param é chamado.

Erro Mensagem de erro

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

Parâmetro incompatível ou não modificável

A mensagem de erro a seguir indica que você tentou modificar um parâmetro de configuração de banco de dados que não é compatível ou não é modificável.

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

É possível ver quais parâmetros são modificáveis visualizando os grupos de parâmetros. Para obter mais informações, consulte Visualizar valores de parâmetros para um grupo de parâmetros de banco de dados no Amazon RDS.