Partilhar via


O Serviço Oracle CDC

O Serviço Oracle CDC é um serviço do Windows que executa o programa xdbcdcsvc.exe. O Serviço Oracle CDC pode ser configurado para executar vários serviços Windows no mesmo computador, cada um com um nome de serviço do Windows diferente. A criação de vários serviços Windows Oracle CDC em um único computador geralmente é feita para obter uma separação melhor entre eles ou quando cada um precisa trabalhar com uma instância diferente do SQL Server.

Um Serviço Oracle CDC é criado usando o console de Configuração do Serviço Oracle CDC ou é definido por meio da interface de linha de comando integrada ao programa xdbcdcsvc.exe. Em ambos os casos, cada Serviço Oracle CDC criado está associado a uma única instância do SQL Server (que pode ser clusterizado ou espelhado com a instalação do AlwaysOn ) e as informações de conexão (credenciais de conexão e acesso) fazem parte da configuração do serviço.

Quando um Serviço Oracle CDC é iniciado, ele tenta se conectar à instância do SQL Server à qual está associado, obter a lista de instâncias oracle CDC que precisa manipular e executa uma validação inicial do ambiente. Erros durante a inicialização do serviço e todas as informações de início/parada são sempre gravados no log de eventos do aplicativo Windows. Quando uma conexão com o SQL Server é estabelecida, todos os erros e mensagens de informações são gravados na tabela dbo.xdbcdc_trace no banco de dados MSXDBCDC da instância do SQL Server. Uma das verificações feitas durante a inicialização é a verificação de que nenhum outro Serviço Oracle CDC com o mesmo nome está funcionando no momento. Se um serviço com o mesmo nome estiver atualmente conectado de um computador diferente, o Serviço Oracle CDC entrará em um loop de espera, aguardando que o outro serviço se desconecte antes de continuar a lidar com o trabalho do Oracle CDC.

Quando o Serviço Oracle CDC passa todas as verificações de inicialização, ele verifica a tabela dbo.xdbcdc_databases no banco de dados MSXDBCDC para quaisquer Instâncias Oracle CDC habilitadas. Para cada Instância oracle CDC habilitada, o serviço inicia um subprocesso para lidar com essa Instância oracle CDC.

Quando uma Instância oracle CDC é iniciada, ela acessa o banco de dados CDC do SQL Server com o mesmo nome da Instância CDC e recupera seu estado da execução anterior. Ele também verifica se tudo está sendo executado corretamente. Em seguida, ele retoma o processamento de alterações, lendo os logs de transações do Oracle e gravando alterações no banco de dados de CDC.

O Serviço Oracle CDC monitora periodicamente a tabela dbo.xdbcdc_tables no banco de dados MSXDBCDC para determinar se houve alterações de configuração em qualquer uma das configurações da Instância oracle CDC. Se uma alteração for encontrada, o Serviço Oracle CDC notificará a Instância oracle CDC de que ela deve verificar se há alterações na configuração. A maioria das alterações de configuração, como adicionar e remover instâncias de captura, pode ser aplicada enquanto a instância do Oracle CDC está habilitada, outras exigem que a Instância oracle CDC seja reiniciada.

Ao usar o console do Oracle CDC Designer, as alterações são detectadas automaticamente. Ao atualizar a configuração do Oracle CDC diretamente usando o SQL, o procedimento a seguir deve ser chamado para que o Serviço Oracle CDC observe a alteração de configuração:

DECLARE @dbname nvarchar(128) = 'HRcdc'  
EXECUTE [MSXDBCDC].[dbo].[xdbcdc_update_config_version] @dbname  
GO  
  

O processo da Instância Oracle CDC atualiza seu status na tabela do sistema cdc.xdbcdc_state e grava informações de erro na tabela cdc.xdbcdc_trace. A tabela xdbcdc_state é útil para monitorar o estado da Instância oracle CDC. Ele fornece status de data up-to, vários contadores (como o número de alterações lidas do Oracle, o número de alterações gravadas no SQL Server, o número de transações confirmadas gravadas e o número atual de transações em andamento) e indicação de latência.

A configuração da Instância oracle CDC é salva na tabela cdc.xdbcdc_config , que é a tabela com a qual o console do Oracle CDC Designer funciona. Como toda a configuração de uma Instância oracle CDC é encontrada na instância do SQL Server de destino e nos bancos de dados CDC, é possível criar scripts de implantação do SQL Server para uma Instância oracle CDC. Isso é feito usando os consoles Oracle CDC Service Configuration e Oracle CDC Designer.

