Caricare i dati Oracle in BigQuery

Puoi caricare i dati da Oracle a BigQuery utilizzando il connettore BigQuery Data Transfer Service per Oracle. Con BigQuery Data Transfer Service, puoi pianificare job di trasferimento ricorrenti che aggiungono i tuoi dati più recenti da Oracle a BigQuery.

Limitazioni

I trasferimenti Oracle sono soggetti alle seguenti limitazioni:

  • Il numero massimo di connessioni simultanee a un database Oracle è limitato e, di conseguenza, il numero di esecuzioni di trasferimento simultanee a un singolo database Oracle è limitato a questo importo massimo.
  • Devi configurare un collegamento di rete nei casi in cui non è disponibile un IP pubblico per una connessione al database Oracle, con i seguenti requisiti:
    • L'origine dati deve essere accessibile dalla subnet in cui si trova l'allegato di rete.
    • Il collegamento di rete non deve trovarsi nella subnet all'interno dell'intervallo 240.0.0.0/24.
    • I collegamenti di rete non possono essere eliminati se sono presenti connessioni attive al collegamento. Per eliminare un collegamento di rete, contatta l'assistenza clienti Google Cloud.
    • Per la multi-regione us, il collegamento di rete deve trovarsi nella regione us-central1. Per la multi-regione eu, il collegamento di rete deve trovarsi nella regione europe-west4.
  • L'intervallo di tempo minimo tra i trasferimenti Oracle ricorrenti è di 15 minuti. L'intervallo predefinito per un trasferimento ricorrente è di 24 ore.
  • Una singola configurazione di trasferimento può supportare una sola esecuzione di trasferimento dei dati in un determinato momento. Nel caso in cui sia pianificato l'esecuzione di un secondo trasferimento di dati prima del completamento del primo, solo il primo trasferimento di dati viene completato, mentre gli altri trasferimenti di dati che si sovrappongono al primo vengono ignorati.
    • Per evitare trasferimenti ignorati all'interno di una singola configurazione di trasferimento, ti consigliamo di aumentare la durata di tempo tra i trasferimenti di grandi quantità di dati configurando la Frequenza di ripetizione.
  • Durante un trasferimento di dati, il connettore Oracle identifica le colonne chiave indicizzate e partizionate per trasferire i dati in batch paralleli. Per questo motivo, ti consigliamo di specificare le colonne della chiave primaria o di utilizzare le colonne indicizzate nella tabella per migliorare il rendimento e ridurre il tasso di errore nei trasferimenti dei dati.
    • Se hai vincoli di indice o di chiave primaria, per la creazione di batch paralleli sono supportati solo i seguenti tipi di colonne:
      • INTEGER
      • TINYINT
      • SMALLINT
      • FLOAT
      • REAL
      • DOUBLE
      • NUMERIC
      • BIGINT
      • DECIMAL
      • DATE
    • I trasferimenti di dati Oracle che non utilizzano colonne con chiave primaria o indicizzate non possono supportare più di 2.000.000 di record per tabella.
  • Se l'attestazione di rete e l'istanza di macchina virtuale (VM) configurate si trovano in regioni diverse, potrebbe verificarsi uno spostamento dei dati tra regioni quando trasferisci i dati da Oracle.

Limitazioni del trasferimento incrementale

I trasferimenti incrementali Oracle sono soggetti alle seguenti limitazioni:

  • Puoi scegliere solo TIMESTAMP colonne come colonne filigrana.
  • L'importazione incrementale è supportata solo per gli asset con colonne della filigrana valide.
  • I valori in una colonna filigrana devono aumentare in modo monotono.
  • I trasferimenti incrementali non possono sincronizzare le operazioni di eliminazione nella tabella di origine.
  • Una singola configurazione di trasferimento può supportare solo l'importazione incrementale o completa.
  • Non puoi aggiornare gli oggetti nell'elenco asset dopo la prima esecuzione dell'importazione incrementale.
  • Non puoi modificare la modalità di scrittura in una configurazione di trasferimento dopo la prima esecuzione dell'importazione incrementale.
  • Non puoi modificare la colonna della filigrana o la chiave primaria dopo la prima esecuzione dell'importazione incrementale.

