Diagnostica i problemi nelle migrazioni da Oracle a Cloud SQL per PostgreSQL

In questa pagina sono elencati gli errori noti e i passaggi consigliati per la risoluzione dei problemi relativi a:

Errori dei job di migrazione

Il processo del job di migrazione potrebbe generare errori durante il runtime.

  • Alcuni errori, ad esempio una password errata nel database di origine, sono recuperabili. Il job di migrazione riprende automaticamente dopo la correzione di questi errori.
  • Alcuni errori non sono recuperabili, ad esempio gli errori nella replica dei dati. Devi riavviare il job di migrazione dopo aver corretto questi errori.

Quando si verifica un errore, lo stato del job di migrazione cambia in Failed e lo stato secondario riflette l'ultimo stato prima dell'errore. Per risolvere un errore, vai al job di migrazione non riuscito per visualizzare l'errore e segui i passaggi descritti nel messaggio di errore. Per visualizzare ulteriori dettagli sull'errore, vai a Cloud Monitoring utilizzando il link nel job di migrazione. I log vengono filtrati in base al job di migrazione specifico.

Nella tabella seguente sono riportati alcuni esempi di problemi e di come possono essere risolti:

Sintomo Cause possibili Da provare
Messaggio di errore: Database Migration Service can't set up a tunnel to be connected to the bastion host. Database Migration Service non è riuscito ad accedere al bastion host o il bastion host non accetta connessioni. Verifica le impostazioni del tunnel SSH di forwarding nel profilo di connessione di origine e nella configurazione del server del tunnel SSH, quindi riprova.
Messaggio di errore: Database Migration Service can't connect to the database o Database Migration Service private connectivity error, cannot connect to the database. Database Migration Service non è riuscito a stabilire la connettività al database Oracle di origine.

Verifica di poter accedere al database di origine dal tuo progetto. Controlla le impostazioni relative al tuo metodo di configurazione della connettività di origine.

Se è incluso un codice di errore Oracle specifico, ad esempio ORA-12170: TNS:Connect timeout occurred, consulta la documentazione di Oracle per ulteriori informazioni.

Messaggio di errore: Archiving mode is not ARCHIVELOG. Il database di origine non è in esecuzione in modalità ARCHIVELOG. Configura il database di origine in modo che utilizzi la modalità ARCHIVELOG. Per saperne di più, consulta Configura il database Oracle di origine.
Messaggio di errore: Supplemental logging ("ALL COLUMN LOGGING") isn't turned on for the tables listed below. I dati di log supplementari non sono abilitati nel database di origine. Abilita i dati di log supplementari e imposta la modalità su ALL. Per saperne di più, consulta Configura il database Oracle di origine.
Messaggio di errore: No Archive Log Files were found in the source. Database Migration Service legge solo i log di archiviazione chiusi e non sono stati trovati log nel database di origine.
  1. Esegui questo comando nel database di origine per chiudere il file di log corrente: ALTER SYSTEM SWITCH LOGFILE.
  2. Prova a trovare di nuovo i log.

Se il database non ha operazioni di scrittura attive, potrebbe essere necessario eseguire almeno un'operazione INSERT per attivare la creazione del log.

Messaggio di errore: We're missing the necessary permissions to read from the source. L'account utente di migrazione nel database di origine non dispone delle autorizzazioni richieste.

Database Migration Service si connette all'origine come l'account utente che configuri nel profilo di connessione di origine. Questo account deve disporre di un insieme specifico di autorizzazioni (ad esempio SELECT ANY TABLE) per leggere i dati nel database di origine.

Assicurati che l'account utente per la migrazione disponga dei privilegi necessari. Per saperne di più, consulta Configura il database Oracle di origine.

