

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 PostgreSQL o Amazon Aurora PostgreSQL con AWS Schema Conversion Tool
<a name="CHAP_Source.Oracle.ToPostgreSQL"></a>

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

**Topics**
+ [Privilegi per PostgreSQL come database di destinazione](#CHAP_Source.Oracle.ToPostgreSQL.ConfigureTarget)
+ [Impostazioni di conversione da Oracle a PostgreSQL](#CHAP_Source.Oracle.ToPostgreSQL.ConversionSettings)
+ [Conversione di sequenze Oracle](#CHAP_Source.Oracle.ToPostgreSQL.ConvertSequences)
+ [Conversione di ROWID Oracle](#CHAP_Source.Oracle.ToPostgreSQL.ConvertRowID)
+ [Conversione di Oracle Dynamic SQL](#CHAP_Source.Oracle.ToPostgreSQL.DynamicSQL)
+ [Conversione di partizioni Oracle](#CHAP_Source.Oracle.ToPostgreSQL.PG10Partitioning)

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


| Oggetto di sistema Oracle | Description | Oggetto PostgreSQL convertito | 
| --- | --- | --- | 
| V\$1VERSION  | Visualizza i numeri di versione dei componenti principali della libreria nel database Oracle | aws\$1oracle\$1ext.v\$1version | 
| V\$1INSTANCE | Vista che mostra lo stato dell'istanza corrente. | aws\$1oracle\$1ext.v\$1instance | 

È possibile utilizzare AWS SCT per convertire i file Oracle SQL\$1Plus in psql, che è un front-end basato su terminale per PostgreSQL. Per ulteriori informazioni, consulta [Conversione del codice SQL dell'applicazione utilizzando AWS SCT](CHAP_Converting.App.md).

## Privilegi per PostgreSQL come database di destinazione
<a name="CHAP_Source.Oracle.ToPostgreSQL.ConfigureTarget"></a>

Per utilizzare PostgreSQL come destinazione, è necessario il privilegio. AWS SCT `CREATE ON DATABASE` 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 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, sostituiscilo *user\$1name* con il nome dell'utente. Quindi, *db\$1name* sostituiscilo con il nome del database di destinazione. Infine, *your\$1password* sostituiscilo con una password sicura.

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

In PostgreSQL, solo il proprietario di uno schema o un `superuser` può rilasciare uno schema. Il proprietario può eliminare uno schema e tutti gli oggetti che lo 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 PostgreSQL
<a name="CHAP_Source.Oracle.ToPostgreSQL.ConversionSettings"></a>

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

Le impostazioni di conversione da Oracle a PostgreSQL includono le seguenti opzioni AWS SCT :
+ 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 PostgreSQL. Per la **conversione delle viste materializzate as, scegli come convertire le viste** materializzate di origine.
+ Per lavorare con il codice sorgente Oracle quando include e `TO_NUMBER` funzioni con parametri non supportati da PostgreSQL. `TO_CHAR` `TO_DATE` Per impostazione predefinita, AWS SCT emula l'utilizzo di questi parametri nel codice convertito.

  Se il codice sorgente Oracle include solo parametri supportati da PostgreSQL, è possibile utilizzare `TO_CHAR` PostgreSQL e funzioni native. `TO_DATE` `TO_NUMBER` In questo caso, il codice convertito funziona più velocemente. Per includere solo questi parametri, seleziona i seguenti valori:
  + **La funzione TO\$1CHAR () non utilizza stringhe di formattazione specifiche di Oracle**
  + **La funzione TO\$1DATE () non utilizza stringhe di formattazione specifiche di Oracle**
  + **La funzione TO\$1NUMBER () 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 NUMBER primarie/chiave esterna in colonne BIGINT**. Assicurati che l'origine non includa valori con virgola mobile in queste colonne per evitare la perdita di dati.
+ Per saltare i trigger e i vincoli disattivati nel codice sorgente. Per farlo, 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 cosiddette routine**.
+ Per risolvere questo problema, PostgreSQL versione 10 e precedenti 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 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 **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'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 usare. [Per ulteriori informazioni su orafce, vedere orafce on.](https://github.com/orafce/orafce) GitHub

## Conversione di sequenze Oracle
<a name="CHAP_Source.Oracle.ToPostgreSQL.ConvertSequences"></a>

AWS SCT converte le sequenze da Oracle a PostgreSQL. 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.

1. Scegli **Impostazioni**, quindi scegli **Impostazioni di conversione**. 

1. Dall'elenco superiore, scegli **Oracle**, quindi scegli **Oracle — PostgreSQL**. AWS SCT visualizza tutte le impostazioni disponibili per la conversione da Oracle a PostgreSQL. 

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

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

## Conversione di ROWID Oracle
<a name="CHAP_Source.Oracle.ToPostgreSQL.ConvertRowID"></a>

 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, è possibile conservare le informazioni ROWID. 

Durante la conversione della pseudocolonna ROWID, AWS SCT può creare una colonna di dati con il tipo di dati. `bigint` Se non esiste una 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 sorgente include operazioni con ROWID, che non possono essere eseguite utilizzando un tipo di dati numerico, AWS SCT puoi creare una colonna di dati con il tipo di dati. `character varying`

**Per creare una colonna di dati per ROWID Oracle per un progetto**

1. Apri il tuo AWS SCT progetto con Oracle come sorgente.

1. Scegli **Impostazioni**, quindi scegli **Impostazioni di conversione**. 

1. Dall'elenco superiore, scegli **Oracle**, quindi scegli **Oracle — PostgreSQL**. AWS SCT visualizza tutte le impostazioni disponibili per la conversione da Oracle a PostgreSQL. 

1. Per **Genera ID di riga**, esegui 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.

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

## Conversione di Oracle Dynamic SQL
<a name="CHAP_Source.Oracle.ToPostgreSQL.DynamicSQL"></a>

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

**Per convertire Oracle dynamic SQL in PostgreSQL**

1. Apri il tuo AWS SCT progetto usando Oracle come sorgente.

1. Scegli un oggetto di database che utilizzi SQL dinamico nella visualizzazione ad albero dei sorgenti di Oracle.

1. 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 SQL dinamico.  
![\[Conversione Dynamic SQL\]](http://docs.aws.amazon.com/it_it/SchemaConversionTool/latest/userguide/images/dynamicsql1.png)

## Conversione di partizioni Oracle
<a name="CHAP_Source.Oracle.ToPostgreSQL.PG10Partitioning"></a>

AWS SCT attualmente supporta i seguenti metodi di partizionamento: 
+ Intervallo
+ List
+ Intervallo a più colonne
+ Hash
+ Composito (lista-lista, lista-lista, lista-intervallo, lista-hash, range-hash, hash-hash)