Migrazione da Oracle ad Amazon RDS for Postgre o Amazon SQL Aurora Postgre con SQL AWS Schema Conversion Tool - AWS Schema Conversion Tool

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Migrazione da Oracle ad Amazon RDS for Postgre o Amazon SQL Aurora Postgre con SQL AWS Schema Conversion Tool

Quando converti un database Oracle RDS per Postgre SQL o Amazon Aurora SQL Postgre, tieni presente quanto segue.

Quando converte gli oggetti del sistema Oracle in PostgreSQL, AWS SCT esegue le conversioni come illustrato nella tabella seguente.

Oggetto di sistema Oracle Descrizione SQLOggetto Postgre convertito
V$ VERSION Visualizza i numeri di versione dei componenti principali della libreria nel database Oracle aws_oracle_ext.v$version
V$ INSTANCE Vista che mostra lo stato dell'istanza corrente. aws_oracle_ext.v$instance

È possibile utilizzarli AWS SCT per convertire i file Oracle SQL *Plus in psql, che è un front-end basato su terminale per Postgre. SQL Per ulteriori informazioni, consulta Conversione di un'applicazione utilizzando SQL AWS SCT.

SQLPrivilegi per Postgre come database di destinazione

Per utilizzare Postgre SQL come destinazione, è necessario il privilegio. AWS SCT CREATE ON DATABASE Assicurati di concedere questo privilegio per ogni database Postgre di destinazione. SQL

Per utilizzare i sinonimi pubblici convertiti, modifica il percorso di ricerca predefinito del database in. "$user", public_synonyms, public

È possibile utilizzare il seguente esempio di codice per creare un utente del database e assegnare i privilegi.

CREATE ROLE user_name LOGIN PASSWORD 'your_password'; GRANT CREATE ON DATABASE db_name TO user_name; ALTER DATABASE db_name SET SEARCH_PATH = "$user", public_synonyms, public;

Nell'esempio precedente, sostituisci user_name con il nome del tuo utente. Quindi, sostituisci db_name con il nome del database di destinazione. Infine, sostituisci your_password con una password sicura.

Per utilizzare Amazon RDS for Postgre SQL come destinazione, è AWS SCT necessario il rds_superuser privilegio.

In PostgreSQL, solo il proprietario dello schema o un superuser può eliminare uno schema. Il proprietario può eliminare uno schema e tutti gli oggetti che questo schema include anche se il proprietario dello schema non possiede alcuni dei suoi oggetti.

Quando utilizzi utenti diversi per convertire e applicare schemi diversi al database di destinazione, puoi ricevere un messaggio di errore quando non AWS SCT puoi eliminare uno schema. Per evitare questo messaggio di errore, utilizza il ruolo superuser.

Impostazioni di conversione da Oracle a Postgre SQL

Per modificare le impostazioni di SQL conversione da Oracle a Postgre, scegli Impostazioni in AWS SCT, quindi scegli Impostazioni di conversione. Dall'elenco superiore, scegli Oracle, quindi scegli Oracle Postgre. SQL AWS SCT visualizza tutte le impostazioni disponibili per la conversione da Oracle a SQL Postgre.

