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 My SQL o Amazon Aurora SQL My con AWS Schema Conversion Tool
Per emulare le funzioni del database Oracle nel SQL codice My convertito, usa il pacchetto di estensione Oracle to My in. SQL AWS SCT Per ulteriori informazioni sui pacchetti di estensione, consulta Utilizzo dei pacchetti di estensione con AWS Schema Conversion Tool.
Argomenti
Privilegi per My SQL come database di destinazione
I privilegi richiesti per My SQL as a target sono i seguenti:
CREATESU* . *
ALTERSU * . *
DROPSU * . *
INDEXSU * . *
REFERENCESSU * . *
SELECTSU * . *
CREATEVIEWSU * . *
SHOWVIEWSU * . *
TRIGGERSU * . *
CREATEROUTINESU * . *
ALTERROUTINESU * . *
EXECUTESU * . *
CREATETEMPORARYTABLESSU * . *
AWS_LAMBDA_ACCESS
INSERT, UPDATE SU AWS _ ORACLE _EXT. *
INSERTUPDATE, DELETE SU AWS _ ORACLE _ EXT _DATA. *
Se utilizzi una versione 5.7 o precedente di My SQL database come destinazione, concedi l'INVOKELAMBDAautorizzazione*.* anziché AWS _ _. LAMBDA ACCESS Per la versione 8.0 e successive di My SQL databases, concedi l'AWSautorizzazione _ _. LAMBDA ACCESS
È 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 CREATE TEMPORARY TABLES ON *.* TO 'user_name
'; GRANT AWS_LAMBDA_ACCESS TO 'user_name
'; GRANT INSERT, UPDATE ON AWS_ORACLE_EXT.* TO 'user_name
'; GRANT INSERT, UPDATE, DELETE ON AWS_ORACLE_EXT_DATA.* TO 'user_name
';
Nell'esempio precedente, sostituisci user_name
con il nome del tuo utente. Quindi, sostituisci your_password
con una password sicura.
Se utilizzi una versione 5.7 o precedente di My SQL database come destinazione, usa GRANT INVOKE LAMBDA ON *.* TO '
invece diuser_name
'GRANT AWS_LAMBDA_ACCESS TO '
.user_name
'
Per utilizzare Amazon RDS for My SQL o Aurora My SQL come destinazione, imposta il lower_case_table_names
parametro su. 1
Questo valore indica che il SQL server My 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.
Impostazioni di conversione da Oracle a My SQL
Per modificare le impostazioni di SQL conversione da Oracle a Le mie impostazioni AWS SCT, scegli Impostazioni in, quindi scegli Impostazioni di conversione. Dall'elenco superiore, scegli Oracle, quindi scegli Oracle — My SQL. AWS SCT visualizza tutte le impostazioni disponibili per la SQL conversione da Oracle a My.
Le impostazioni di SQL conversione da Oracle to My 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.
-
Per risolvere il problema, il database Oracle di origine può utilizzare la
ROWID
pseudocolonna, ma My SQL non supporta funzionalità simili. AWS SCT può emulare laROWID
pseudocolonna nel codice convertito. Per fare ciò, scegli Genera come identità per Genera ID di riga? .Se il codice sorgente Oracle non utilizza la
ROWID
pseudocolonna, scegli Non generare per generare l'ID di riga? In questo caso, il codice convertito funziona più velocemente. -
Per utilizzare il codice sorgente Oracle quando include
TO_CHAR
TO_DATE
, eTO_NUMBER
funzioni con parametri SQL non supportati da My. Per impostazione predefinita, AWS SCT emula l'utilizzo di questi parametri nel codice convertito.Quando il codice sorgente Oracle include solo parametri SQL supportati da Postgre, è possibile utilizzare le funzioni native My SQL
TO_CHAR
e.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_ 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 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, 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.
Considerazioni sulla migrazione
Quando converti Oracle in RDS for My SQL o Aurora MySQL, per modificare l'ordine di esecuzione delle istruzioni, puoi utilizzare un'GOTO
istruzione e un'etichetta. Tutte SQL le istruzioni PL/ che seguono un'GOTO
istruzione vengono ignorate e l'elaborazione continua dall'etichetta. È possibile utilizzare GOTO
istruzioni ed etichette ovunque all'interno di una procedura, di un batch o di un blocco di istruzioni. È inoltre possibile eseguire GOTO le istruzioni successive.
Il mio SQL non usa GOTO
affermazioni. Quando AWS SCT converte il codice che contiene un'GOTO
istruzione, converte l'istruzione per utilizzare un'istruzione BEGIN…END
orLOOP…END LOOP
.
È possibile trovare esempi di come AWS SCT converte GOTO
le istruzioni nella tabella seguente.
Istruzione Oracle | La mia dichiarazione SQL |
---|---|
|
|
|
|
|
|
Conversione dell'WITHistruzione in Oracle in RDS for My SQL o Amazon Aurora My SQL
Si utilizza la WITH clausola (subquery_factoring) in Oracle per assegnare un nome (query_name) a un blocco di subquery. È quindi possibile fare riferimento al blocco di sottoquery in più posizioni nella query specificando il query_name. Se un blocco di subquery non contiene collegamenti o parametri (locali, procedure, funzioni, pacchetti), converte la clausola in una vista o in una tabella temporanea. AWS SCT
Il vantaggio di convertire la clausola in una tabella temporanea è che i riferimenti ripetuti alla sottoquery potrebbero essere più efficienti. La maggiore efficienza è dovuta al fatto che i dati vengono facilmente recuperati dalla tabella temporanea piuttosto che essere richiesti da ogni riferimento. È possibile emularlo utilizzando viste aggiuntive o una tabella temporanea. Il nome della visualizzazione utilizza il formato <procedure_name>$<subselect_alias>
.
È possibile trovare esempi nella tabella seguente.
Istruzione Oracle | La mia SQL dichiarazione |
---|---|
|
|
|
|
|
|