Condividi tramite


Gestione degli errori

Un'istanza di Oracle CDC estrae le modifiche da un singolo database di origine Oracle (un cluster Oracle RAC viene considerato un database singolo) e scrive le modifiche confermate nelle tabelle di modifica in un database CDC nell'istanza di SQL Server di destinazione.

Un'istanza di CDC mantiene lo stato in una tabella di sistema denominata cdc.xdbcdc_state. È possibile eseguire query su questa tabella in qualsiasi momento per trovare lo stato dell'istanza di CDC. Per altre informazioni sulla tabella cdc.xdbcdc_state, vedere cdc.xdbcdc_state.

La tabella seguente descrive gli stati dell'istanza di CDC nella tabella xdbcdc_state.

Per ogni stato, vengono visualizzate le due indicazioni seguenti per le colonne corrispondenti nella tabella cdc.xdbcdc_state:

  • L'istanza non è attiva (attualmente non è presente alcun processo di Windows). Se il valore della colonna attiva è 1, è in esecuzione un sottoprocesso del servizio Oracle CDC che gestisce questa specifica istanza di Oracle CDC.

  • Se il valore della colonna di errore è 0, l'istanza di Oracle CDC non si trova in una condizione di errore. Se il valore della colonna di errore è 1, si verifica un errore che impedisce all'istanza di Oracle CDC di elaborare le modifiche.

    Se la colonna di errore ha un valore 1 e il valore della colonna attiva è anche 1, si verifica un errore ripristinabile per l'istanza di Oracle CDC, che può essere risolto automaticamente. Se la colonna di errore ha un valore 1 e la colonna attiva ha un valore pari a 0, nella maggior parte dei casi potrebbe essere necessaria una soluzione alternativa manuale per risolvere il problema prima che l'elaborazione possa essere ripresa.

Nella tabella seguente vengono descritti i vari codici di stato che l'istanza di Oracle CDC può segnalare nella tabella di stato.

stato Codice di stato attivo Codice di stato dell'errore Descrizioni
ABORTITA 0 1 L'istanza Oracle CDC attualmente non è in esecuzione. L'istanza di Oracle CDC con stato secondario ABORTED indica che era ATTIVA e quindi è stata interrotta in modo imprevisto.

Lo stato secondario ABORTED viene stabilito dall'istanza principale del servizio Oracle CDC quando rileva che l'istanza di Oracle CDC non è in esecuzione mentre il relativo stato è ATTIVO.
ERRORE 0 1 L'istanza di Oracle CDC non è in esecuzione. Lo stato ERROR indica che l'istanza di CDC era ATTIVA, ma ha rilevato un errore che non è recuperabile e si è disabilitata. Lo stato ERROR contiene i codici di stato secondario seguenti:

MISCONFIGURED: è stato rilevato un errore di configurazione irreversibile.

PASSWORD-REQUIRED: non esiste alcuna password impostata per Change Data Capture Designer per Oracle di Attunity o la password configurata non è valida. Ciò può essere dovuto a una modifica alla password della chiave asimmetrica del servizio.
CORSA 1 0 L'istanza di CDC è in esecuzione ed elabora i record delle modifiche. Lo stato RUNNING contiene i codici di stato secondario seguenti:

IDLE: tutti i record di modifica sono stati elaborati e archiviati nelle tabelle del controllo di destinazione (_CT). Non esiste alcuna transazione attiva con le tabelle di controllo.

ELABORAZIONE: sono presenti record di modifica in fase di elaborazione che non vengono ancora scritti nelle tabelle del controllo (_CT).
ARRESTATO 0 0 L'istanza di CDC non è in esecuzione. Lo stato secondario STOP indica che l'istanza di CDC era ATTIVA e successivamente è stata arrestata correttamente.
SOSPESO 1 1 L'istanza di CDC è in esecuzione ma l'elaborazione viene sospesa a causa di un errore ripristinabile. Lo stato SUSPENDED contiene i codici di stato secondario seguenti:

DISCONNECTED: impossibile stabilire la connessione con il database Oracle di origine. L'elaborazione riprenderà una volta ripristinata la connessione.

