Partilhar via


Os bancos de dados Oracle CDC

Importante

O Change Data Capture para Oracle da Attunity está agora descontinuado. Para obter detalhes, consulte o anúncio.

Uma instância Oracle CDC está associada a um banco de dados SQL Server com o mesmo nome na instância de destino do SQL Server. Esse banco de dados é chamado de banco de dados Oracle CDC (ou banco de dados CDC).

O banco de dados CDC é criado e configurado usando o Oracle CDC Designer Console e contém os seguintes elementos:

  • Um cdc esquema criado habilitando o banco de dados para o SQL Server CDC.

  • Um conjunto de cdc.xdbcdc_xxxx tabelas usadas pela Instância Oracle CDC.

  • Um conjunto de tabelas espelhadas vazias com as definições das tabelas capturadas no banco de dados Oracle tuphe Source.

  • Um conjunto de tabelas de alteração e funções de acesso de alteração que são geradas pelo mecanismo CDC do SQL Server e que são idênticas às utilizadas no CDC do SQL Server convencional, que não é da Oracle.

Inicialmente, o esquema cdc é acessível apenas aos membros da função fixa de banco de dados dbowner. O acesso às tabelas de alteração e às funções de alteração é determinado pelo mesmo modelo de segurança do CDC do SQL Server. Para obter mais informações sobre o modelo de segurança, consulte Modelo de segurança.

Criando o banco de dados CDC

Na maioria dos casos, o banco de dados CDC é criado usando o CDC Designer Console, mas também pode ser criado com um script de implantação CDC que é gerado usando o CDC Designer Console. O administrador de sistema do SQL Server pode alterar as configurações do banco de dados, se necessário (para itens como armazenamento, segurança ou disponibilidade).

Para obter mais informações sobre como usar o CDC Designer Console para criar as tabelas de banco de dados e os scripts necessários, consulte Usar o Assistente para Nova Instância.

Funções de usuário do banco de dados CDC

Quando um banco de dados CDC é criado e habilitado para CDC, um usuário de banco de dados chamado cdc_service é criado no banco de dados CDC e é associado ao logon do SQL Server com o qual o Serviço Oracle CDC foi configurado. Esse usuário se torna membro das funções de banco de dados db_datareader, db_datawriter e db_ddladmin . Se o logon do SQL Server também estiver associado ao dbo usuário, o cdc_service não será criado.

Essa atribuição de função permite que o Serviço Oracle CDC atualize as tabelas sob o cdc esquema com dados capturados e com informações de controle.

Quando uma base de dados CDC é criada e as tabelas Oracle de origem CDC são configuradas, o proprietário da base de dados CDC pode conceder permissão de SELECT sobre tabelas espelhadas e definir funções de acesso do CDC do SQL Server para controlar quem acessa os dados de alteração.

Mesas de espelho

Para cada tabela capturada, <nome do esquema>.<nome da tabela>, na base de dados de origem Oracle, uma tabela vazia semelhante é criada na base de dados CDC, com o mesmo esquema e nome da tabela. As tabelas de origem Oracle com o nome do esquema cdc (não diferencia entre maiúsculas e minúsculas) não podem ser capturadas porque o esquema cdc no SQL Server está reservado para o CDC do SQL Server.

As mesas espelhadas estão vazias; nenhum dado é armazenado neles. Eles são usados para habilitar a infraestrutura CDC padrão do SQL Server usada pela Instância CDC do Oracle. Para impedir que os dados sejam inseridos ou atualizados nas tabelas espelhadas, todas as operações UPDATE, DELETE e INSERT são negadas para PUBLIC. Isso garante que eles não possam ser modificados.

Acesso a dados de mudança

Devido ao modelo de segurança do SQL Server usado para obter acesso aos dados de alteração associados a uma instância de captura, o usuário deve ter select acesso a todas as colunas capturadas da tabela espelhada associada (as permissões de acesso às tabelas Oracle originais não fornecem acesso às tabelas de alteração no SQL Server). Para obter informações sobre o modelo de segurança do SQL Server, consulte Modelo de segurança.

Além disso, se uma função de regulação for especificada quando a instância de captura for criada, o chamador também deverá ser membro da função de regulação especificada. Outras funções gerais de captura de dados de alteração para acessar metadados são acessíveis a todos os usuários do banco de dados por meio da função PUBLIC, embora o acesso aos metadados retornados geralmente seja fechado usando o acesso selecionado às tabelas de origem subjacentes e pela associação a quaisquer funções de seleção definidas.

Os dados de alteração podem ser lidos chamando funções especiais baseadas em tabela geradas pelo componente CDC do SQL Server quando uma instância de captura é criada. Para obter mais informações sobre essa função, consulte Alterar funções de captura de dados (Transact-SQL).