Opzioni di importazione dei dati

Le sezioni seguenti forniscono ulteriori informazioni sulle opzioni di importazione dei dati quando configuri un trasferimento di dati Oracle.

Configurazione TLS

Il connettore Oracle supporta la configurazione per la sicurezza a livello di trasporto (TLS) per criptare i trasferimenti di dati in BigQuery. Il connettore Oracle supporta le seguenti configurazioni TLS:

  • Cripta i dati e verifica la CA e il nome host: questa modalità esegue una convalida completa del server utilizzando TLS sul protocollo TCPS. Cripta tutti i dati in transito e verifica che il certificato del server di database sia firmato da un'autorità di certificazione (CA) attendibile. Questa modalità verifica anche che il nome host a cui ti connetti corrisponda esattamente al nome comune (CN) o a un nome alternativo del soggetto (SAN) del certificato del server. Questa modalità impedisce agli autori di attacchi di utilizzare un certificato valido per un dominio diverso per impersonare il tuo server di database.
    • Se il nome host non corrisponde al CN o al SAN del certificato, la connessione non va a buon fine. Devi configurare una risoluzione DNS in modo che corrisponda al certificato o utilizzare una modalità di sicurezza diversa.
    • Utilizza questa modalità per l'opzione più sicura per prevenire attacchi man-in-the-middle (MITM).
  • Cripta i dati e verifica solo la CA: questa modalità cripta tutti i dati utilizzando TLS sul protocollo TCPS e verifica che il certificato del server sia firmato da una CA di cui il client si fida. Tuttavia, questa modalità non verifica l'hostname del server. Questa modalità si connette correttamente finché il certificato è valido e rilasciato da un'autorità di certificazione attendibile, indipendentemente dal fatto che il nome host nel certificato corrisponda al nome host a cui ti stai connettendo.
    • Utilizza questa modalità se vuoi assicurarti di connetterti a un server il cui certificato è firmato da una CA attendibile, ma il nome host non è verificabile o non hai il controllo sulla configurazione del nome host.
  • Solo crittografia: questa modalità cripta tutti i dati trasferiti tra il client e il server utilizzando la crittografia di rete nativa di Oracle sulla porta TCP standard. Non esegue alcuna convalida di certificati o nomi host.
    • Questa modalità offre un certo livello di sicurezza proteggendo i dati in transito, ma può essere vulnerabile agli attacchi PITM.
    • Utilizza questa modalità se devi assicurarti che tutti i dati siano criptati, ma non puoi o non vuoi verificare l'identità del server. Ti consigliamo di utilizzare questa modalità quando lavori con VPC privati.
  • Nessuna crittografia o verifica: questa modalità non cripta alcun dato e non esegue alcuna verifica di certificati o nomi host. Tutti i dati vengono inviati come testo normale.
    • Non consigliamo di utilizzare questa modalità in un ambiente in cui vengono gestiti dati sensibili.
    • Consigliamo di utilizzare questa modalità solo per scopi di test su una rete isolata in cui la sicurezza non è un problema.

Certificato del server attendibile (PEM)