Le impostazioni di SQL conversione da Oracle a Postgre AWS SCT includono le seguenti opzioni:

  • Per limitare il numero di commenti con azioni nel codice convertito.

    Per Aggiungi commenti nel codice convertito per le azioni di gravità selezionata o superiore, scegli la gravità delle azioni. AWS SCT aggiunge commenti nel codice convertito per le azioni con la gravità selezionata o superiore.

    Ad esempio, per ridurre al minimo il numero di commenti nel codice convertito, scegli Solo errori. Per includere commenti per tutti gli elementi d'azione nel codice convertito, scegli Tutti i messaggi.

  • AWS SCT Per consentire la conversione delle viste materializzate Oracle in tabelle o viste materializzate su Postgre. SQL Per la conversione delle viste materializzate as, scegli come convertire le viste materializzate di origine.

  • Lavorare con il codice sorgente Oracle quando include e TO_NUMBER funzioni con parametri non supportati da Postgre. TO_CHAR TO_DATE SQL Per impostazione predefinita, AWS SCT emula l'uso di questi parametri nel codice convertito.

    Quando il codice sorgente Oracle include solo parametri SQL supportati da Postgre, è possibile utilizzare Postgre e funzioni SQL TO_CHAR native. TO_DATE TO_NUMBER In questo caso, il codice convertito funziona più velocemente. Per includere solo questi parametri, selezionate i seguenti valori:

    • La funzione TO_ CHAR () non utilizza stringhe di formattazione specifiche di Oracle

    • La funzione TO_ DATE () non utilizza stringhe di formattazione specifiche di Oracle

    • La funzione TO_ NUMBER () non utilizza stringhe di formattazione specifiche di Oracle

  • Per risolvere i casi in cui il database Oracle di origine memorizza solo valori interi nelle colonne a chiave primaria o esterna del tipo di NUMBER dati, è AWS SCT possibile convertire queste colonne nel tipo di dati. BIGINT Questo approccio migliora le prestazioni del codice convertito. Per adottare questo approccio, seleziona Converti le colonne a chiave NUMBER primaria/esterna in colonneBIGINT. Assicurati che l'origine non includa valori con virgola mobile in queste colonne per evitare la perdita di dati.

  • Per ignorare i trigger e i vincoli disattivati nel codice sorgente. Per farlo, scegli Ignora i trigger e i vincoli disabilitati.

  • Da usare AWS SCT per convertire variabili di stringa chiamate dinamiche. SQL Il codice del database può modificare i valori di queste variabili di stringa. Per assicurarti che converta AWS SCT sempre il valore più recente di questa variabile di stringa, seleziona Converti il SQL codice dinamico creato nelle cosiddette routine.

  • Per risolvere questo problema, la SQL versione 10 e le precedenti di Postgre non supportano le procedure. Se tu o i tuoi utenti non avete familiarità con l'uso delle procedure in PostgreSQL, AWS SCT potete convertire le procedure Oracle in funzioni Postgre. SQL A tale scopo, seleziona Converti procedure in funzioni.

  • Per visualizzare informazioni aggiuntive sulle azioni eseguite. A tale scopo, puoi aggiungere funzioni specifiche al pacchetto di estensione selezionando Add on exception raise block per problemi di migrazione con i livelli di gravità successivi. Quindi scegli i livelli di gravità per generare le eccezioni definite dall'utente.

  • Per lavorare con un database Oracle di origine che potrebbe includere vincoli con i nomi generati automaticamente. Se il codice sorgente utilizza questi nomi, assicuratevi di selezionare Converti i nomi dei vincoli generati dal sistema utilizzando i nomi originali di origine. Se il codice sorgente utilizza questi vincoli ma non ne utilizza i nomi, deselezionate questa opzione per aumentare la velocità di conversione.

  • Per stabilire se il database e le applicazioni funzionano in fusi orari diversi. Per impostazione predefinita, AWS SCT emula i fusi orari nel codice convertito. Tuttavia, non è necessaria questa emulazione quando il database e le applicazioni utilizzano lo stesso fuso orario. In questo caso, la selezione Fuso orario sul lato client corrisponde al fuso orario sul server.

  • Per stabilire se i database di origine e di destinazione funzionano in fusi orari diversi. In caso affermativo, la funzione che emula la funzione Oracle SYSDATE integrata restituisce valori diversi rispetto alla funzione di origine. Per assicurarti che le funzioni di origine e di destinazione restituiscano gli stessi valori, scegli Imposta il fuso orario predefinito per l'SYSDATEemulazione.

  • Per utilizzare le funzioni dell'estensione orafce nel codice convertito. A tale scopo, in Usa l'implementazione di orafce, seleziona le funzioni da usare. Per ulteriori informazioni su orafce, vedere orafce on. GitHub