Messaggio di errore: Unable to connect to the destination database. Si è verificato un problema durante la connessione al database di destinazione. Verifica di poter accedere al database di destinazione dal tuo progetto. Controlla le impostazioni relative al tuo metodo di configurazione della connettività di destinazione.
Messaggio di errore: The following tables don't exist in the destination database: {table_names}. Le tabelle elencate di cui stai tentando di eseguire la migrazione non esistono nel database di destinazione. Database Migration Service crea la tabella e le definizioni necessarie quando converti lo schema di origine.
Messaggio di errore: password authentication failed for user {username}. Il nome utente o la password del database di destinazione non sono configurati correttamente. Assicurati che il profilo di connessione PostgreSQL di destinazione sia configurato correttamente con il nome utente e la password corretti.
Messaggio di errore: The following tables in the destination database don't have primary keys: {table_names}. Le tabelle elencate nel messaggio di errore esistono nel database di destinazione, ma non hanno chiavi primarie.

I workspace della conversione di Database Migration Service aggiungono automaticamente le chiavi primarie per le tabelle che non le hanno quando converti lo schema.

Se utilizzi workspace della conversione legacy, devi creare manualmente le chiavi primarie nella destinazione. Per saperne di più, consulta Workspace della conversione legacy.

Avviso: The following tables have foreign keys: {table_names}. Le tabelle elencate nel messaggio di errore esistono nel database di destinazione, ma hanno chiavi esterne.

Database Migration Service non replica i dati in modo transazionale, pertanto la migrazione delle tabelle potrebbe non essere eseguita in ordine. Se sono presenti chiavi esterne e viene eseguita la migrazione di una tabella figlio che utilizza una chiave esterna prima della tabella padre, potrebbero verificarsi errori di replica.

Per evitare questi problemi di integrità dei dati, ignora le chiavi esterne utilizzando l'opzione REPLICATION per l'utente di migrazione. Per saperne di più, consulta Considerazioni per chiavi esterne e trigger.

Messaggio di errore: Unable to resume replication as log position is lost. Questo errore potrebbe verificarsi quando il processo di replica viene sospeso per un lungo periodo di tempo, causando la perdita della posizione del log. Un job di migrazione non deve essere messo in pausa per un periodo di tempo superiore (o vicino) al periodo di conservazione dei log. Se la posizione del log viene persa, devi ricreare il job di migrazione.
Messaggio di errore: ORA-00942: table or view does not exist. Questo errore potrebbe verificarsi a causa della memorizzazione nella cache sul server Oracle. Ricrea l'utente del database per risolvere il problema di memorizzazione nella cache.
Il job di migrazione rimane nella fase di dump completo e non passa alla fase Change Data Capture (CDC). Database Migration Service sta ancora eseguendo il dump completo di alcune tabelle o una o più tabelle non possono completare il dump completo a causa di errori.
  • Controlla gli errori del job di migrazione e correggi gli errori che si applicano alle tabelle o rimuovi le tabelle associate dal job.
  • Controlla i log di Database Migration Service per verificare l'attività di dump completo in corso e attendi che venga completata.

Problemi di connettività

Questa sezione elenca e descrive i passaggi per la risoluzione dei problemi relativi alla connettività di rete.

Impossibile connettersi al database di destinazione: EOF

L'esecuzione di un test di connettività restituisce il messaggio di errore [DATABASE] unable to connect to the destination database: EOF.

Possibile causa: il collegamento al servizio non è configurato correttamente.

Cose da provare: assicurati che enable_proxy_protocol sia impostato su false nel file di configurazione Terraform del collegamento al servizio. Il protocollo proxy è supportato solo per i server HTTP come NGINX e Apache.

Quando utilizzi gcloud per creare la configurazione di Private Service Connect, il protocollo proxy è disabilitato per impostazione predefinita.

Timeout della connessione, connessione rifiutata

L'esecuzione dei Connectivity Tests non va a buon fine o scade. La causa più probabile è un routing configurato in modo errato all'interno della configurazione di Private Service Connect. Questo problema può verificarsi per diversi motivi.

Possibile causa: manca una regola firewall che consenta all'intervallo CIDR NAT di Private Service Connect di accedere alla subnet Private Service Connect in cui si trova il bastion, in particolare all'interfaccia nic0 della VM bastion.

Cose da provare: assicurati che la policy dell'organizzazione non limiti le regole firewall interne, come la regola firewall psc_sp_in_fw definita nello script Terraform di esempio per la configurazione della connettività IP privato di destinazione per le istanze Cloud SQL non abilitate per PSC.