O acesso aos dados CDC por meio do componente Origem CDC do Integration Services está sujeito às mesmas regras.

As tabelas do banco de dados CDC

Esta seção descreve as tabelas a seguir no banco de dados CDC.

Alterar tabelas (_CT)

As tabelas de alteração são criadas a partir das tabelas de espelho. Eles contêm os dados de alteração capturados do banco de dados Oracle. As tabelas são nomeadas de acordo com a seguinte convenção:

[CDC].[<instância_de_captura>_CT]

Quando a captura é inicialmente habilitada para tabela <schema-name>.<table-name>, o nome da instância de captura padrão é <schema-name>_<table-name>. Por exemplo, o nome da instância de captura padrão para a tabela EMPLOYEES do Oracle HR é HR_EMPLOYEES e a tabela de alterações associada é [cdc]. [HR_EMPLOYEES_CT].

As tabelas de captura são atualizadas pela Instância de CDC do Oracle. Eles são lidos usando funções especiais com valor de tabela geradas pelo SQL Server quando a instância de captura é criada. Por exemplo, fn_cdc_get_all_changes_HR_EMPLOYEES. Para obter mais informações sobre essas funções CDC, consulte Alterar funções de captura de dados (Transact-SQL).

cdc.lsn_time_mapping

O [cdc].[ lsn_time_mapping] tabela é gerada pelo componente CDC do SQL Server. A sua utilização no caso do Oracle CDC é diferente da sua utilização normal.

Para o Oracle CDC, os valores LSN armazenados nesta tabela são baseados no valor SCN (Oracle System Change Number) associado à alteração. Os primeiros 6 bytes do valor LSN é o número SCN original do Oracle.

Além disso, ao usar o Oracle CDC, as colunas de hora (tran_begin_time e tran_end_time) armazenam a hora UTC da alteração em vez da hora local, como acontece com o CDC regular do SQL Server. Isso garante que as alterações no horário de verão não afetem os dados armazenados no lsn_time_mapping.

cdc.xdbcdc_config

Esta tabela contém os dados de configuração para a instância Oracle CDC. Ele é atualizado usando o CDC Designer Console. Esta tabela tem apenas uma linha.

A tabela a seguir descreve as cdc.xdbcdc_config colunas da tabela.

Iteme Descrição
versão Isto regista a versão da configuração da instância CDC. Ele é atualizado sempre que a tabela é atualizada e sempre que uma nova instância de captura é adicionada ou uma instância de captura existente é removida.
cadeia_de_conexão Uma cadeia de conexão Oracle. Um exemplo básico é:

<server>:<port>/<instance> (por exemplo, erp.contoso.com:1521/orcl).

A cadeia de conexão também pode especificar um descritor de conexão Oracle Net, por exemplo, (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp) (HOST=erp.contoso.com) (PORT=1521)) (CONNECT_DATA=(SERVICE_NAME=orcl))).

Se estiver usando um servidor de diretório ou tnsnames, a cadeia de conexão pode ser o nome da conexão.

Para aprender sobre cadeias de ligação Oracle, consulte o Guia do Programador da Interface de Chamadas, que fornece informações detalhadas sobre cadeias de ligação à base de dados Oracle para o Cliente Instantâneo Oracle utilizado pelo Serviço Oracle CDC.
usar_autenticacao_do_Windows Um valor booleano que pode ser:

0: Um nome de usuário e senha Oracle são fornecidos para autenticação (o padrão)

1: A autenticação do Windows é usada para se conectar ao banco de dados Oracle. Você pode usar essa opção somente se o banco de dados Oracle estiver configurado para funcionar com a autenticação do Windows.
nome de utilizador O nome do utilizador do banco de dados Oracle para análise de logs. Isto só é obrigatório se use_windows_authentication = 0.
palavra-passe A senha do utilizador do banco de dados Oracle de mineração de logs. Isto só é obrigatório se use_windows_authentication = 0.
transaction_staging_timeout (tempo de espera para a preparação da transação) O tempo, em segundos, que uma transação Oracle não confirmada permanece na memória antes de ser gravada na tabela cdc.xdbcdc_staged_transactions. O padrão é 120 segundos.
limite_de_memória O limite da quantidade de memória, em Mb, que pode ser usada para armazenar dados em cache na memória. Uma configuração mais baixa faz com que mais transações sejam gravadas na tabela cdc.xdbcdc_staged_transactions . O padrão é 50 Mb.
Opções Uma lista de opções na forma de nome[=value][; ] - é usada para especificar opções secundárias (por exemplo, rastreamento, ajuste). Consulte a tabela abaixo para obter uma descrição das opções disponíveis.

