Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Importante
O Change Data Capture para Oracle da Attunity está agora descontinuado. Para obter detalhes, consulte o anúncio.
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 acessada a qualquer momento para verificar o estado da Instância CDC. Para obter mais informações sobre a tabela cdc.xdbcdc_state, consulte cdc.xdbcdc_state.
A tabela abaixo descreve os estados da Instância CDC na tabela xdbcdc_state.
Para cada estado, as duas indicações a seguir são mostradas para as colunas correspondentes na tabela cdc.xdbcdc_state:
A instância não está ativa (não há nenhum processo do Windows atualmente manipulando-a). Se o valor da coluna ativa for 1, um subprocesso do Serviço Oracle CDC que manipula essa instância específica do Oracle CDC estará em execução.
Se o valor da coluna de erro for 0, a instância Oracle CDC não está numa condição de erro. Se o valor da coluna de erro for 1, há um erro que impede que a instância Oracle CDC processe 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 resolvido automaticamente. Se a coluna de erro tiver um valor de 1 e a coluna ativa tiver um valor de 0, então, na maioria dos casos, uma solução manual pode 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 estado do erro | Descrição | Subestatuto |
|---|---|---|---|---|
| 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 e, em seguida, parou inesperadamente. | O subestado ABORTED é estabelecido pela instância principal do Oracle CDC Service quando deteta que a instância Oracle CDC não está em execução enquanto o seu estado é 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 encontrou um erro que não é recuperável e se desativou. | MISCONFIGURED: Foi detetado um erro de configuração irrecuperável. PASSWORD-REQUIRED: Não há nenhuma senha definida para o Change Data Capture Designer for Oracle by 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. |
| EM EXECUÇÃO | 1 | 0 | A instância CDC está em execução e está processando registos de alterações. | IDLE: 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). |
| INTERROMPIDO | 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 interrompida corretamente. |
| SUSPENSO | 1 | 1 | A instância CDC está em execução, mas o processamento está 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. LOGGER: O logger está conectado ao Oracle, mas não pode ler os logs de transações do Oracle devido a um problema temporário. |
| ERRO DE DADOS | x | x | Esse código de status é usado apenas para a tabela xdbcdc_trace . Não aparece na tabela xdbcdc_state . Registos de rastreamento com este estado indicam um problema com um registo 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 para as colunas de destino na tabela de captura. Esse status pode aparecer somente 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 do 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 carimbo de data/hora da última atualização (UTC) tem mais de um minuto, o estado provavelmente está datado. 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.
Exploração Florestal
O Serviço Oracle CDC cria informações de erro em um dos seguintes locais.
O log de eventos do Windows, utilizado para registar erros e indicar eventos no ciclo de vida do Serviço Oracle CDC (iniciar, parar, (re)conexão com a instância de destino do SQL Server).
A tabela MSXDBCDC.dbo.xdbcdc_trace, que é usada para registro geral e rastreamento pelo processo principal do Oracle CDC Service.
A <tabela cdc-database>.cdc.xdbcdc_trace, que é usada para registo geral e rastreio 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 interrompido pelo gerenciador de controle de serviço.
Não é possível conectar-se à instância associada do SQL Server, mas consegue estabelecer a conexão com êxito após uma falha.
Encontra um erro ao iniciar instâncias do Serviço Oracle CDC.
Deteta que uma instância da Oracle CDC foi interrompida.
Encontra um erro inesperado.
As informações são registradas pela instância CDC quando a instância:
Está ativado ou desativado.
Encontra um erro.
Recupera de um erro recuperável.
A tabela de rastreamento também é usada para registrar informações detalhadas de rastreamento para solução de problemas.
Manipulando erros de conexão 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 mudará seu estado para SUSPENDED/DISCONNECTED e entrará em um loop de repetição onde a conexão será 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 ERROR/PASSWORD-REQUIRED e o serviço é desativado. Quando o usuário corrige o erro subjacente, a Instância Oracle CDC deve ser reativada manualmente para que o processamento seja retomado.
Quando não está claro se o erro é transitório, é melhor assumir que é transitório.
Manipulação de erros de conexão no SQL Server de destino
O Serviço Oracle CDC precisa de uma conexão persistente com a instância do SQL Server de destino. Esta ligação é utilizada para:
Certifique-se de que não há outros serviços com o mesmo nome trabalhando atualmente com essa instância do SQL Server.
Verifique qual instância do Oracle CDC está habilitada ou desabilitada e inicie (ou pare) 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 Oracle CDC estão habilitadas e iniciar seus processos de manipulação (depois o serviço interrompe esses processos quando eles são desabilitados). As instâncias do Oracle CDC usam as suas ligações do SQL Server para trabalhar com a base de dados CDC da instância do 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 para (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 interrompe seus subprocessos de Instância CDC e volta à sua tentativa de conexão inicial (neste momento, um Serviço Oracle CDC em outra máquina pode já ter assumido o controle do serviço CDC nomeado).
Lidando com erros de armazenamento cheio no SQL Server de destino
Quando o Serviço Oracle CDC deteta 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 novamente a operação 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 um período prolongado e os arquivos de log de transações Oracle necessários não estão mais disponíveis. Nesse caso, o DBA Oracle deve restaurar os logs necessários para que a instância Oracle CDC retome o processamento.
Gestão de falhas inesperadas de instâncias do Oracle CDC
O Serviço Oracle CDC monitoriza os subprocessos da Instância CDC. Quando um subprocesso de uma instância CDC é abortado, o serviço CDC desativa-o na tabela MSXDBCDC.dbo.xdbcdc_databases e atualiza o seu estado em cdc.xdbcdc_state para ABORTADO. Nesse caso, a caixa de diálogo padrão Relatório de Erros do Windows é usada para relatar esse erro para análise posterior.
Ver também
Change Data Capture Designer para Oracle da Attunity
A instância Oracle CDC