Servizio Oracle CDCThe Oracle CDC Service

Il servizio Oracle CDC è un servizio di Windows in cui viene eseguito il programma xdbcdcsvc.exe.The Oracle CDC Service is a Windows service running the program xdbcdcsvc.exe. È possibile configurare il servizio Oracle CDC per eseguire più servizi di Windows nello stesso computer, ciascuno con un nome del servizio Windows diverso.The Oracle CDC Service can be configured to run multiple Windows services on the same computer, each one with a different Windows service name. La creazione di più servizi Windows Oracle CDC in un solo computer viene spesso effettuata per migliorare la separazione tra gli stessi o quando ciascun servizio richiede l'utilizzo di un'istanza di SQL ServerSQL Server diversa.Creating multiple Oracle CDC Windows services on a single computer is often done to achieve a better separation between them, or when each needs to work with a different SQL ServerSQL Server instance.

Un servizio Oracle CDC viene creato utilizzando Oracle CDC Service Configuration Console o definito tramite l'interfaccia della riga di comando incorporata nel programma xdbcdcsvc.exe.An Oracle CDC Service is created using the Oracle CDC Service Configuration console or is defined through the command-line interface built into the xdbcdcsvc.exe program. In entrambi i casi, ogni servizio Oracle CDC creato è associato a una sola istanza di SQL ServerSQL Server , che può essere cluster o con mirroring con l'impostazione AlwaysOn , mentre le informazioni di connessione (stringa di connessione e credenziali di accesso) sono parte della configurazione del servizio.In both cases, each Oracle CDC Service created is associated with a single SQL ServerSQL Server instance (which may be clustered or mirrored with Always On setup) and the connection information (connect string and access credentials) are part of the service configuration.

Quando viene avviato, un servizio Oracle CDC tenta di connettersi all'istanza di SQL ServerSQL Server con cui è associato, ottiene l'elenco di istanze di Oracle CDC da gestire ed esegue una convalida dell'ambiente iniziale.When an Oracle CDC Service is started, it tries to connect to the SQL ServerSQL Server instance it is associated with, get the list of Oracle CDC instances it needs to handle, and performs an initial environment validation. Gli errori durante l'avvio del servizio ed eventuali informazioni di avvio/arresto vengono sempre scritti nel registro eventi applicazioni di Windows.Errors during the service startup and any start/stop information are always written to the Windows application event log. Quando si stabilisce una connessione a SQL ServerSQL Server , tutti gli errori e i messaggi informativi vengono scritti nella tabella dbo.xdbcdc_trace nel database MSXDBCDC dell'istanza di SQL ServerSQL Server .When a connection to SQL ServerSQL Server is established, all errors and information messages are written to the dbo.xdbcdc_trace table in the MSXDBCDC database of the SQL ServerSQL Server instance. Uno dei controlli effettuati durante l'avvio consiste nel verificare che nessun altro servizio Oracle CDC con lo stesso nome sia attualmente in esecuzione.One of the checks made during startup is verification that no other Oracle CDC Service with the same name is currently working. Se un servizio con lo stesso nome è attualmente connesso da un altro computer, il servizio Oracle CDC entra in un ciclo di attesa, aspettando la disconnessione dell'altro servizio prima di procedere con la gestione dell'attività Oracle CDC.If a service with the same name is currently connected from a different computer, the Oracle CDC Service enters a wait loop, waiting for the other service to disconnect before proceeding to handle the Oracle CDC work.

Dopo il superamento di tutte le verifiche di avvio, il servizio Oracle CDC controlla la tabella dbo.xdbcdc_databases nel database MSXDBCDC per l'eventuale presenza di istanze di Oracle CDC abilitate.When the Oracle CDC Service passes all the startup verifications, it checks the dbo.xdbcdc_databases table in the MSXDBCDC database for any enabled Oracle CDC Instances. Per ogni istanza di Oracle CDC abilitata, il servizio avvia un sottoprocesso per gestire tale istanza di Oracle CDC.For every enabled Oracle CDC Instance, the service starts a sub-process to handle that Oracle CDC Instance.

