Esegui la migrazione di un database Oracle a Cloud SQL per PostgreSQL utilizzando Striim

Last reviewed 2021-06-28 UTC

In questo tutorial utilizzerai Striim per eseguire la migrazione di Oracle® Database Enterprise Edition 18c o versioni successive da un ambiente on-premise o cloud a un'istanza Cloud SQL per PostgreSQL su Google Cloud. Il tutorial utilizza le tabelle nello schema di esempio HR Oracle.

Questo tutorial è rivolto ad architetti di database aziendali, database engineer e proprietari di dati che intendono utilizzare Striim per eseguire la migrazione o replicare i database Oracle in Cloud SQL per PostgreSQL. Avere conoscenze di base su come usare Striim per creare pipeline. Dovresti anche conoscere l'interfaccia utente web di Striim, i concetti chiave di Striim e come creare un'applicazione utilizzando Flow Designer di Sttriim.

Striim è un partner tecnologico per la migrazione dei database Google Cloud. Striim semplifica le migrazioni online utilizzando un'interfaccia a trascinamento per impostare uno spostamento continuo dei dati tra i database. Per le migrazioni a Google Cloud, Striim offre una piattaforma di flussi di dati non invasivi per l'estrazione, la trasformazione e il caricamento (ETL) efficiente di deployment e semplice da iterare. Per creare la pipeline di migrazione, usa Flow Designer di Striim in questo tutorial.

Se non conosci bene la migrazione dei database, vedi questo discorso tecnico di Cloud Next '19.

Architettura

La migrazione del database mediante Striim prevede due fasi dello spostamento sequenziale dei dati:

  • Fase 1: una replica iniziale una tantum del database Oracle.
  • Fase 2: la replica continua di ogni modifica apportata al sistema di database di origine successivamente utilizzando la tecnologia Change Data Capture (CDC).

Il seguente diagramma illustra un'architettura di deployment di base:

L'architettura di deployment si connette a un database Oracle
e scrive i dati in un'istanza Cloud SQL per PostgreSQL su Google Cloud.

Questa architettura prevede l'esecuzione dell'applicazione Striim su un'istanza di Compute Engine. Si connette a un database Oracle ospitato on-premise o nel cloud e scrive i dati in un'istanza Cloud SQL per PostgreSQL su Google Cloud.

Per evitare problemi di rete o di connettività tra le istanze Striim e Cloud SQL, utilizza la stessa rete per entrambe le istanze. Puoi eseguire il deployment di Striim da Google Cloud Marketplace su un'istanza Compute Engine oppure, se hai bisogno di elevata disponibilità, puoi eseguire il deployment di Striim come cluster.

Per questo tutorial, esegui il deployment da Cloud Marketplace.

Il vantaggio del deployment di Striim da Cloud Marketplace è che consente di connettersi a vari database e origini dati utilizzando gli adattatori integrati. Puoi collegare gli adattatori utilizzando Flow Designer, l'interfaccia interattiva con trascinamento di Striim, per formare un grafico aciclico. Questo grafico è anche noto come pipeline Striim o applicazione Striim.

Il caso d'uso della migrazione in questo tutorial utilizza tre adattatori Striim:

  • Lettore database: legge i dati dal database di origine Oracle durante la fase di caricamento iniziale.
  • Oracle Reader: Legge i dati utilizzando LogMiner dal database di origine Oracle durante la fase di replica continua dei dati.
  • Writer database: scrive i dati nel database Cloud SQL per PostgreSQL durante il caricamento iniziale e durante la replica continua dei dati.

Obiettivi

  • Prepara il database Oracle come database di origine per la migrazione o la replica.

  • Prepara un database Cloud SQL per PostgreSQL come database di destinazione per la migrazione o la replica.

  • Soddisfa i prerequisiti per l'installazione e l'esecuzione di Striim.

  • Converti lo schema del database Oracle nello schema corrispondente in PostgreSQL.

  • Esegui il caricamento iniziale dal database Oracle a Cloud SQL per PostgreSQL.

  • Configura la replica continua dal tuo database Oracle a Cloud SQL per PostgreSQL.

Costi

In questo documento, utilizzi i seguenti componenti fatturabili di Google Cloud:

Per generare una stima dei costi in base all'utilizzo previsto, utilizza il Calcolatore prezzi. I nuovi utenti di Google Cloud potrebbero essere idonei per una prova gratuita.

La soluzione Striim in Cloud Marketplace offre una licenza di prova gratuita a tempo limitato. Alla scadenza della prova, i costi per l'utilizzo vengono fatturati al tuo account Google Cloud. Puoi anche ottenere le licenze Striim direttamente da Striim per il deployment on-premise e in una macchina virtuale (VM) Compute Engine. Inoltre, potrebbero esserti addebitati costi associati all'esecuzione di un database Oracle all'esterno di Google Cloud.

Prima di iniziare

  1. Accedi al tuo account Google Cloud. Se non conosci Google Cloud, crea un account per valutare le prestazioni dei nostri prodotti in scenari reali. I nuovi clienti ricevono anche 300 $di crediti gratuiti per l'esecuzione, il test e il deployment dei carichi di lavoro.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  5. Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.

Questo tutorial presuppone che tu abbia già quanto segue:

  • Un Oracle Database Enterprise Edition 18c o versioni successive per Linux x86-64 di cui vuoi eseguire la migrazione.
  • Un Compute Engine su cui è installato CentOS in cui è installato Striim. Puoi eseguire il deployment di Striim tramite la soluzione Google Cloud Marketplace.

Preparazione del database Oracle

Le sezioni seguenti descrivono le modifiche alla configurazione che potrebbero essere necessarie per connetterti al tuo database Oracle ed eseguirne la migrazione con Striim. Per i dettagli sulla configurazione, vedi Attività di configurazione Oracle di base.

Scegli l'origine per Oracle CDC

Anche se esistono diverse origini Oracle CDC, questo tutorial utilizza LogMiner. Per informazioni sulle opzioni alternative, consulta Origini Oracle CDC alternative.

prepara Oracle Database Enterprise Edition 18c (o versioni successive)

