Gestione degli erroriError Handling

Un'istanza di Oracle CDC estrae le modifiche da un singolo database di origine Oracle (un cluster Oracle RAC è considerato un singolo database) e scrive le modifiche di cui è stato eseguito il commit per modificare le tabelle in un database CDC nell'istanza di SQL ServerSQL Server di destinazione.An Oracle CDC Instance mines changes from a single Oracle source database (an Oracle RAC cluster is considered a single database) and writes the committed changes to change tables in a CDC database in the target SQL ServerSQL Server instance.

Un'istanza di CDC mantiene il proprio stato in una tabella di sistema denominata cdc.xdbcdc_state.A CDC Instance maintains its state in a system table called cdc.xdbcdc_state. È possibile eseguire query su questa tabella ogni volta che è necessario trovare lo stato dell'istanza di CDC.This table can be queried any time to find the state of the CDC Instance. Per altre informazioni sulla tabella cdc.xdbcdc_state, vedere cdc.xdbcdc_state.For more information about the cdc.xdbcdc_state table, see cdc.xdbcdc_state.

Nella tabella seguente vengono descritti gli stati dell'istanza di CDC nella tabella xdbcdc_state.The table below describes the CDC Instance states in the xdbcdc_state table.

Per ogni stato vengono mostrate le due indicazioni seguenti per le colonne corrispondenti nella tabella cdc.xdbcdc_state:For each state, the following two indications are shown for the corresponding columns in the cdc.xdbcdc_state table:

  • L'istanza non è attiva, ovvero non è attualmente gestita da alcun processo di Windows.Instance is not active (there is no Windows process currently handling it). Se il valore della colonna active è 1, è in esecuzione un sottoprocesso del servizio Oracle CDC che gestisce questa istanza di Oracle CDC.If the active column value is 1, a subprocess of the Oracle CDC Service handling this specific Oracle CDC Instance is running.

  • Se il valore della colonna error è 0, l'istanza di Oracle CDC non si trova in una condizione di errore.If the error column value is 0, the Oracle CDC Instance is not in an error condition. Se il valore della colonna error è 1, un errore impedisce l'elaborazione delle modifiche da parte dell'istanza di Oracle CDC.If the error column value is 1, there is an error that prevents the Oracle CDC Instance from processing changes.

    Se la colonna error contiene il valore 1 e il valore della colonna active è anch'esso 1, si è verificato un errore reversibile per l'istanza di Oracle CDC che può essere risolto automaticamente.If the error column has a value of 1 and the active column value is also 1, then a recoverable error is occurring for the Oracle CDC Instance, which can be resolved automatically. Se la colonna error contiene un valore 1 e la colonna active il valore 0, nella maggior parte dei casi potrebbe essere necessario ricorrere a una soluzione alternativa manuale per risolvere il problema prima di poter riprendere l'elaborazione.If the error column has a value of 1 and the active column has a value of 0, then in most cases a manual workaround may be needed to resolve the problem before processing can be resumed.

    Nella tabella seguente vengono descritti i vari codici di stato che è possibile ritrovare nella tabella dello stato dell'istanza di Oracle CDC.The following table describes the various status codes that the Oracle CDC Instance may report in its state table.

StatoStatus Codice di stato attivoActive Status Code Codice di stato erroreError Status Code DescriptionDescription Stato secondarioSubstatus
ABORTEDABORTED 00 11 L'istanza di Oracle CDC non è in esecuzione.The Oracle CDC Instance is not running. Lo stato secondario ABORTED indica che l'istanza di Oracle CDC era ACTIVE e che si è arrestata in modo imprevisto.The ABORTED substatus indicates that the Oracle CDC Instance was ACTIVE and then has stopped unexpectedly. Lo stato secondario ABORTED viene stabilito dall'istanza principale del servizio Oracle CDC quando viene rilevato che l'istanza di Oracle CDC non è in esecuzione mentre il relativo stato è ACTIVE.The ABORTED substatus is established by the Oracle CDC Service main instance when it detects that the Oracle CDC Instance is not running while its status is ACTIVE.
errorERROR 00 11 L'istanza di Oracle CDC non è in esecuzione.The Oracle CDC Instance is not running. Lo stato ERROR indica che l'istanza di CDC era ACTIVE, ma che in seguito a un errore reversibile è stata disabilitata.The ERROR status indicates that the CDC instance was ACTIVE but then encountered an error that is not recoverable and disabled itself. MISCONFIGURED: è stato rilevato un errore di configurazione irreversibile.MISCONFIGURED: An unrecoverable configuration error was detected.