All'avvio, un'istanza di Oracle CDC accede al database di SQL Server CDC con lo stesso nome dell'istanza di CDC e recupera lo stato dall'esecuzione precedente.When an Oracle CDC Instance starts, it accesses the SQL Server CDC database with the same name as the CDC Instance and retrieves its state from the previous run. Verifica inoltre che l'esecuzione proceda correttamente.It also verifies that everything is running properly. Riprende quindi l'elaborazione delle modifiche, la lettura dei log delle transazioni Oracle e la scrittura delle modifiche nel database CDC.It then resumes processing changes; Reading the Oracle transaction logs and writing changes to the CDC database.

Il servizio Oracle CDC monitorizza periodicamente la tabella dbo.xdbcdc_tables nel database MSXDBCDC per determinare se sono state apportate modifiche alla configurazione delle istanze di Oracle CDC.The Oracle CDC Service periodically monitors the dbo.xdbcdc_tables table in the MSXDBCDC database to determine if there were any configuration changes to any of the Oracle CDC Instance configurations. Se viene riscontrata una modifica, viene inviata una notifica dal servizio Oracle CDC all'istanza di Oracle CDC per richiedere la verifica delle modifiche della configurazione.If a change is found, the Oracle CDC Service notifies the Oracle CDC Instance that it should check its configuration for changes. La maggior parte delle modifiche della configurazione, ad esempio l'aggiunta e la rimozione di istanze di acquisizione, può essere applicata mentre l'istanza di Oracle CDC è abilitata, altre ne richiedono il riavvio.Most configuration changes, such as adding and removing capture instances can be applied while the Oracle CDC instance is enabled, others require the Oracle CDC Instance to be restarted.

Quando si utilizza Oracle CDC Designer Console, le modifiche vengono rilevate automaticamente.When using the Oracle CDC Designer console, changes are automatically detected. Quando si aggiorna direttamente la configurazione di Oracle CDC tramite SQL, è necessario chiamare la procedura riportata di seguito affinché la modifica della configurazione venga rilevata dal servizio Oracle CDC:When updating the Oracle CDC configuration directly using SQL, the following procedure should be called for the Oracle CDC Service to notice the configuration change:

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

Tramite il processo dell'istanza di Oracle CDC, lo stato viene aggiornato nella tabella di sistema cdc.xdbcdc_state e le informazioni sull'errore vengono scritte nella tabella cdc.xdbcdc_trace .The Oracle CDC Instance process updates its status in the system table cdc.xdbcdc_state and writes error information to the cdc.xdbcdc_trace table. La tabella xdbcdc_state è utile per monitorare lo stato dell'istanza di Oracle CDC.The xdbcdc_state table is useful for monitoring the state of the Oracle CDC Instance. Include lo stato aggiornato, vari contatori (ad esempio numero di modifiche lette da Oracle, numero di modifiche scritte in SQL ServerSQL Server, numero di transazioni di cui è stato eseguito il commit scritte e numero corrente di transazioni in transito) e indicazione della latenza.It provides up-to-date status, various counters (such as number of changes read from Oracle, number of changes written to SQL ServerSQL Server, number of committed transaction written and the current number of in-flight transactions) and latency indication.

La configurazione dell'istanza di Oracle CDC viene salvata nella tabella cdc.xdbcdc_config , la tabella con cui interagisce Oracle CDC Designer Console.The Oracle CDC Instance configuration is saved in the cdc.xdbcdc_config table, which is the table that the Oracle CDC Designer console works with. Poiché l'intera configurazione di un'istanza di Oracle CDC è presente nell'istanza di SQL ServerSQL Server di destinazione e nei database CDC, è possibile creare script di distribuzione di SQL ServerSQL Server per un'istanza di Oracle CDC.Because the entire configuration of an Oracle CDC Instance is found in the target SQL ServerSQL Server instance and CDC databases, it is possible to create SQL ServerSQL Server deployment scripts for an Oracle CDC Instance. Questo risultato viene raggiunto utilizzando Oracle CDC Service Configuration Console e Oracle CDC Designer Console.This is done using the Oracle CDC Service Configuration and Oracle CDC Designer consoles.

