Conversione da Oracle ad Amazon RDS per PostgreSQL o Amazon Aurora PostgreSQL - 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à.

Conversione da Oracle ad Amazon RDS per PostgreSQL o Amazon Aurora PostgreSQL

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

Durante la conversione di oggetti di sistema Oracle in PostgreSQL, AWS SCT esegue le conversioni come illustrato nella tabella seguente.

Oggetto di sistema Oracle Descrizione Oggetto PostgreSQL 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

Puoi usarlo AWS SCT per convertire i file Oracle SQL*Plus in psql, che è un front-end per PostgreSQL basato su terminale. Per ulteriori informazioni, consulta Conversione del codice SQL dell'applicazione utilizzandoAWS SCT.

Privilegi per PostgreSQL come database di destinazione

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

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 concedere 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 tuo database di destinazione. Infine, sostituisci your_password con una password sicura.

Per utilizzare Amazon RDS per PostgreSQL come destinazione, è AWS SCT necessario il privilegio. rds_superuser

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

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

Impostazioni di conversione da Oracle a PostgreSQL

Per modificare le impostazioni di conversione da Oracle a PostgreSQL, scegli Impostazioni inAWS SCT, quindi scegli Impostazioni di conversione. Dall'elenco superiore, scegli Oracle, quindi scegli Oracle — PostgreSQL. AWS SCTvisualizza tutte le impostazioni disponibili per la conversione da Oracle a PostgreSQL.

Le impostazioni di conversione da Oracle a PostgreSQL AWS SCT includono opzioni per quanto segue:

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

    Per Aggiungi commenti nel codice convertito per le azioni con gravità selezionata e superiore, scegli la gravità delle azioni. AWS SCTaggiunge commenti nel codice convertito per le azioni con la gravità selezionata e superiore.

    Ad esempio, per ridurre al minimo il numero di commenti nel codice convertito, scegli Solo errori. Per includere commenti per tutte le azioni nel codice convertito, scegli Tutti i messaggi.

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

  • Per lavorare con il codice Oracle sorgente quando include le TO_NUMBER funzioni TO_CHARTO_DATE, e con parametri non supportati da PostgreSQL. Per impostazione predefinita, AWS SCT emula l'utilizzo di questi parametri nel codice convertito.

    Quando il codice Oracle sorgente include solo parametri supportati da PostgreSQL, puoi utilizzare PostgreSQL TO_CHAR e funzioni 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 chiave primarie o esterne del tipo di NUMBER dati, è AWS SCT possibile convertire queste colonne nel tipo di BIGINT dati. Questo approccio migliora le prestazioni del codice convertito. Per adottare questo approccio, seleziona Converti le colonne di chiave primaria/esterna NUMBER in colonne BIGINT. Assicurati che la tua fonte non includa valori a virgola mobile in queste colonne per evitare la perdita di dati.

  • Per saltare i trigger e i vincoli disattivati nel codice sorgente. A tale scopo, scegli Ignora i trigger e i vincoli disabilitati.

  • Da utilizzare AWS SCT per convertire variabili di stringa chiamate SQL dinamico. 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 codice SQL dinamico creato nelle routine chiamate.

  • Per risolvere il problema, PostgreSQL versione 10 e precedenti non supporta 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 PostgreSQL. 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 Aggiungi un blocco di segnalazione delle eccezioni per problemi di migrazione con i livelli di gravità successivi. Quindi scegli i livelli di gravità per aumentare 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 usa i nomi, deseleziona questa opzione per aumentare la velocità di conversione.

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

  • Per stabilire se i database di origine e di destinazione vengono eseguiti in fusi orari diversi. In tal caso, 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 destinazione restituiscano gli stessi valori, scegli Imposta il fuso orario predefinito per l'emulazione SYSDATE.

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

Conversione di sequenze Oracle

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

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

  2. Scegli Impostazioni, quindi scegli Impostazioni di conversione.

  3. Dall'elenco superiore, scegli Oracle, quindi scegli Oracle — PostgreSQL. AWS SCTvisualizza tutte le impostazioni disponibili per la conversione da Oracle a PostgreSQL.

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

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

Conversione di ROWID Oracle

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

Quando converti la pseudocolonna ROWID, AWS SCT puoi creare una colonna di dati con il tipo di dati. bigint Se non esiste alcuna chiave primaria, AWS SCT imposta la colonna ROWID come chiave primaria. Se esiste una chiave primaria, AWS SCT imposta la colonna ROWID con un vincolo univoco.

Se il codice del database di origine include operazioni con ROWID, che non puoi eseguire utilizzando un tipo di dati numerico, AWS SCT puoi creare una colonna di dati con il character varying tipo di dati.

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

  2. Scegli Impostazioni, quindi scegli Impostazioni di conversione.

  3. Dall'elenco superiore, scegli Oracle, quindi scegli Oracle — PostgreSQL. AWS SCTvisualizza tutte le impostazioni disponibili per la conversione da Oracle a PostgreSQL.

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

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

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

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

Conversione di Oracle Dynamic SQL

Oracle fornisce due modi per implementare l'SQL dinamico: utilizzando un'istruzione EXECUTE IMMEDIATE o richiamando le procedure nel pacchetto DBMS_SQL. Se il database Oracle di origine include oggetti con SQL dinamico, utilizzalo AWS SCT per convertire le istruzioni SQL dinamiche di Oracle in PostgreSQL.

Per convertire Oracle Dynamic SQL in PostgreSQL
  1. Apri il tuo AWS SCT progetto con Oracle come fonte.

  2. Scegliete un oggetto di database che utilizza SQL dinamico nella vista ad albero dei sorgenti di Oracle.

  3. Apri il menu contestuale (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 sotto la procedura Oracle con SQL dinamico.

    Conversione Dynamic SQL

Conversione di partizioni Oracle

AWS SCTattualmente supporta i seguenti metodi di partizionamento:

  • Intervallo

  • Elenco

  • Intervallo a più colonne

  • Hash

  • Composito (list-list, range-list, list-range, list-hash, range-hash, hash-hash)