PASSWORD-REQUIRED: non è stata impostata alcuna password per Change Data Capture Designer for Oracle by Attunity oppure la password configurata non è valida.PASSWORD-REQUIRED: There is no password set for the Change Data Capture Designer for Oracle by Attunity or the configured password is not valid. Il problema può essere dovuto a una modifica alla password della chiave asimmetrica del servizio.This can be because of a change to the service asymmetric key password.
RUNNINGRUNNING 11 00 L'istanza di CDC è in esecuzione ed è in corso l'elaborazione dei record delle modifiche.The CDC instance is running and is processing change records. IDLE: tutti i record delle modifiche sono stati elaborati e archiviati nelle tabelle di controllo di destinazione (_CT).IDLE: All change records were processed and stored into the target control (_CT) tables. Non è presente alcuna transazione attiva con le tabelle di controllo.There is no active transaction with the control tables.

PROCESSING: è in corso l'elaborazione di alcuni record delle modifiche che non sono ancora stati scritti nelle tabelle di controllo (_CT).PROCESSING: There are change records being processed that are not yet written to the control (_CT) tables.
STOPPEDSTOPPED 00 00 L'istanza di CDC non è in esecuzione.The CDC instance is not running. Lo stato secondario STOP indica che l'istanza di CDC era ACTIVE e che è stata arrestata in modo corretto.The STOP substatus indicates that the CDC instance was ACTIVE and then was stopped correctly.
SUSPENDEDSUSPENDED 11 11 L'istanza di CDC è in esecuzione ma l'elaborazione è stata sospesa in seguito a un errore reversibile.The CDC instance is running but processing is suspended due to a recoverable error. DISCONNECTED: non è possibile stabilire la connessione con il database Oracle di origine.DISCONNECTED: The connection with the source Oracle database cannot be established. L'elaborazione verrà ripresa dopo il ripristino della connessione.Processing will resume once connection is restored.

STORAGE: lo spazio di archiviazione è esaurito.STORAGE: The storage is full. L'elaborazione verrà ripresa non appena sarà nuovamente disponibile dello spazio di archiviazione.Processing will resume when storage becomes available. In alcuni casi è possibile che questo stato non venga visualizzato perché non è possibile aggiornare la tabella dello stato.In some cases, this status may not appear because the status table cannot be updated.

LOGGER: il logger è connesso a Oracle, ma non è in grado di leggere i log delle transazioni di Oracle a causa di un problema temporaneo.LOGGER: The logger is connected to Oracle but it cannot read the Oracle transaction logs because of a temporary problem.
DATAERRORDATAERROR xx xx Questo codice di stato viene usato unicamente per la tabella xdbcdc_trace .This status code is only used for the xdbcdc_trace table. e non compare nella tabella xdbcdc_state .It does not appear in the xdbcdc_state table. I record di traccia con questo stato indicano un problema con un record di log Oracle.Trace records with this status indicate a problem with an Oracle log record. Il record di log danneggiato viene archiviato nella colonna data come BLOB.The bad log record is stored in the data column as a BLOB. BADRECORD: non è possibile analizzare il record di log collegato.BADRECORD: The attached log record could not be parsed.

CONVERT-ERROR: non è possibile convertire i dati di alcune colonne nelle colonne di destinazione della tabella di acquisizione.CONVERT-ERROR: The data in some columns could not be converted to the target columns in the capture table. È possibile che questo stato si verifichi solo se nella configurazione è stato specificato che gli errori di conversione devono produrre record di traccia.This status may appear only if the configuration specifies that conversion errors should produce trace records.