Per preparare il database Oracle, segui le istruzioni nella pagina della documentazione di Striim per i seguenti passaggi:

  1. Attiva archivelog di Striim.
  2. Attiva dati di log supplementari di Striim.
  3. Abilita il logging della chiave primaria Striim.
  4. Crea un utente Oracle con privilegi di LogMiner per Striim.

    Per eseguire questi passaggi, devi disporre della connessione al database dei container (CDB), indipendentemente dal fatto che tu stia eseguendo la migrazione di un CDB o di un database modulare (PDB). Ti consigliamo di installare e utilizzare SQL*Plus per interagire con il database Oracle.

  5. Crea una tabella quiescemarker Striim.

    L'adattatore Oracle Reader di Striim per CDC ha bisogno di una tabella per l'archiviazione dei metadati quando arresta un'applicazione. Se utilizzi LogMiner come origine per CDC (come fa questo tutorial), è necessaria la tabella quiescemarker. Devi essere collegato alla rete CDB quando segui i passaggi per creare la tabella.

  6. Stabilisci la connettività di rete tra il database Oracle e l'istanza di Striim.

    Per impostazione predefinita, il Listener Oracle si trova sulla porta 1521. Assicurati che l'indirizzo IP per l'istanza Striim possa connettersi alla porta del listener Oracle e che nessuna regola firewall lo blocchi. La porta su cui è configurato il listener Oracle è nel file $ORACLE_HOME/network/admin/tnsnames.ora.

  7. Prendi nota del System Change Number (SCN) per il database Oracle.

    L'SCN è un timestamp interno utilizzato per fare riferimento alle modifiche apportate a un database.

    Nel tuo database Oracle, ottieni l'SCN meno recente:

    SELECT MIN(start_scn) FROM gv$transaction;
    

    Copia questo numero. Ti servirà in un secondo momento nei passaggi della pipeline di replica continua.

Preparazione dell'istanza Striim

Per informazioni sui sistemi operativi supportati da Striim, consulta i requisiti di sistema. Per utilizzare Oracle Reader con LogMiner, inserisci il driver JDBC di Oracle nel classpath di Java nella tua istanza Striim. Svolgi i seguenti passaggi su ogni server Striim che esegue un adattatore Oracle Reader:

  1. Accedi al tuo account Oracle, quindi scarica il file ojdbc8.jar sulla macchina locale.
  2. Fai clic sul link Scarica relativo al file ojdbc8.jar.

    • Se accetti i termini di licenza, fai clic su Ho esaminato e accetto il contratto di licenza Oracle per scaricare il file.
  3. In Cloud Shell, crea un bucket Cloud Storage e carica al suo interno il file .jar:

    gsutil mb -b on -l REGION gs://BUCKET_NAME
    gsutil cp PATH/ojdbc8.jar gs://BUCKET_NAME
    

    Sostituisci quanto segue:

    • REGION: la regione in cui vuoi creare il bucket Cloud Storage
    • BUCKET_NAME: il nome del bucket Cloud Storage in cui vuoi archiviare il file ojdbc8.jar
    • PATH: il percorso da cui hai scaricato il file ojdbc8.jar

    Dopo aver salvato il file sulla macchina locale, ti consigliamo di caricare il file .jar in un bucket Cloud Storage in modo da poterlo scaricare in qualsiasi istanza.

  4. Apri una sessione SSH con la tua istanza Striim, quindi scarica il file .jar nell'istanza Striim e posizionalo nella directory /opt/striim/lib:

    sudo su - striim gsutil cp gs://BUCKET_NAME/ojdbc8.jar /opt/striim/lib
    
  5. Verifica che le autorizzazioni del file per il file ojdbc8.jar siano corrette:

     sudo ls -l /opt/striim/lib/ojdbc8.jar
    

    L'output dovrebbe essere simile al seguente:

    -rwxrwx--- striim striim

  6. (Facoltativo) Se il file .jar non dispone delle autorizzazioni precedenti, imposta le autorizzazioni corrette:

    sudo chmod 770 /opt/striim/lib/ojdbc8.jar
    sudo chown striim /opt/striim/lib/ojdbc8.jar
    sudo chgrp striim /opt/striim/lib/ojdbc8.jar
    
  7. Interrompi e riavvia Striim.

    Dopo aver apportato modifiche alla configurazione, ad esempio le precedenti modifiche alle autorizzazioni, devi riavviare Striim.

    • Se utilizzi la distribuzione Linux di CentOS 7, interrompi Striim:

      sudo systemctl stop striim-node
      sudo systemctl stop striim-dbms
      
    • Se utilizzi la distribuzione Linux di CentOS 7, avvia Striim:

      sudo systemctl start striim-dbms
      sudo systemctl start striim-node
      

    Per ulteriori informazioni su come arrestare e riavviare Striim per un altro sistema operativo, consulta Avviare e arrestare Striim

  8. Installa il client psql sull'istanza Striim.

    Userai questo client per connetterti all'istanza Cloud SQL e creare schemi più avanti in questo tutorial.

Preparazione dello schema di Cloud SQL per PostgreSQL

Quando copi o replichi continuamente i dati tabulari da un database all'altro, Striim richiede in genere che il database di destinazione contenga tabelle corrispondenti con lo schema corretto. Google Cloud non ha un'utilità per preparare lo schema, ma puoi utilizzare l'utilità di conversione dello schema di Striim o un'utilità open source come ora2pg.

Mantieni le chiavi esterne durante il caricamento iniziale

Durante la fase di caricamento iniziale, presta attenzione al trattamento delle chiavi esterne. Le chiavi esterne stabiliscono la relazione tra le tabelle in un database relazionale. La creazione o l'inserimento fuori ordine di una chiave esterna nel database di destinazione potrebbe eliminare la relazione tra le due tabelle. Se l'integrità tra i due database viene compromessa, potrebbero verificarsi errori. Di conseguenza, durante l'esportazione dello schema più avanti in questa sezione è importante generare tutte le dichiarazioni della chiave esterna in un file separato.

Durante la replica continua nelle pipeline CDC, gli eventi del database di origine vengono propagati al database di destinazione nell'ordine in cui si verificano. Se gestisci correttamente le chiavi esterne nell'origine, le operazioni con chiave esterna vengono replicate dall'origine al database di destinazione nello stesso ordine.

