Este tópico descreve os códigos de erro DTS-RETRY-ERR-0701 a DTS-RETRY-ERR-0800 que podem ocorrer ao configurar ou execute uma tarefa do DTS, além de suas causas e soluções.
Neste tópico, a expressão regular (.*)? indica variáveis nas mensagens de erro.
Erros do maxcompute
DTS-RETRY-ERR-0701: There are not any columns in table (.*)?
A tabela maxcompute de destino não possui colunas definidas. O DTS não pode gravar dados em uma tabela sem colunas. Isso geralmente ocorre porque as informações das colunas não foram configuradas corretamente após a crie da tabela.
Solução
Verifique e corrija o esquema da tabela maxcompute de destino para garantir que as colunas necessárias estejam definidas. Em seguida, reinicie a tarefa do DTS.
Exemplo de erro
DTS-100047: retry 120 times, 1200 seconds, which exceed the supposed 1200 seconds cause: RecoverableAnyAllException: transaction-replicate: DTS-70004: execute upload failed, may try it again CriticalAnyAllException: framework: DTS-30018: SchemaManager: There are not any columns in table xxx
Erros do SQL Server
DTS-RETRY-ERR-0702: There is insufficient system memory in resource pool (.*)? to run this query.
O pool de recursos interno da instância do SQL Server de destino não tem memória suficiente para execute a consulta enviada pelo DTS. Isso indica que o servidor de banco de dados está com recursos do sistema insuficientes.
Solução
Verifique o uso de memória e a integridade geral da instância do SQL Server de destino. Otimize a configuração do banco de dados, encerre serviços não essenciais ou aumente a memória do servidor conforme necessário. Depois que os recursos da instância voltarem ao normal, reinicie a tarefa do DTS.
Exemplo de erro
com.microsoft.sqlserver.jdbc.SQLServerException: There is insufficient system memory in resource pool 'xxx' to run this query.
DTS-RETRY-ERR-0706: Transaction (Process ID (.*)?) was deadlocked on lock | communication buffer resources with another process and has been chosen as the deadlock victim. Rerun the transaction.
Ocorreu um deadlock entre o DTS e outra transação durante a gravação de dados na instância do SQL Server de destino. Deadlocks geralmente são esporádicos e ocorrem sob alta concorrência no banco de dados.
Solução
Verifique se há aplicativos ou consultas no banco de dados de destino que mantenham bloqueios por longos períodos e otimize-os. Em seguida, reinicie a tarefa do DTS.
Exemplo de erro
DTS-70003: 12 execute transaction has excess max transaction retry time [64] cause:transaction-replicate:
DTS-70004: EXEC statement failed, may try it again cause: RecoverableAnyAllException: transaction-replicate: DTS-70004: EXEC statement failed, may try it again SQLServerException: Transaction (Process ID xxx) was deadlocked on lock | communication buffer resources with another process and has been chosen as the deadlock victim. Rerun the transaction.
Erros do PostgreSQL
DTS-RETRY-ERR-0703: This slot has been invalidated because it exceeded the maximum reserved size
O slot de replicação lógica criado no banco de dados PostgreSQL de source para sincronização incremental de dados excedeu seu tamanho máximo. O PostgreSQL invalidou e removeu o slot automaticamente, o que significa que os logs incrementais necessários pelo DTS foram perdidos e o slot de replicação não pode mais ser usado.
Solução
Aumente os limites dos parâmetros do banco de dados PostgreSQL de source para fornecer mais espaço para a retenção de logs. Após atualizar os parâmetros, crie a tarefa do DTS novamente.
Como o slot de replicação foi invalidado e os logs incrementais foram perdidos, reiniciar a tarefa existente do DTS não resolverá esse erro. crie uma nova tarefa do DTS após atualizar os parâmetros do banco de dados.
Exemplo de erro
DTS-52510: Fetch postgresql logical log failed FatalAnyAllException: common: DTS-100047: retry 60 times, 613155 seconds, which exceed the supposed 43200 seconds CriticalAnyAllException: postgresql-reader:
DTS-52512: postgres open replication steam failed PSQLException: ERROR: can no longer get changes from replication slot "dts_sync_z0sv5l76xxxx" Detail: This slot has been invalidated because it exceeded the maximum reserved size.
DTS-RETRY-ERR-0716: xlog flush request
Ao ler o log de transações (XLOG) do banco de dados PostgreSQL de source, o banco de dados relatou um erro interno de E/S: uma solicitação de flush de log não foi atendida. Isso indica um problema de E/S de disco no host do banco de dados de source.
Solução
Verifique imediatamente a integridade, o desempenho de E/S do disco e os logs de erro do banco de dados PostgreSQL de source. Após resolver o problema de E/S subjacente, reinicie a tarefa do DTS.
Exemplo de erro
DTS-31009: In process of processing data (recordRange: 293226462284xxx) failed cause: FatalAnyAllException: common: DTS-100047: retry 0 times, 0 seconds, which exceed the supposed 43200 seconds CriticalAnyAllException: framework:
DTS-31009: read source data error PSQLException: ERROR: xlog flush request xxx is not satisfied --- flushed only to xxx Where: writing block 134 of relation pg_tblspc/16386/PG_11_201809051/16385/21573
Erros do ClickHouse
DTS-RETRY-ERR-0704: Too many parts
A tabela ClickHouse de destino tem muitas partições (parts), o que impede o DTS de gravar novos dados. Isso geralmente resulta de um design da chave de partição que gera muitas parts pequenas ou de um processo de merge que está atrasado.
Solução
Verifique a integridade da instância ClickHouse de destino. Otimize a política de merge da tabela ou redesenhe a chave de partição para reduzir o número de parts. Para aumentar temporariamente o limiar, defina max_parts_in_total no arquivo config.xml ou como uma configuração por tabela. Depois que a contagem de partições voltar ao normal, reinicie a tarefa do DTS.
Exemplo de erro
DTS-70003: 9 execute transaction has excess max transaction retry time [64] cause:transaction-replicate:
DTS-70004: EXEC statement failed, may try it again cause: RecoverableAnyAllException: transaction-replicate: DTS-70004: EXEC statement failed, may try it again SQLException: ClickHouseEngine(9): meet error, insertSQL:insert into `xxx`.`xxx` () values (),
error detail message:Code: 252. DB::Exception: Too many parts (100079) in all partitions in total in table 'xxx'.
This indicates wrong choice of partition key. The threshold can be modified with 'max_parts_in_total' setting in element in config.xml or with per-table se...
DTS-RETRY-ERR-0711: Unexpected end of file from server
A conexão entre o DTS e o servidor ClickHouse de destino foi interrompida inesperadamente durante uma transferência de dados. Isso geralmente é causado por instabilidade de rede ou uma falha no nó do ClickHouse.
Solução
Verifique os logs de erro e a integridade geral do servidor ClickHouse. Solucione problemas de conectividade de rede entre o DTS e o ClickHouse. Após a estabilização da conexão, reinicie a tarefa do DTS para reconectar.
Exemplo de erro
java.sql.SQLException: Unexpected end of file from server, server ClickHouseNode [uri=http://10.xxx.xxx.xxx:xxx/tpcc]@603276966
Erros do Oracle
DTS-RETRY-ERR-0707: trigger '(.*)?' is invalid and failed re-validation
Quando o DTS gravou dados na tabela Oracle de destino, ele acionou um trigger inválido ou que não pôde ser revalidado. A falha do trigger impediu a conclusão da operação de gravação.
Solução
Desative ou exclua os triggers associados às tabelas sincronizadas no banco de dados Oracle de destino. Em seguida, reinicie a tarefa do DTS.
Exemplo de erro
DTS-100047: retry 4315 times, 43202 seconds, which exceed the supposed 43200 seconds cause: CriticalAnyAllException: framework: DTS-30011: currentRunningSQL: /* DTS-full-e6at6t7926axxx */insert into "xxx"."xxx"() VALUES (),currentRow:xxx,
reason: ORA-04098: trigger 'xxx.xxx' is invalid and failed re-validation BatchUpdateException: ORA-04098: trigger 'xxx.xxx' is invalid and failed re-validation
DTS-RETRY-ERR-0708: unable to allocate (.*)? bytes of shared memory
O shared pool do banco de dados Oracle de destino tem memória insuficiente. O Oracle não pode alocar a memória necessária para as operações SQL execute pelo DTS.
Solução
Aumente o parâmetro SHARED_POOL_SIZE do banco de dados Oracle de destino ou limpe o shared pool. Em seguida, reinicie a tarefa do DTS.
Exemplo de erro
DTS-70002: Failed to get foreign key of CREDITLOANDB.CODE_LIBRARY cause: SQLException: ORA-04031: unable to allocate xxx bytes of shared memory ("shared pool","xxx")
DTS-RETRY-ERR-0709: unable to extend index (.)? by (.)? in tablespace (.*)?
O tablespace do banco de dados Oracle de destino está cheio, o que impede a extensão do índice quando o DTS grava dados.
Solução
Adicione um arquivo de dados ao tablespace mencionado na mensagem de erro ou aumente o tamanho de um arquivo de dados existente nesse tablespace. Em seguida, reinicie a tarefa do DTS.
Exemplo de erro
DTS-077100: Record Replicator error in table INTIME.STR_COM_DAY. cause by [java.sql.SQLException: ORA-01654: unable to extend index xxx by xxx in tablespace xxx ] About more information in [https://yq.aliyun.com/articles/508049].
DTS-RETRY-ERR-0710: unable to extend table (.)? by (.)? in tablespace (.*)?
O tablespace do banco de dados Oracle de destino está cheio, o que impede a extensão da tabela quando o DTS grava dados.
Solução
Adicione um arquivo de dados ao tablespace mencionado na mensagem de erro ou aumente o tamanho de um arquivo de dados existente nesse tablespace. Em seguida, reinicie a tarefa do DTS.
Exemplo de erro
DTS-30011: currentRunningSQL: /* DTS-full-i1js7421a9ixxx */insert into "xxx"."xxx"() VALUES (),currentRow:xxx, reason: ORA-01653: unable to extend table xxx by xxx in tablespace xxx cause: BatchUpdateException: ORA-01653: unable to extend table xxx by xxx in tablespace xxx
Erros do RocketMQ
DTS-RETRY-ERR-0705: TopicMessageType validate failed
O tipo de mensagem do tópico RocketMQ de destino não corresponde ao exigido pelo DTS. Uma incompatibilidade entre o tipo de mensagem esperado e o real impede o DTS de gravar no tópico.
Solução
Altere o tipo de mensagem do tópico RocketMQ de destino para corresponder ao tipo exigido pela tarefa do DTS. Em seguida, reinicie a tarefa do DTS.
Exemplo de erro
DTS-70026: execute ddl failed cause: FatalAnyAllException: common: DTS-100047: retry 15 times, 15 seconds, which exceed the supposed xxx seconds MQBrokerException: CODE: 13 DESC: TopicMessageType validate failed, the expected type is NORMAL, but actual type is FIFO BROKER: 10.xxx.xxx.xxx:xxx For more information, please visit the url, https://rocketmq.apache.org/docs/bestPractice/06FAQ
Erros do SelectDB
DTS-RETRY-ERR-0712: unknown table
O DTS tentou gravar dados no banco de dados SelectDB (Doris) de destino via stream load, mas a tabela especificada não existe.
Solução
Verifique se os objetos de sincronização estão configurados corretamente na tarefa do DTS e se a tabela correspondente foi criada no banco de dados SelectDB de destino.
Exemplo de erro
DTS-100047: retry 3755 times, 43208 seconds, which exceed the supposed 43200 seconds cause: TransactionReplicateException: transaction-replicate: DTS-70003: 16 execute transaction has excess max transaction retry time [64] cause:Failed to stream load data to table: xxx status is fail.
Load result: {"Status":"Fail","Comment":"","BeginTxnTimeMs":0,"Message":"[NOT_FOUND]TStatus: errCode = 7, detailMessage = unknown table, tableName=xxx","NumberUnselectedRows":0,"CommitAndPublishTimeMs":0,"Label":"DTS-SelectDB-Sink2dfxxxx-72f8-4cbf-a475-36f7ddaxxxx","LoadBytes":0,"StreamLoadPutTimeMs":0,"NumberTotalRows":0,"WriteDataTimeMs":0,"TxnId":-1,"LoadTimeMs":0,"TwoPhaseCommit":"false","ReadDataTimeMs":0,"NumberLoadedRows":0,"NumberFilteredRows":0} IOException: Failed to stream load data to table: xxxx status is fail.
Erros do TiDB
DTS-RETRY-ERR-0713: unsupport operationType: TIDB_WATERMARK
O DTS não oferece suporte ao tipo de evento WATERMARK gerado pelo TiCDC. Esse erro ocorre quando o parâmetro enable-tidb-extension está ative na configuração do TiCDC, o que faz com que o TiCDC emita eventos TIDB_WATERMARK que o DTS não consegue processar.
Solução
Edite o arquivo de configuração do TiCDC e defina
enable-tidb-extensioncomofalse.Reinicie o TiCDC para aplicar a alteração.
Exemplo de erro
DTS-31009: In process of processing data (recordRange: 602980062876xxx) failed cause: FatalAnyAllException: common: DTS-100047: retry 0 times, 0 seconds, which exceed the supposed 43200 seconds RuntimeException: java.lang.RuntimeException: unsupport operationType: TIDB_WATERMARK RuntimeException: unsupport operationType: TIDB_WATERMARK
Erros do AnalyticDB for MySQL
DTS-RETRY-ERR-0715: waitResult/ReDispatch
Ocorreu um tempo limite enquanto o DTS aguardava a confirme de uma operação de gravação pela instância AnalyticDB for MySQL 3.0 de destino. Isso indica que a instância está sob alta carga ou processando dados lentamente, o que faz com que as solicitações de gravação excedam o limiar syncTimeoutMills.
Solução
Verifique o status, as métricas de carga e os logs de consultas lentas da instância AnalyticDB for MySQL 3.0 de destino. Depois que a instância voltar ao normal, reinicie a tarefa do DTS.
Exemplo de erro
DTS-100047: retry 0 times, 72788 seconds, which exceed the supposed 43200 seconds cause: TransactionReplicateException: transaction-replicate: DTS-70003: 9 execute transaction has excess max transaction retry time [64] cause:transaction-replicate:
DTS-70004: EXEC statement failed, may try it again RecoverableAnyAllException: transaction-replicate: DTS-70004: EXEC statement failed, may try it again SQLException: ADB30Engine(9): meet error, insertSQL:/*dts_id=dtszqva11ali3xxxx*/replace into `xxx`.`xxx` () values (),
error detail message:[40001, 202507151205071921xxxx190034533xxxx] waitResult/ReDispatch : deadline=17525526xxxx,syncTimeoutMills=300000 SQLException: [40001, 202507151205071921xxxx190034533xxxx] waitResult/ReDispatch : deadline=17525526xxxx,syncTimeoutMills=300000