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 E/S de arquivo
Ao usar o comando LOAD
, você pode encontrar um erro de E/S do arquivo. Por exemplo, execute o seguinte comando 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 ')"
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 instância do banco de dados do RDS para Db2 e o bucket do Amazon S3 podem não usar a mesma VPC ou estar na mesma Região da AWS. Independentemente do cenário, a solução é a mesma: é necessário criar um endpoint de gateway da VPC e, depois, adicionar regras de saída ao grupo de segurança.
Tópicos
Etapa 1: Criar um endpoint do gateway da VPC para o Amazon S3
Quando você cria pela primeira vez uma instância de banco de dados do RDS para Db2, o Amazon RDS cria a instância de banco de dados com três sub-redes privadas, um grupo de segurança e nenhum acesso público. O grupo de segurança impede que qualquer tráfego do S3 saia da sub-rede privada.
Para permitir o tráfego entre a instância de banco de dados do RDS para Db2 e o S3, é necessário criar um endpoint de gateway que se conecte ao S3. Ao criar o endpoint, selecione a tabela de rotas a ser associada a esse endpoint.
nota
Se você encontrar um erro ao criar o endpoint da VPC que informa que a tabela de rotas selecionada já tem uma rota, escolha uma das seguintes opções:
-
Crie uma nova VPC. Depois, ao criar o endpoint do gateway, selecione a nova VPC. Para obter mais informações, consulte Criar uma VPC no Guia do usuário da Amazon VPC.
-
Crie o endpoint do gateway sem selecionar uma tabela de rotas. Depois de criar o endpoint do gateway, crie uma tabela de rotas e associe-a ao endpoint do gateway da VPC. Para ter mais informações, consulte Criar uma tabela de rotas personalizada e Controle o tráfego que entra na sua VPC com uma tabela de rotas de gateway no Guia do usuário da Amazon VPC.
Para ter mais informações, consulte Create a gateway endpoint no Guia do usuário da Amazon VPC.
Etapa 2: Adicionar regras de saída ao grupo de segurança
Esta etapa pressupõe que você tenha criado um endpoint de gateway no Etapa 1: Criar um endpoint do gateway da VPC para o Amazon S3. Nesta etapa, você adicionará regras de saída a uma sub-rede privada no grupo de segurança da VPC. Essas regras de saída permitem tráfego HTTP e HTTPS.
Para o valor Destino, abra o menu de contexto (clique com o botão direito do mouse) para Pesquisar e, em Listas de prefixos, selecione o prefixo do endpoint do gateway que você criou. O formato do prefixo é com.amazonaws.
, por exemplo, Região da AWS
.s3com.amazonaws.us-west-2.s3
.
Para ter mais informações, consulte Security group rules no Guia do usuário da Amazon VPC.
Solução de problemas de erros de procedimentos armazenados
Este tópico descreve vários erros exibidos ao chamar procedimentos armazenados e como resolvê-los.
Categoria | Erros de procedimentos armazenados |
---|---|
Bancos de dados |
erros rdsadmin.restore_database
Os seguintes erros podem ocorrer quando você chama o procedimento armazenado rdsadmin.restore_database:
Erro | Mensagem de erro |
---|---|
|
|
|
|
|
|
Tablespaces 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 ter mais informações, consulte Aumento da capacidade de armazenamento da instância de banco de dados.
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 ter 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
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.