Compartilhar via


Tratamento de erros

Importante

A Captura de Dados de Alteração para Oracle da Attunity foi preterida agora. Para obter detalhes, consulte o comunicado.

Uma Instância Oracle CDC extrai alterações de um único banco de dados de origem Oracle (um cluster Oracle RAC é considerado um único banco de dados) e grava as alterações confirmadas em tabelas de alteração em um banco de dados CDC na instância de destino do SQL Server.

Uma Instância CDC mantém seu estado em uma tabela do sistema chamada cdc.xdbcdc_state. Esta tabela pode ser consultada a qualquer momento para determinar o estado da Instância CDC. Para obter mais informações sobre a tabela cdc.xdbcdc_state, consulte cdc.xdbcdc_state.

A tabela a seguir descreve os estados da instância CDC na tabela xdbcdc_state.

Para cada estado, as seguintes duas informações são exibidas nos campos correspondentes da tabela cdc.xdbcdc_state:

  • A instância não está ativa (não há nenhum processo do Windows tratando-a no momento). Se o valor da coluna ativa for 1, um subprocesso do Serviço Oracle CDC que está tratando essa instância específica do Oracle CDC estará em execução.

  • Se o valor da coluna de erro for 0, a Instância CDC do Oracle não está em condição de erro. Se o valor da coluna de erro for 1, há um erro que impede a Instância Oracle CDC de processar alterações.

    Se a coluna de erro tiver um valor de 1 e o valor da coluna ativa também for 1, ocorrerá um erro recuperável para a Instância oracle CDC, que pode ser resolvida automaticamente. Se a coluna de erro tiver um valor 1 e a coluna ativa tiver um valor 0, na maioria dos casos, uma solução alternativa manual poderá ser necessária para resolver o problema antes que o processamento possa ser retomado.

A tabela a seguir descreve os vários códigos de status que a Instância oracle CDC pode relatar em sua tabela de estado.

Situação Código de status ativo Código de status do erro Descrição Substatus
ABORTADO 0 1 A Instância Oracle CDC não está em execução. O substatus ABORTED indica que a Instância Oracle CDC estava ATIVA, mas parou inesperadamente. O substatus ABORTED é estabelecido pela instância principal do Serviço Oracle CDC quando detecta que a Instância oracle CDC não está em execução enquanto seu status está ATIVO.
ERRO 0 1 A Instância Oracle CDC não está em execução. O status ERROR indica que a instância CDC estava ATIVA, mas depois encontrou um erro que não é recuperável e se desativou. MISCONFIGURED: foi detectado um erro de configuração irrecuperável.

PASSWORD-REQUIRED: não há nenhuma senha definida para o Designer de Captura de Dados de Alteração para Oracle pela Attunity ou a senha configurada não é válida. Isso pode ser devido a uma alteração na senha da chave assimétrica do serviço.
EXECUTANDO 1 0 A instância CDC está em execução e está processando registros de alteração. OCIOSO: todos os registros de alteração foram processados e armazenados nas tabelas de controle de destino (_CT). Não há nenhuma transação ativa com as tabelas de controle.

PROCESSAMENTO: Há registros de alteração sendo processados que ainda não foram gravados nas tabelas de controle (_CT).
PARADO 0 0 A instância CDC não está em execução. O substatus STOP indica que a instância CDC estava ativa e, em seguida, foi parada corretamente.
SUSPENSO 1 1 A instância CDC está em execução, mas o processamento é suspenso devido a um erro recuperável. DESCONECTADO: A conexão com o banco de dados Oracle de origem não pode ser estabelecida. O processamento será retomado assim que a conexão for restaurada.

ARMAZENAMENTO: O armazenamento está cheio. O processamento será retomado quando o armazenamento estiver disponível. Em alguns casos, esse status pode não aparecer porque a tabela de status não pode ser atualizada.

O agente está conectado ao Oracle, mas não pode ler os logs de transações do Oracle devido a um problema temporário.
DATAERROR x x Esse código de status é usado apenas para a tabela xdbcdc_trace . Ele não aparece na tabela xdbcdc_state . Registros de rastreamento com esse status indicam um problema com um registro de log oracle. O registro de log incorreto é armazenado na coluna de dados como um BLOB. BADRECORD: O registro de log anexado não pôde ser analisado.

CONVERT-ERROR: os dados em algumas colunas não puderam ser convertidos nas colunas de destino na tabela de captura. Esse status só poderá aparecer se a configuração especificar que os erros de conversão devem produzir registros de rastreamento.

Como o estado do Serviço Oracle CDC é armazenado no SQL Server, pode haver casos em que o valor de estado no banco de dados pode não refletir o estado real do serviço. O cenário mais comum é quando o serviço perde sua conexão com o SQL Server e não pode retomá-lo (por qualquer motivo). Nesse caso, o estado armazenado em cdc.xdbcdc_state torna-se obsoleto. Se o último carimbo de data/hora de atualização (UTC) tiver mais de um minuto de idade, o estado provavelmente estará obsoleto. Nesse caso, use o Visualizador de Eventos do Windows para encontrar informações adicionais sobre o status do serviço.

Tratamento de erros

Esta seção descreve como o Serviço Oracle CDC lida com erros.

Registro