A tabela a seguir descreve as opções disponíveis.

Nome Predefinido Minuto Máx Estático Descrição
rastreio Falso - - Falso Os valores disponíveis são:

Verdade

Falso

sobre

desligado
intervalo_de_atualizacao_de_estado_cdc 10 1 cento e vinte Falso O tamanho (em Kbytes) dos blocos de memória alocados para uma transação (uma transação pode alocar mais de um bloco). Consulte a coluna memory_limit na tabela cdc.xdbcdc_config.
transações agrupadas máximas alvo 100 1 1000 Verdade O número máximo de transações do Oracle que podem ser processadas como uma única transação nas tabelas CT do SQL Server é atualizado.
target_idle_lsn_update_interval 10 0 1 Falso O intervalo (em segundos) para atualizar a tabela lsn_time_mapping quando as tabelas capturadas não têm atividade.
período_de_retenção_de_rastreio 24 1 24*31 Falso A quantidade de tempo (em horas para manter as mensagens na tabela de rastreamento).
sql_reconnect_interval (intervalo de reconexão do SQL) 2 2 3600 Falso A quantidade de tempo (em segundos) para aguardar antes de se reconectar ao SQL Server. Esse intervalo é usado além do tempo limite de conexão do cliente SQL Server.
limite_reconexão_sql -1 -1 -1 Falso O número máximo de reconexões no SQL Server. O -1 padrão significa que o processo tenta se reconectar até que pare.
limite_de_reinício_cdc 6 -1 3600 Falso Na maioria dos casos, o serviço CDC reinicia automaticamente uma instância CDC terminada anormalmente. Essa propriedade define após quantas falhas por hora o serviço deve parar e reiniciar automaticamente a instância. O valor -1 significa que a instância deve ser sempre reiniciada.

O Serviço retorna para reiniciar a instância após qualquer atualização da tabela de configuração.
relatório_de_memória_cdc 0 0 1000 Falso Se o valor do parâmetro foi alterado, a Instância CDC imprime seu relatório de memória na tabela de rastreamento.
tempo_limite_comando_alvo 600 1 3600 Falso Tempo limite do comando ao trabalhar com o SQL Server.
conjunto_de_caracteres_fonte - - - Verdade Pode ser definido como uma codificação Oracle específica a ser usada em vez da página de código do banco de dados Oracle. Isso pode ser útil quando a codificação real que os dados de caracteres estão usando é diferente da expressa pela página de código do banco de dados Oracle.
intervalo_repetição_erro_fonte 30 1 3600 Falso Usado antes de tentar novamente após erros como um erro de conexão ou uma falta temporária de sincronização entre tabelas do sistema.
tamanho de pré-busca de fonte (source_prefetch_size) 100 1 10 000 Verdade Tamanho do lote de pré-busca.
fonte_max_tabelas_na_consulta 100 1 10 000 Verdade Número máximo de tabelas na cláusula WHERE antes de mudar para a leitura do log do Oracle sem filtragem de tabela.
intervalo_de_retentativa_de_leitura_de_fonte 2 1 3600 Falso O tempo que a fonte aguarda antes de tentar ler novamente os logs de transações do Oracle no EOF.
intervalo_de_reconexão_da_fonte 30 1 3600 Falso Quanto tempo (em segundos) esperar antes de tentar se reconectar ao banco de dados de origem.
limite_de_reconexão_da_fonte -1 -1 Falso O número máximo de reconexões do banco de dados de origem. O -1 padrão significa que o processo tenta se reconectar até ser interrompido.
tempo_de_expiração_do_comando_fonte 30 1 3600 Falso Tempo limite de conexão ao utilizar o Oracle.
tempo_de_espera_ligação_origem 30 1 3600 Falso Tempo limite de conexão ao trabalhar com o SQL Server.
rastrear_erros_de_dados Verdade - - Falso Booleano. True indica que deve registar erros de conversão e truncamento de dados.
CDC_parar_em_mudanças_ruptivas_de_esquema Falso - - Falso Booleano. True indica que deve parar quando for detetada uma alteração de esquema crítica.

False indica eliminar a tabela espelhada e capturar a instância.
source_oracle_home - - Falso Pode ser definido como um caminho Oracle Home específico ou um Oracle Home Name que a instância CDC usará para se conectar ao Oracle.

cdc.xdbcdc_state

Esta tabela contém informações sobre o estado persistente da Instância Oracle CDC. O estado de captura é usado em cenários de recuperação e configurações de failover e para monitorização de saúde do sistema.