Considerazioni sulla sicurezzaSecurity Considerations

Di seguito vengono descritti i requisiti relativi alla sicurezza necessari per utilizzare il servizio CDC per Oracle.The following describes the security requirements necessary to work with the CDC Service for Oracle.

Protezione dei dati Oracle di origineProtection of Source Oracle Data

Il servizio Oracle CDC non richiede l'accesso ai dati di origine Oracle ed è protetto assicurando che tramite le credenziali di log mining non venga fornita l'autorizzazione SELECT per le tabelle Oracle del cliente.The Oracle CDC service does not require access to Oracle source data and is protected by ensuring that the log-mining credentials do not give SELECT permission on customer Oracle tables.

Protezione dei dati delle modifiche Oracle di origineProtection of Source Oracle Change Data

Il servizio Oracle CDC viene fornito con credenziali di log mining mediante cui vengono acquisite le modifiche apportate a qualsiasi tabella nel database Oracle.The Oracle CDC service is provided with log-mining credentials that let the service capture changes made to any table in the Oracle database. I dati delle modifiche non dispongono delle autorizzazioni di accesso granulari come le tabelle normali, pertanto per accedere a tali dati vengono ignorati i controlli di accesso ai dati predefiniti di Oracle.Change data does not have the granular access permissions regular tables have, therefore accessing change data bypasses the built-in Oracle data access controls.

Le tabelle Oracle di origine acquisite dispongono di tabelle mirror vuote con lo stesso nome di schema e di tabella nel database CDC.Captured source Oracle tables have empty mirror tables with the same schema and table name in CDC database. I dati acquisiti vengono archiviati nelle istanze di acquisizione di SQL ServerSQL Server e offrono la stessa protezione delle modifiche acquisite dal database di SQL ServerSQL Server .The captured data is stored in SQL ServerSQL Server capture instances and offer the same protection as is provided for changes captured from SQL ServerSQL Server database. Per accedere ai dati delle modifiche associati a un'istanza di acquisizione, l'utente deve disporre dell'autorizzazione SELECT per l'accesso a tutte le colonne acquisite della tabella mirror associata.To gain access to the change data that is associated with a capture instance, the user must be granted select access to all the captured columns of the associated mirror table. Se, inoltre, al momento della creazione dell'istanza di acquisizione viene specificato un ruolo di controllo, il chiamante deve essere anche un membro del ruolo di controllo specificato.In addition, if a gating role is specified when the capture instance is created, the caller must also be a member of the specified gating role. Le altre funzioni generali di Change Data Capture per l'accesso ai metadati sono accessibili a tutti gli utenti del database tramite il ruolo PUBLIC, sebbene l'accesso ai metadati restituiti sia inoltre in genere controllato utilizzando l'accesso SELECT alle tabelle di origine sottostanti e tramite l'appartenenza a qualsiasi ruolo di controllo definito.Other general change data capture functions for accessing metadata is accessible to all database users through the public role, although access to the returned metadata is usually also gated by using select access to the underlying source tables, and by membership in any defined gating roles.

Questo significa che gli utenti con ruolo predefinito del server sysadmin o ruolo predefinito del database db_owner dispongono per impostazione predefinita dell'accesso completo ai dati acquisiti ed è possibile concedere ulteriore accesso tramite ruoli di controllo o concedendo l'accesso SELECT alle colonne acquisite.This means that users with the sysadmin fixed server role or the db_owner fixed database role have (by default) full access to the captured data, and further access can be granted either through gating roles or by granting select access to the captured columns.