Poiché lo stato del servizio Oracle CDC viene archiviato in SQL ServerSQL Server, è possibile che in alcuni casi il valore dello stato nel database non rifletta lo stato effettivo del servizio.Because the Oracle CDC Service state is stored in SQL ServerSQL Server, there may be cases where the state value in the database might not reflect the actual state of the service. Lo scenario più comune si verifica quando il servizio perde la connessione a SQL ServerSQL Server e per un qualche motivo non è in grado di riprenderla.The most common scenario is when the service loses its connection to SQL ServerSQL Server and cannot resume it (for any reason). In questo caso, lo stato archiviato in cdc.xdbcdc_state non risulta più aggiornato.In that case, the state stored in cdc.xdbcdc_state becomes stale. Se il timestamp dell'ultimo aggiornamento (UTC) risale a più di un minuto prima, lo stato non è probabilmente aggiornato.If the last update timestamp (UTC) is more than a minute old, the state is probably stale. In questo caso, utilizzare il Visualizzatore eventi di Windows per trovare informazioni aggiuntive sullo stato del servizio.In this case, use the Windows Event Viewer to find additional information about the status of the service.

Gestione degli erroriError Handling

In questa sezione viene illustrato come vengono gestiti gli errori dal servizio Oracle CDC.This section describes how the Oracle CDC Service handles errors.

RegistrazioneLogging

Il servizio Oracle CDC crea informazioni sugli errori in una delle posizioni seguenti.The Oracle CDC Service creates error information in one of the following places.

  • Registro eventi di Windows, utilizzato per la registrazione degli errori e per indicare gli eventi del ciclo di vita del servizio Oracle CDC, ovvero avvio, arresto e (ri)connessione all'istanza di SQL ServerSQL Server di destinazione.The Windows event log, which is used with logging errors and to indicate Oracle CDC Service life cycle events (starting, stopping, (re)connection to the target SQL ServerSQL Server instance).

  • Tabella MSXDBCDC.dbo.xdbcdc_trace, utilizzata per le operazioni di registrazione generale e di traccia effettuate dal processo principale del servizio Oracle CDC.The MSXDBCDC.dbo.xdbcdc_trace table, which is used for general logging and tracing by the Oracle CDC Service main process.

  • Il <database cdc >. la tabella xdbcdc_trace, utilizzata per la registrazione generale e l'analisi da istanze di Oracle CDC.The <cdc-database>.cdc.xdbcdc_trace table, which is used for general logging and tracing by Oracle CDC Instances. Ciò significa che gli errori correlati a un'istanza specifica di Oracle CDC vengono registrati nella tabella di traccia dell'istanza.This means that errors related to a specific Oracle CDC Instance are logged to that instance’s trace table.

    Le informazioni vengono registrate dal servizio Oracle CDC quando il servizio:Information is logged by the Oracle CDC service when the service:

  • Viene avviato o arrestato da Gestione controllo servizi.Is started or stopped by the service control manager.

  • Non è in grado di connettersi all'istanza di SQL ServerSQL Server associata e una connessione viene stabilita correttamente dopo un errore.Cannot connect to the associated SQL ServerSQL Server instance and when it successfully establishes a connection following a failure.

  • Rileva un errore durante l'avvio delle istanze del servizio Oracle CDC.Encounters an error starting Oracle CDC Service instances.

  • Rileva che un'istanza di Oracle CDC è stata interrotta.Detects that an Oracle CDC Instance has aborted.

  • Rileva un errore imprevisto.Encounters an unexpected error.

    Le informazioni vengono registrate dall'istanza di CDC quando l'istanza:Information is logged by the CDC instance when the instance:

  • Viene abilitata o disabilitata.Is enabled or disabled.

  • Rileva un errore.Encounters an error.

  • Risolve un errore reversibile.Recovers from a recoverable error.

    Anche la tabella di traccia viene utilizzata per registrare informazioni di traccia dettagliate per la risoluzione dei problemi.The trace table is also used for recording detailed trace information for troubleshooting.

