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.
Esta seção descreve alguns conceitos importantes do Serviço Oracle CDC. Os conceitos incluídos nesta secção são:
-
Esta seção descreve as tabelas incluídas neste banco de dados e como isso é importante para o CDC.
-
Esta seção fornece uma breve descrição dos bancos de dados do CDC. Esses bancos de dados são criados usando o Oracle CDC Designer Console. Consulte a documentação incluída com a instalação do CDC Designer Console para obter mais informações sobre os bancos de dados CDC.
Usando a linha de comando para configurar o serviço CDC
Esta seção descreve os comandos de linha de comando que podem ser usados para configurar o Serviço Oracle CDC.
O banco de dados MSXDBCDC
O banco de dados MSXDBCDC (Microsoft External-Database CDC) é um banco de dados especial que é necessário ao usar o Serviço CDC para Oracle com uma instância do SQL Server.
O nome deste banco de dados não pode ser alterado. Se existir um banco de dados chamado MSXDBCDC na instância do SQL Server do host e contiver tabelas diferentes daquelas definidas pelo Serviço CDC para Oracle, a instância do SQL Server do host não poderá ser usada.
As principais utilizações desta base de dados são:
Servir como um registro dos Serviços Oracle CDC associados a uma instância do SQL Server. Essas informações são utilizadas para a configuração e design de componentes de serviço e para apoiar a coordenação de vários serviços CDC com o mesmo nome em nós diferentes, nos quais um está ativo.
Sirva como um registro das instâncias Oracle CDC contidas em uma instância do SQL Server, o serviço CDC que lida com cada instância e a versão de configuração usada por cada um. Essas informações são equivalentes à coluna is_cdc_enabled na tabela sys.databases do banco de dados mestre. O serviço CDC verifica periodicamente a tabela dbo.xdbcdc_databases para identificar alterações feitas na configuração CDC ou na lista de instâncias capturadas.
Mantenha procedimentos armazenados de propriedade do administrador do sistema que ajudam a criar e manter instâncias CDC. Eles são semelhantes aos procedimentos do sistema que são usados para a implementação do recurso CDC do SQL Server.
Criando o banco de dados MSXDBCDC
Um banco de dados MSXDBCDC deve ser criado antes que o Serviço Oracle CDC possa ser definido. Você pode criar apenas um banco de dados MSXDBCDC em uma instância do SQL Server. O banco de dados MSXDBCDC é criado quando você prepara um banco de dados SQL Server para Oracle CDC. Isso pode ser feito usando o Oracle CDC Service Configuration Console ou executando um script de criação gerado pelo CDC Service Configuration Console.
O proprietário desse banco de dados é o Oracle CDC Service Administrator, que pode controlar todas as instâncias do Oracle CDC hospedadas na instância do SQL Server.
Consulte também:
Como preparar o SQL Server para CDC
As tabelas do banco de dados MSXDBCDC
Esta seção descreve as tabelas a seguir no banco de dados MSXDBCDC.
dbo.xdbcdc_trace
Esta tabela armazena informações de rastreamento para o Serviço Oracle CDC. As informações armazenadas nesta tabela incluem alterações de status notáveis e registros de rastreamento.
O Serviço Oracle CDC grava registros de erro e alguns dos registros de informações no log de eventos do Windows e na tabela de rastreamento. Em alguns casos, a tabela de rastreamento pode não estar acessível, caso em que as informações de erro estão acessíveis a partir do log de eventos.
A seguir são descritos os itens incluídos na tabela dbo.xdbcdc_trace .
| Iteme | Descrição |
|---|---|
| Marca temporal | 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 |
| nodo | O nome do nó no qual o registro foi escrito. |
| Situação | 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. |
| fonte | O nome do componente Oracle CDC que produziu o registro de rastreamento. |
| dados_texto | Dados de texto adicionais para casos em que o registro de erro ou rastreamento contém uma carga textual. |
| dados binários | Dados binários adicionais para casos em que o registro de erro ou rastreamento contém uma carga binária. |
A instância do Oracle CDC excluirá linhas antigas da tabela de rastreamento de acordo com a política de retenção de tabelas de alteração.
dbo.xdbcdc_databases
Esta tabela contém os nomes dos bancos de dados CDC Service for Oracle CDC na instância atual do SQL Server. Cada banco de dados corresponde a uma instância Oracle CDC. O Serviço Oracle CDC usa esta tabela para determinar quais instâncias iniciar ou parar e quais instâncias reconfigurar.
A tabela a seguir descreve os itens incluídos na tabela dbo.xdbcdc_databases .
| Iteme | Descrição |
|---|---|
| nome | O nome do banco de dados Oracle na instância do SQL Server. |
| versão_de_configuração | O carimbo de data/hora (UTC) para a última alteração na tabela xdbcdc_config do banco de dados CDC correspondente ou o carimbo de data/hora (UTC) para a linha atual nesta mesma tabela. O gatilho UPDATE impõe um valor de GETUTCDATE() para este item. config_version permite que o serviço CDC identifique a instância CDC que precisa ser verificada para alteração de configuração ou para habilitação/desabilitação. |
| cdc_service_name | Este item determina qual Serviço Oracle CDC lida com o banco de dados Oracle selecionado. |
| habilitado | Indica se a instância do Oracle CDC está ativa (1) ou desabilitada (0). Quando o Serviço Oracle CDC é iniciado, somente as instâncias marcadas como enable (1) são iniciadas. Nota: Uma instância do Oracle CDC pode ser desativada devido a um erro que não pode ser repetido. Nesse caso, a instância deve ser reiniciada manualmente depois que o erro for resolvido. |
dbo.xdbcdc_services
Esta tabela lista os serviços CDC associados à instância do SQL Server do host. Esta tabela é usada pelo CDC Designer Console para determinar a lista de serviços CDC configurados para a instância local do SQL Server. Ele também é usado pelo serviço CDC para garantir que apenas um serviço Windows em execução manipule um determinado nome de serviço Oracle CDC.
A seguir são descritos os itens de estado de captura incluídos na tabela dbo.xdbcdc_databases .
| Iteme | Descrição |
|---|---|
| cdc_service_name | O nome do Serviço Oracle CDC (o nome do serviço Windows). |
| cdc_service_sql_login | O nome do logon do SQL Server usado pelo Serviço Oracle CDC para se conectar à instância do SQL Server. Um novo utilizador SQL chamado cdc_service é criado, associado a este login, e depois adicionado como membro das funções de banco de dados fixas db_ddladmin, db_datareader e db_datawriter para cada base de dados CDC gerida pelo serviço. |
| contagem_de_referências | Este item conta o número de máquinas onde o mesmo serviço Oracle CDC está instalado. Ele é incrementado a cada adição do serviço Oracle CDC de mesmo nome, e é diminuído quando esse serviço é removido. Quando o contador atinge zero, essa linha é excluída. |
| nó_de_serviço_ativo | O nome do nó do Windows que atualmente gerencia o serviço de CDC. Quando o serviço é interrompido corretamente, essa coluna é definida como null, indicando que não há mais um serviço ativo. |
| batimento_cardíaco_serviço_ativo | Este item rastreia o serviço CDC atual para determinar se ele ainda está ativo. Este item é atualizado com o carimbo de data/hora UTC do banco de dados atual para o serviço CDC ativo em intervalos regulares. O intervalo padrão é de 30 segundos, no entanto, o intervalo é configurável. Quando um serviço CDC pendente deteta que a pulsação não foi atualizada após o intervalo configurado ter passado, o serviço pendente tenta assumir a função de serviço CDC ativa. |
| Opções | Este item especifica as opções secundárias, como rastreamento ou ajuste. É escrito na forma de nome[=valor][; ]. A cadeia de opções usa a mesma semântica que a cadeia de conexão ODBC. Se a opção for booleana (com um valor de sim/não), o valor pode incluir apenas o nome. Trace tem os seguintes valores possíveis. verdadeiro sobre falso fora <nome da classe>[, nome da classe>] O valor padrão é false. service_heartbeat_interval é o intervalo de tempo (em segundos) para o serviço atualizar a coluna active_service_heartbeat. O valor padrão é 30. O valor máximo é 3600. service_config_polling_interval é o intervalo de sondagem (em segundos) para o serviço CDC verificar se há alterações na configuração. O valor padrão é 30. O valor máximo é 3600. sql_command_timeout é o tempo limite do comando que funciona com o SQL Server. O valor padrão é 1. O valor máximo é 3600. |
Os procedimentos armazenados do banco de dados MSXDBCDC
Esta seção descreve os seguintes procedimentos armazenados no banco de dados MSXDBCDC.
dbo.xcbcdc_reset_db(Nome do banco de dados)
Este procedimento limpa os dados de uma instância Oracle CDC. É utilizado:
Para reiniciar a captura de dados ignorando dados anteriores, por exemplo, após a recuperação do banco de dados de origem ou após a inatividade em que alguns dos logs de transações do Oracle não estão disponíveis.
Quando há uma corrupção no estado CDC (especificamente em qualquer dado das tabelas cdc.*).
O procedimento dbo.xcbcdc_reset_db executa as seguintes tarefas:
Interrompe a instância CDC (se ativa).
Trunca as tabelas de alteração, a tabela cdc_lsn_mapping e a tabela cdc_ddl_history .
Limpa a tabela cdc_xdbcdc_state .
Limpa a coluna start_lsn de cada linha do cdc_change_table.
Para usar o procedimento dbo.xcbcdc_reset_db, o utilizador deve ser membro da função de base de dados db_owner para o base de dados da Instância CDC que está a ser nomeada, ou então membro da função de servidor fixa sysadmin ou serveradmin.
Para obter mais informações sobre as tabelas CDC, consulte Os bancos de dados CDC no sistema de ajuda no CDC Designer Console.
dbo.xdbcdc_disable_db(dbname)
O procedimento dbo.xcbcdc_disable_db executa a seguinte tarefa:
- Remover a entrada do banco de dados CDC selecionado na tabela MSXDBCDC.xdbcdc_databases.
Para usar o procedimento dbo.xcbcdc_disable_db , o usuário deve ser membro da função de banco de dados db_owner para a instância CDC que está sendo nomeada ou um membro da função de servidor fixa sysadmin ou serveradmin .
Para obter mais informações sobre as tabelas CDC, consulte Os bancos de dados CDC no sistema de ajuda no CDC Designer Console.
dbo.xcbcdc_add_service(svcname,sqlusr)
O procedimento dbo.xcbcdc_add_service adiciona uma entrada à tabela MSXDBCDC.xdbcdc_services e adiciona um incremento de uma à coluna ref_count para o nome do serviço na tabela MSXDBCDC.xdbcdc_services . Quando o ref_count é 0, ele exclui a linha.
Para usar o nome de serviço dbo.xcbcdc_add_service<, procedimento de nome> de usuário, o usuário deve ser um membro da função de banco de dados db_owner para o banco de dados de instância CDC que está sendo nomeado ou um membro da função de servidor fixa sysadmin ou serveradmin.
dbo.xdbcdc_start(dbname)
O procedimento dbo.xdbcdc_start envia uma solicitação de início para o serviço CDC que lida com a instância CDC selecionada para iniciar o processamento da alteração.
Para usar o procedimento dbo.xcdcdc_start , o usuário deve ser membro da função de banco de dados db_owner para o banco de dados CDC ou ser membro das funções sysadmin ou serveradmin para a instância do SQL Server.
dbo.xdbcdc_stop(dbname)
O procedimento dbo.xdbcdc_stop envia uma solicitação de parada para o serviço CDC que manipula a instância CDC selecionada para interromper o processamento de alterações.
Para usar o procedimento dbo.xcdcdc_stop , o usuário deve ser membro da função de banco de dados db_owner para o banco de dados CDC ou ser membro das funções sysadmin ou serveradmin para a instância do SQL Server.
As bases de dados do CDC
Cada instância Oracle CDC usada em um serviço CDC está associada a um banco de dados SQL Server específico chamado Banco de Dados CDC. Esse banco de dados do SQL Server é hospedado na instância do SQL Server associada ao Serviço Oracle CDC.
A base de dados do CDC contém um esquema cdc especial. O Serviço Oracle CDC usa esse esquema com nomes de tabela com o prefixo xdbcdc_. Este esquema é usado para fins de segurança e consistência.
A instância Oracle CDC e os bancos de dados CDC são criados usando o Oracle CDC Designer Console. Para obter mais informações sobre os bancos de dados CDC, consulte a documentação incluída com a instalação do Oracle CDC Designer Console.
Usando a linha de comando para configurar o serviço CDC
Você pode operar o programa Oracle CDC Service (xdbcdcsvc.exe) a partir da linha de comando. O programa de serviço CDC é um arquivo executável nativo do Windows de 32 bits/64 bits.
Ver também
Como usar o CDC Service Command-Line Interface
Comandos do programa de serviço
A seção descreve os seguintes comandos que são usados para configurar o serviço CDC.
Configuração
Use Config para atualizar uma configuração do Serviço Oracle CDC a partir de um script. O comando pode ser usado para atualizar apenas partes específicas da configuração do serviço CDC (por exemplo, apenas a cadeia de conexão sem saber a senha da chave assimétrica). O comando deve ser executado por um administrador do computador. Segue-se um exemplo do Config comando.
"<path>xdbcdcsvc.exe" config
<cdc-service-name>
[connect= <sql-server-connection-string>]
[key= <asym-key-password>]
[svcacct= <windows-account> <windows-password>]
[sqlacct= <sql-username> <sql-password>]
Onde:
cdc-service-name é o nome do serviço CDC a ser atualizado. Este é um parâmetro obrigatório.
sql-server-connection-string é a cadeia de conexão a ser atualizada. Se a cadeia de conexão contiver espaços ou aspas, ela deverá ser colocada entre aspas duplas ("). As aspas incorporadas são evitadas dobrando as aspas.
asym-key-password é a senha a ser atualizada.
windows-account, windows-password são as credenciais da conta do Windows para o serviço que está a ser atualizado.
sql-username, sql-password são as credenciais de autenticação do SQL Server que estão sendo atualizadas. Se o sqlacct tiver um nome de usuário e uma senha vazios, o Serviço Oracle CDC se conectará ao SQL Server usando a autenticação do Windows.
Nota: Qualquer parâmetro que contenha espaços ou aspas duplas deve ser encapsulado com aspas duplas ("). As aspas duplas incorporadas devem ser duplicadas (por exemplo, para usar "A#B" D como palavra-passe, insira ""A#B"" D").
Criar
Use Create para criar um serviço Oracle CDC a partir de um script. O comando deve ser executado por um administrador do computador. Segue-se um exemplo do Create comando:
"<path>xdbcdcsvc.exe" create
<cdc-service-name>
[connect= "<sql-server-connection-string>"]
[key= <asym-key-password>]
[svcacct <windows-account> <windows-password>]
[sqlacct <sql-username> <sql-password>]
Onde:
cdc-service-name é o nome do serviço recém-criado. Se já existir um serviço com este nome, o programa devolve um erro. Você não deve usar nomes longos ou nomes com espaços. Os caracteres "/" e "\" não são caracteres válidos em um nome de serviço. Este é um parâmetro obrigatório.
sql-server-connection-string é a cadeia de conexão a ser usada para se conectar à instância do SQL Server associada ao novo Serviço Oracle CDC.
asym-key-password é a senha que protege a chave assimétrica usada para armazenar as credenciais de mineração de log do banco de dados de origem.
windows-account, windows-password são o nome da conta e a senha associados ao Serviço Oracle CDC que está sendo criado.
sql-username, sql-password são o nome da conta e a senha do SQL Server usados para se conectar à instância do SQL Server. Se ambos os parâmetros estiverem vazios, o CDC Service for Oracle se conectará ao SQL Server usando a autenticação do Windows.
Nota: Qualquer parâmetro que contenha espaços ou aspas duplas deve ser encapsulado com aspas duplas ("). As aspas duplas incorporadas devem ser dobradas (por exemplo, para usar "A#B" D como senha, digite ""A#B"" D".
Suprimir
Use Delete para excluir corretamente o Serviço Oracle CDC de um script. Este comando deve ser executado por um administrador do computador. Segue-se um exemplo do Delete comando.
"<path>xdbcdcsvc.exe" delete
<cdc-service-name>
Onde:
cdc-service-name é o nome do serviço CDC a ser excluído.
Nota: Qualquer parâmetro que contenha espaços ou aspas duplas deve ser encapsulado com aspas duplas ("). As aspas duplas incorporadas devem ser duplicadas (por exemplo, para usar "A#B" D como palavra-passe, insira ""A#B"" D").
Ver também
Como usar o CDC Service Command-Line Interface
Como preparar o SQL Server para CDC