Al contrario, la pipeline di caricamento iniziale carica per impostazione predefinita le tabelle in ordine alfabetico. Se non disabiliti le chiavi esterne prima del caricamento iniziale, si verificano errori di violazione delle chiave esterna. Per replicare i dati durante il caricamento iniziale dalle tabelle del database di origine alle tabelle di destinazione su Cloud SQL per PostgreSQL, devi disabilitare i vincoli della chiave esterna nelle tabelle. In caso contrario, i vincoli potrebbero essere violati durante il processo di replica.

A partire da giugno 2021, Cloud SQL per PostgreSQL non supporta le opzioni di configurazione per disabilitare i vincoli di chiave esterna.

Per gestire i vincoli di chiave esterna:

  1. Restituisci come output tutte le dichiarazioni di chiave esterna in un file separato durante l'esportazione dello schema.
  2. Creare schemi di tabella nel database Cloud SQL per PostgreSQL senza i vincoli di chiave esterna.
  3. Completa la replica iniziale dei dati.
  4. Applica i vincoli di chiave esterna alle tabelle.
  5. Creare la pipeline di replica continua.

Questo tutorial offre due opzioni per la conversione dello schema, spiegate nelle sezioni seguenti:

Converti lo schema utilizzando l'utilità di conversione dello schema di Striim

Utilizza l'utilità di conversione dello schema di Striim per preparare Cloud SQL per PostgreSQL in modo da integrare i dati con lo schema di destinazione e creare tabelle che riflettono il database Oracle di origine.

Lo strumento di conversione dello schema Striim converte i seguenti oggetti di origine in oggetti di destinazione equivalenti:

  • Tabelle
  • Chiavi primarie
  • Tipi di dati
  • Vincoli unici
  • NOT NULL vincoli
  • Chiavi esterne

Con l'utilità di conversione dello schema di Striim, puoi analizzare il database di origine e generare script DDL per creare schemi equivalenti nel database di destinazione.

Ti consigliamo di creare manualmente lo schema nel database di destinazione utilizzando gli script DDL generati. È più facile selezionare un sottoinsieme delle tabelle, esportare lo schema e quindi importare lo schema nel database Cloud SQL per PostgreSQL di destinazione.

L'esempio seguente mostra come preparare il database Cloud SQL per PostgreSQL di destinazione per il caricamento iniziale importando lo schema con l'utilità di conversione dello schema di Striim:

  1. Apri una connessione SSH alla tua istanza Striim.

  2. Vai alla directory /opt/striim:

    cd /opt/striim
    
  3. Elenca tutti gli argomenti:

    bin/schemaConversionUtility.sh --help
    
  4. Esegui l'utilità di conversione dello schema e includi i flag appropriati per il tuo caso d'uso:

    bin/schemaConversionUtility.sh \
    -s=oracle \
    -d=SOURCE_DATABASE_CONNECTION_URL \
    -u=SOURCE_DATABASE_USERNAME \
    -p=SOURCE_DATABASE_PASSWORD \
    -b=SOURCE_TABLES_TO_CONVERT \
    -t=postgres \
    -f=false
    

    Sostituisci quanto segue:

    • SOURCE_DATABASE_CONNECTION_URL: URL di connessione per il database Oracle, ad esempio "jdbc:oracle:thin:@12.123.123.12:1521/APPSPDB.WORLD" o "jdbc:oracle:thin:@12.123.123.12:1521:XE"
    • SOURCE_DATABASE_USERNAME: il nome utente Oracle da utilizzare per la connessione al database Oracle
    • SOURCE_DATABASE_PASSWORD: password Oracle da utilizzare per la connessione al database Oracle
    • SOURCE_TABLES_TO_CONVERT: nomi delle tabelle del database di origine utilizzati per convertire gli schemi

    Assicurati di utilizzare l'argomento -f=false. Questo argomento esporta le dichiarazioni di chiave esterna in un file separato.

    La cartella di output potrebbe contenere alcuni o tutti i seguenti file. Per maggiori dettagli su questi file, consulta la documentazione sull'utilità di conversione schema di Sttriim.

    Nome file di output Descrizione
    converted_tables.sql Contiene tutte le tabelle convertite che non richiedono alcuna coercizione.
    converted_tables_with_striim_intelligence.sql Contiene tutte le tabelle convertite che sono state convertite con una certa coercizione.
    conversion_failed_tables.sql Contiene le tabelle in cui è stata tentata la conversione, ma non è stata ottenuta una mappatura
    converted_foreignkey.sql Contiene tutte le dichiarazioni dei vincoli di chiave esterna
    conversion_failed_foreignkey.sql Contiene tutte le conversioni di chiave esterna non riuscite
    conversion_report.txt Contiene un report dettagliato della conversione dello schema

    In questo tutorial utilizzerai il file converted_tables.sql per creare tabelle equivalenti nel database Cloud SQL per PostgreSQL senza vincoli di chiave esterna. Dopo la replica iniziale, utilizzerai il file converted_foreignkey.sql per applicare i vincoli della chiave esterna.

Converti lo schema utilizzando Ora2Pg

Un'altra opzione per convertire gli schemi delle tabelle Oracle in schemi PostgreSQL equivalenti è l'utilità Ora2Pg. Puoi installare l'utilità su una VM Google Cloud separata.

L'utilità Ora2Pg converte lo schema Oracle ed esporta le istruzioni DDL necessarie per creare tabelle equivalenti nel database PostgreSQL. Queste istruzioni DDL vengono esportate in un file di output denominato output.sql.

Per impostazione predefinita, l'utilità Ora2Pg esporta le tabelle Oracle con l'attributo NOLOGGING impostato su UNLOGGED. Per evitare di perdere dati da tabelle non registrate in caso di arresto anomalo del database, ti consigliamo di disattivare questa funzionalità.

Se hai scelto di utilizzare questa funzionalità, per esportare tutte le tabelle come tabelle NORMAL, imposta il valore per questo attributo su 1.

Durante l'esportazione dello schema, esporti e salvi tutte le dichiarazioni di chiave esterna in un file separato utilizzando il seguente flag nel file di configurazione Ora2Pg:

FILE_PER_FKEYS 1

Per impostazione predefinita, le chiavi esterne vengono esportate nel file di output principale (output.sql). Quando attivi il flag FILE_PER_FKEYS (1), le chiavi esterne vengono esportate in un file separato denominato FKEYS_output.sql.

In questo tutorial utilizzerai il file output.sql per creare tabelle equivalenti nel database Cloud SQL per PostgreSQL senza vincoli di chiave esterna. Dopo la replica iniziale, utilizzerai il file FKEY_output.sql per applicare i vincoli della chiave esterna.

Preparazione dell'istanza Cloud SQL per PostgreSQL

Per abilitare Striim a scrivere dati in un'istanza Cloud SQL per PostgreSQL, devi creare un'istanza Cloud SQL. Devi anche creare le tabelle del database e lo schema in cui scrive Striim:

  1. In Cloud Shell, crea un'istanza Cloud SQL per PostgreSQL. Ti consigliamo di configurare Cloud SQL in modo che utilizzi un indirizzo IP privato. Utilizza il parametro --network per configurare questo indirizzo:

    $INSTANCE_NAME=INSTANCE_NAME
    
    gcloud beta sql instances create INSTANCE_NAME \
        --database-version=POSTGRES_12 \
        --network=NETWORK \
        --cpu=NUMBER_CPUS \
        --memory=MEMORY_SIZE \
        --region=REGION
    

    Sostituisci quanto segue:

    • INSTANCE_NAME: il nome dell'istanza
    • NETWORK: il nome della rete VPC che utilizzi per questa istanza
    • NUMBER_CPUS: numero di vCPU nell'istanza
    • MEMORY_SIZE: quantità di memoria per l'istanza. ad esempio 3072 MiB o 9GiB. Se non specifichi l'unità, si presume il valore GiB.
    • REGION: la regione in cui hai creato il bucket Cloud Storage
  2. Crea un nome utente e una password per l'istanza Cloud SQL:

    CLOUD_SQL_USERNAME=CLOUD_SQL_USERNAME
    
    gcloud sql users create $CLOUD_SQL_USERNAME \
      --instance=$INSTANCE_NAME \
      --password=CLOUD_SQL_PASSWORD
    

    Sostituisci quanto segue:

    • CLOUD_SQL_USERNAME: un nome utente per l'istanza Cloud SQL
    • CLOUD_SQL_PASSWORD: la password per il nome utente Cloud SQL

    A questo utente è concessa la proprietà delle tabelle PostgreSQL. Striim utilizza le credenziali dell'utente anche per connettersi al database Cloud SQL per PostgreSQL.

    I file di schema esportati durante il passaggio di conversione dello schema potrebbero avere un'istruzione DDL che concede la proprietà a un utente, come nell'esempio seguente:

    CREATE SCHEMA <SCHEMA_NAME>;
    ALTER SCHEMA <SCHEMA_NAME> OWNER TO <USER>;
    

    Potresti dover sostituire SCHEMA_NAME con CLOUD_SQL_SCHEMA e USER con il CLOUD_SQL_USERNAME creato in precedenza.

  3. crea un database PostgreSQL

    CLOUD_SQL_DATABASE_NAME=CLOUD_SQL_DATABASE_NAME
    
    gcloud sql databases create $CLOUD_SQL_DATABASE_NAME \
      --instance=$INSTANCE_NAME
    

    Sostituisci quanto segue:

    • CLOUD_SQL_DATABASE_NAME: nome del database PostgreSQL
  4. Configurare il database Cloud SQL per PostgreSQL per consentire l'accesso dall'istanza Striim. Le opzioni di connettività dipendono dal fatto che l'istanza Cloud SQL sia configurata in modo da utilizzare un indirizzo IP pubblico o privato.

    1. Se hai configurato un indirizzo IP pubblico, aggiungi l'indirizzo IP dell'istanza di Striim come indirizzo autorizzato sull'istanza Cloud SQL. Il seguente screenshot mostra come eseguire questa operazione dalla console Google Cloud:

      Configurare il database Cloud SQL per PostgreSQL
per consentire l&#39;accesso dall&#39;istanza Striim.

    2. Se hai configurato un indirizzo IP privato, le opzioni di connettività disponibili dipendono dal fatto che l'istanza Cloud SQL e l'istanza Striim si trovino o meno sulla stessa rete VPC.

      1. Se l'istanza Striim si trova nella stessa rete VPC dell'istanza Cloud SQL, può stabilire la connessione con l'istanza Cloud SQL.

        Il seguente screenshot mostra che l'istanza Cloud SQL è associata alla rete VPC predefinita. Se l'istanza Striim è stata creata anche sulla rete VPC predefinita, può connettersi privatamente all'istanza Cloud SQL.

        l&#39;istanza Cloud SQL è associata alla rete VPC
predefinita.

      2. Se l'istanza Striim si trova su una rete VPC diversa da quella dell'istanza Cloud SQL, configura l'accesso privato ai servizi sulla rete VPC dell'istanza Striim.

  5. Creare schemi di tabella senza vincoli di chiave esterna nel database Cloud SQL per PostgreSQL.

    1. Per esportare output.sql durante il passaggio di conversione dello schema, utilizza il file output.sql per creare gli schemi.

    2. Per esportare converted_tables.sql durante il passaggio di conversione dello schema, utilizza il file converted_tables.sql per creare gli schemi.

      Puoi eseguire entrambi gli script utilizzando qualsiasi client PostgreSQL con connettività all'istanza Cloud SQL per PostgreSQL. Tuttavia, ti consigliamo di utilizzare il client PostgreSQL che hai installato in precedenza sull'istanza di Striim.

    3. Apri una sessione SSH con la tua istanza Striim.

    4. Crea gli schemi:

      psql -h HOSTNAME -p CLOUD_SQL_PORT -d CLOUD_SQL_DATABASE_NAME -U CLOUD_SQL_USERNAME -f PATH_TO_MAIN_SQL_FILE
      

      Sostituisci quanto segue:

      • HOSTNAME: indirizzo IP dell'istanza Cloud SQL
      • CLOUD_SQL_PORT: porta dell'istanza Cloud SQL a cui connetterti . Per impostazione predefinita, questa porta è 5432
      • PATH_TO_MAIN_SQL_FILE: percorso dello script principale nell'istanza di Striim

      Ad esempio:

      psql -h 12.123.123.123 -d testdb -U hr -p 5432 -f output.sql

  6. Verifica che le tabelle siano state create:

    1. Connettiti al database Cloud SQL per PostgreSQL:

      psql -h HOSTNAME -p 5432 -d CLOUD_SQL_DATABASE_NAME -U
      CLOUD_SQL_USERNAME
      
    2. Elenca le tabelle presenti in questo database:

      \dt
      

      L'output è un elenco delle tabelle create dallo script di conversione dello schema della tabella nel passaggio precedente.

  7. Crea una tabella di checkpoint nel database Cloud SQL per PostgreSQL:

    1. Connettiti al database Cloud SQL per PostgreSQL:

      psql -h HOSTNAME -p 5432 -d CLOUD_SQL_DATABASE_NAME -U
      CLOUD_SQL_USERNAME
      
    2. Crea la tabella:

      CREATE TABLE chkpoint (
      id character varying(100) primary key,
      sourceposition bytea,
      pendingddl numeric(1),
      ddl text);
      

      Striim ha bisogno di questa tabella per mantenere i checkpoint durante il processo di replica continuo.