Gestione degli errori di connessione al database Oracle di origineHandling Source Oracle Connection Errors

Per il servizio Oracle CDC è necessario disporre di una connessione persistente al database Oracle di origine.The Oracle CDC Service needs a persistent connection with the source Oracle database. Molti errori di connessione non correlati alla configurazione del servizio, ad esempio gli errori di rete, sono considerati temporanei.Many connection errors that are unrelated to the service configuration (such as networking errors) are considered transient. Di conseguenza, se il servizio Oracle CDC non è in grado di stabilire la connessione al database Oracle all'avvio o in seguito a una disconnessione, lo stato del servizio diventa SUSPENDED/DISCONNECTED e ha inizio un ciclo di tentativi di riconnessione a intervalli regolari.Therefore, if the Oracle CDC Service cannot establish connection with the Oracle database (either on start or during work following a disconnection), the service changes its state to SUSPENDED/DISCONNECTED and enters a retry loop where the connection is retried at regular intervals. Quando viene ristabilita la connessione, l'elaborazione può continuare.When the connection is re-established, processing continues.

Altri tipi di errori di connessione non sono temporanei, ad esempio credenziali non corrette, privilegi insufficienti e indirizzo del database errato.Other types of connection errors are not transient (for example, bad credentials, insufficient privileges, and bad database address). Quando si verificano questi errori, il servizio Oracle CDC viene impostato sullo stato ERROR/MISCONFIGURED o ERROR/PASSWORD-REQUIRED e il servizio viene disabilitato.When these errors occur, the Oracle CDC Service state is set to ERROR/MISCONFIGURED or to ERROR/PASSWORD-REQUIRED and the service is disabled. Dopo che l'errore sottostante è stato risolto, è necessario abilitare manualmente l'istanza di Oracle CDC per poter riprendere l'elaborazione.When the user fixes the underlying error, the Oracle CDC Instance should be manually re-enabled for processing to resume.

Nei casi in cui non è chiaro se l'errore è temporaneo, è preferibile presupporre che lo sia.When it is not clear whether the error is transient, it is best to assume it is transient.

Gestione degli errori di connessione di SQL Server di destinazioneHandling Target SQL Server Connection Errors

Per il servizio Oracle CDC è necessario disporre di una connessione persistente all'istanza di SQL ServerSQL Server di destinazione.The Oracle CDC Service needs a persistent connection to the target SQL ServerSQL Server instance. Questa connessione viene utilizzata per le operazioni seguenti:This connection is used to:

  • Assicurarsi che non vi siano altri servizi con lo stesso nome che utilizzano questa istanza di SQL ServerSQL Server .Ensure that there are no other services by the same name currently working with this SQL ServerSQL Server instance.

  • Verificare quale istanza di Oracle CDC è abilitata o disabilitata e avviare (o arrestare) i relativi sottoprocessi.Check which Oracle CDC Instance is enabled or disabled and start (or stop) its subprocess.

    Quando il servizio stabilisce una connessione all'istanza di SQL ServerSQL Server di destinazione e accerta che sia l'unico servizio Oracle CDC con questo nome a essere in funzione, può verificare quali istanze di Oracle CDC sono abilitate e avviare i relativi processi di gestione. In seguito questi processi verranno arrestati dopo essere stati disabilitati.When the service establishes a connection with the target SQL ServerSQL Server instance and verifies that it is the only Oracle CDC service by this name that is working, it can check which Oracle CDC instances are enabled and start their handling processes (afterward the service stops these processes when they are disabled). Le istanze di Oracle CDC utilizzano le connessioni di SQL ServerSQL Server per utilizzare il database CDC dell'istanza di Oracle CDC.The Oracle CDC instances use their SQL ServerSQL Server connections to work with the CDC database of the Oracle CDC instance.

    Il fatto che gli errori siano o meno temporanei influisce sulla modalità di gestione degli stessi quando viene persa la connessione a SQL ServerSQL Server di destinazione.How errors are handled when the connection to the target SQL ServerSQL Server fails depends on whether the errors are transient.

    Per gli errori non temporanei noti, ad esempio credenziali errate, privilegi insufficienti, informazioni di connessione non corrette, viene registrato un errore nel registro eventi di Windows e il servizio viene arrestato (non è più in grado di scrivere nella tabella di traccia perché la connessione a SQL ServerSQL Serverè andata persa).For known non-transient errors (such as bad credentials, insufficient privileges, bad connection information), the service logs an error to the Windows event log and stops (it cannot write to the trace table because it cannot connect to SQL ServerSQL Server). In questo caso, l'utente deve risolvere l'errore e riavviare il servizio di Windows Oracle CDC.In this case, the user must resolve the error and restart the Oracle CDC Windows service.

    Per gli errori temporanei e quelli imprevisti, vengono effettuati diversi tentativi per eseguire l'operazione e se l'errore persiste per un periodo di tempo significativo, il servizio arresta i sottoprocessi dell'istanza di CDC e torna al tentativo di connessione iniziale. Nel frattempo è possibile che un servizio Oracle CDC in un altro computer abbia assunto il controllo del servizio CDC denominato.For transient errors and unexpected errors, the operation is retried several times and if the failure persists for a significant time period, the CDC Service stops its CDC Instance subprocesses and goes back to its initial connection attempt (by this time, an Oracle CDC Service on another machine may have already taken control of the named CDC service).

