

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à.

# ConnConnecting ai database IBM DB2 per Linux, UNIX e Windows con AWS Schema Conversion Tool
<a name="CHAP_Source.DB2LUW"></a>

È possibile utilizzare AWS SCT per convertire schemi, oggetti di codice nel linguaggio SQL e codice dell'applicazione da IBM Db2 per Linux, Unix e Windows (Db2 LUW) ai seguenti obiettivi.
+ Amazon RDS per MySQL
+ Amazon Aurora edizione compatibile con MySQL
+ Amazon RDS per PostgreSQL
+ Amazon Aurora PostgreSQL-Compatible Edition
+ Amazon RDS per MariaDB

AWS SCT supporta come sorgente le versioni Db2 LUW 9.1, 9.5, 9.7, 10.1, 10.5, 11.1 e 11.5.

## Privilegi per Db2 LUW come sorgente
<a name="CHAP_Source.DB2LUW.Permissions"></a>

I privilegi necessari per connettersi a un database Db2 LUW, verificare i privilegi disponibili e leggere i metadati dello schema per una sorgente sono i seguenti: 
+ Privilegi necessari per stabilire una connessione:
  + CONNETTERSI AL DATABASE
+ Privilegio necessario per l'esecuzione di istruzioni SQL:
  + ESEGUI SUL PACCHETTO NULLID. SYSSH200
+ Privilegi necessari per ottenere informazioni a livello di istanza:
  + ESEGUIRE SULLA FUNZIONE SYSPROC.ENV\$1GET\$1INST\$1INFO
  + SELEZIONARE SU SYSIBMADM.ENV\$1INST\$1INFO
  + SELEZIONARE SYSIBMADM.ENV\$1SYS\$1INFO
+ Privilegi necessari a verificare i privilegi concessi tramite ruoli, gruppi e autorità:
  + ESEGUI SULLA FUNZIONE SYSPROC.AUTH\$1LIST\$1AUTHORITIES\$1FOR\$1AUTHID
  + ESEGUI SULLA FUNZIONE SYSPROC.AUTH\$1LIST\$1GROUPS\$1FOR\$1AUTHID
  + ESEGUI SULLA FUNZIONE SYSPROC.AUTH\$1LIST\$1ROLES\$1FOR\$1AUTHID
  + SELEZIONA SU SYSIBMADM.PRIVILEGES
+ Privilegi necessari per cataloghi di sistema e tabelle:
  + SELEZIONA SU SYSCAT.ATTRIBUTES
  + SELEZIONA SU SYSCAT.CHECKS
  + SELEZIONA SU SYSCAT.COLIDENTATTRIBUTES
  + SELEZIONA SU SYSCAT.COLUMNS
  + SELEZIONA SU SYSCAT.DATAPARTITIONEXPRESSION
  + SELEZIONA SYSCAT.DATAPARTITIONS
  + SELEZIONA SYSCAT.DATATYPEDEP
  + SELEZIONA SYSCAT.DATATYPES
  + SELEZIONA SU SYSCAT.HIERARCHIES
  + SELEZIONA SU SYSCAT.INDEXCOLUSE
  + SELEZIONA SU SYSCAT.INDEXES
  + SELEZIONA SULLE PARTIZIONI SYSCAT.INDEX
  + SELEZIONA SU SYSCAT.KEYCOLUSE
  + SELEZIONA SU SYSCAT.MODULEOBJECTS
  + SELEZIONA SU SYSCAT.MODULES
  + SELEZIONA SU SYSCAT.NICKNAME
  + SELEZIONA SU SYSCAT.PERIODS
  + SELEZIONA SU SYSCAT.REFERENCES
  + SELEZIONA SU SYSCAT.ROUTINEPARMS
  + SELEZIONA SU SYSCAT.ROUTINES
  + SELEZIONA SU SYSCAT.ROWFIELDS
  + SELEZIONA SU SYSCAT.SCHEMATA
  + SELEZIONA SU SYSCAT.SEQUENCES
  + SELEZIONA SU SYSCAT.TABCONST
  + SELEZIONA SU SYSCAT.TABLES
  + SELEZIONA SU SYSCAT.TRIGGERS
  + SELEZIONA SU SYSCAT.VARIABLEDEP
  + SELEZIONA SU SYSCAT.VARIABLES
  + SELEZIONA SU SYSCAT.VIEWS
  + SELEZIONA SU SYSIBM. SYSDUMMY1