Caricamento del database Oracle nel database Cloud SQL per PostgreSQL

Questa sezione descrive la replica iniziale una tantum del database Oracle nel database Cloud SQL per PostgreSQL.

Stabilire una connessione a Oracle da Striim

Segui le indicazioni in Esecuzione di Striim in Google Cloud. Per il caricamento iniziale, utilizza l'adattatore Lettore database Striim per connetterti a Oracle da Striim. Puoi anche utilizzare la procedura guidata CDC di Sttriim.

  1. Nell'adattatore Lettore database Striim, vai a Origini, quindi cerca e seleziona Database dall'elenco.

  2. Imposta le seguenti proprietà nella finestra Database:

    • Nome: identifica questo componente della pipeline di migrazione.
    • Alimentatore: DatabaseReader
    • URL di connessione: inserisci una stringa univoca per connetterti al database Oracle:

      jdbc:oracle:thin:@HOSTNAME:ORACLE_PORT:SID
      

      OR

      jdbc:oracle:thin:@HOSTNAME:ORACLE_PORT/PDB_OR_CDB_SERVICE_NAME
      

      Sostituisci quanto segue:

      • ORACLE_PORT: porta del database Oracle (1521 per impostazione predefinita)
      • SID: SID database Oracle
      • PDB_OR_CDB_SERVICE_NAME: nome del servizio Oracle PDB o CDB. Se le tabelle si trovano in un PDB, utilizza PDB_SERVICE_NAME; se sono in un CDB, utilizza CDB_SERVICE_NAME.

      Puoi trovare la porta e il nome del servizio nel file tnsnames.ora che si trova in $ORACLE_HOME/network/admin/tnsnames.ora nell'istanza Oracle.

    • Nome utente e password:utilizza l'utente Oracle (c##striimutente) che hai creato nei passaggi preliminari. Striim usa questo nome utente e questa password per connettersi al tuo database Oracle e leggere le tabelle.

    • Tables: per Oracle, il lettore di database richiede anche un elenco di nomi di tabella da replicare. Questa proprietà viene specificata nel campo Tabelle in Mostra proprietà facoltative. Il formato di questa proprietà è il seguente:

      ORACLE_SCHEMA.ORACLE_TABLE_NAME
      

      Sostituisci quanto segue:

      • ORACLE_SCHEMA: nome dello schema Oracle
      • ORACLE_TABLE_NAME: nomi delle tabelle Oracle nello schema

      Puoi anche specificare più tabelle e viste materializzate come elenco separato da punti e virgola o con i seguenti caratteri jolly:

      %: qualsiasi serie di caratteri

      _: qualsiasi carattere singolo

      Ad esempio, HR.% legge tutte le tabelle nello schema RU. Almeno una tabella deve corrispondere al carattere jolly. In caso contrario, il lettore di database ha esito negativo e restituisce il seguente errore:

      Could not find tables specified in the database

      • Silenziose al completamento di IL: imposta questo campo in verde facendolo scorrere verso destra per mettere in pausa la pipeline al termine del caricamento iniziale.

      • Output in: assegna un nome all'output di questo adattatore. Utilizza una stringa sensibile alle maiuscole, senza caratteri speciali o spazi.

  3. Fai clic su Salva. Vengono visualizzate le proprietà dell'adattatore:

    Proprietà dell&#39;adattatore lettore database Striim.

Testa la connessione

Ora che hai effettuato la connessione a Oracle da Striim, testa la connessione.

  1. Fai clic sull'elenco a discesa Created (Creato) per testare la connettività Striim al database Oracle.

  2. Fai clic su Deploy App.

  3. Seleziona l'output di questo adattatore e fai clic su Anteprima per visualizzare i dati in tempo reale mentre Striim li legge dall'origine.

    visualizzazione in tempo reale dei dati di origine nell&#39;interfaccia di Striim.

  4. Fai clic sull'elenco a discesa Deployment eseguito e quindi su Avvia app.

  5. (Facoltativo) Fai clic sull'elenco a discesa Deployment eseguito e quindi su Annulla deployment app per correggere eventuali errori che si verificano.

  6. (Facoltativo) Fai clic su Riprendi app dopo aver corretto tutti gli errori per riavviare l'app.

  7. Fai clic sul gruppo di deployment predefinito.

  8. Verifica che l'opzione Convalida mappature delle tabelle sia attivata, quindi fai clic su Esegui il deployment.

    Il riquadro dei dati di anteprima e lo stato della pipeline cambiano in Quiesced.

A questo punto del tutorial hai verificato che Striim è in grado di stabilire una connessione al tuo database Oracle e di leggere i dati al suo interno.

Aggiungi un database Cloud SQL per PostgreSQL come destinazione