Considerações sobre segurança

A seguir, descreve os requisitos de segurança necessários para trabalhar com o Serviço CDC para Oracle.

Proteção dos dados de origem do Oracle

O serviço Oracle CDC não requer acesso aos dados de origem Oracle e é protegido, garantindo que as credenciais de mineração de log não concedam permissão SELECT em tabelas Oracle do cliente.

Proteção dos dados de alteração do Oracle de origem

O serviço Oracle CDC é fornecido com credenciais de mineração de log que permitem que o serviço capture alterações feitas em qualquer tabela no banco de dados Oracle. Os dados de alteração não têm as permissões de acesso granular que as tabelas regulares têm; por isso, acessar dados de alteração ignora os controles internos de acesso a dados Oracle.

As tabelas Oracle de origem capturadas têm tabelas espelho vazias com o mesmo esquema e nome de tabela no banco de dados CDC. Os dados capturados são armazenados em instâncias de captura do SQL Server e oferecem a mesma proteção fornecida para alterações capturadas do banco de dados do SQL Server. Para obter acesso aos dados de alteração associados a uma instância de captura, o usuário deve receber acesso selecionado a todas as colunas capturadas da tabela espelho associada. Além disso, se uma função de controle for especificada quando a instância de captura for criada, o chamador também deve ser membro da função de controle especificada. Outras funções gerais de captura de dados de alteração para acessar metadados são acessíveis a todos os usuários de banco de dados por meio da função pública. Entretanto, o acesso aos metadados retornados costuma ser restrito mediante o uso de acesso selecionado às tabelas de origem subjacentes e pela associação em quaisquer funções de controle de acesso definidas.

Isso significa que os usuários com a função de servidor fixa sysadmin ou a db_owner função de banco de dados fixa têm (por padrão) acesso total aos dados capturados, e mais acesso pode ser concedido por meio de funções gating ou concedendo acesso selecionado às colunas capturadas.

Proteção das credenciais de análise de logs do Oracle de origem

A configuração do serviço Oracle CDC, armazenada no banco de dados CDC (na tabela cdc.xdbcdc_config) inclui o nome de usuário de mineração de log e sua senha associada.

A senha de mineração de log é armazenada criptografada por meio de uma chave assimétrica com o nome xdbcdc_asym_key fixo que é criado automaticamente com o seguinte comando:

USE [<cdc-database-name>]  
CREATE ASYMMETRIC KEY xdbcdc_asym_key  
    WITH ALGORITHM = RSA_1024  
    ENCRYPTION BY PASSWORD = '<cdc-database-name><asym-key-password>'  
  

Se um algoritmo diferente for usado, essa chave poderá ser descartada e uma nova pelo mesmo nome e criptografada pela mesma senha poderá ser criada.

A senha da chave assimétrica é a senha mestra salva no registro no caminho HKLM\Software\Microsoft\XDBCDCSVC\. Essa chave é acessível somente aos administradores locais e à conta de serviço Do Oracle CDC Windows. A chave contém um valor binário criptografado AsymmetricKeyPassword que armazenou a senha da chave assimétrica. O acesso a essa chave do Registro é necessário para poder acessar as credenciais de mineração de log do Oracle.

Para usar a cláusula ENCRYPTION BY PASSWORD, a senha deve atender aos requisitos de política de senha do Windows para o computador que executa a instância do SQL Server. Isso é feito selecionando a senha de chave assimétrica de acordo com essa política.

Se a senha da chave assimétrica for perdida, as credenciais de mineração de log para cada uma das instâncias do Oracle CDC deverão ser especificadas novamente no Designer de Serviços Oracle CDC.

A chave assimétrica é criada automaticamente no banco de dados CDC quando o serviço CDC detecta um banco de dados CDC de instância Oracle que não tem essa chave assimétrica ou quando a chave existe, mas a senha não corresponde.

Conta de Serviço do Oracle CDC no Windows

A conta de serviço usada com o serviço Windows Oracle CDC não requer privilégios adicionais. Essa conta deve ser capaz de usar a API oracle native client e a API ODBC do SQL Server Native Client. Ele também precisa ser capaz de acessar a chave de configuração de serviço no registro (este console de Configuração de Serviço CDC configura a ACL para isso).

Nesta seção

Consulte Também

Como gerenciar um serviço CDC local
Gerenciar um serviço Oracle CDC