+  Per eseguire le istruzioni SQL, l'account utente necessita di un privilegio per l'utilizzo di almeno uno dei carichi di lavoro abilitati nel database. Se nessuno dei carichi di lavoro è assegnato all'utente, accertati che il carico di lavoro utente predefinito sia accessibile per l'utente:
  + UTILIZZO SUL CARICO DI LAVORO SYSDEFAULTUSERWORKLOAD

Per eseguire le query, devi creare uno spazio tabelle di sistema temporaneo con dimensioni di pagina 8K, 16K e 32K, se non esiste. Per creare spazi tabelle temporanei, esegui gli script seguenti:

```
CREATE BUFFERPOOL BP8K
  IMMEDIATE
  ALL DBPARTITIONNUMS
  SIZE AUTOMATIC
  NUMBLOCKPAGES 0
  PAGESIZE 8K;
  
CREATE SYSTEM TEMPORARY TABLESPACE TS_SYS_TEMP_8K 
  PAGESIZE 8192 
  BUFFERPOOL BP8K;
  
CREATE BUFFERPOOL BP16K
  IMMEDIATE
  ALL DBPARTITIONNUMS
  SIZE AUTOMATIC
  NUMBLOCKPAGES 0
  PAGESIZE 16K;
  
CREATE SYSTEM TEMPORARY TABLESPACE TS_SYS_TEMP_BP16K 
  PAGESIZE 16384 
  BUFFERPOOL BP16K;  
  
CREATE BUFFERPOOL BP32K
  IMMEDIATE
  ALL DBPARTITIONNUMS
  SIZE AUTOMATIC
  NUMBLOCKPAGES 0
  PAGESIZE 32K;
  
CREATE SYSTEM TEMPORARY TABLESPACE TS_SYS_TEMP_BP32K 
  PAGESIZE 32768 
  BUFFERPOOL BP32K;
```

## Connessione a Db2 LUW come sorgente
<a name="CHAP_Source.DB2LUW.Connecting"></a>

Utilizza la seguente procedura per connetterti al database di origine Db2 LUW con AWS Schema Conversion Tool. 

**Per connettersi a un database di origine Db2 LUW**

1. Nella AWS Schema Conversion Tool, scegli **Aggiungi** fonte. 

1. **Scegli **Db2 LUW**, quindi scegli Avanti.** 

   Viene visualizzata la finestra **di dialogo Aggiungi sorgente**.

1. Per **Nome della connessione**, inserisci un nome per il tuo database. AWS SCT visualizza questo nome nell'albero nel pannello di sinistra. 

1. Usa le credenziali del database da Gestione dei segreti AWS o inseriscile manualmente:
   + Per utilizzare le credenziali del database di Secrets Manager, utilizzare le seguenti istruzioni:

     1. Per **AWS Segreto**, scegli il nome del segreto.

     1. Scegli **Popola** per inserire automaticamente tutti i valori nella finestra di dialogo di connessione al database di Secrets Manager.

     Per informazioni sull'utilizzo delle credenziali del database da Secrets Manager, vedere[Configurazione in Gestione dei segreti AWS AWS Schema Conversion Tool](CHAP_UserInterface.SecretsManager.md).
   + Per inserire manualmente le informazioni sulla connessione al database di origine IBM Db2 LUW, utilizzare le seguenti istruzioni:  
****    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/it_it/SchemaConversionTool/latest/userguide/CHAP_Source.DB2LUW.html)

1. Scegli **Test Connection** per verificare che sia AWS SCT possibile connettersi al database di origine. 

1. Scegli **Connect** per connetterti al tuo database di origine.

# Migrazione da IBM DB2 per Linux, UNIX e Windows ad Amazon Relational Database Service per PostgreSQL o Amazon Aurora PostgreSQL Compatible Edition
<a name="CHAP_Source.DB2LUW.ToPostgreSQL"></a>