ARCHIVIAZIONE: lo spazio di archiviazione è pieno. L'elaborazione riprenderà quando l'archiviazione diventa disponibile. In alcuni casi, questo stato potrebbe non essere visualizzato perché non è possibile aggiornare la tabella di stato.

LOGGER: il logger è connesso a Oracle, ma non è in grado di leggere i log delle transazioni Oracle a causa di un problema temporaneo.
DATAERROR x x Questo codice di stato viene usato solo per la tabella xdbcdc_trace . Non viene visualizzato nella tabella xdbcdc_state . I record di traccia con questo stato indicano un problema con un record di log Oracle. Il record di log non valido viene archiviato nella colonna di dati come BLOB. Lo stato DATAERROR contiene i codici di stato secondario seguenti:

BADRECORD: impossibile analizzare il record di log collegato.

CONVERT-ERROR: i dati in alcune colonne non possono essere convertiti nelle colonne di destinazione nella tabella di acquisizione. Questo stato può essere visualizzato solo se la configurazione specifica che gli errori di conversione devono produrre record di traccia.

Poiché lo stato del servizio Oracle CDC viene archiviato in SQL Server, è possibile che il valore dello stato nel database non rifletta lo stato effettivo del servizio. Lo scenario più comune è quando il servizio perde la connessione a SQL Server e non può riprenderlo (per qualsiasi motivo). In tal caso, lo stato archiviato in cdc.xdbcdc_state diventa obsoleto. Se il timestamp dell'ultimo aggiornamento (UTC) è più vecchio di un minuto, è probabile che lo stato sia obsoleto. In questo caso, utilizzare il Visualizzatore eventi di Windows per trovare informazioni aggiuntive sullo stato del servizio.

Gestione degli errori

Questa sezione descrive come il servizio Oracle CDC gestisce gli errori.

Registrazione

