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 di Oracle HR.
Questo tutorial è rivolto agli architect di database, ai database engineer e ai proprietari di dati aziendali che prevedono di utilizzare Striim per eseguire la migrazione o replicare i database Oracle in Cloud SQL per PostgreSQL. Dovresti avere una conoscenza di base di come usare Striim per creare pipeline. Dovresti anche acquisire familiarità con l'interfaccia utente web di Sttriim, i concetti chiave di Sttriim e come creare un'applicazione utilizzando il Designer Flow di Striim.
Striim è un partner tecnologico per la migrazione dei database di Google Cloud. Striim semplifica le migrazioni online utilizzando un'interfaccia di trascinamento per configurare lo spostamento continuo dei dati tra i database. Per le migrazioni a Google Cloud, Striim offre una piattaforma di inserimento di flussi di dati non invasiva per l'estrazione, la trasformazione e il caricamento (ETL), efficiente per il deployment e facile da eseguire. Per creare la pipeline di migrazione, utilizzerai flow Designer di Striim in questo tutorial.
Se la migrazione del database non è una cosa che conosci, consulta questa presentazione tecnica di Cloud Next '19.
Architettura
La migrazione del database tramite Striim prevede due fasi di spostamento sequenziale dei dati:
- Fase 1: replica iniziale una tantum del database Oracle.
- Fase 2: la replica continua di ogni modifica sottoposta a commit sul sistema di database di origine in seguito utilizzando Change Data Capture (CDC).
Il seguente diagramma illustra un'architettura di deployment di base:
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 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 una disponibilità elevata, 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 ti consente di connetterti a vari database e origini dati utilizzando i loro adattatori integrati. Puoi collegare gli adattatori utilizzando Flow Designer, l'interfaccia interattiva di trascinamento di Striim, in modo da formare un grafico aciclico. Questo grafico è noto anche come pipeline Spark o applicazione Sttriim.
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.
- Lettore Oracle: legge i dati utilizzando LogMiner dal database di origine Oracle durante la fase di replica continua dei dati.
- Database Writer: scrive i dati nel database Cloud SQL per PostgreSQL durante il caricamento iniziale e la replica continua dei dati.
Obiettivi
Prepara il tuo 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.
Soddisfare 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 vengono utilizzati i seguenti componenti fatturabili di Google Cloud:
Per generare una stima dei costi in base all'utilizzo previsto,
utilizza il Calcolatore prezzi.
La soluzione Striim in Cloud Marketplace offre una licenza di prova gratuita a tempo limitato. Alla scadenza della prova, i costi di utilizzo vengono addebitati sul tuo account Google Cloud. Puoi anche ottenere licenze Striim direttamente da Striim per il deployment on-premise e in una macchina virtuale (VM) di Compute Engine. Potrebbero essere applicati costi associati all'esecuzione di un database Oracle al di fuori di Google Cloud.
Prima di iniziare
- 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.
-
Nella pagina del selettore di progetti della console Google Cloud, seleziona o crea un progetto Google Cloud.
-
Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.
-
Nella pagina del selettore di progetti della console Google Cloud, seleziona o crea un progetto Google Cloud.
-
Assicurati che la fatturazione sia attivata per il tuo progetto Google Cloud.
Questo tutorial presuppone che tu disponga già di quanto segue:
- Un Oracle Database Enterprise Edition 18c o versioni successive per Linux x86-64 di cui vuoi eseguire la migrazione.
- Un Compute Engine che esegue CentOS in cui è installato Striim. Puoi eseguire il deployment di Striim tramite la soluzione Google Cloud Marketplace.
Preparazione del database Oracle
Le seguenti sezioni illustrano le modifiche alla configurazione che potrebbero essere necessarie per la connessione al database Oracle e per la migrazione con Striim. Per i dettagli di configurazione, consulta Attività di configurazione Oracle di base.
Scegli l'origine per Oracle CDC
Anche se esistono diverse origini CDC Oracle, questo tutorial utilizza LogMiner. Per informazioni sulle opzioni alternative, consulta la pagina Origini CDC Oracle alternative.
Prepara Oracle Database Enterprise Edition 18c (o versioni successive)
Per preparare il database Oracle, segui le istruzioni nella pagina della documentazione di Sttriim per i seguenti passaggi:
- Attiva
archivelog
di Striim. - Abilita dati di log supplementari Striim.
- Abilita la registrazione della chiave primaria Striim.
Crea un utente Oracle con privilegi di LogMiner per Striim.
Per eseguire questi passaggi, devi disporre di una connessione al database del container (CDB), indipendentemente dal fatto che tu stia eseguendo la migrazione di un database CDB o di un database modulare (PDB). Ti consigliamo di installare e utilizzare SQL*Plus per interagire con il database Oracle.
Crea una tabella
quiescemarker
Striim.L'adattatore Oracle Reader per CDC di Striim richiede una tabella per l'archiviazione dei metadati quando chiude un'applicazione. Se utilizzi LogMiner come origine per CDC (come in questo tutorial), hai bisogno della tabella quiescemark. Devi essere connesso alla CDB quando segui i passaggi per creare la tabella.
Stabilisci la connettività di rete tra il tuo database Oracle e l'istanza 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 si trova nel file$ORACLE_HOME/network/admin/tnsnames.ora
.Prendi nota del numero di modifica del sistema (SCN) per il database Oracle.
La SCN è un timestamp interno utilizzato per fare riferimento alle modifiche apportate a un database.
Nel tuo database Oracle, recupera la 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 il lettore Oracle con LogMiner, inserisci il driver JDBC Oracle nel classpath Java nella tua istanza Striim. Completa i seguenti passaggi su ogni server Striim che esegue un adattatore Oracle Reader:
- Accedi al
tuo account Oracle,
quindi
scarica il file
ojdbc8.jar
sulla tua macchina locale.- Se non hai un account Oracle, creane uno.
Fai clic sul link Scarica per il file
ojdbc8.jar
.- Fai clic su Ho esaminato e accetto il contratto di licenza Oracle per scaricare il file, se accetti i termini di licenza.
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: nome del bucket Cloud Storage in cui vuoi archiviare il file
ojdbc8.jar
- PATH: il percorso in 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 per poterlo scaricare in qualsiasi istanza.Apri una sessione SSH con l'istanza Striim, quindi scarica il file
.jar
sull'istanza Striim e posizionalo nella directory/opt/striim/lib
:sudo su - striim gsutil cp gs://BUCKET_NAME/ojdbc8.jar /opt/striim/lib
Verifica che le autorizzazioni del file
ojdbc8.jar
siano corrette:sudo ls -l /opt/striim/lib/ojdbc8.jar
L'output dovrebbe essere visualizzato come segue:
-rwxrwx--- striim striim
(Facoltativo) Se il file
.jar
non dispone delle autorizzazioni precedenti, imposta le autorizzazioni corretta:sudo chmod 770 /opt/striim/lib/ojdbc8.jar sudo chown striim /opt/striim/lib/ojdbc8.jar sudo chgrp striim /opt/striim/lib/ojdbc8.jar
Interrompi e riavvia Striim.
Dopo aver apportato eventuali modifiche alla configurazione (ad esempio le modifiche alle autorizzazioni precedenti), devi riavviare Striim.
Se utilizzi la distribuzione Linux CentOS 7, interrompi Striim:
sudo systemctl stop striim-node sudo systemctl stop striim-dbms
Se utilizzi la distribuzione Linux CentOS 7, avvia Striim:
sudo systemctl start striim-dbms sudo systemctl start striim-node
Per ulteriori informazioni sull'arresto e sul riavvio di Striim per un altro sistema operativo, consulta Avvio e arresto di Striim
Installa il client psql sull'istanza Striim.
Puoi utilizzare 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 dispone di 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, è importante generare tutte le dichiarazioni di chiave esterna in un file separato durante l'esportazione dello schema più avanti in questa sezione.
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 chiave esterna vengono replicate dall'origine nel database di destinazione nello stesso ordine.
Al contrario, per impostazione predefinita, la pipeline di caricamento iniziale carica le tabelle in ordine alfabetico. Se non disabiliti le chiavi esterne prima del caricamento iniziale, si verificheranno 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 delle 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:
- Esporta tutte le dichiarazioni di chiave esterna in un file separato durante l'esportazione dello schema.
- Crea schemi di tabelle nel database Cloud SQL per PostgreSQL senza i vincoli di chiave esterna.
- Completa la replica iniziale dei dati.
- Applica i vincoli di chiave esterna alle tabelle.
- Crea la pipeline di replica continua.
Questo tutorial offre due opzioni per la conversione dello schema, illustrate nelle seguenti sezioni:
- L'utilità di conversione dello schema Straim (consigliata)
- Il convertitore di schema di database Oracle a PostgreSQL (Ora2Pg)
Convertire 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 riflettano il database Oracle di origine.
Lo strumento di conversione dello schema Striim converte i seguenti oggetti di origine in oggetti target equivalenti:
- Tables
- Chiavi primarie
- Tipi di dati
- Vincoli univoci
NOT NULL
vincoli- Chiavi esterne
Utilizzando 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. Il modo più semplice è selezionare un sottoinsieme delle tabelle, esportare lo schema e poi importarlo 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 utilizzando l'utilità di conversione dello schema di Striim:
Apri una connessione SSH all'istanza Striim.
Vai alla directory
/opt/striim
:cd /opt/striim
Elenca tutti gli argomenti:
bin/schemaConversionUtility.sh --help
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: 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 di tabelle del database di origine utilizzati per convertire gli schemi
Assicurati di utilizzare l'argomento
-f=false
. Questo argomento esporta le dichiarazioni delle chiave esterna in un file separato.La cartella di output potrebbe contenere alcuni o tutti i seguenti file. Per ulteriori dettagli su questi file, consulta la documentazione dell'utilità di conversione dello 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 tabelle in cui è stato eseguito il tentativo di conversione, ma non è stata ottenuta una mappatura converted_foreignkey.sql
Contiene tutte le dichiarazioni del vincolo di chiave esterna conversion_failed_foreignkey.sql
Contiene tutte le conversioni di chiave esterna non riuscite conversion_report.txt
Contiene un report dettagliato sulla 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, puoi utilizzare il fileconverted_foreignkey.sql
per applicare i vincoli di chiave esterna.- SOURCE_DATABASE_CONNECTION_URL: URL di connessione per il database Oracle, ad esempio
Converti lo schema utilizzando Ora2Pg
Un'altra opzione per convertire gli schemi delle tabelle Oracle in schemi PostgreSQL equivalenti è l'utilità Ora2Pg. Puoi installare questa 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
.
Durante l'esportazione dello schema, esporta e salva 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, utilizza il file FKEY_output.sql
per applicare i vincoli di 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 inoltre creare le tabelle di database e lo schema in cui Striim scrive:
In Cloud Shell, crea un'istanza Cloud SQL per PostgreSQL. Ti consigliamo di configurare Cloud SQL in modo da utilizzare 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, 3072MiB o 9GiB. Se non specifichi l'unità, vengono utilizzati GiB.
- REGION: la regione in cui hai creato il bucket Cloud Storage
Crea un nome utente e una password nell'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 la tua istanza Cloud SQL
- CLOUD_SQL_PASSWORD: la password per il nome utente Cloud SQL
A questo utente è stata concessa la proprietà delle tabelle PostgreSQL. Striim utilizza anche le credenziali di questo utente 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>;
Potrebbe essere necessario sostituire
SCHEMA_NAME
conCLOUD_SQL_SCHEMA
eUSER
con laCLOUD_SQL_USERNAME
creata in precedenza.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
Configurare il database Cloud SQL per PostgreSQL per consentire l'accesso dall'istanza Striim. Le opzioni di connettività dipendono dal fatto che tu abbia configurato l'istanza Cloud SQL per utilizzare un indirizzo IP pubblico o privato.
Se hai configurato un indirizzo IP pubblico, aggiungi l'indirizzo IP dell'istanza di Striim come indirizzo autorizzato nell'istanza Cloud SQL. Il seguente screenshot mostra come eseguire questa operazione dalla console Google Cloud:
Se hai configurato un indirizzo IP privato, le opzioni di connettività disponibili dipendono dalla presenza o meno dell'istanza Cloud SQL e di Striim sulla stessa rete VPC.
Se la tua istanza Striim si trova sulla stessa rete VPC dell'istanza Cloud SQL, l'istanza Striim può stabilire una connessione con l'istanza Cloud SQL.
Lo screenshot seguente 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 con l'istanza Cloud SQL.
Se la tua istanza Striim si trova su una rete VPC diversa dall'istanza Cloud SQL, configura l'accesso privato ai servizi sulla rete VPC dell'istanza Striim.
Crea schemi di tabelle senza vincoli di chiave esterna nel database Cloud SQL per PostgreSQL.
Per esportare
output.sql
durante il passaggio di conversione dello schema, utilizza il fileoutput.sql
per creare gli schemi.Per esportare
converted_tables.sql
durante la fase di conversione dello schema, utilizza il fileconverted_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 installato in precedenza sull'istanza di Sttriim.
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 connettersi,
per impostazione predefinita questa porta è
5432
- PATH_TO_MAIN_SQL_FILE: percorso dello script principale nell'istanza Striim
Ad esempio:
psql -h 12.123.123.123 -d testdb -U hr -p 5432 -f output.sql
Verifica che le tabelle siano state create:
Connettiti al database Cloud SQL per PostgreSQL:
psql -h HOSTNAME -p 5432 -d CLOUD_SQL_DATABASE_NAME -U CLOUD_SQL_USERNAME
Elenca le tabelle in questo database:
\dt
L'output è un elenco di tabelle create dallo script di conversione dello schema delle tabelle nel passaggio precedente.
Crea una tabella di checkpoint nel database Cloud SQL per PostgreSQL:
Connettiti al database Cloud SQL per PostgreSQL:
psql -h HOSTNAME -p 5432 -d CLOUD_SQL_DATABASE_NAME -U CLOUD_SQL_USERNAME
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 continua.
Caricamento del database Oracle nel database Cloud SQL per PostgreSQL
Questa sezione descrive la replica iniziale e una tantum del database Oracle nel database Cloud SQL per PostgreSQL.
Stabilisci 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 Striim.
Nell'adattatore Lettore database Striim, vai a Origini, quindi cerca e seleziona Database dall'elenco.
Imposta le seguenti proprietà nella finestra Database:
- Nome: identifica il componente della pipeline di migrazione.
- Alimentatore:
DatabaseReader
URL di connessione: inserisci una stringa univoca per la connessione al database Oracle:
jdbc:oracle:thin:@HOSTNAME:ORACLE_PORT:SID
OPPURE
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 del 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, utilizzaCDB_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
sull'istanza Oracle.- ORACLE_PORT: porta del database Oracle (
Nome utente e password: utilizza l'utente Oracle (
c##striim
utente) che hai creato nei passaggi preliminari. Striim utilizza questo nome utente e questa password per connettersi al database Oracle e leggere le tabelle.Tabelle: per Oracle, il lettore di database richiede anche un elenco di nomi di tabella da replicare. Questa proprietà è 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 schema Oracle
- ORACLE_TABLE_NAME: nomi delle tabelle Oracle in quello schema
Puoi anche specificare più tabelle e viste materializzate come un elenco separato da punti e virgola o con i seguenti caratteri jolly:
%
: qualsiasi serie di personaggi_
: qualsiasi carattere singoloAd 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 genera il seguente errore:Could not find tables specified in the database
Silenzioso al completamento dell'IL:imposta questo campo sul colore 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 e senza caratteri speciali o spazi.
Fai clic su Salva. Le proprietà dell'adattatore mostrano:
Testa la connessione
Ora che hai effettuato la connessione a Oracle da Striim, testa la connessione.
Fai clic sull'elenco a discesa Creato per verificare la connettività di Striim al database Oracle.
Fai clic su Esegui il deployment dell'app.
Seleziona l'output di questo adattatore, quindi fai clic su Anteprima per visualizzare i dati in tempo reale mentre Striim li legge dall'origine.
Fai clic sull'elenco a discesa Deployment eseguito e quindi su Avvia app.
(Facoltativo) Fai clic sull'elenco a discesa Deployment eseguito e poi su Annulla deployment app per correggere eventuali errori che si verificano.
(Facoltativo) Fai clic su Riprendi app dopo aver corretto tutti gli errori per riavviare l'app.
Fai clic sul gruppo di deployment predefinito.
Verifica che l'opzione Convalida mapping 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 generico per la scrittura di database, chiamato Database Writer, che puoi utilizzare per la migrazione.
- In Striim Flow Designer, vai a Target (Obiettivi). Cerca e seleziona Cloud SQL Postgres dall'elenco.
- Trascina Database Writer nella pipeline.
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 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 del database Oracle viene scritta in una tabella Cloud SQL. Questo mapping utilizza il seguente formato:
ORACLE_SCHEMA.ORACLE_TABLE_NAME,CLOUD_SQL_SCHEMA.CLOUD_SQL_TABLE_NAME
Sostituisci quanto segue:
- CLOUD_SQL_SCHEMA: nome 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 Database Writer sono contrassegnati nel seguente screenshot:
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 tenere traccia dell'avanzamento della replica. Per monitorare l'avanzamento, seleziona l'icona Avanzamento dell'applicazione.
In Striim Flow Designer, esegui il deployment della pipeline di migrazione. Fai clic sull'elenco a discesa Creato, quindi su Esegui il deployment dell'app. Una volta completato il caricamento iniziale, lo stato della pipeline diventa
Quiesced
.Fai clic su Annulla deployment dell'app per eseguire il rollback del deployment.
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 non va a buon fine. 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
Una volta completato il 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.
In Striim, apri una sessione SSH.
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 nell'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.
Stabilisci 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.
- Nell'adattatore Oracle Reader Striim, vai a Sources (Origini).
Cerca Oracle e seleziona Oracle CDC dall'elenco visualizzato.
Imposta le seguenti proprietà:
URL di connessione:
HOSTNAME:ORACLE_PORT/SID
OPPURE
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 connettersi al database Oracle. A differenza dell'adattatore Lettore di database utilizzato per il caricamento iniziale, puoi utilizzare 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
.Nome utente/password: utilizza il nome utente Oracle (
c##striim
utente) che hai creato nei passaggi preliminari.Questo utente Oracle deve disporre dei privilegi per leggere le tabelle.
Tabelle:è necessario anche un elenco di nomi delle tabelle da replicare. Il nome viene specificato nel formato seguente, a seconda che le tabelle siano in formato 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 Oracle PDB
Questo comando replica le tabelle CDB o PDB. Puoi trovare
PDB_NAME
nel filetnsnames.ora
che si trova in$ORACLE_HOME/network/admin/tnsnames.ora
nell'istanza Oracle.Ricorda che
PDB_NAME
ePDB_SERVICE_NAME
sono due cose diverse. Hai usatoPDB_SERVICE_NAME
in precedenza nella sezione. Visualizza il filetnsnames.ora
per ottenere il nome 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 filetnsnames.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, il lettore Oracle non riesce e restituisce un errore
Could not find tables specified in the database
.Avvia SCN: per la pipeline continua, devi fornire la SCN del database Oracle. Striim ne ha bisogno per iniziare a replicare tutte le transazioni. Inserisci il valore SCN generato in precedenza.
Supporto PDB e CDB: puoi utilizzare un CDB o un PDB; espandi Mostra proprietà facoltative e attiva l'opzione a destra.
Tabella degli indicatori quiesce: utilizza il nome della tabella che hai creato in precedenza.
Lo screenshot seguente fornisce una panoramica dei campi obbligatori per l'adattatore Oracle Reader:
Verifica connessione: fai clic su Verifica connessione. L'URL di connessione, il nome utente e la password sono obbligatori per testare la connettività del database. Se Striim riesce a stabilire una connessione, viene visualizzato un segno di spunta verde.
Testa la capacità di Striim di leggere le tabelle di database Oracle:
- Nell'adattatore Oracle Reader, seleziona Esegui il deployment dell'app.
- Seleziona il gruppo di deployment predefinito.
- Fai clic su Esegui il deployment.
Fai clic sull'icona a forma di onda (Output) per questo adattatore. L'icona a forma di occhio (Anteprima) visualizzata viene utilizzata per visualizzare l'anteprima dei dati in tempo reale mentre Striim li legge dalla fonte.
Fai clic su Avvia app nel menu a discesa Distribuito.
Se si verificano errori, seleziona Annulla deployment 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, lo stato viene aggiornato in Running. Eventuali nuove modifiche alla tabella di origine vengono visualizzate nella finestra di anteprima. Poiché l'adattatore Oracle Reader utilizza la CDC, le uniche modifiche alla tabella visualizzate nel riquadro dei dati di anteprima sono quelle che si verificano dopo l'avvio dell'applicazione.
Verifica la possibilità di leggere i dati CDC da Oracle
Per verificare se l'adattatore è in grado di leggere le nuove modifiche, segui queste istruzioni:
- Utilizza le istruzioni SQL per inserire nuove transazioni nelle tabelle di origine Oracle.
- Verifica che le nuove transazioni vengano visualizzate nella scheda Dati di anteprima dell'adattatore Oracle Reader.
- Arresta l'applicazione e fai clic su Annulla deployment. Ora sei pronto per il prossimo passaggio.
Fino a questo punto non hai aggiunto un adattatore di destinazione alla pipeline. Nessun dato viene copiato 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 Database Writer alla pipeline. Per la pipeline di replica continua, utilizza lo stesso adattatore utilizzato nella pipeline di caricamento iniziale.
- In Striim Flow Designer, vai a Destinazioni, quindi cerca e seleziona Cloud SQL Postgres dall'elenco.
- Trascina Database Writer nella pipeline.
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 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 viene scritta in una determinata 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, è possibile 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:
Fai clic su Mostra proprietà facoltative.
Seleziona il seguente valore nel campo Codice di eccezione ignorabile:
23505,NO_OP_UPDATE,NO_OP_DELETE
Poiché stai avviando la pipeline CDC da un punto storico, potrebbero esserci duplicati. Striim esegue la deduplicazione dei dati sul tuo 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 di chiave primaria duplicato viola il vincolo univoco NO_OP_UPDATE
Impossibile aggiornare una riga nella destinazione (in genere perché non era presente una chiave primaria corrispondente) NO_OP_DELETE
Impossibile eliminare una riga nella destinazione (in genere perché non era presente una chiave primaria corrispondente) Inserisci
chkpoint
nel campo Verifica tabella dei punti. 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 Striim o la VM non funziona, l'abilitazione del ripristino aiuta ad assicurare che Striim possa continuare l'elaborazione. Questo passaggio aiuta anche a garantire "esattamente dopo l'elaborazione della semantica". Questa semantica tiene traccia del checkpoint di lettura last-known-good sul database di origine e del checkpoint last-known-good di scrittura sul database di destinazione. In caso di errore di un'applicazione o di una VM, Striim coordina i due punti di controllo per garantire che nessun dato sia stato perso o duplicato. Il ripristino non si applica alle applicazioni di caricamento iniziale.
Abilita ripristino
- In Striim Flow Designer, fai clic sull'icona Configuration (Configurazione) e seleziona App Settings (Impostazioni app).
- Fai clic su Intervallo di recupero.
- Digita
5
e seleziona Secondo dall'elenco a discesa. - Fai clic su Abilita crittografia. Striim cripta tutti i flussi che spostano 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 Configuration (Configurazione), seleziona App Settings (Impostazioni app), quindi in Encryption (Crittografia) seleziona la casella di controllo.
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 delle eccezioni in Striim. Come parte dell'applicazione CDC, potrebbero esserci duplicati scritti dall'applicazione di caricamento iniziale. L'applicazione Striim ignora questi errori, li scrive in un archivio (in modo che l'utente possa esaminarli ed elaborarli) e continua l'elaborazione.
- In Striim Flow Designer, seleziona l'icona Eccezioni. L'icona mostra un punto esclamativo tra due frecce curve.
- 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 replicati in tempo reale e visualizzare i report di monitoraggio. Quando la pipeline avvia correttamente la replica continua, lo stato della pipeline diventa Running.
- Nell'adattatore Oracle Reader, seleziona Esegui il deployment dell'app.
- Seleziona il gruppo di deployment predefinito.
- Fai clic su Esegui il deployment.
Puoi mantenere la pipeline in esecuzione per tutto il tempo che vuoi mantenere sincronizzate le tabelle Oracle con le tabelle Cloud SQL.
Hai terminato il tutorial. Se ti interessa saperne di più su altre origini CDC Oracle, consulta la seguente sezione.
Origini Oracle CDC alternative
Oltre a LogMiner, l'adattatore di Striim può leggere i database Oracle da XStream o file di trail 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 dei trail Golden Gate, utilizza l'adattatore GG Trail Reader di Striim.
La seguente tabella descrive le differenze tra LogMiner e XStream:
Database Oracle Funzionalità CDC |
Supportato da LogMiner? |
Supportato da XStream Out? |
---|---|---|
Lettura del linguaggio di definizione dei dati (DDL), ROLLBACK e transazioni non impegnate |
Sì | No |
Utilizzare le funzioni DATA() e BEFORE() |
Sì | No |
In uso di QUIESCE (vedi Comandi della console)
|
Sì | No |
Ricezione di eventi CDC | Riceve gli eventi in batch come definito dalla proprietà FetchSize del lettore Oracle |
Ricezione continua degli eventi di modifica dei dati |
Lettura da tabelle contenenti tipi non supportati | Mancata lettura della 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.
- Nella console Google Cloud, vai alla pagina Gestisci risorse.
- Nell'elenco dei progetti, seleziona il progetto che vuoi eliminare, quindi fai clic su Elimina.
- Nella finestra di dialogo, digita l'ID del progetto e fai clic su Chiudi per eliminare il progetto.
Passaggi successivi
- Consulta la documentazione di Striim: Guida alla migrazione da Oracle a Google Cloud PostgreSQL
- Guarda il video sulla migrazione dei database Oracle a Cloud SQL PostgreSQL.
- Per ulteriori architetture di riferimento, diagrammi e best practice, esplora il Cloud Architecture Center.
Oracle, Java e MySQL sono marchi registrati di Oracle e/o delle sue società consociate. Altri nomi possono essere marchi dei rispettivi proprietari.