Se utilizzi la modalità Cripta i dati e verifica CA e nome host o la modalità Cripta i dati e verifica CA, puoi anche fornire uno o più certificati codificati in formato PEM. Questi certificati sono necessari in alcuni scenari in cui BigQuery Data Transfer Service deve verificare l'identità del server di database durante la connessione TLS:

  • Se utilizzi un certificato firmato da una CA privata all'interno della tua organizzazione o un certificato autofirmato, devi fornire la catena di certificati completa o il singolo certificato autofirmato. Questo è necessario per i certificati emessi da CA interne di servizi di provider di cloud gestiti, come Amazon Relational Database Service (RDS).
  • Se il certificato del server di database è firmato da una CA pubblica (ad esempio, Let's Encrypt, DigiCert o GlobalSign), non devi fornire un certificato. I certificati radice per queste CA pubbliche sono preinstallati e considerati attendibili da BigQuery Data Transfer Service.

Puoi fornire certificati con codifica PEM nel campo Certificato PEM attendibile quando crei una configurazione di trasferimento Oracle, con i seguenti requisiti:

  • Il certificato deve essere una catena di certificati con codifica PEM valida.
  • Il certificato deve essere completamente corretto. Eventuali certificati mancanti nella catena o contenuti errati causano l'interruzione della connessione TLS.
  • Per un singolo certificato, puoi fornire un certificato autofirmato singolo dal server di database.
  • Per una catena di certificati completa emessa da una CA privata, devi fornire la catena di attendibilità completa. Sono inclusi il certificato del server di database e tutti i certificati CA intermedi e radice.

Trasferimenti completi o incrementali

Puoi specificare come caricare i dati in BigQuery selezionando l'opzione di scrittura Completa o Incrementale nella configurazione del trasferimento quando configuri un trasferimento Oracle. I trasferimenti incrementali sono supportati in anteprima.

Puoi selezionare Completo per trasferire tutti i dati dai tuoi set di dati Oracle a ogni trasferimento di dati.

In alternativa, puoi selezionare Incrementale (Anteprima) per trasferire solo i dati modificati dall'ultimo trasferimento, anziché caricare l'intero set di dati a ogni trasferimento. Se selezioni Incrementale per il trasferimento dei dati, devi specificare le modalità di scrittura Accoda o Upsert per definire come vengono scritti i dati in BigQuery durante un trasferimento incrementale dei dati. Le sezioni seguenti descrivono le modalità di scrittura disponibili.

Modalità di scrittura Aggiungi

La modalità di scrittura Aggiungi inserisce solo nuove righe nella tabella di destinazione. Questa opzione aggiunge rigorosamente i dati trasferiti senza verificare la presenza di record esistenti, pertanto questa modalità può potenzialmente causare la duplicazione dei dati nella tabella di destinazione.

Quando selezioni la modalità Aggiungi, devi selezionare una colonna della filigrana. Per consentire al connettore Oracle di monitorare le modifiche nella tabella di origine, è necessaria una colonna filigrana.

Per i trasferimenti Oracle, ti consigliamo di selezionare una colonna che viene aggiornata solo quando è stato creato il record e non cambia con gli aggiornamenti successivi. Ad esempio, la colonna CREATED_AT.

Modalità di scrittura Upsert

La modalità di scrittura Upsert aggiorna una riga o ne inserisce una nuova nella tabella di destinazione controllando una chiave primaria. Puoi specificare una chiave primaria per consentire al connettore Oracle di determinare le modifiche necessarie per mantenere la tabella di destinazione aggiornata con la tabella di origine. Se la chiave primaria specificata è presente nella tabella BigQuery di destinazione durante un trasferimento di dati, il connettore Oracle aggiorna la riga con i nuovi dati della tabella di origine. Se una chiave primaria non è presente durante un trasferimento di dati, il connettore Oracle inserisce una nuova riga.

Quando selezioni la modalità Upsert, devi selezionare una colonna filigrana e una chiave primaria:

  • Per consentire al connettore Oracle di monitorare le modifiche nella tabella di origine, è necessaria una colonna filigrana.
    • Seleziona una colonna filigrana che si aggiorna ogni volta che una riga viene modificata. Ti consigliamo colonne simili a UPDATED_AT o LAST_MODIFIED.
  • La chiave primaria può essere una o più colonne della tabella necessarie al connettore Oracle per determinare se deve inserire o aggiornare una riga.
    • Seleziona le colonne che contengono valori non nulli univoci in tutte le righe della tabella. Ti consigliamo colonne che includono identificatori generati dal sistema, codici di riferimento univoci (ad esempio ID a incremento automatico) o ID sequenza basati sul tempo immutabili.
    • Per evitare potenziali perdite o danneggiamenti dei dati, le colonne della chiave primaria che selezioni devono avere valori univoci. Se hai dubbi sull'unicità della colonna della chiave primaria che hai scelto, ti consigliamo di utilizzare la modalità di scrittura Aggiungi.

Prima di iniziare

Le sezioni seguenti descrivono i passaggi da seguire prima di creare un trasferimento Oracle.

Prerequisiti Oracle

Devi anche disporre delle seguenti informazioni sul database Oracle quando crei un trasferimento Oracle.

Nome parametro Descrizione
database Nome del database.
host

Nome host o indirizzo IP del database.

port

Numero di porta del database.

username

Nome utente per accedere al database.

password

Password per accedere al database.

Prerequisiti di BigQuery

Ruoli BigQuery richiesti

Per ottenere le autorizzazioni necessarie per creare un trasferimento di dati BigQuery Data Transfer Service, chiedi all'amministratore di concederti il ruolo IAM Amministratore BigQuery (roles/bigquery.admin) nel tuo progetto. Per saperne di più sulla concessione dei ruoli, consulta Gestisci l'accesso a progetti, cartelle e organizzazioni.

Questo ruolo predefinito contiene le autorizzazioni necessarie per creare un trasferimento di dati BigQuery Data Transfer Service. Per vedere quali sono esattamente le autorizzazioni richieste, espandi la sezione Autorizzazioni obbligatorie:

Autorizzazioni obbligatorie

Per creare un trasferimento di dati di BigQuery Data Transfer Service sono necessarie le seguenti autorizzazioni:

  • Autorizzazioni BigQuery Data Transfer Service:
    • bigquery.transfers.update
    • bigquery.transfers.get
  • Autorizzazioni BigQuery:
    • bigquery.datasets.get
    • bigquery.datasets.getIamPolicy
    • bigquery.datasets.update
    • bigquery.datasets.setIamPolicy
    • bigquery.jobs.create

Potresti anche ottenere queste autorizzazioni con ruoli personalizzati o altri ruoli predefiniti.

Per maggiori informazioni, vedi Concedere l'accesso a bigquery.admin.

Caricare i dati Oracle in BigQuery

Aggiungi dati Oracle in BigQuery configurando un trasferimento utilizzando una delle seguenti opzioni:

Console

  1. Vai alla pagina Trasferimenti di dati nella console Google Cloud .

    Vai a Trasferimenti dati

  2. Fai clic su Crea trasferimento.

  3. Nella sezione Tipo di origine, per Origine, seleziona Oracle.

  4. Nella sezione Dettagli origine dati, segui questi passaggi:

    • Per Collegamento di rete, seleziona un collegamento di rete esistente o fai clic su Crea collegamento di rete.
    • In Host, inserisci il nome host o l'IP del database.
    • In Porta, inserisci il numero di porta utilizzato dal database Oracle per le connessioni in entrata, ad esempio 1521.
    • In Nome database, inserisci il nome del database Oracle.
    • In Tipo di connessione, inserisci il tipo di URL di connessione, SERVICE, SID o TNS.
    • In Nome utente, inserisci il nome dell'utente che avvia la connessione al database Oracle.
    • Nella sezione Password, inserisci la password dell'utente che avvia la connessione al database Oracle.
    • Per Modalità TLS, seleziona un'opzione dal menu a discesa. Per scoprire di più sulle modalità TLS, consulta Configurazione TLS.
    • Per Certificato PEM attendibile, inserisci il certificato pubblico dell'autorità di certificazione (CA) che ha emesso il certificato TLS del server di database. Per scoprire di più, vedi Certificato del server attendibile (PEM).
    • Per Tipo di importazione, seleziona Completa o Incrementale.
    • Per Oggetti Oracle da trasferire, fai clic su Sfoglia:
      • Seleziona gli oggetti da trasferire al set di dati di destinazione BigQuery. In questo campo puoi anche inserire manualmente gli oggetti da includere nel trasferimento di dati.
      • Se hai selezionato Aggiungi come modalità di scrittura incrementale, devi selezionare una colonna come colonna filigrana.
      • Se hai selezionato Upsert come modalità di scrittura incrementale, devi selezionare una colonna come colonna filigrana e poi selezionare una o più colonne come chiave primaria.
  5. Nella sezione Impostazioni destinazione, per Set di dati, seleziona il set di dati che hai creato per archiviare i dati.

  6. Nella sezione Nome configurazione di trasferimento, per Nome visualizzato, inserisci un nome per il trasferimento di dati.

  7. Nella sezione Opzioni di pianificazione:

    • Nell'elenco Frequenza di ripetizione, seleziona un'opzione per specificare la frequenza con cui viene eseguito questo trasferimento di dati. Per specificare una frequenza di ripetizione personalizzata, seleziona Personalizzata. Se selezioni On demand, l'esecuzione avviene quando attivi manualmente il trasferimento.
    • Se applicabile, seleziona Inizia ora o Inizia all'ora impostata e fornisci una data di inizio e un'ora di esecuzione.
  8. (Facoltativo) Nella sezione Opzioni di notifica, segui questi passaggi:

    • Per attivare le notifiche via email, fai clic sul pulsante di attivazione/disattivazione Notifica email. Quando attivi questa opzione, l'amministratore del trasferimento riceve una notifica via email quando l'esecuzione di un trasferimento non riesce.
    • Per attivare le notifiche di esecuzione del trasferimento Pub/Sub per questo trasferimento, fai clic sul pulsante di attivazione/disattivazione Notifiche Pub/Sub. Puoi selezionare il nome del tuo argomento oppure fare clic su Crea un argomento per crearne uno.
  9. Fai clic su Salva.

bq

Inserisci il comando bq mk e fornisci il flag di creazione del trasferimento --transfer_config:

bq mk
    --transfer_config
    --project_id=PROJECT_ID
    --data_source=DATA_SOURCE
    --display_name=DISPLAY_NAME
    --target_dataset=DATASET
    --params='PARAMETERS'

Dove:

  • (Facoltativo) PROJECT_ID: l'ID progetto Google Cloud . Se non viene fornito --project_id per specificare un progetto particolare, viene utilizzato il progetto predefinito.
  • DATA_SOURCE: l'origine dati oracle.
  • DISPLAY_NAME: il nome visualizzato per la configurazione del trasferimento. Il nome del trasferimento dei dati può essere qualsiasi valore che ti consenta di identificare il trasferimento se devi modificarlo in un secondo momento.
  • DATASET: il set di dati di destinazione per la configurazione del trasferimento.
  • PARAMETERS: i parametri per la configurazione del trasferimento creata in formato JSON. Ad esempio: --params='{"param":"param_value"}'. Di seguito sono riportati i parametri per un trasferimento di dati Oracle:

    • connector.networkAttachment (facoltativo): il nome dell'allegato di rete a cui connettersi al database Oracle.
    • connector.authentication.Username: il nome utente dell'account Oracle.
    • connector.authentication.Password: la password dell'account Oracle.
    • connector.database: il nome del database Oracle.
    • connector.endpoint.host: il nome host o l'IP del database.
    • connector.endpoint.port: il numero di porta utilizzato dal database Oracle per le connessioni in entrata, ad esempio 1520.
    • connector.connectionType: il tipo di URL di connessione, SERVICE, SID o TNS.
    • connector.tls.mode: specifica una configurazione TLS da utilizzare con questo trasferimento:
      • ENCRYPT_VERIFY_CA_AND_HOST per criptare i dati e verificare la CA e il nome host
      • ENCRYPT_VERIFY_CA per criptare i dati e verificare solo la CA
      • ENCRYPT_VERIFY_NONE solo per la crittografia dei dati
      • DISABLE per nessuna crittografia o verifica
    • connector.tls.trustedServerCertificate: (facoltativo) fornisci uno o più certificati codificati PEM. Obbligatorio solo se connector.tls.mode è ENCRYPT_VERIFY_CA_AND_HOST o ENCRYPT_VERIFY_CA.
    • ingestionType: specifica FULL o INCREMENTAL. I trasferimenti incrementali sono supportati nell'anteprima. Per maggiori informazioni, consulta Trasferimenti completi o incrementali.
    • writeMode: specifica WRITE_MODE_APPEND o WRITE_MODE_UPSERT.
    • watermarkColumns: specifica le colonne della tabella come colonne filigrana. Questo campo è obbligatorio per i trasferimenti incrementali.
    • primaryKeys: specifica le colonne della tabella come chiavi primarie. Questo campo è obbligatorio per i trasferimenti incrementali.
    • assets: il percorso degli oggetti Oracle da trasferire a BigQuery, utilizzando il formato: DATABASE_NAME/SCHEMA_NAME/TABLE_NAME

Quando specifichi più asset durante un trasferimento incrementale, i valori dei campi watermarkColumns e primaryKeys corrispondono alla posizione dei valori nel campo assets. Nell'esempio seguente, dep_id corrisponde alla tabella DB1/USER1/DEPARTMENT, mentre report_by e report_title corrisponde alla tabella DB1/USER1/EMPLOYEES.

      "primaryKeys":[['dep_id'], ['report_by','report_title']],
      "assets":["DB1/USER1/DEPARTMENT","DB1/USER1/EMPLOYEES"],
  

Ad esempio, il seguente comando crea un trasferimento di dati Oracle nel progetto predefinito con tutti i parametri richiesti:

bq mk
    --transfer_config
    --target_dataset=mydataset
    --data_source=oracle
    --display_name='My Transfer'
    --params='{"assets":["DB1/USER1/DEPARTMENT","DB1/USER1/EMPLOYEES"],
        "connector.authentication.username": "User1",
        "connector.authentication.password":"ABC12345",
        "connector.database":"DB1",
        "connector.endpoint.host":"192.168.0.1",
        "connector.endpoint.port":1520,
        "connector.connectionType":"SERVICE",
        "connector.tls.mode": "ENCRYPT_VERIFY_CA_AND_HOST",
        "connector.tls.trustedServerCertificate": "PEM-encoded certificate",
        "connector.networkAttachment":
        "projects/dev-project1/regions/us-central1/networkattachments/na1"
        "ingestionType":"incremental",
        "writeMode":"WRITE_MODE_APPEND",
        "watermarkColumns":["createdAt","createdAt"],
        "primaryKeys":[['dep_id'], ['report_by','report_title']]}'