Per questa migrazione, scriverai dati nell'istanza Cloud SQL per PostgreSQL. Striim fornisce un adattatore per scrittore di database generico, chiamato Writer database, che puoi utilizzare per la migrazione.

  1. In Striim Flow Designer, vai a Destinazioni. Cerca e seleziona Cloud SQL Postgres dall'elenco.
  2. Trascina Writer database sulla pipeline.
  3. Imposta le seguenti proprietà:

    • Alimentatore: DatabaseWriter

    • URL di connessione: inserisci una stringa univoca per stabilire una connessione all'istanza Cloud SQL:

      jdbc:postgresql://CLOUD_SQL_IP_ADDRESS:CLOUD_SQL_PORT/CLOUD_SQL_DATABASE_NAME?stringtype=unspecified
      

      Sostituisci quanto segue:

      • CLOUD_SQL_IP_ADDRESS: indirizzo IP dell'istanza Cloud SQL

      Ad esempio:

      jdbc:postgresql://12.123.12.12:5432/postgres?stringtype=unspecified
      
    • Nome utente e password: inserisci il nome utente e la password di Cloud SQL che hai creato in precedenza.

    • Tabelle: crea un mapping dai nomi delle tabelle del database Oracle ai nomi delle tabelle Cloud SQL. Specifica la tabella di database Oracle in quale tabella Cloud SQL è scritta. Questa mappatura utilizza il formato seguente:

      ORACLE_SCHEMA.ORACLE_TABLE_NAME,CLOUD_SQL_SCHEMA.CLOUD_SQL_TABLE_NAME
      

      Sostituisci quanto segue:

      • CLOUD_SQL_SCHEMA: nome dello schema PostgreSQL
      • CLOUD_SQL_TABLE_NAME: nome tabella PostgreSQL

      Per mappare più tabelle, puoi utilizzare il carattere jolly (%) nel campo Tabelle, ad esempio:

      HR.%,hr.%
      

      I campi obbligatori per Writer database sono contrassegnati nel seguente screenshot: Campi obbligatori per Writer database.

esegui il deployment della pipeline di migrazione

Quando la pipeline di migrazione è pronta, esegui il deployment da Striim Flow Designer e avvia l'applicazione. Puoi anche visualizzare l'anteprima dei dati replicati in tempo reale. Utilizza Monitora i report per monitorare l'avanzamento della replica. Per monitorare l'avanzamento, seleziona l'icona Avanzamento dell'applicazione.

Fai clic sull&#39;icona di avanzamento dell&#39;applicazione per visualizzare l&#39;avanzamento della replica databaase.

  1. In Striim Flow Designer, esegui il deployment della pipeline di migrazione. Fai clic sull'elenco a discesa Created, quindi fai clic su Deploy App. Al termine del caricamento iniziale, lo stato della pipeline diventa Quiesced.

  2. Fai clic su Annulla il deployment dell'app per eseguire il rollback del deployment.

  3. Verifica che il caricamento dei dati sia riuscito controllando il conteggio delle righe:

    SELECT COUNT(*) FROM <TARGET CLOUD SQL TABLE>;
    

    Dovresti vedere un output diverso da zero. In caso contrario, il caricamento dei dati non è riuscito.

Il caricamento iniziale dei dati dal database Oracle a Cloud SQL per PostgreSQL è atomico. Il caricamento dei dati ha esito positivo oppure l'intero caricamento dei dati ha esito negativo. Se il caricamento iniziale non va a buon fine, devi caricare di nuovo i dati.

Abilitazione dei vincoli di chiave esterna nelle tabelle Cloud SQL per PostgreSQL

Al termine del caricamento iniziale, abilita i vincoli della chiave esterna nelle tabelle di destinazione. Utilizza il file con le dichiarazioni di chiave esterna (FKEY_output.sql o converted_foreignkey.sql) che hai creato durante la conversione dello schema.

  1. In Striim, apri una sessione SSH.

  2. Crea vincoli di chiave esterna nelle tabelle:

    psql -h HOSTNAME -d CLOUD_SQL_DATABASE_NAME -U CLOUD_SQL_USERNAME -p
    CLOUD_SQL_PORT -f PATH_TO_FOREIGN_KEY_FILE
    

    Sostituisci quanto segue:

    • CLOUD_SQL_USERNAME: nome utente Cloud SQL per PostgreSQL
    • PATH_TO_FOREIGN_KEY_FILE: : percorso dello script con vincoli di chiave esterna sull'istanza Striim

      Ad esempio:

      psql -h 12.123.123.123 -d testdb -U hr -p 5432 -f output.sql

Replica continua del database Oracle in Cloud SQL per PostgreSQL

Dopo aver completato il caricamento iniziale dei dati, crea una pipeline separata per replicare le modifiche al database Oracle. Finché rimane in esecuzione, questa pipeline mantiene sincronizzato anche il database di origine con il database di destinazione.

Stabilire una connessione a Oracle da Striim

