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

Questa pagina elenca gli errori noti e i passaggi consigliati per la risoluzione dei problemi relativi a:

Errori del 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 quelli 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 come possono essere risolti:

Sintomo Cause possibili Cose 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à della sorgente.

Se è incluso un codice di errore Oracle specifico, ad esempio ORA-12170: TNS:Connect timeout occurred, consulta la documentazione 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 ulteriori informazioni, consulta la sezione Configurare il database Oracle di origine.
Messaggio di errore: Supplemental logging ("ALL COLUMN LOGGING") isn't turned on for the tables listed below. Nel database di origine non sono abilitati i dati dei log supplementari. Abilita i dati di log supplementari e imposta la modalità su ALL. Per ulteriori informazioni, consulta la sezione Configurare 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 archivio 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 account utente configurato nel profilo di connessione di origine. Questo account richiede un insieme specifico di autorizzazioni (ad esempio SELECT ANY TABLE) per leggere i dati nel database di origine.

Assicurati che l'account utente di migrazione disponga dei privilegi necessari. Per ulteriori informazioni, consulta la sezione Configurazione del 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 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 per il 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 giusti.
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 mancano le chiavi primarie.

Le aree di lavoro di conversione di Database Migration Service aggiungono automaticamente le chiavi primarie per le tabelle che non le hanno quando converti lo schema.

Se utilizzi le aree di lavoro di conversione legacy, devi creare le chiavi primarie manualmente nella destinazione. Per ulteriori informazioni, vedi Workspace di 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 le tabelle potrebbero essere migrate in modo non sequenziale. Se sono presenti chiavi esterne e una tabella secondaria che utilizza una chiave esterna viene migrata prima della tabella principale, potresti riscontrare 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 ulteriori informazioni, vedi 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 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 per alcune tabelle o una o più tabelle non riescono a completare il dump completo a causa di errori.
  • Controlla gli errori del job di migrazione e correggi quelli che si applicano alle tabelle o rimuovi le tabelle associate dal job.
  • Controlla i log di Database Migration Service per l'attività di dump completo in corso e attendi il completamento.

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.

Cosa provare: assicurati che enable_proxy_protocol sia impostato su false nel file di configurazione Terraform del collegamento del 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 è disattivato per impostazione predefinita.

Timeout della connessione, connessione rifiutata

L'esecuzione del test di connettività non va a buon fine o scade. Ciò è probabilmente dovuto a un routing configurato in modo errato all'interno della configurazione di Private Service Connect. Questo problema può verificarsi per diversi motivi.

Causa possibile: 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.

Cosa provare: assicurati che il criterio dell'organizzazione non limiti le regole firewall interne, ad esempio 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 funziona. Non è presente alcun listener sulla porta fornita, e 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 funziona. Prova a eseguire i seguenti comandi:

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

  • Se il proxy è in esecuzione e in ascolto sulla porta fornita, prova ad aprire una connessione eseguendo le seguenti operazioni:

    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 host. Nella VM, digita ip route nel terminale. Verifica se riesci a individuare una regola di routing che indirizza le connessioni all'indirizzo IP privato dell'istanza Cloud SQL utilizzando nic secondario (nic1, l'indirizzo IP DB_SUBNETWORK_GATEWAY).

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

Cosa provare: 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 del servizio (se è in attesa).

  • Aggiungi il progetto richiedente ai progetti consentiti nel collegamento del 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.

Risolvere i problemi relativi agli errori di Oracle SCAN

Questa sezione descrive i potenziali problemi che potresti riscontrare durante la migrazione dalle 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 del test di connettività non va a buon fine o scade.

Possibile causa:potresti tentare 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 provare: 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 proxy inverso come HAProxy.