Protezione delle credenziali di log mining Oracle di origineProtection of Source Oracle Log Mining Credentials

La configurazione del servizio Oracle CDC, archiviato nel database CDC (nella tabella cdc.xdbcdc_config), include il nome utente di log mining e la password associata.The Oracle CDC service configuration, stored in the CDC database (in the cdc.xdbcdc_config table) includes the log mining user name and its associated password.

La password di log mining viene archiviata crittografata per mezzo di una chiave asimmetrica con il nome xdbcdc_asym_key fisso creato automaticamente con il comando seguente:The log mining password is stored encrypted by means of an asymmetric key with the fixed name xdbcdc_asym_key that is automatically created with the following command:

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

Se viene utilizzato un algoritmo diverso, è possibile eliminare questa chiave e crearne una nuova con lo stesso nome e crittografata con la stessa password.If a different algorithm is used, this key can be dropped and a new one by the same name and encrypted by the same password can be created.

La password della chiave asimmetrica è la password master salvata nel Registro di sistema nel percorso HKLM\Software\Microsoft\XDBCDCSVC\.The asymmetric key password is the master password that is saved in the registry under the path HKLM\Software\Microsoft\XDBCDCSVC\. Tale chiave è accessibile solo agli amministratori locali e all'account del servizio di Windows Oracle CDC.That key is accessible only to local administrators and to the Oracle CDC Windows service account. La chiave contiene un valore binario crittografato AsymmetricKeyPassword in cui è archiviata la password della chiave asimmetrica.The key contains an encrypted binary value AsymmetricKeyPassword that stored the asymmetric key password. L'accesso a questa chiave del Registro di sistema è necessario per accedere alle credenziali di log mining Oracle.Access to this registry key is required to be able to access to the Oracle log mining credentials.

Per utilizzare la clausola ENCRYPTION BY PASSWORD, è necessario che la password soddisfi i criteri password Windows per il computer in cui viene eseguita l'istanza di SQL ServerSQL Server .To use the ENCRYPTION BY PASSWORD clause, the password must meet the Windows password policy requirements for the computer running the SQL ServerSQL Server instance. A tale scopo, selezionare la password della chiave asimmetrica in base a questi criteri.This is done by selecting the asymmetric key password according to that policy.

Se la password della chiave asimmetrica viene persa, è necessario specificare nuovamente le credenziali di log mining per ciascuna delle istanze di Oracle CDC nuovamente nella finestra di progettazione del servizio Oracle CDC.If the asymmetric key password is lost, the log mining credentials for each of the Oracle CDC instances must be specified again in the Oracle CDC Service Designer.

La chiave asimmetrica viene creata automaticamente nel database CDC quando viene rilevata un'istanza di Oracle che non dispone di tale chiave asimmetrica o quando la chiave esiste ma la password non corrisponde.The asymmetric key is automatically created in the CDC database when the CDC service detects an Oracle instance CDC database that does not have this asymmetric key or when the key exists but the password does not match.

Account del servizio di Windows del servizio Oracle CDCOracle CDC Service Windows Service Account

L'account del servizio utilizzato con il servizio di Windows Oracle CDC non richiede privilegi aggiuntivi.The service account used with the Oracle CDC Windows service does not require any additional privileges. Questo account deve essere in grado di utilizzare sia l'API di Oracle Native Client sia l'API ODBC di SQL Server Native Client.This account must be able to use both the Oracle Native Client API and the SQL Server Native Client ODBC API. Deve essere inoltre in grado di accedere alla chiave di configurazione del servizio nel Registro di sistema; la console di configurazione del servizio CDC configura a tale scopo l'elenco di controllo di accesso (ACL).It also needs to be able to access the service configuration key in the registry (this CDC Service Configuration console sets up the ACL for that).

Contenuto della sezioneIn This Section

Vedere ancheSee Also

Procedura di gestione di un servizio CDC locale How to Manage a Local CDC Service
Gestire un servizio Oracle CDCManage an Oracle CDC Service