Eseguire la migrazione delle applicazioni dai database PostgreSQL ad Autonomous AI Database
È possibile eseguire la migrazione delle istruzioni SQL da PostgreSQL a Oracle SQL ed eseguire le istruzioni su Autonomous AI Database.
- Traduci le istruzioni PostgreSQL in Oracle SQL
 Puoi tradurre le istruzioni SQL scritte in PostgreSQL in Oracle SQL ed eseguire le istruzioni tradotte in Autonomous AI Database.
- Esegui le istruzioni PostgreSQL in Autonomous AI Database
 Puoi tradurre ed eseguire in modo interattivo le istruzioni PostgreSQL nell'Autonomous AI Database.
- Eseguire la migrazione dei file PostgreSQL in Oracle SQL
 È possibile eseguire la migrazione di un file contenente le istruzioni PostgreSQL in un file contenente le istruzioni Oracle SQL.
- Limitazioni per la migrazione e la traduzione delle istruzioni PostgreSQL in Oracle SQL
 Questa sezione riepiloga le limitazioni per la migrazione delle istruzioni SQL da PostgreSQL a Oracle SQL.
Tradurre le istruzioni PostgreSQL in Oracle SQL
È possibile tradurre le istruzioni SQL scritte in PostgreSQL in Oracle SQL ed eseguire le istruzioni tradotte in Autonomous AI Database.
Utilizzare DBMS_CLOUD_MIGRATION.MIGRATE_SQL per tradurre l'istruzione PostgreSQL in Oracle SQL. Esistono varianti di procedura e funzione di DBMS_CLOUD_MIGRATION.MIGRATE_SQL.
                     
Eseguire la migrazione dell'istruzione PostgreSQL in Oracle SQL con la procedura MIGRATE_SQL
L'esempio seguente accetta l'istruzione SQL scritta in PostgreSQL come input, converte l'istruzione in Oracle SQL, assegna l'istruzione SQL tradotta a output_sql_result e stampa il risultato:
                     
SET SERVEROUTPUT ON
   declare output_sql_result CLOB;
BEGIN
  DBMS_CLOUD_MIGRATION.MIGRATE_SQL(      
    original_sql => 'SELECT e.employee_id, e.last_name, e.salary FROM employees AS e;',
    output_sql   => output_sql_result,
    source_db    => 'POSTGRES');
    DBMS_OUTPUT.PUT_LINE (output_sql_result);
END;        
/
Output
–-------------------------------------------------------------
SELECT e.employee_id, e.last_name, e.salary FROM employees e;Il parametro original_sql specifica l'istruzione PostgreSQL.
                     
Il parametro output_sql memorizza l'istruzione SQL tradotta.
                     
Il parametro source_db specifica il nome del database PostgreSQL.
                     
Per ulteriori informazioni, vedere MIGRATE_SQL Procedura e funzione.
Eseguire la migrazione dell'istruzione PostgreSQL in Oracle SQL con la funzione MIGRATE_SQL
L'esempio seguente mostra la funzione DBMS_CLOUD_MIGRATION.MIGRATE_SQL all'interno di un'istruzione SELECT. L'input della funzione è un'istruzione PostgreSQL e la funzione restituisce l'istruzione tradotta in Oracle SQL:
                     
SELECT DBMS_CLOUD_MIGRATION.MIGRATE_SQL(
     'CREATE TABLE IF NOT EXISTS cars (brand VARCHAR(255), model VARCHAR(255), year INT)',
     'POSTGRES') AS output FROM DUAL;