Possibile causa: il proxy non è attivo. Non esiste un listener sulla porta fornita, pertanto la connessione si blocca.

Cosa provare: puoi provare a stabilire una connessione SSH alla VM bastion e cercare il proxy utilizzando il seguente comando:

  • netstat -tunalp | grep PORT

Analizza le risposte al comando:

  • Se ricevi una risposta vuota, il proxy non è attivo. Prova a eseguire i seguenti comandi:

    sudo su; cd / e verifica se il server Dante è installato eseguendo sudo dpkg -s dante-server:

    • Se il proxy è installato, viene visualizzato il seguente messaggio:

      Status: install ok installed

    • Se il proxy non è installato, il problema probabile è la mancanza di un router. Aggiungi un router e verifica se puoi scaricare il proxy eseguendo apt-get install dante-server.

  • Se il proxy è in esecuzione e in ascolto sulla porta fornita, prova ad aprire una connessione seguendo questi passaggi:

    1. Installa il client PostgreSQL:

      sudo apt-get install postgresql-client.

    2. Connettiti al database PostgreSQL:

      psql -h 127.0.0.1 -p PORT -U DBUSERNAME -W (ti verrà chiesto di inserire la password).

      Sostituisci quanto segue:

      • PORT: il numero di porta del database.
      • DBUSERNAME: il nome utente utilizzato per connettersi al database PostgreSQL.
    3. Installa il client telnet:

      sudo apt-get install telnet

    4. Connettiti al client telnet:

      telnet 127.0.0.1 PORT

      Sostituisci PORT con il numero di porta del database.

    A seconda dei risultati dei comandi:

    • Se i comandi non riescono ad aprire una connessione, prova a esaminare i log del proxy per individuare la causa principale. La causa principale può variare a seconda della configurazione dell'istanza Cloud SQL.

    • Se la connessione viene aperta utilizzando telnet, ma si blocca nel client, il problema probabile è il routing dell'indirizzo IP del bastion. Nella VM, digita ip route nel terminale. Controlla se riesci a individuare una regola di instradamento che instrada le connessioni all'indirizzo IP privato dell'istanza Cloud SQL utilizzando l'intervallo nic secondario (nic1, l'indirizzo IP DB_SUBNETWORK_GATEWAY).

Possibile causa: il collegamento al servizio non accetta la connessione dell'endpoint proveniente da Database Migration Service. Il collegamento al servizio contiene un elenco di progetti accettati e il progetto Database Migration Service non è incluso nell'elenco.

Cosa puoi fare: per risolvere il problema, prova una delle seguenti soluzioni:

  • Nella console Google Cloud , vai a Private Service Connect.

    Vai a Private Service Connect

    Nella scheda Servizi pubblicati, accetta la connessione da Database Migration Service per il collegamento al servizio (se è in attesa).

  • Aggiungi il progetto richiedente ai progetti inclusi nella lista consentita nel collegamento al servizio (se viene rifiutato).

    Se il problema persiste, ricrea il profilo di connessione.

  • Elimina il profilo di connessione associato alla connettività Private Service Connect e ricrealo.

Risolvi gli errori SCAN di Oracle

Questa sezione descrive i potenziali problemi che potresti riscontrare durante la migrazione da origini Oracle Real Application Clusters (RAC) utilizzando la funzionalità Single Client Access Name (SCAN).

Impossibile stabilire la connettività a un database Oracle SCAN

L'esecuzione dei Connectivity Tests non va a buon fine o scade.

Possibile causa: potresti stare tentando di stabilire la connettività direttamente al database di origine Oracle SCAN. Database Migration Service non supporta la connettività diretta ai database utilizzando la funzionalità SCAN negli ambienti Oracle RAC.

Cosa puoi fare: per risolvere il problema, prova una delle seguenti soluzioni:

  • Connettiti direttamente a uno dei nodi.

  • Utilizza Oracle Connection Manager.

  • Crea una configurazione di connettività privata utilizzando una soluzione di reverse proxy come HAProxy.