A tabela a seguir descreve as cdc.xdbcdc_state colunas da tabela.

Iteme Descrição
estado O código de status atual para a instância atual do Oracle CDC. O status descreve o estado atual do CDC.
sub_estado Um status de segundo nível que fornece informações adicionais sobre o status atual.
ativo Um valor booleano que pode ser:

0: O processo de instância do Oracle CDC não está ativo.

1: O processo de instância do Oracle CDC está ativo.
erro Um valor booleano que pode ser:

0: O processo de instância do Oracle CDC não está num estado de erro.

1: A instância Oracle CDC está em um estado de erro.
mensagem_de_status Uma cadeia de caracteres que fornece uma descrição do erro ou status.
carimbo de data/hora Carimbo de data/hora com a hora (UTC) em que o estado da captura foi atualizado na última vez.
active_capture_node O nome do host (o host pode ser um nó num cluster) que está atualmente a executar o Serviço Oracle CDC e a Instância Oracle CDC (que está a processar os registos de transações Oracle).
marca_temporal_da_última_transação Um carimbo de data/hora com a hora (UTC) em que a última transação foi registada nas tabelas de alterações.
carimbo de tempo da última alteração Um timestamp com a hora (UTC) em que o registo de alteração mais recente foi lido do log de transações da Oracle. Esta marca temporal ajuda a identificar a latência atual do processo do CDC.
cabeçalho_de_registo_de_transações_cn O número de alteração mais recente (CN) lido no log de transações do Oracle.
cauda_do_registo_de_transacções_cn O número de alteração (CN) no log de transações Oracle para o qual a instância Oracle CDC é reposicionada em caso de reinicialização ou recuperação.
current_cn O número de alteração (CN) mais recente conhecido por estar na base de dados de origem.
versão_software A versão interna do Serviço Oracle CDC.
transações_concluídas O número de transações processadas desde a última redefinição do CDC.
alterações_escritas O número de registros de alteração gravados nas tabelas de alteração do SQL Server.
ler_alterações O número de registos de alterações lidos do log de transações do Oracle de origem.
transações em fases O número de transações atualmente ativas que estão na tabela cdc.xdbcdc_staged_transactions.

cdc.xdbcdc_trace

Esta tabela contém informações sobre a operação da instância CDC. As informações armazenadas nesta tabela incluem registros de erros, alterações de status notáveis e registros de rastreamento. As informações de erro também são gravadas no log de eventos do Windows para garantir que as informações estejam disponíveis se a tabela cdc.xcbcdc_trace não estiver disponível.

A tabela a seguir descreve as cdc.xdbcdc_trace colunas da tabela.

Iteme Descrição
carimbo de data/hora O carimbo de data/hora UTC exato quando o registo de rastreamento foi gravado.
tipo Contém um dos seguintes valores.

ERRO

INFORMAÇÃO

RASTREIO
O nome do nó no qual o registro foi escrito.
estado O código de status usado pela tabela de estados.
sub_estado O código de substatus usado pela tabela de estados.
mensagem_de_status A mensagem de status usada pela tabela de estados.
dados Dados adicionais para casos em que o registo de erro ou de rastreamento contém um conteúdo específico (por exemplo, um registo de log corrompido).

cdc.xdbcdc_staged_transactions

Esta tabela armazena registos de alterações para transações de grande porte ou longa duração até que o evento de confirmação ou reversão da transação seja capturado. As ordens de serviço Oracle CDC capturaram registros de log por tempo de confirmação de transação e, em seguida, por ordem cronológica para cada transação. Os registos de log para a mesma transação são armazenados na memória até que a transação termine e, depois, são escritos na tabela de alterações de destino ou descartados (em caso de rollback). Como há uma quantidade limitada de memória disponível, grandes transações são gravadas na tabela cdc.xdbcdc_staged_transactions até que a transação seja concluída. As transações também são gravadas na tabela de estágio quando são executadas por um período prolongado. Portanto, quando a instância Oracle CDC é reiniciada, as alterações antigas não precisam ser relidas dos logs de transações do Oracle.

A tabela a seguir descreve as cdc.xdbcdc_staged_transactions colunas da tabela.

Iteme Descrição
identificador_de_transação O identificador de transação único da transação em preparação.
seq_num O número de linha xcbcdc_staged_transactions para a transação atual (começando com 0).
data_start_cn O número de alteração (CN) para a primeira alteração nos dados nesta linha.
data_end_cn O número de alteração (CN) da última alteração nos dados desta linha.
dados As alterações planeadas para a transação sob a forma de um BLOB.

Ver também

Change Data Capture Designer para Oracle da Attunity