Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
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
Permissões necessárias de conexão do SQL Server para o serviço CDC
Funções de usuário do Serviço de Captura de Dados de Mudança para Oracle pela Attunity
Consulte Também
Como gerenciar um serviço CDC local
Gerenciar um serviço Oracle CDC