Il servizio Oracle CDC crea informazioni sull'errore in una delle posizioni seguenti.

  • Registro eventi di Windows, usato con errori di registrazione e per indicare gli eventi del ciclo di vita del servizio Oracle CDC (avvio, arresto, (ri)connessione all'istanza di SQL Server di destinazione.

  • Tabella MSXDBCDC.dbo.xdbcdc_trace, utilizzata per la registrazione e tracciatura generali dal processo principale del servizio Oracle CDC.

  • La tabella <cdc-database>.cdc.xdbcdc_trace viene utilizzata per la registrazione generale e il tracciamento da parte delle istanze Oracle CDC. Ciò significa che gli errori correlati a un'istanza di Oracle CDC specifica vengono registrati nella tabella di traccia dell'istanza.

Le informazioni vengono registrate dal servizio Oracle CDC quando il servizio:

  • Viene avviato o arrestato dal gestore di controllo del servizio.

  • Impossibile connettersi all'istanza di SQL Server associata e quando viene stabilita correttamente una connessione in seguito a un errore.

  • Viene rilevato un errore durante l'avvio delle istanze del servizio Oracle CDC.

  • Rileva che un'istanza di Oracle CDC è stata interrotta.

  • Rileva un errore imprevisto.

Le informazioni vengono registrate dall'istanza di CDC quando l'istanza:

  • È abilitato o disabilitato.

  • Rileva un errore.

  • Recupera da un errore ripristinabile.

La tabella di traccia viene usata anche per registrare informazioni di traccia dettagliate per la risoluzione dei problemi.

Gestione degli errori di connessione Oracle di origine

Il servizio Oracle CDC richiede una connessione permanente con il database Oracle di origine. Molti errori di connessione non correlati alla configurazione del servizio (ad esempio errori di rete) sono considerati temporanei. Pertanto, se il servizio Oracle CDC non riesce a stabilire una connessione con il database Oracle (all'avvio o durante il lavoro dopo una disconnessione), il servizio modifica lo stato in SUSPENDED/DISCONNECTED e immette un ciclo di ripetizione dei tentativi in cui la connessione viene ritentata a intervalli regolari. Quando la connessione viene ristabilita, l'elaborazione continua.

Altri tipi di errori di connessione non sono temporanei, ad esempio credenziali non valide, privilegi insufficienti e indirizzo di database non valido. Quando si verificano questi errori, lo stato del servizio Oracle CDC viene impostato su ERROR/MISCONFIGURED o su ERROR/PASSWORD-REQUIRED e il servizio è disabilitato. Quando l'utente corregge l'errore sottostante, l'istanza di Oracle CDC deve essere riabilitata manualmente per riprendere l'elaborazione.

Quando non è chiaro se l'errore è temporaneo, è consigliabile presupporre che sia temporaneo.

Gestione degli errori di connessione al SQL Server target

Il servizio Oracle CDC richiede una connessione permanente all'istanza di SQL Server di destinazione. Questa connessione viene usata per:

  • Assicurarsi che non siano presenti altri servizi con lo stesso nome attualmente in uso con questa istanza di SQL Server.

  • Controllare quale istanza di Oracle CDC è abilitata o disabilitata e avviare (o arrestare) il relativo sottoprocesso.

Quando il servizio stabilisce una connessione con l'istanza di SQL Server di destinazione e verifica che sia l'unico servizio Oracle CDC con questo nome funzionante, può verificare quali istanze di Oracle CDC sono abilitate e avviare i processi di gestione ( in seguito il servizio arresta questi processi quando sono disabilitati). Le istanze di Oracle CDC usano le connessioni di SQL Server per lavorare con il database CDC dell'istanza di Oracle CDC.

La modalità di gestione degli errori quando la connessione a SQL Server di destinazione non riesce dipende dal fatto che gli errori siano temporanei.

Per errori non temporanei noti,ad esempio credenziali non sufficienti, privilegi insufficienti, informazioni di connessione non valida, il servizio registra un errore nel registro eventi di Windows e si arresta (non può scrivere nella tabella di traccia perché non è in grado di connettersi a SQL Server). In questo caso, l'utente deve risolvere l'errore e riavviare il servizio Windows Oracle CDC.

Per gli errori temporanei e gli errori imprevisti, l'operazione viene ritentata più volte e se l'errore persiste per un periodo di tempo significativo, il servizio CDC arresta i subprocessi dell'istanza CDC e torna al tentativo di connessione iniziale(entro questa volta, un servizio Oracle CDC in un altro computer potrebbe aver già preso il controllo del servizio CDC denominato).

Gestione degli errori di esaurimento dello spazio di archiviazione di SQL Server di destinazione

Quando il servizio Oracle CDC rileva che non è in grado di inserire nuovi dati di modifica nel database DI SQL Server CDC di destinazione, scrive un avviso nel registro eventi e tenta di inserire un record di traccia (anche se ciò potrebbe non riuscire per lo stesso motivo). Quindi ritenta l'operazione in un intervallo specifico fino a quando non viene completata correttamente.

Gestione degli errori di Oracle CDC

L'istanza di Oracle CDC legge il log delle transazioni Oracle ed esegue l'elaborazione. Se l'elaborazione CDC rileva un errore, viene segnalata nella tabella cdc.xdbcdc_state e l'utente deve intervenire manualmente in base all'errore segnalato.

Ad esempio, l'istanza di Oracle CDC potrebbe non essere attiva per una durata estesa e i file di log delle transazioni Oracle necessari non sono più disponibili. In questo caso, l'amministratore del database Oracle deve ripristinare i log necessari per l'istanza di Oracle CDC per riprendere l'elaborazione.

Gestione di errori imprevisti dell'istanza di Oracle CDC

Il servizio Oracle CDC monitora i sottoprocessi dell'istanza CDC. Quando un sottoprocesso dell'istanza di CDC viene interrotto, il servizio CDC lo disabilita nella tabella MSXDBCDC.dbo.xdbcdc_databases e ne aggiorna lo stato di cdc.xdbcdc_state a ABORTED. In questo caso, viene utilizzata la finestra di dialogo Standard Segnalazione errori Windows per segnalare l'errore per ulteriori analisi.

Vedere anche

Change Data Capture Designer per Oracle di Attunity
Istanza di Oracle CDC