O Serviço Oracle CDC cria informações de erro em um dos seguintes locais.

  • O registro de eventos do Windows, que é usado para registrar erros e indicar eventos do ciclo de vida do Serviço Oracle CDC, como inicialização, parada e (re)conexão à instância do SQL Server de destino.

  • A tabela MSXDBCDC.dbo.xdbcdc_trace é usada pelo processo principal do Serviço Oracle CDC para registro em log e rastreamento geral.

  • A <tabela cdc-database>.cdc.xdbcdc_trace, que é usada para registro em log geral e rastreamento por Instâncias oracle CDC. Isso significa que os erros relacionados a uma instância específica do Oracle CDC são registrados na tabela de rastreamento dessa instância.

As informações são registradas pelo serviço Oracle CDC quando o serviço:

  • É iniciado ou parado pelo gerenciador de controle de serviço.

  • Não é possível se conectar à instância associada do SQL Server e quando ela estabelecer uma conexão com êxito após uma falha.

  • Encontra um erro ao iniciar instâncias do Serviço Oracle CDC.

  • Detecta que uma Instância oracle CDC foi anulada.

  • Encontra um erro inesperado.

As informações são registradas pela instância CDC quando a instância:

  • Está habilitado ou desabilitado.

  • Encontra um erro.

  • Recupera-se de um erro recuperável.

A tabela de rastreamento também é usada para gravar informações detalhadas de rastreamento para solução de problemas.

Tratando erros de conexão do Oracle de origem

O Serviço Oracle CDC precisa de uma conexão persistente com o banco de dados Oracle de origem. Muitos erros de conexão que não estão relacionados à configuração do serviço (como erros de rede) são considerados transitórios. Portanto, se o Serviço Oracle CDC não puder estabelecer conexão com o banco de dados Oracle (no início ou durante o trabalho após uma desconexão), o serviço alterará seu estado para SUSPENDED/DISCONNECTED e entrará em um loop de repetição em que a conexão é repetida em intervalos regulares. Quando a conexão é restabelecida, o processamento continua.

Outros tipos de erros de conexão não são transitórios (por exemplo, credenciais incorretas, privilégios insuficientes e endereço de banco de dados incorreto). Quando esses erros ocorrem, o estado do Serviço Oracle CDC é definido como ERROR/MISCONFIGURED ou como ERROR/PASSWORD-REQUIRED e o serviço é desabilitado. Quando o usuário corrige o erro subjacente, a Instância oracle CDC deve ser habilitada manualmente para que o processamento seja retomado.

Quando não estiver claro se o erro é transitório, é melhor supor que ele seja transitório.

Tratamento de erros de conexão do SQL Server de destino

O Serviço Oracle CDC precisa de uma conexão persistente com a instância do SQL Server de destino. Essa conexão é usada para:

  • Verifique se não há outros serviços com o mesmo nome atualmente trabalhando com essa instância do SQL Server.

  • Verifique qual instância do Oracle CDC está habilitada ou desabilitada e inicie (ou interrompa) seu subprocesso.

Quando o serviço estabelece uma conexão com a instância do SQL Server de destino e verifica se é o único serviço Oracle CDC com esse nome que está funcionando, ele pode verificar quais instâncias do Oracle CDC estão habilitadas e iniciar seus processos de tratamento (depois, o serviço interrompe esses processos quando eles estão desabilitados). As instâncias Oracle CDC utilizam suas conexões com o SQL Server para operar com o banco de dados CDC da instância Oracle CDC.

Como os erros são tratados quando a conexão com o SQL Server de destino falha depende se os erros são transitórios.

Para erros não transitórios conhecidos (como credenciais incorretas, privilégios insuficientes, informações de conexão incorretas), o serviço registra um erro no log de eventos do Windows e é interrompido (ele não pode gravar na tabela de rastreamento porque não pode se conectar ao SQL Server). Nesse caso, o usuário deve resolver o erro e reiniciar o serviço Oracle CDC Windows.

Para erros transitórios e erros inesperados, a operação é repetida várias vezes e, se a falha persistir por um período de tempo significativo, o Serviço CDC interromperá seus subprocessos da Instância CDC e retornará à sua tentativa de conexão inicial (a essa altura, um Serviço Oracle CDC em outro computador pode já ter tomado o controle do serviço CDC nomeado).

Gerenciando erros de armazenamento cheio no SQL Server de destino

Quando o Serviço Oracle CDC detecta que não pode inserir novos dados de alteração no banco de dados CDC do SQL Server de destino, ele grava um aviso no log de eventos e tenta inserir um registro de rastreamento (embora isso possa falhar pelo mesmo motivo). Em seguida, ele tenta a operação novamente em um intervalo específico até que seja bem-sucedida.

Lidando com erros do Oracle CDC

A instância Oracle CDC lê o log de transações Oracle e o processa. Se o processamento CDC encontrar um erro, ele será relatado na tabela cdc.xdbcdc_state e o usuário precisará intervir manualmente com base no erro relatado.

Por exemplo, a Instância oracle CDC pode não estar ativa por uma duração prolongada e os arquivos de log de transações oracle necessários não estão mais disponíveis. Nesse caso, o Oracle DBA deve restaurar os logs necessários para que a Instância oracle CDC retome o processamento.

Gerenciamento de falhas inesperadas em instâncias do Oracle CDC

O Serviço Oracle CDC monitora seus subprocessos da Instância CDC. Quando um subprocesso da Instância CDC é anulado, o Serviço CDC o desabilita na tabela MSXDBCDC.dbo.xdbcdc_databases e atualiza seu status de cdc.xdbcdc_state para ABORTADO. Nesse caso, a caixa de diálogo relatório de erros padrão do Windows é usada para relatar esse erro para análise adicional.

Consulte Também

Alterar o Designer de Captura de Dados para Oracle da Attunity
A instância do Oracle CDC