API

Utilizza il metodo projects.locations.transferConfigs.create e fornisci un'istanza della risorsa TransferConfig.

Quando salvi la configurazione del trasferimento, il connettore Oracle attiva automaticamente un'esecuzione del trasferimento in base all'opzione di pianificazione. A ogni esecuzione del trasferimento, il connettore Oracle trasferisce tutti i dati disponibili da Oracle in BigQuery.

Per eseguire manualmente un trasferimento di dati al di fuori della pianificazione regolare, puoi avviare un'esecuzione di backfill.

Mappatura dei tipi di dati

La seguente tabella mappa i tipi di dati Oracle ai tipi di dati BigQuery corrispondenti.

Tipo di dati Oracle Tipo di dati BigQuery
BFILE BYTES
BINARY_DOUBLE FLOAT
BINARY_FLOAT FLOAT
BLOB BYTES
CHAR STRING
CLOB STRING
DATE DATETIME
FLOAT FLOAT
INTERVAL DAY TO SECOND STRING
INTERVAL YEAR TO MONTH STRING
LONG STRING
LONG RAW BYTES
NCHAR STRING
NCLOB STRING
NUMBER (without precision and scale) STRING
NUMBER (with precision and scale lower than the BigQuery Numeric range) NUMERIC
NUMBER (with precision and scale lower than the BigQuery BigNumeric range) BIGNUMERIC
NUMBER (with precision and scale greater than the BigQuery BigNumeric range) STRING
NVARCHAR2 STRING
RAW BYTES
ROWID STRING
TIMESTAMP DATETIME
TIMESTAMP WITH LOCAL TIME ZONE DATETIME
TIMESTAMP WITH TIME ZONE TIMESTAMP
UROWID STRING
VARCHAR STRING
VARCHAR2 STRING

Risolvere i problemi di configurazione del trasferimento

Se riscontri problemi durante la configurazione del trasferimento dei dati, consulta Problemi di trasferimento di Oracle.

Prezzi

Per informazioni sui prezzi dei trasferimenti Oracle, consulta la sezione Prezzi di Data Transfer Service.

Passaggi successivi