Per la replica continua, utilizza l'adattatore Oracle Reader Striim per connetterti da Striim al database Oracle. Questo adattatore Striim può leggere i dati CDC da Oracle.

  1. Nell'adattatore Oracle Reader Striim, vai a Origini.
  2. Cerca Oracle e seleziona Oracle CDC dall'elenco visualizzato.

  3. Imposta le seguenti proprietà:

    1. URL di connessione:

      HOSTNAME:ORACLE_PORT/SID
      

      OR

      HOSTNAME:ORACLE_PORT/CDB_SERVICE_NAME
      

      Sostituisci quanto segue:

      • CDB_SERVICE_NAME: nome del servizio CDB di Oracle

      L'URL di connessione è una stringa univoca utilizzata per la connessione al database Oracle. A differenza dell'adattatore lettore database utilizzato per il caricamento iniziale, viene utilizzato il nome del servizio CDB, indipendentemente dal fatto che le tabelle del database siano in un PDB o CDB.

      Ad esempio: 12.123.123.12:1521/ORCLCDB.WORLD.

    2. Nome utente/password: utilizza il nome utente Oracle (c##striimutente) che hai creato nei passaggi prerequisiti.

      Questo utente Oracle deve disporre dei privilegi per leggere le tabelle.

    3. Tabelle: è necessario anche un elenco di nomi di tabella da replicare. Il nome viene specificato nel seguente formato, a seconda che le tabelle siano in CDB o PDB.

      Per la tabella CDB:

      ORACLE_SCHEMA.ORACLE_TABLE_NAME
      

      Per la tabella PDB:

      PDB_NAME.ORACLE_SCHEMA.ORACLE_TABLE_NAME
      

      Sostituisci quanto segue:

      • PDB_NAME: nome PDB Oracle

      Questo comando replica le tabelle CDB o PDB. Puoi trovare PDB_NAME nel file tnsnames.ora che si trova all'indirizzo $ORACLE_HOME/network/admin/tnsnames.ora sull'istanza Oracle.

      Ricorda, PDB_NAME e PDB_SERVICE_NAME sono due cose diverse. Hai utilizzato PDB_SERVICE_NAME in precedenza nella sezione. Visualizza il file tnsnames.ora per recuperare il nome del PDB:

      sudo su - oracle // Login as oracle user
      cat  ORACLE_HOME/network/admin/tnsnames.ora
      

      Di seguito è riportato un esempio di PDB_NAME (APPSPDB) nel file tnsnames.ora:

        APPSPDB =
          (DESCRIPTION =
            (ADDRESS_LIST =
              (ADDRESS = (PROTOCOL = TCP) (HOST = orainst) (PORT = 1521))
            )
            (CONNECT_DATA =
              (SERVICE NAME = APPSPDB.WORLD)
            )
          )
      

      Per specificare più tabelle e viste materializzate come elenco, separa i nomi delle tabelle o delle viste con punti e virgola o caratteri jolly. Almeno una tabella deve corrispondere al carattere jolly; in caso contrario, Oracle Reader restituisce un errore Could not find tables specified in the database.

    4. Avvia SCN: per la pipeline continua, devi fornire l'SCN del database Oracle. Striim lo ha bisogno per iniziare a replicare tutte le transazioni. Inserisci il valore SCN generato in precedenza.

      1. Supporto di PDB e CDB: puoi utilizzare un CDB o un PDB; espandi Mostra proprietà facoltative e sposta l'opzione verso destra.

      2. Tabella con indicatori molto chiari: utilizza il nome della tabella che hai creato in precedenza.

        Lo screenshot seguente fornisce una panoramica dei campi obbligatori per l'adattatore Oracle Reader:

        I campi obbligatori dell&#39;adattatore Oracle Reader.

  4. Verifica connessione: fai clic su Verifica connessione. L'URL di connessione, il nome utente e la password sono necessari per testare la connettività del database. Se Striim riesce a stabilire una connessione, viene visualizzato un segno di spunta verde.

  5. Verifica la capacità di Striim di leggere le tabelle del database Oracle:

    1. Nell'adattatore Oracle Reader, seleziona Deploy app (Esegui il deployment dell'app).
    2. Seleziona il gruppo di deployment predefinito.
    3. Fai clic su Esegui il deployment.
  6. Fai clic sull'icona a forma di onda (Output) per questo adattatore. L'icona a forma di occhio (Anteprima) che viene visualizzata viene utilizzata per visualizzare l'anteprima dei dati in tempo reale mentre Striim li legge dall'origine.

  7. Fai clic su Avvia app nel menu a discesa Deployment eseguito.

    Se si verificano errori, seleziona Annulla il deployment dell'app dallo stesso menu a discesa e correggi gli errori. Dopo aver corretto gli errori, fai clic su Riprendi app per riavviare l'applicazione.

    All'avvio della pipeline, il suo stato viene aggiornato in Running. Eventuali nuove modifiche alla tabella di origine vengono visualizzate nella finestra di anteprima. Poiché l'adattatore Oracle Reader utilizza CDC, le uniche modifiche alla tabella visualizzate nel riquadro dei dati di anteprima sono quelle che si verificano dopo l'avvio dell'applicazione.

    La scheda Anteprima dati mostra le nuove modifiche alla tabella di origine in tempo reale.

Verifica la capacità di leggere i dati CDC da Oracle

Per verificare se l'adattatore è in grado di leggere le nuove modifiche, segui queste istruzioni:

  1. Utilizza le istruzioni SQL per inserire nuove transazioni nelle tabelle di origine Oracle.
  2. Verifica che le nuove transazioni vengano visualizzate nella scheda Anteprima dati dell'adattatore Oracle Reader.
  3. Arresta l'applicazione e fai clic su Annulla deployment. Ora sei pronto ad andare al passaggio successivo.

Fino a questo punto non hai aggiunto un adattatore di destinazione alla pipeline. I dati non vengono copiati se non aggiungi un adattatore di destinazione. Nella sezione successiva aggiungerai un adattatore di destinazione.

Aggiungi un database Cloud SQL per PostgreSQL come destinazione