Gestione degli errori di spazio di archiviazione esaurito di SQL Server di destinazioneHandling Target SQL Server Storage Full Errors

Quando il servizio Oracle CDC rileva l'impossibilità di inserire nuovi dati delle modifiche nel database CDC di SQL ServerSQL Server di destinazione, scrive un avviso nel registro eventi e tenta di inserire un record di traccia (anche se l'operazione potrebbe non riuscire per lo stesso motivo).When the Oracle CDC Service detects that it cannot insert new change data into the target SQL ServerSQL Server CDC database, it writes a warning to the event log and tries to insert a trace record (although that may fail for the same reason). Verranno quindi effettuati tanti tentativi quanti saranno sufficienti per completare correttamente l'operazione.It then retries the operation in a specific interval until it is successful.

Gestione degli errori di Oracle CDCHandling Oracle CDC Errors

L'istanza di Oracle CDC legge il log delle transazioni Oracle e lo elabora.The Oracle CDC Instance reads the Oracle transaction log and processes it. Se durante l'elaborazione di CDC si verifica un errore, tale errore viene riportato nella tabella cdc.xdbcdc_state e l'utente deve intervenire manualmente in base a quanto riportato.If the CDC processing encounters an error, it is reported in the cdc.xdbcdc_state table and the user needs to manually intervene based on the reported error.

È ad esempio possibile che l'istanza di Oracle CDC rimanga inattiva per un periodo di tempo prolungato e che i file di log delle transazioni non siano più disponibili.For example, the Oracle CDC Instance may not be active for an extended duration and the required Oracle transaction log files are no longer available. In questo caso, Oracle DBA deve ripristinare i log necessari affinché nell'istanza di Oracle CDC venga ripresa l'elaborazione.In this case, the Oracle DBA must restore the required logs for the Oracle CDC Instance to resume processing.

Gestione degli errori imprevisti dell'istanza di Oracle CDCHandling Unexpected Oracle CDC Instance Failures

Il servizio Oracle CDC monitora i sottoprocessi dell'istanza di CDC.The Oracle CDC Service monitors its CDC Instance subprocesses. 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 cdc.xdbcdc_state su ABORTED.When a CDC Instance subprocess aborts, the CDC Service disables it in the MSXDBCDC.dbo.xdbcdc_databases table and updates its cdc.xdbcdc_state status to ABORTED. In questo caso, viene utilizzata la finestra di dialogo Segnalazione errori Windows standard per segnalare questo errore a scopo di ulteriore analisi.In this case, the standard Windows Error Reporting dialog box is used to report this error for further analysis.

Vedere ancheSee Also

Change Data Capture Designer per Oracle di Attunity Change Data Capture Designer for Oracle by Attunity
L'istanza di Oracle CDCThe Oracle CDC Instance