Conversione di sequenze Oracle

AWS SCT converte le sequenze da Oracle a Postgre. SQL Se utilizzate sequenze per mantenere i vincoli di integrità, assicuratevi che i nuovi valori di una sequenza migrata non si sovrappongano ai valori esistenti.

Per popolare le sequenze convertite con l'ultimo valore del database di origine
  1. Apri il tuo AWS SCT progetto con Oracle come sorgente.

  2. Scegli Impostazioni, quindi scegli Impostazioni di conversione.

  3. Dall'elenco superiore, scegli Oracle, quindi scegli Oracle — SQL Postgre. AWS SCT visualizza tutte le impostazioni disponibili per la conversione da Oracle a SQL Postgre.

  4. Scegli Popola le sequenze convertite con l'ultimo valore generato sul lato sorgente.

  5. Scegliete OK per salvare le impostazioni e chiudere la finestra di dialogo delle impostazioni di conversione.

Conversione di Oracle ROWID

In un database Oracle, la ROWID pseudocolonna contiene l'indirizzo della riga della tabella. La ROWID pseudocolonna è unica per Oracle, quindi AWS SCT converte la ROWID pseudocolonna in una colonna di dati su Postgre. SQL Utilizzando questa conversione, puoi conservare le informazioni. ROWID

Durante la conversione della ROWID pseudocolonna, AWS SCT può creare una colonna di dati con il tipo di dati. bigint Se non esiste una chiave primaria, AWS SCT imposta la ROWID colonna come chiave primaria. Se esiste una chiave primaria, AWS SCT imposta la ROWID colonna con un vincolo univoco.

Se il codice del database sorgente include operazioni con ROWID cui non è possibile eseguire utilizzando un tipo di dati numerico, è AWS SCT possibile creare una colonna di dati con il character varying tipo di dati.

Per creare una colonna di dati per Oracle ROWID per un progetto
  1. Apri il tuo AWS SCT progetto con Oracle come sorgente.

  2. Scegli Impostazioni, quindi scegli Impostazioni di conversione.

  3. Dall'elenco superiore, scegli Oracle, quindi scegli Oracle — SQL Postgre. AWS SCT visualizza tutte le impostazioni disponibili per la conversione da Oracle a SQL Postgre.

  4. Per Genera ID di riga, effettuate una delle seguenti operazioni:

    • Scegliete Genera come identità per creare una colonna di dati numerici.

    • Scegli Genera come tipo di dominio di caratteri per creare una colonna di dati di caratteri.

  5. Scegliete OK per salvare le impostazioni e chiudere la finestra di dialogo delle impostazioni di conversione.

Conversione della dinamica Oracle SQL

Oracle offre due modi per implementare la dinamicaSQL: utilizzando un'EXECUTEIMMEDIATEistruzione o chiamando le procedure nel SQL pacchetto DBMS _. Se il database Oracle di origine include oggetti con dinamicaSQL, utilizzalo AWS SCT per convertire le SQL istruzioni dinamiche Oracle in SQL Postgre.

Per convertire Oracle dynamic SQL in Postgre SQL
  1. Apri il tuo AWS SCT progetto con Oracle come sorgente.

  2. Scegli un oggetto di database che utilizzi la dinamica SQL nella visualizzazione ad albero dei sorgenti di Oracle.

  3. Apri il menu contestuale (fai clic con il pulsante destro del mouse) per l'oggetto, scegli Converti schema e accetta di sostituire gli oggetti se esistono. La schermata seguente mostra la procedura convertita al di sotto della procedura Oracle con dinamicaSQL.

    Conversione dinamica SQL

Conversione delle partizioni Oracle

AWS SCT attualmente supporta i seguenti metodi di partizionamento:

  • Intervallo

  • Elenco

  • Intervallo a più colonne

  • Hash

  • Composito (lista-lista, lista-lista, lista-intervallo, lista-hash, range-hash, hash-hash)