Quando si migra IBM Db2 LUW a PostgreSQL, è possibile convertire varie istruzioni trigger utilizzate con Db2 AWS SCT LUW. Queste istruzioni trigger includono quanto segue:
+ **Eventi trigger: gli eventi trigger** INSERT, DELETE e UPDATE specificano che l'azione attivata viene eseguita ogni volta che l'evento viene applicato alla tabella dell'oggetto o alla vista dell'oggetto. È possibile specificare qualsiasi combinazione degli eventi INSERT, DELETE e UPDATE, ma è possibile specificare ogni evento solo una volta. AWS SCT supporta eventi trigger singoli e multipli. Per gli eventi, PostgreSQL ha praticamente la stessa funzionalità. 
+ **Event OF COLUMN** — È possibile specificare il nome di una colonna da una tabella di base. Il trigger viene attivato solo tramite l'aggiornamento di una colonna identificata nell'elenco dei nomi delle colonne. PostgreSQL ha la stessa funzionalità.
+ **Trigger dell'istruzione**: specificano che l'azione attivata viene applicata una sola volta per l'intera istruzione. Non è possibile specificare questo tipo di granularità per attivare un trigger BEFORE o un trigger INSTEAD OF. Se specificato, viene attivato un trigger UPDATE o DELETE, anche se non sono coinvolte righe. PostgreSQL, inoltre, dispone di questa funzionalità e la dichiarazione del trigger per i trigger dell'istruzione è identica per PostgreSQL e Db2 LUW.
+ **Clausole di riferimento: specificano i** nomi di correlazione per le variabili di transizione e i nomi delle tabelle per le tabelle di transizione. I nomi di correlazione identificano una determinata riga nella serie di righe interessate dall'attivazione SQL. I nomi della tabella identificano il set completo di righe interessate. Ogni riga influenzata da un'operazione di attivazione SQL è disponibile per l'azione attivata qualificando le colonne con nomi di correlazione specifici. PostgreSQL non supporta questa funzionalità e usa solo un nome di correlazione NEW oppure OLD.
+ **INVECE DEI trigger**: li supporta. AWS SCT 

## Conversione di tabelle partizionate Db2 LUW in tabelle partizionate PostgreSQL versione 10
<a name="CHAP_Source.DB2LUW.ToPostgreSQL.PartitionedTables"></a>

AWS SCT può convertire le tabelle Db2 LUW in tabelle partizionate in PostgreSQL 10. Durante la conversione di una tabella partizionata Db2 LUW in PostgreSQL esistono diverse restrizioni:
+ Puoi creare una tabella partizionata con una colonna nullable in Db2 LUW e specificare una partizione per archiviare valori NULL. Tuttavia, PostgreSQL non supporta valori NULL per il partizionamento RANGE.
+ Db2 LUW può utilizzare una clausola INCLUSIVE o EXCLUSIVE per impostare valori di delimitazione dell'intervallo. PostgreSQL supporta solo la clausola INCLUSIVE per una delimitazione di inizio e una clausola EXCLUSIVE per una delimitazione di fine. Il nome di partizione convertito è nel formato <nome\$1tabella\$1originale>\$1<nome\$1partizione\$1originale>.
+ È possibile creare chiavi primarie o univoche per tabelle partizionate in Db2 LUW. PostgreSQL richiede la creazione di una chiave primaria o univoca per ogni partizione direttamente. Le limitazioni della chiave primaria o univoca devono essere rimosse dalla tabella padre. Il nome chiave convertito è nel formato <nome\$1chiave\$1originale>\$1<nome\$1partizione\$1originale>.
+ Puoi creare un vincolo di chiave esterna da e verso una tabella partizionata in Db2 LUW. Tuttavia, PostgreSQL non supporta i riferimenti delle chiavi esterne nelle tabelle partizionate. Inoltre, PostgreSQL non supporta i riferimenti delle chiavi esterne da una tabella partizionata a un'altra tabella.
+ Puoi creare un indice su una tabella partizionata in Db2 LUW. Tuttavia, PostgreSQL richiede la creazione di un indice per ogni partizione direttamente. Gli indici devono essere rimossi dalla tabella padre. Il nome indice convertito è nel formato <nome\$1indice\$1originale>\$1<nome\$1partizione\$1originale>.
+ È necessario definire trigger di riga su singole partizioni, non sulla tabella partizionata. I trigger devono essere rimossi dalla tabella padre. Il nome trigger convertito è nel formato <nome\$1trigger\$1originale>\$1<nome\$1partizione\$1originale>.