Per scrivere dati nel database Cloud SQL per PostgreSQL, devi aggiungere un adattatore Writer database alla tua pipeline. Per la pipeline di replica continua, utilizza lo stesso adattatore utilizzato nella pipeline di caricamento iniziale.

  1. In Striim Flow Designer, vai a Destinazioni, quindi cerca e seleziona Cloud SQL Postgres dall'elenco.
  2. Trascina Writer database sulla pipeline.
  3. Imposta le seguenti proprietà:

    • Alimentatore: DatabaseWriter.

    • URL di connessione: inserisci l'URL di connessione inserito per stabilire una connessione all'istanza Cloud SQL.

    jdbc:postgresql://CLOUD_SQL_IP_ADDRESS:CLOUD_SQL_PORT/CLOUD_SQL_DATABASE_NAME?stringtype=unspecified
    

    Ad esempio:

    jdbc:postgresql://12.123.12.12:5432/postgres?stringtype=unspecified
    
    • Nome utente e password: inserisci il nome utente e la password di Cloud SQL che hai creato in precedenza.

    • Tabelle: crea un mapping dai nomi delle tabelle del database Oracle ai nomi delle tabelle Cloud SQL. Specifica quale tabella di database Oracle è scritta in una quale tabella Cloud SQL. Questa mappatura utilizza il seguente formato:

    ORACLE_SCHEMA.ORACLE_TABLE_NAME,CLOUD_SQL_SCHEMA.CLOUD_SQL_TABLE_NAME
    

    Per mappare più tabelle, puoi utilizzare il carattere jolly (%) nel campo Tabelle. Ad esempio:

    HR.%,hr.%
    

    Oltre a queste proprietà, devi impostare anche le seguenti proprietà per la pipeline di replica continua:

  4. Fai clic su Mostra proprietà facoltative.

  5. Seleziona il seguente valore per il campo Ignorable Eccezioni Code:

    23505,NO_OP_UPDATE,NO_OP_DELETE
    

    Poiché stai avviando la pipeline CDC da un punto storico, potrebbero esserci duplicati. Striim deduplica sul target utilizzando le precedenti proprietà del codice di eccezione ignorabile. I dettagli sui codici di eccezione sono disponibili nella seguente tabella:

    Codice eccezione Dettagli
    23505 Il valore della chiave primaria duplicata viola un vincolo univoco
    NO_OP_UPDATE Impossibile aggiornare una riga nel target (in genere perché non c'era una chiave primaria corrispondente)
    NO_OP_DELETE Impossibile eliminare una riga nella destinazione (in genere perché non c'era una chiave primaria corrispondente)
  6. Inserisci chkpoint nel campo Check Point Table (Tabella dei punti di controllo). Striim utilizza questa tabella per archiviare i metadati associati al checkpoint della pipeline di replica continua.

Attivazione del recupero e della crittografia

Prima di eseguire il deployment della pipeline CDC, ti consigliamo vivamente di abilitare il ripristino. Se l'applicazione o la VM Striim smette di funzionare, abilitare il ripristino aiuta a garantire che Striim possa continuare a elaborare. Questo passaggio aiuta anche a garantire l'elaborazione "exactly-once" della semantica. Queste semantiche monitorano il checkpoint di lettura dell'ultimo buon livello noto sul database di origine e l'ultimo checkpoint di scrittura noto sul database di destinazione. In caso di errore di un'applicazione o di una VM, Striim coordina i due checkpoint per garantire che nessun dato sia stato perso o duplicato. Il ripristino non si applica alle applicazioni al caricamento iniziale.

Abilita recupero

  1. In Striim Flow Designer, fai clic sull'icona Configurazione, quindi seleziona Impostazioni app.
  2. Fai clic su Intervallo di recupero.
  3. Digita 5 e seleziona Secondo dall'elenco a discesa.
  4. Fai clic su Attiva la crittografia. Striim cripta tutti i flussi che trasferiscono dati tra i server Striim o da un agente di forwarding a un server Striim.

Attiva crittografia

  • In Striim Flow Designer, fai clic sull'icona Configurazione, seleziona Impostazioni app e seleziona la casella di controllo in Crittografia.

Visita il sito web di Striim per scoprire di più sui metodi di recupero di Striim.

Abilita eccezioni di logging

Prima di eseguire il deployment della pipeline di replica continua, ti consigliamo di abilitare l'archivio di eccezione in Striim. Nell'ambito dell'applicazione CDC, potrebbero essere presenti duplicati scritti dall'applicazione di caricamento iniziale. L'applicazione Striim ignora questi errori, li scrive in un archivio (per consentirti di esaminarli ed elaborarli) e continuare a elaborare.

  1. In Striim Flow Designer, seleziona l'icona Eccezioni. L'icona mostra un punto esclamativo tra due frecce curve.
  2. Fai clic su Attiva.

esegui il deployment della pipeline

Quando la pipeline è pronta, puoi eseguirne il deployment e avviare l'applicazione. Puoi anche visualizzare l'anteprima dei dati mentre vengono replicati in tempo reale e visualizzare i report di monitoraggio. Quando la pipeline avvia correttamente la replica continua, lo stato della pipeline diventa In esecuzione.

  1. Nell'adattatore Oracle Reader, seleziona Deploy app (Esegui il deployment dell'app).
  2. Seleziona il gruppo di deployment predefinito.
  3. Fai clic su Esegui il deployment.

Puoi mantenere la pipeline in esecuzione per tutto il tempo in cui vuoi mantenere le tabelle Oracle sincronizzate con le tabelle Cloud SQL.

Hai terminato il tutorial. Se ti interessa saperne di più su altre origini CDC di Oracle, queste vengono descritte nella sezione seguente.

Origini CDC Oracle alternative

Oltre a LogMiner, l'adattatore di Striim può leggere i database Oracle da XStream o file di trail di Oracle Golden Gate.

Per leggere da XStream, utilizza l'adattatore Oracle Reader di Striim. XStream potrebbe avere prestazioni migliori, ma richiede una licenza Golden Gate ed è supportato solo per Oracle Database 11.2.0.4.

Per leggere i file di prova Golden Gate, utilizza l'adattatore GG Trail Reader di Striim.

Nella tabella seguente vengono descritte le differenze tra LogMiner e XStream:

Funzionalità CDC del database Oracle
Supportato da
LogMiner?
Supportato da
XStream Out?
Lettura di Data Definition Language (DDL), ROLLBACK e transazioni non impegnate No
Utilizzare le funzioni DATA() e BEFORE() No
Utilizzo di QUIESCE (vedi Comandi della console) No
Ricezione di eventi CDC Riceve gli eventi in batch come definito dalla proprietà FetchSize di Oracle Reader Ricezione continua di eventi di modifica relativi ai dati
Lettura da tabelle contenenti tipi non supportati Impossibile leggere la tabella Legge le colonne dei tipi supportati

Esegui la pulizia

Per evitare che al tuo Account Google Cloud vengano addebitati costi relativi alle risorse utilizzate in questo tutorial, elimina il progetto che contiene le risorse oppure mantieni il progetto ed elimina le singole risorse.

  1. Nella console Google Cloud, vai alla pagina Gestisci risorse.

    Vai a Gestisci risorse

  2. Nell'elenco dei progetti, seleziona il progetto che vuoi eliminare, quindi fai clic su Elimina.
  3. Nella finestra di dialogo, digita l'ID del progetto e fai clic su Chiudi per eliminare il progetto.

Passaggi successivi

Oracle, Java e MySQL sono marchi registrati di Oracle e/o delle sue società consociate. Altri nomi possono essere marchi dei rispettivi proprietari.