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.

Per abilitare il log supplementare utilizzando l'interfaccia a riga di comando, effettuare le operazioni riportate di seguito.

  1. 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 TRANDATA tenterà 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 aggiungere TRANDATA, eseguendo il seguente comando sul database di origine:

      EXEC sys.sp_cdc_enable_db;

    • Per Amazon RDS per SQL Server, l'aggiunta di TRANDATA tenterà 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 aggiungere TRANDATA, eseguendo il seguente comando sul database di origine:

      EXEC msdb.dbo.rds_cdc_enable_db 'source_database'

  2. Nell'installazione di origine di Oracle GoldenGate, assicurarsi che il file GLOBALS contenga il parametro GGSCHEMA schemaname e 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 Server dbo o cdc.

  3. Nel sistema Oracle GoldenGate di origine, aprire l'interfaccia della riga di comando (client amministrativo).

  4. Connettersi al database con le credenziali di login al database.

  5. 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.table

    ADD TRANDATA owner.*

    Facoltativamente, è possibile designare il gruppo file in cui verranno posizionate le tabelle intermedie Change Data Capture del server SQL utilizzando l'opzione FILEGROUP con 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:

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:

Per creare un task Rimuovi dati modifica utilizzando l'interfaccia utente Web del servizio di amministrazione: 1. Espandere la sezione Task nel riquadro sinistro.

  1. Fare clic su Rimuovi dati modifica nella pagina Task.

  2. Fare clic sul segno più per visualizzare un modulo e compilare i campi obbligatori per creare un nuovo task Rimuovi dati di modifica.

    1. Nome operazione: il nome del task di rimozione da creare.

    2. Abilitato: impostare il task su abilitato, ovvero il valore predefinito.

    3. Dominio credenziale e alias credenziale: selezionare un alias credenziale esistente per il database di origine.

    4. 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.

    5. 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).

  1. Nel sistema di origine, eseguire Admin Client.

  2. Connettersi alla distribuzione dal client di amministrazione.

  3. Eseguire il comando seguente per eseguire il login al database.

    DBLOGIN USERIDALIAS alias

  4. Creare la tabella di checkpoint di Oracle GoldenGate utilizzata da Replicat per consegnare i dati al database di origine.

    Esempio: ADD CHECKPOINTTABLE ogg.ggchkpt

    Si consiglia di utilizzare lo stesso nome di schema utilizzato nel parametro GGSCHEMA del file GLOBALS.

  5. Abilita la registrazione supplementare per la tabella di checkpoint appena creata.

    Esempio: ADD TRANDATA ogg.ggchkpt

  6. Aggiungere Replicat con le informazioni della tabella dei checkpoint.

    Esempio: ADD REPLICAT repe, EXTTRAIL north/ea,checkpointtable ogg.ggchkpt

  7. Configurare Extract con il parametro EXCLUDEFILTERTABLE utilizzando la tabella di checkpoint di Replicat per la tabella di filtro.

    TRANLOGOPTIONS EXCLUDEFILTERTABLE ogg.ggchkpt