## Privilegi per PostgreSQL come destinazione
<a name="CHAP_Source.DB2LUW.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.

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 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 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`. 

# Migrazione da IBM DB2 per Linux, UNIX e Windows ad Amazon RDS for MySQL o Amazon Aurora MySQL
<a name="CHAP_Source.DB2LUW.ToMySQL"></a>

Quando converti un database IBM Db2 LUW in RDS for MySQL o Amazon Aurora MySQL, tieni presente quanto segue.

## Privilegi per MySQL come destinazione
<a name="CHAP_Source.DB2LUW.ToMySQL.ConfigureTarget"></a>

I privilegi richiesti per MySQL come destinazione sono i seguenti:
+ CREA SU\$1 . \$1
+ PIÙ TARDI \$1 . \$1
+ SCENDI SU \$1 . \$1
+ INDICE SU\$1 . \$1
+ RIFERIMENTI SU\$1 . \$1
+ SELECT ON \$1.\$1
+ CREA UNA VISTA SU\$1 . \$1
+ SHOW VIEW ON \$1.\$1
+ GRILLETTO SU \$1 . \$1
+ CREA ROUTINE SU\$1 . \$1
+ MODIFICA LA ROUTINE SU \$1 . \$1
+ ESEGUI SU\$1 . \$1
+ SELECT ON mysql.proc
+ INSERISCI, AGGIORNA SU AWS\$1DB 2\$1EXT. \$1
+ INSERISCI, AGGIORNA, ELIMINA SU AWS\$1DB 2\$1EXT\$1DATA. \$1
+ CREARE TABELLE TEMPORANEE SU AWS\$1DB 2\$1EXT\$1DATA. \$1

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

```
CREATE USER 'user_name' IDENTIFIED BY 'your_password';
GRANT CREATE ON *.* TO 'user_name';
GRANT ALTER ON *.* TO 'user_name';
GRANT DROP ON *.* TO 'user_name';
GRANT INDEX ON *.* TO 'user_name';
GRANT REFERENCES ON *.* TO 'user_name';
GRANT SELECT ON *.* TO 'user_name';
GRANT CREATE VIEW ON *.* TO 'user_name';
GRANT SHOW VIEW ON *.* TO 'user_name';
GRANT TRIGGER ON *.* TO 'user_name';
GRANT CREATE ROUTINE ON *.* TO 'user_name';
GRANT ALTER ROUTINE ON *.* TO 'user_name';
GRANT EXECUTE ON *.* TO 'user_name';
GRANT SELECT ON mysql.proc TO 'user_name';
GRANT INSERT, UPDATE ON AWS_DB2_EXT.* TO 'user_name';
GRANT INSERT, UPDATE, DELETE ON AWS_DB2_EXT_DATA.* TO 'user_name';
GRANT CREATE TEMPORARY TABLES ON AWS_DB2_EXT_DATA.* TO 'user_name';
```

Nell'esempio precedente, sostituiscilo *user\$1name* con il nome del tuo utente. Quindi, *your\$1password* sostituiscilo con una password sicura.

Per utilizzare Amazon RDS per MySQL o Aurora MySQL come destinazione, imposta il parametro `lower_case_table_names` su `1`. Questo valore indica che il server MySQL gestisce gli identificatori di nomi di oggetti come tabelle, indici, trigger e database senza distinzione tra maiuscole e minuscole. Se hai attivato la registrazione binaria nell'istanza di destinazione, imposta il parametro `log_bin_trust_function_creators` su `1`. In questo caso, non è necessario utilizzare le caratteristiche `DETERMINISTIC`, `READS SQL DATA` o `NO SQL` per creare funzioni archiviate. Per configurare questi parametri, crea un nuovo gruppo di parametri di database o modifica un gruppo di parametri di database esistente.