Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Un'istanza di Oracle CDC è associata a un database di SQL Server con lo stesso nome nell'istanza di SQL Server di destinazione. Questo database è denominato database Oracle CDC (o il database CDC).
Il database CDC viene creato e configurato usando Oracle CDC Designer Console e contiene gli elementi seguenti:
Schema
cdccreato abilitando il database per SQL Server CDC.Set di tabelle cdc.xdbcdc_xxxx usate dall'istanza di Oracle CDC.
Set di tabelle specchio vuote con le definizioni delle tabelle acquisite nel database Oracle di origine Tuphe.
Un insieme di tabelle di modifiche e funzioni di accesso alle modifiche generate dal meccanismo CDC di SQL Server e sono identiche a quelle usate nel normale CDC di SQL Server, non Oracle.
Lo cdc schema è inizialmente accessibile solo ai membri del ruolo predefinito del database dbowner . L'accesso alle tabelle delle modifiche e alle funzioni di modifica è determinato dallo stesso modello di sicurezza di SQL Server CDC. Per altre informazioni sul modello di sicurezza, vedere Modello di sicurezza.
Creazione del database CDC
Nella maggior parte dei casi, il database CDC viene creato usando CDC Designer Console, ma può anche essere creato con uno script di distribuzione CDC generato tramite CDC Designer Console. Se necessario, l'amministratore di sistema di SQL Server può modificare le impostazioni del database, ad esempio per elementi come archiviazione, sicurezza o disponibilità.
Per ulteriori informazioni sull'uso della CDC Designer Console per creare le tabelle di database e gli script necessari, vedere Usare la Creazione Guidata Nuova Istanza.
Ruoli utente del database CDC
Quando viene creato e abilitato un database CDC, viene creato un utente di database denominato cdc_service nel database CDC ed è associato all'account di accesso di SQL Server con cui è stato configurato il servizio Oracle CDC. Questo utente è reso membro dei ruoli di database db_datareader, db_datawriter e db_ddladmin. Se l'account di accesso di SQL Server è associato anche all'utente dbo , il cdc_service non viene creato.
Questa assegnazione di ruolo consente al servizio Oracle CDC di aggiornare le tabelle nello cdc schema con i dati acquisiti e con le informazioni di controllo.
Quando viene creato un database CDC e vengono configurate le tabelle Oracle di origine CDC, il proprietario del database CDC può concedere l'autorizzazione SELECT delle tabelle mirror e definire ruoli di controllo di SQL Server CDC per controllare chi accede ai dati delle modifiche.
Tabelle mirror
Per ogni tabella acquisita, <schema-name>.<table-name>, nel database di origine Oracle, viene creata una tabella vuota simile nel database CDC, con lo stesso schema e lo stesso nome di tabella. Le tabelle di origine Oracle con il nome cdc dello schema (senza distinzione tra maiuscole e minuscole) non possono essere acquisite perché lo cdc schema in SQL Server è riservato per SQL Server CDC.
Le tabelle mirror sono vuote; nessun dato viene archiviato in essi. Vengono usati per abilitare l'infrastruttura di SQL Server CDC standard utilizzata dall'istanza Oracle CDC. Per impedire l'inserimento o l'aggiornamento dei dati nelle tabelle mirror, tutte le operazioni UPDATE, DELETE e INSERT vengono negate per PUBLIC. Ciò garantisce che non possano essere modificati.
Accesso ai dati delle modifiche
A causa del modello di sicurezza di SQL Server usato per ottenere l'accesso ai dati delle modifiche associati a un'istanza di acquisizione, all'utente deve essere concesso select l'accesso a tutte le colonne acquisite della tabella mirror associata (le autorizzazioni di accesso alle tabelle Oracle originali non forniscono l'accesso alle tabelle delle modifiche in SQL Server). Per informazioni sul modello di sicurezza di SQL Server, vedere Modello di sicurezza.
Inoltre, se viene specificato un ruolo di controllo quando viene creata l'istanza di acquisizione, il chiamante deve anche essere un membro del ruolo di controllo specificato. Altre funzioni generali di Change Data Capture per l'accesso ai metadati sono accessibili a tutti gli utenti del database tramite il ruolo PUBLIC, anche se l'accesso ai metadati restituiti viene in genere gestito usando l'accesso selezionato alle tabelle di origine sottostanti e l'appartenenza a tutti i ruoli di controllo definiti.
I dati delle modifiche possono essere letti chiamando funzioni speciali basate su tabelle generate dal componente CDC di SQL Server quando viene creata un'istanza di acquisizione. Per altre informazioni su questa funzione, vedere Funzioni Change Data Capture (Transact-SQL).
L'accesso ai dati CDC tramite il componente origine CDC di Integration Services è soggetto alle stesse regole.
Tabelle di database CDC
In questa sezione vengono descritte le tabelle seguenti nel database CDC.
Tabelle delle modifiche (_CT)
Le tabelle delle modifiche vengono create dalle tabelle mirror. Contengono i dati delle modifiche acquisiti dal database Oracle. Le tabelle sono denominate in base alla convenzione seguente:
[cdc]. [<capture-instance>_CT]
Quando l'acquisizione è inizialmente abilitata per la tabella <schema-name>.<table-name>, il nome dell'istanza di acquisizione predefinita è <schema-name>_<table-name>. Ad esempio, il nome predefinito dell'istanza di acquisizione dei dati per la tabella Oracle HR.EMPLOYEES è HR_EMPLOYEES e la tabella delle modifiche associata è [cdc]. [HR_EMPLOYEES_CT]
Le tabelle di acquisizione vengono scritte dall'istanza di Oracle CDC. Vengono lette usando funzioni speciali con valori di tabella generate da SQL Server quando viene creata l'istanza di acquisizione. Ad esempio: fn_cdc_get_all_changes_HR_EMPLOYEES. Per ulteriori informazioni sulle funzioni di Change Data Capture (CDC), vedere Funzioni Change Data Capture (Transact-SQL).
cdc.lsn_time_mapping
La tabella [cdc].[lsn_time_mapping] viene generata dal componente CDC di SQL Server. L'uso nel caso di Oracle CDC è diverso rispetto al normale utilizzo.
Per Oracle CDC, i valori LSN archiviati in questa tabella si basano sul valore SCN (Oracle System Change Number) associato alla modifica. I primi 6 byte del valore LSN sono il numero SCN Oracle originale.
Inoltre, quando si usa Oracle CDC, le colonne di ora (tran_begin_time e tran_end_time) archiviano l'ora UTC della modifica anziché l'ora locale come avviela con il normale CDC di SQL Server. In questo modo si garantisce che le modifiche all'ora legale non influiscono sui dati archiviati nella lsn_time_mapping.
cdc.xdbcdc_config
Questa tabella contiene i dati di configurazione per l'istanza di Oracle CDC. Viene aggiornato tramite CDC Designer Console. Questa tabella contiene una sola riga.
Nella tabella seguente vengono descritte le colonne della tabella cdc.xdbcdc_config .
| Elemento | Descrizione |
|---|---|
| Versione | In questo modo viene tenuta traccia della versione della configurazione dell'istanza di CDC. Viene aggiornato ogni volta che la tabella viene aggiornata e ogni volta che viene aggiunta una nuova istanza di acquisizione o viene rimossa un'istanza di acquisizione esistente. |
| stringa di connessione | Stringa di connessione Oracle. Un esempio di base è:<server>:<port>/<instance> (ad esempio, erp.contoso.com:1521/orcl).La stringa di connessione può anche specificare un descrittore Oracle Net Connect, (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp) (HOST=erp.contoso.com) (PORT=1521)) (CONNECT_DATA=(SERVICE_NAME=orcl)))ad esempio .Se si usa un server di directory o tnsnames, la stringa di connessione può essere il nome della connessione. Per altre informazioni sulle stringhe di connessione Oracle, vedere https://go.microsoft.com/fwlink/?LinkId=231153 per informazioni dettagliate sulle stringhe di connessione del database Oracle per Oracle Instant Client usato dal servizio Oracle CDC. |
| usa_autenticazione_windows | Valore booleano che può essere: 0: per l'autenticazione vengono forniti un nome utente e una password Oracle (impostazione predefinita) 1: l'autenticazione di Windows viene usata per connettersi al database Oracle. È possibile usare questa opzione solo se il database Oracle è configurato per l'uso con l'autenticazione di Windows. |
| nome utente | Nome dell'utente del database Oracle per il mining dei log. Questa operazione è obbligatoria solo se use_windows_authentication = 0. |
| parola d’ordine | Password per l'utente del database Oracle per il mining dei log. Questa operazione è obbligatoria solo se use_windows_authentication = 0. |
| transaction_staging_timeout | Tempo, in secondi, in cui una transazione Oracle di cui non è stato eseguito il commit viene mantenuta in memoria prima di essere scritta nella tabella cdc.xdbcdc_staged_transactions . Il valore predefinito è 120 secondi. |
| limite_di_memoria | Limite della quantità di memoria, in Mb, che può essere usata per la memorizzazione nella cache dei dati in memoria. Un'impostazione inferiore determina la scrittura di più transazioni nella tabella cdc.xdbcdc_staged_transactions . Il valore predefinito è 50 Mb. |
| Opzioni | Elenco di opzioni sotto forma di nome[=valore][; ] : viene usato per specificare le opzioni secondarie , ad esempio traccia, ottimizzazione. Per una descrizione delle opzioni disponibili, vedere la tabella seguente. |
Nella tabella seguente vengono descritte le opzioni disponibili.
| Nome | Impostazione predefinita | Minuti | Max | Statico | Descrizione |
|---|---|---|---|---|---|
| traccia | Falso | - | - | Falso | I valori disponibili: Vero Falso su spento |
| intervallo_aggiornamento_stato_cdc | 10 | 1 | 120 | Falso | Dimensioni in Kbytes dei blocchi di memoria allocati per una transazione (una transazione può allocare più di un blocco). Vedere la colonna memory_limit nella tabella cdc.xdbcdc_config . |
| transazioni_raggruppate_massime_target | 100 | 1 | 1000 | Vero | Numero massimo di transazioni Oracle che possono essere elaborate come una transazione nelle tabelle CT di SQL Server. |
| target_idle_lsn_update_interval | 10 | 0 | 1 | Falso | Intervallo (in secondi) per l'aggiornamento della tabella lsn_time_mapping quando le tabelle acquisite non hanno attività. |
| periodo_di_conservazione_tracce | 24 | 1 | 24*31 | Falso | Quantità di tempo (in ore per mantenere i messaggi nella tabella di traccia). |
| intervallo_riconnetti_sql | 2 | 2 | 3600 | Falso | Quantità di tempo (in secondi) di attesa prima della riconnessione a SQL Server. Questo intervallo viene usato oltre al timeout di connessione del client SQL Server. |
| sql_reconnect_limit | -1 | -1 | -1 | Falso | Numero massimo di riconnessioni di SQL Server. Il valore predefinito -1 indica che il processo tenta di riconnettersi finché non si arresta. |
| limite_di_riavvio_cdc | 6 | -1 | 3600 | Falso | Nella maggior parte dei casi, il servizio CDC riavvia automaticamente un'istanza CDC terminata in modo anomalo. Questa proprietà definisce dopo quanti errori all'ora il servizio smette di riavviare l'istanza. Il valore -1 indica che l'istanza deve essere sempre riavviata. Il servizio torna a riavviare l'istanza dopo qualsiasi aggiornamento della tabella di configurazione. |
| rapporto_sulla_memoria_CDC | 0 | 0 | 1000 | Falso | Se il valore del parametro è stato modificato, l'istanza di CDC stampa il report di memoria nella tabella di monitoraggio. |
| target_command_timeout | 600 | 1 | 3600 | Falso | Timeout dei comandi durante l'interazione con SQL Server. |
| set_caratteri_origine | - | - | - | Vero | Può essere impostato su una codifica Oracle specifica da usare invece della tabella codici del database Oracle. Questa operazione può essere utilizzata quando la codifica effettiva utilizzata dai dati di tipo carattere è diversa da quella espressa dalla tabella codici del database Oracle. |
| intervallo_riprova_errore_origine | 30 | 1 | 3600 | Falso | Usato prima di riprovare su diversi errori, ad esempio un errore di connessione o una mancanza temporanea di sincronizzazione tra le tabelle di sistema. |
| source_prefetch_size | 100 | 1 | 10.000 | Vero | Dimensione del lotto di prelettura. |
| source_max_tables_in_query | 100 | 1 | 10.000 | Vero | Numero massimo di tabelle nella clausola WHERE prima di passare alla lettura del log Oracle senza filtrare le tabelle. |
| source_read_retry_interval | 2 | 1 | 3600 | Falso | Quantità di tempo di attesa dell'origine prima di provare a leggere nuovamente i log delle transazioni Oracle in EOF. |
| source_reconnect_interval | 30 | 1 | 3600 | Falso | Tempo (in secondi) di attesa prima di tentare di riconnettersi al database di origine. |
| limite_riconnessione_sorgente | -1 | -1 | Falso | Numero massimo di riconnessioni del database di origine. Il -1 predefinito indica che il processo tenta di riconnettersi fino a quando non viene arrestato. | |
| source_command_timeout | 30 | 1 | 3600 | Falso | Timeout della connessione durante l'interazione con Oracle. |
| timeout_connessione_origine | 30 | 1 | 3600 | Falso | Timeout della connessione durante l'utilizzo di SQL Server. |
| traccia_errori_dati | Vero | - | - | Falso | Booleano. True indica di registrare gli errori di conversione e di troncamento dei dati. |
| CDC_stop_on_breaking_schema_changes | Falso | - | - | Falso | Booleano.
True indica di arrestarsi quando viene rilevata una modifica dello schema che interrompe il funzionamento. False indica che è necessario eliminare la tabella mirror e l'istanza di acquisizione. |
| source_oracle_home | - | - | Falso | Può essere impostato su un percorso Oracle Home specifico o un Nome Home Oracle che verrà usato dall'istanza di CDC per connettersi a Oracle. |
cdc.xdbcdc_state
Questa tabella contiene informazioni sullo stato persistente dell'istanza di Oracle CDC. Lo stato di acquisizione viene utilizzato per scenari di ripristino e failover e per il monitoraggio dello stato di salute.
Nella tabella seguente vengono descritte le colonne della tabella cdc.xdbcdc_state .
| Elemento | Descrizione |
|---|---|
| stato | Codice di stato corrente per l'istanza corrente di Oracle CDC. La condizione descrive lo stato attuale per il CDC. |
| sotto_stato | Uno stato di secondo livello che fornisce informazioni aggiuntive sullo stato corrente. |
| attivo | Valore booleano che può essere: 0: il processo dell'istanza di Oracle CDC non è attivo. 1: Il processo dell'istanza di Oracle CDC è attivo. |
| Errore | Valore booleano che può essere: 0: il processo dell'istanza di Oracle CDC non è in uno stato di errore. 1: l'istanza di Oracle CDC si trova in uno stato di errore. |
| messaggio di stato | Stringa che fornisce una descrizione dell'errore o dello stato. |
| Marca temporale | Il timestamp con l'orario (UTC) in cui lo stato di acquisizione è stato aggiornato per l'ultima volta. |
| nodo_di_cattura_attivo | Nome dell'host (l'host può essere un nodo in un cluster) che esegue attualmente il servizio Oracle CDC e l'istanza di Oracle CDC (che elabora i log delle transazioni Oracle). |
| last_transaction_timestamp | Timestamp con l'ora UTC dell'ultima transazione scritta nelle tabelle delle modifiche. |
| timestamp_ultimo_cambiamento | Timestamp con l'ora UTC in cui il record di modifiche più recente è stato letto dal log delle transazioni Oracle di origine. Questo timestamp consente di identificare la latenza corrente del processo CDC. |
| registro_transazioni_testa_cn | Numero di modifica (CN) più recente letto dal log delle transazioni Oracle. |
| transaction_log_tail_cn | Numero di modifica (CN) nel log delle transazioni Oracle dove l'istanza Oracle CDC si riposiziona in caso di riavvio o ripristino. |
| current_cn | Numero di modifica più recente noto nel database di origine. |
| versione del software | Versione interna del servizio Oracle CDC. |
| transazioni completate | Numero di transazioni elaborate dall'ultima reimpostazione di CDC. |
| modifiche scritte | Numero di record di modifica scritti nelle tabelle delle modifiche di SQL Server. |
| leggi_modifiche | Numero di record di modifica letti dal log delle transazioni Oracle di origine. |
| transazioni messe in scena | Numero di transazioni attualmente attive gestite nella tabella cdc.xdbcdc_staged_transactions . |
cdc.xdbcdc_trace
Questa tabella contiene informazioni sull'operazione dell'istanza di CDC. Le informazioni archiviate in questa tabella includono record di errore, modifiche di stato rilevanti e record di traccia. Le informazioni sugli errori vengono scritte anche nel registro eventi di Windows per assicurarsi che le informazioni siano disponibili se la tabella cdc.xcbcdc_trace non è disponibile.
Nella tabella seguente vengono descritte le colonne della tabella cdc.xdbcdc_trace.
| Elemento | Descrizione |
|---|---|
| Marca temporale | Timestamp UTC esatto durante la scrittura del record di traccia. |
| tipo | Contiene uno dei valori seguenti. ERRORE INFORMAZIONI TRACCIA |
| nodo | Nome del nodo in cui è stato scritto il record. |
| stato | Codice di stato utilizzato dalla tabella di stato. |
| sotto_stato | Codice di stato secondario utilizzato dalla tabella di stato. |
| messaggio_di_stato | Messaggio di stato utilizzato dalla tabella di stato. |
| dati | Dati aggiuntivi per i casi in cui il record di errore o di traccia contiene un payload, ad esempio un record di log danneggiato. |
cdc.xdbcdc_staged_transactions
Questa tabella archivia i record delle modifiche per transazioni di grandi dimensioni o a esecuzione prolungata fino a quando non viene acquisito l'evento di commit o rollback della transazione. Il servizio Oracle CDC ordina i record di log acquisiti in base al tempo di commit delle transazioni e quindi in ordine cronologico per ogni transazione. I record di log per la stessa transazione vengono archiviati in memoria fino al termine della transazione e quindi vengono scritti nella tabella delle modifiche di destinazione o eliminati (in caso di rollback). Poiché è disponibile una quantità limitata di memoria, le transazioni di grandi dimensioni vengono scritte nella tabella cdc.xdbcdc_staged_transactions fino al completamento della transazione. Le transazioni vengono scritte anche nella tabella di staging quando vengono eseguite per un lungo periodo. Pertanto, quando l'istanza di Oracle CDC viene riavviata, le modifiche precedenti non devono essere rilette dai log delle transazioni Oracle.
Nella tabella seguente vengono descritte le colonne della tabella cdc.xdbcdc_staged_transactions .
| Elemento | Descrizione |
|---|---|
| transaction_id | Identificatore univoco della transazione in fase di preparazione. |
| seq_num | Numero della riga xcbcdc_staged_transactions per la transazione corrente (a partire da 0). |
| data_start_cn | Numero di modifica (CN) per la prima modifica dei dati in questa riga. |
| data_end_cn | Numero di modifica (CN) per l'ultima modifica dei dati in questa riga. |
| dati | Le modifiche preparate per la transazione in forma di BLOB. |