Prepara il database per Oracle GoldenGate
Informazioni su come abilitare il log supplementare nelle tabelle del database di origine che devono essere utilizzate per l'acquisizione da parte di Extract per SQL Server e su come rimuovere i dati dell'area intermedia CDC meno recenti.
Per ulteriori informazioni su CDC Capture, consultare gli argomenti riportati di seguito.
Uso della replica di acquisizione CDC di Oracle GoldenGate for SQL Server http://www.oracle.com/webfolder/technetwork/tutorials/obe/fmw/goldengate/12c/sql_cdcrep/sql_cdcrep.html.
Abilitazione del log supplementare CDC
Con CDC Extract, il metodo per acquisire i dati di modifica è tramite tabelle SQL Server Change Data Capture, quindi è fondamentale seguire le procedure e i requisiti riportati di seguito, in modo che i dati di modifica siano abilitati, gestiti e acquisiti correttamente da Extract.
Verrà abilitato il log supplementare con il comando ADD TRANDATA in modo che Extract possa acquisire le informazioni necessarie per ricostruire le transazioni.
È necessario eseguire il comando ADD TRANDATA per tutte le tabelle che devono essere acquisite da Oracle GoldenGate. A tale scopo, è necessario utilizzare uno schema valido per creare le tabelle e le stored procedure Oracle GoldenGate necessarie.
L'abilitazione della registrazione supplementare per un'estrazione CDC effettua le operazioni riportate di seguito.
-
Abilita SQL Server Change Data Capture a livello di database, se non è già abilitato.
-
Crea una tabella intermedia di Change Data Capture per ogni tabella di base abilitata con log supplementare eseguendo
EXECUTE sys.sp_cdc_enable_tablee crea un trigger per ogni tabella CDC. La tabella CDC è presente come parte delle tabelle di sistema nel database e dispone di una convenzione di denominazione simile acdc.OracleGG_basetableobjectid_CT. -
Crea una tabella di tracciamento della convenzione di denominazione
ggschema.OracleGGTranTables. Questa tabella viene utilizzata per memorizzare gli indicatori di transazione per le tabelle CDC e viene popolata quando viene attivato il trigger per una tabella CDC. La tabella sarà di proprietà dello schema elencato nel parametroGGSCHEMAdel fileGLOBALS. -
Crea una stored procedure di recupero univoca per ogni tabella CDC, nonché diverse altre stored procedure necessarie per il funzionamento di Extract. Queste stored procedure saranno di proprietà dello schema elencato nel parametro
GGSCHEMAdel fileGLOBALS. -
Inoltre, nell'ambito dell'abilitazione di CDC per le tabelle, SQL Server crea due job per database:
cdc.dbname_capturecdc.dbname_cleanup -
Il job di acquisizione CDC è il job che legge il log delle transazioni di SQL Server e inserisce i dati nelle tabelle CDC, ed è da tali tabelle CDC che Extract acquisirà le transazioni. Quindi è di estrema importanza che il processo di acquisizione CDC sia in esecuzione in ogni momento. Anche questo richiede che SQL Server Agent sia impostato per essere eseguito in qualsiasi momento e abilitato per essere eseguito automaticamente all'avvio di SQL Server.
Nota: se la funzione Replica transazionale di SQL Server è abilitata anche per il database, il job di acquisizione CDC non esiste e, invece, esiste solo il job Agente lettore di log di SQL Server.
-
Il job di acquisizione CDC può essere ottimizzato per migliorare il throughput e le informazioni di tuning disponibili in Considerazioni operative sul metodo di acquisizione CDC.
-
Il job di cleanup CDC creato da Microsoft non ha alcuna dipendenza dal fatto che Oracle GoldenGate Extract abbia acquisito o meno i dati nelle tabelle CDC. Pertanto, sono necessari passi aggiuntivi per disabilitare o eliminare il job di cleanup CDC immediatamente dopo l'abilitazione di
TRANDATAe per abilitare il task Rimuovi dati di modifica di Oracle GoldenGate. Per ulteriori informazioni, vedere Rimuovi dati area intermedia CDC.
Per abilitare il log supplementare utilizzando l'interfaccia a riga di comando, effettuare le operazioni riportate di seguito.
-
Rivedere l'argomento Prepara utenti e privilegi del database per determinare i privilegi e i passi necessari per abilitare il database per Change Data Capture, se non è già impostato. È possibile che siano necessarie autorizzazioni elevate per GoldenGate se il database non è abilitato per CDC, ma può essere negato se un amministratore abilita manualmente il database per Change Data Capture.
-
Per Google Cloud SQL per SQL Server, il database deve essere abilitato manualmente per Change Data Capture da un utente amministratore del servizio ed eseguire il seguente comando:
EXEC msdb.dbo.gcloudsql_cdc_enable_db 'source_database'; -
Per SQL Server e Azure SQL Managed Instance, l'aggiunta di
TRANDATAtenterà di impostare il database per Change Data Capture se l'utente dispone di privilegi sysadmin, altrimenti un amministratore di database può abilitare manualmente il database per CDC prima di aggiungereTRANDATA, eseguendo il seguente comando sul database di origine:EXEC sys.sp_cdc_enable_db; -
Per Amazon RDS per SQL Server, l'aggiunta di
TRANDATAtenterà anche di impostare il database per Change Data Capture se l'utente ha ottenuto l'autorizzazione, altrimenti un amministratore di database con credenziali master può abilitare manualmente il database per CDC prima di aggiungereTRANDATA, eseguendo il seguente comando sul database di origine:EXEC msdb.dbo.rds_cdc_enable_db 'source_database'
-
-
Nell'installazione di origine di Oracle GoldenGate, assicurarsi che il file
GLOBALScontenga il parametroGGSCHEMA schemanamee che il nome dello schema utilizzato sia stato creato (CREATE SCHEMA schemaname) nel database di origine. Questo schema verrà utilizzato da tutti i componenti Oracle GoldenGate successivi creati nel database, pertanto si consiglia di creare uno schema univoco utilizzato esclusivamente da Oracle GoldenGate, ad esempio 'ggschema' e di non utilizzare gli schemi SQL Serverdboocdc. -
Nel sistema Oracle GoldenGate di origine, aprire l'interfaccia della riga di comando (client amministrativo).
-
Connettersi al database con le credenziali di login al database.
-
Eseguire il comando seguente per ogni tabella che deve essere acquisita da un Extract. È possibile utilizzare un carattere jolly per specificare più nomi di tabella.
ADD TRANDATA owner.tableADD TRANDATA owner.*Facoltativamente, è possibile designare il gruppo file in cui verranno posizionate le tabelle intermedie Change Data Capture del server SQL utilizzando l'opzione
FILEGROUPcon un nome del gruppo file esistente.ADD TRANDATA owner.table FILEGROUP cdctablesSee ADD TRANDATA
Per ulteriori dettagli, vedere ADD TRANDATA.
Rimuovi dati area intermedia CDC
Quando si abilita il log supplementare, i dati richiesti da Extract per ricostruire le transazioni vengono memorizzati in una serie di tabelle di sistema CDC di SQL Server, nonché gli oggetti Oracle GoldenGate utilizzati per tenere traccia dell'ordine delle operazioni all'interno di una transazione. Queste tabelle richiedono la rimozione di routine per ridurre lo storage dei dati all'interno del database. Nell'ambito dell'abilitazione del log supplementare utilizzando TRANDATA, SQL Server crea il proprio job di cleanup di Change Data Capture, tuttavia questo job non è a conoscenza del fatto che un processo Extract potrebbe comunque richiedere dati da queste tabelle di sistema CDC e può rimuovere tali dati prima che Extract abbia la possibilità di acquisirli.
Se i dati necessari per Extract durante l'elaborazione sono stati eliminati dalle tabelle di sistema CDC, potrebbe essere necessaria una delle seguenti azioni correttive:
-
Modifica Extract per acquisire da un point-in-time successivo per il quale sono disponibili i dati CDC (e accetta la possibile perdita di dati sulla destinazione).
-
Risincronizzare le tabelle di origine e di destinazione, quindi riavviare l'ambiente Oracle GoldenGate.
Per risolvere la situazione di rimozione dei dati CDC prima che Extract possa elaborarli, Oracle GoldenGate per SQL Server richiede la creazione di un task Rimuovi dati di modifica. Questo task rimuoverà i dati dell'area intermedia CDC assicurandosi che non vengano rimossi i dati che Extract deve ancora elaborare.
Per creare il task Rimuovi dati di modifica di Oracle GoldenGate, attenersi alla procedura riportata di seguito immediatamente dopo l'abilitazione del log supplementare (TRANDATA) e prima dell'avvio di Extract. Il task Rimuovi dati di modifica viene eseguito all'interno del servizio di amministrazione e il job di cleanup CDC di SQL Server verrà eliminato automaticamente alla prima creazione. Nessun job agente SQL Server per il task Rimuovi dati di modifica eseguito dal servizio di amministrazione. Pertanto, il servizio di amministrazione deve essere in esecuzione affinché l'attività di cleanup funzioni correttamente.
Per creare un task Rimuovi dati modifica:
Con Oracle GoldenGate for Microservices Architecture, dopo aver aggiunto TRANDATA alle tabelle, ma prima di avviare Extract, è necessario creare un task Rimuovi dati di modifica per eseguire il cleanup CDC nel database. Questo può essere fatto attraverso uno dei seguenti:
-
Richieste API REST manuali
-
Interfaccia utente Web server di amministrazione
Per creare un task Rimuovi dati modifica utilizzando l'interfaccia utente Web del servizio di amministrazione: 1. Espandere la sezione Task nel riquadro sinistro.
-
Fare clic su Rimuovi dati modifica nella pagina Task.
-
Fare clic sul segno più per visualizzare un modulo e compilare i campi obbligatori per creare un nuovo task Rimuovi dati di modifica.
-
Nome operazione: il nome del task di rimozione da creare.
-
Abilitato: impostare il task su abilitato, ovvero il valore predefinito.
-
Dominio credenziale e alias credenziale: selezionare un alias credenziale esistente per il database di origine.
-
Conserva regola: questo valore determina, in ore o giorni, la quantità di dati di area intermedia CDC da conservare nel database di origine. A seconda della versione di Oracle GoldenGate, i valori predefiniti sono 3 giorni o 1 ora. I periodi di conservazione dei dati CDC più bassi riducono la quantità di dati di staging CDC memorizzati nel database, ma limitano la possibilità per un utente di riposizionare l'estrazione in un periodo di tempo precedente a quello dei dati esistenti nelle tabelle di staging.
-
Frequenza rimozione: questo valore rappresenta la frequenza di esecuzione del task, con un valore predefinito ogni 10 minuti. Si consiglia di mantenere il valore predefinito a meno che il sovraccarico del task di rimozione non influisca sulle prestazioni del database durante i periodi di attività utente elevata. Nota: creare un solo task Rimuovi dati di modifica per database di origine.
-
Ulteriori informazioni sul job di cleanup CDC di Oracle GoldenGate sono disponibili in Considerazioni operative sul metodo di acquisizione CDC.
Abilitazione del rilevamento del ciclo bidirezionale
Il rilevamento loop è un requisito per le implementazioni bidirezionali di Oracle GoldenGate, in modo che un Extract per un database di origine non riconquista le transazioni inviate da un Replicat da un altro database di origine.
Con il metodo di acquisizione CDC Extract, per impostazione predefinita, qualsiasi transazione di cui Replicat ha eseguito il commit in un database in cui è configurato un Extract recupererà tale transazione da Replicat finché il log supplementare è abilitato per le tabelle in cui Replicat fornisce.
Per ignorare il recupero delle transazioni applicate da un Replicat, è necessario utilizzare il parametro TRANLOGOPTIONS EXCLUDEFILTERTABLE per l'estrazione CDC. La tabella utilizzata come tabella di filtro sarà la tabella di checkpoint di Oracle GoldenGate che è necessario creare per Replicat.
Per creare una tabella filtri e abilitare il log supplementare, procedere come segue.
I passi riportati di seguito richiedono un utente del database membro del ruolo Amministratori di sistema di SQL Server (sysadmin).
-
Nel sistema di origine, eseguire Admin Client.
-
Connettersi alla distribuzione dal client di amministrazione.
-
Eseguire il comando seguente per eseguire il login al database.
DBLOGIN USERIDALIAS alias -
Creare la tabella di checkpoint di Oracle GoldenGate utilizzata da Replicat per consegnare i dati al database di origine.
Esempio:
ADD CHECKPOINTTABLE ogg.ggchkptSi consiglia di utilizzare lo stesso nome di schema utilizzato nel parametro
GGSCHEMAdel fileGLOBALS. -
Abilita la registrazione supplementare per la tabella di checkpoint appena creata.
Esempio:
ADD TRANDATA ogg.ggchkpt -
Aggiungere Replicat con le informazioni della tabella dei checkpoint.
Esempio:
ADD REPLICAT repe, EXTTRAIL north/ea,checkpointtable ogg.ggchkpt -
Configurare Extract con il parametro
EXCLUDEFILTERTABLEutilizzando la tabella di checkpoint di Replicat per la tabella di filtro.TRANLOGOPTIONS EXCLUDEFILTERTABLE ogg.ggchkpt