OUTPUT
------------------------------------------------------------------------------
create table cars (brand VARCHAR2(255), model VARCHAR2(255), year NUMBER(10);Per ulteriori informazioni, vedere MIGRATE_SQL Procedura e funzione.
Note per l'esecuzione di DBMS_CLOUD_MIGRATION.MIGRATE_SQL:
                     
- 
È possibile che si verifichi un errore durante la traduzione se l'istruzione SQL di input non è supportata in Oracle SQL. Per ulteriori informazioni, vedere Limitazioni per la migrazione e la traduzione delle istruzioni PostgreSQL in Oracle SQL. 
- 
I sottoprogrammi DBMS_CLOUD_MIGRATION.MIGRATE_SQLaccettano solo un'istruzione SQL come input. Pertanto, è possibile tradurre solo una singola istruzione SQL per chiamata.
Eseguire le istruzioni PostgreSQL in Autonomous AI Database
Puoi tradurre ed eseguire in modo interattivo le istruzioni PostgreSQL nell'Autonomous AI Database.
Utilizzare la procedura ENABLE_TRANSLATION per abilitare la traduzione in tempo reale delle istruzioni SQL scritte in PostgreSQL. Dopo aver abilitato la traduzione in una sessione, le istruzioni PostgreSQL vengono tradotte ed eseguite automaticamente come istruzioni Oracle SQL e i risultati possono essere visualizzati.
                     
ENABLE_TRANSLATION, è possibile eseguire in modo interattivo le seguenti operazioni in una sessione:
                        - 
Creare le tabelle. Ad esempio, creare le tabelle MOVIEeINVENTORY.
- 
Inserire i dati nelle tabelle. 
- 
Tabelle di query. 
- 
Eseguire operazioni JOIN sulle tabelle. Ad esempio, è possibile eseguire un outer join sinistro sulle tabelle. 
Per abilitare la traduzione con PostgreSQL ed eseguire i comandi:
È possibile eseguire una query sulla vista V$MAPPED_SQL per elencare le istruzioni PostgreSQL tradotte e mappate in memoria alle istruzioni Oracle SQL.
                     
Ad esempio:
SELECT v.* 
    FROM v$mapped_sql v, dba_objects o
    WHERE v.sql_translation_profile_id = o.object_id
        AND o.object_name = 'POSTGRES'
        AND o.object_type = 'TRANSLATION PROFILE';Esegui migrazione file PostgreSQL in Oracle SQL
È possibile eseguire la migrazione di un file contenente istruzioni PostgreSQL in un file contenente istruzioni Oracle SQL.
La procedura DBMS_CLOUD_MIGRATION.MIGRATE_FILE converte le istruzioni SQL in un file PostgreSQL nello storage degli oggetti e genera un nuovo file contenente Oracle SQL.
                     
Come prerequisito, caricare uno o più file PostgreSQL con estensione .sql in una posizione nello storage degli oggetti. Negli esempi riportati di seguito viene utilizzato il file postgrestest.sql caricato nello storage degli oggetti. Per ulteriori informazioni, vedere Mettere i dati nello storage degli oggetti.
                     
Per eseguire la migrazione dei file PostgreSQL in Oracle SQL:
Eseguire la query seguente per visualizzare il contenuto del file postgrestest_oracle.sql:
                     
SELECT UTL_RAW.CAST_TO_VARCHAR2 (DBMS_CLOUD.GET_OBJECT(
   credential_name => 'OCI$RESOURCE_PRINCIPAL', 
   object_uri => 'https://objectstorage.region.oraclecloud.com/n/namespace/b/bucket/o/files')) 
FROM dual;
UTL_RAW.CAST_TO_VARCHAR2(DBMS_CLOUD.GET_OBJECT(CREDENTIAL_NAME=>'CRED1',OBJECT_U
--------------------------------------------------------------------------------
SELECT f.film_id, f.title, inventory_id
FROM film f LEFT JOIN inventory
ON inventory.film_id = f.film_id;
In alternativa, se si crea una credenziale anziché il principal risorsa, OCI$RESOURCE_PRINCIPAL, specificare il nome della credenziale nel parametro credential_name.
                     
Per ulteriori informazioni, vedere GET_OBJECT Procedura e funzione.
Limitazioni per la migrazione e la traduzione di PostgreSQL Istruzioni in Oracle SQL
Questa sezione riassume le limitazioni per la migrazione delle istruzioni SQL da PostgreSQL a Oracle SQL.
- CREATE DOMAIN
- CREATE EXTENSION
- CREATE DATABASE
- CREATE TYPE
- SET
- ALTER TABLE: quando si esegue la migrazione a Autonomous AI Database è supportato solo- ALTER TABLE ADD CONSTRAINT.
- DELETE: la parola chiave- RETURNING *nell'istruzione- DELETEnon è supportata in Autonomous AI Database. È necessario sostituire la clausola- RETURNING *con la clausola- RETURNING INTO. Ad esempio,- DELETE FROM tasks WHERE status = 'DONE' RETURNING *;.- Per ulteriori informazioni, vedere Clausola RESTITUZIONE INTO. 
- CREATE FUNCTION: i seguenti elementi non sono supportati con- CREATE FUNCTION:- Il tipo restituito SETOFè necessario sostituireSETOFcon i tipi restituitoCURSORSoCOLLECTIONS.
- La clausola IMMUTABLE.
- Dichiarazioni dei parametri nel formato FUNCTION_NAME (DATATYPE, DATATYPE).
 
- Il tipo restituito 
- ALTER FUNCTION: gli argomenti della funzione- ALTER FUNCTION, ad esempio- RENAME TO,- OWNER TOe- SET SCHEMA, non sono supportati.