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 delle applicazioni legacy da Oracle Pro*C a ECPG
Creato da Sai Parthasaradhi (AWS) e Mahesh Balumuri (AWS)
Riepilogo
La maggior parte delle applicazioni legacy con codice SQL incorporato utilizza il precompilatore Oracle Pro*C per accedere al database. Quando esegui la migrazione di questi database Oracle ad Amazon Relational Database Service (Amazon RDS) per PostgreSQL o Amazon Aurora PostgreSQL Compatible Edition, devi convertire il codice dell'applicazione in un formato compatibile con il precompilatore di PostgreSQL, chiamato ECPG. Questo modello descrive come convertire il codice Oracle Pro*C nel suo equivalente in PostgreSQL ECPG.
Per ulteriori informazioni su Pro*C, consulta la documentazione Oracle.
Prerequisiti e limitazioni
Prerequisiti
Un account AWS attivo
Un database compatibile con Amazon RDS per PostgreSQL o Aurora PostgreSQL
Un database Oracle in esecuzione in locale
Strumenti
I pacchetti PostgreSQL elencati nella sezione successiva.
AWS CLI — L'AWS Command Line Interface (AWS CLI) è uno strumento open source per interagire con i servizi AWS tramite comandi nella shell della riga di comando. Con una configurazione minima, puoi eseguire comandi AWS CLI che implementano funzionalità equivalenti a quelle fornite dalla Console di gestione AWS basata su browser da un prompt dei comandi.
Epiche
Attività | Descrizione | Competenze richieste |
---|---|---|
Installa i pacchetti PostgreSQL. | Installa i pacchetti PostgreSQL richiesti utilizzando i seguenti comandi.
| Sviluppatore di app, ingegnere DevOps |
Installa i file di intestazione e le librerie. | Installa il
Solo per l'ambiente di sviluppo, esegui anche i seguenti comandi.
| Sviluppatore di app, DevOps ingegnere |
Configura la variabile del percorso di ambiente. | Imposta il percorso dell'ambiente per le librerie client PostgreSQL.
| Sviluppatore di app, ingegnere DevOps |
Installa software aggiuntivo se necessario. | Se necessario, installare pgLoader in sostituzione di SQL*Loader in Oracle.
Se state chiamando delle applicazioni Java dai moduli Pro*C, installate Java.
Installa ant per compilare il codice Java.
| Sviluppatore di app, DevOps ingegnere |
Installare l'interfaccia a riga di comando di AWS. | Installa l'AWS CLI per eseguire comandi per interagire con servizi AWS come AWS Secrets Manager e Amazon Simple Storage Service (Amazon S3) Simple Storage Service (Amazon S3) dalle tue applicazioni.
| Sviluppatore di app, ingegnere DevOps |
Identifica i programmi da convertire. | Identifica le applicazioni che desideri convertire da Pro*C a ECPG. | Sviluppatore di app, proprietario dell'app |
Attività | Descrizione | Competenze richieste |
---|---|---|
Rimuovi le intestazioni indesiderate. | Rimuovi le | Proprietario dell'app, sviluppatore dell'app |
Aggiorna le dichiarazioni delle variabili. | Aggiungi Rimuovi
| Sviluppatore di app, proprietario dell'app |
Aggiorna la funzionalità ROWNUM. | La Codice Pro*C:
Codice ECPG:
| Sviluppatore di app, proprietario dell'app |
Aggiorna i parametri della funzione per utilizzare le variabili alias. | In PostgreSQL, i parametri delle funzioni non possono essere usati come variabili host. Sovrascrivili utilizzando una variabile alias. Codice Pro*C:
Codice ECPG:
| Sviluppatore di app, proprietario dell'app |
Aggiorna i tipi di struttura. | Definisci Codice Pro*C: File di intestazione ()
Codice ECPG: File di intestazione ()
File Pro*C ()
File ECPG ()
| Sviluppatore di app, proprietario dell'app |
Modifica la logica da recuperare dai cursori. | Per recuperare più righe dai cursori utilizzando variabili di matrice, modificate il codice da utilizzare. Codice Pro*C:
Codice ECPG:
| Sviluppatore di app, proprietario dell'app |
Modifica le chiamate ai pacchetti che non hanno valori restituiti. | Le funzioni dei pacchetti Oracle che non hanno valori restituiti devono essere chiamate con una variabile indicatore. Se l'applicazione include più funzioni con lo stesso nome o se le funzioni di tipo sconosciuto generano errori di runtime, digita i valori nei tipi di dati. Codice Pro*C:
Codice ECPG:
| Sviluppatore di app, proprietario dell'app |
Riscrivi le variabili SQL_CURSOR. | Riscrivi la variabile e la sua implementazione. Codice Pro*C:
Codice ECPG:
| Sviluppatore di app, proprietario dell'app |
Applica modelli di migrazione comuni. |
| Sviluppatore di app, proprietario dell'app |
Abilita il debug, se necessario. | Per eseguire il programma ECPG in modalità debug, aggiungete il seguente comando all'interno del blocco funzionale principale.
| Sviluppatore dell'app, proprietario dell'app |
Attività | Descrizione | Competenze richieste |
---|---|---|
Crea un file eseguibile per ECPG. | Se disponete di un file sorgente SQL C incorporato denominato
| Sviluppatore di app, proprietario dell'app |
Crea un make file per la compilazione. | Create un make file per compilare il programma ECPG, come mostrato nel seguente file di esempio.
| Sviluppatore di app, proprietario dell'app |
Attività | Descrizione | Competenze richieste |
---|---|---|
Test del codice. | Verifica il codice dell'applicazione convertito per assicurarti che funzioni correttamente. | Sviluppatore di app, proprietario dell'app, tecnico di test |
Risorse correlate
ECPG - SQL integrato in C
(documentazione PostgreSQL) Gestione degli errori
(documentazione PostgreSQL) Perché utilizzare il precompilatore Oracle Pro*C/C++
(documentazione Oracle)
Informazioni aggiuntive
PostgreSQL ha un precompilatore SQL incorporato, ECPG, che è equivalente al precompilatore Oracle Pro*C. ECPG converte i programmi C che hanno istruzioni SQL incorporate in codice C standard sostituendo le chiamate SQL con chiamate a funzioni speciali. I file di output possono quindi essere elaborati con qualsiasi catena di strumenti del compilatore C.
File di input e output
ECPG converte ogni file di input specificato nella riga di comando nel file di output C corrispondente. Se il nome di un file di input non ha un'estensione di file, viene utilizzato l'estensione.pgc. L'estensione del file viene sostituita da .c
per costruire il nome del file di output. Tuttavia, è possibile sovrascrivere il nome del file di output predefinito utilizzando l'-o
opzione.
Se utilizzate un trattino (-
) come nome del file di input, ECPG legge il programma dallo standard input e scrive sullo standard output, a meno che non lo sovrascriviate utilizzando l'opzione. -o
File di intestazione
Quando il compilatore PostgreSQL compila i file di codice C preelaborati, cerca i file di intestazione ECPG nella directory PostgreSQL. include
Pertanto, potrebbe essere necessario utilizzare l'-I
opzione per indirizzare il compilatore alla directory corretta (ad esempio,). -I/usr/local/pgsql/include
Libraries (Librerie)
I programmi che utilizzano codice C con SQL incorporato devono essere collegati alla libecpg
libreria. Ad esempio, è possibile utilizzare le opzioni -L/usr/local/pgsql/lib -lecpg
del linker.
Le applicazioni ECPG convertite richiamano le funzioni nella libpq
libreria tramite la libreria SQL incorporata (ecpglib
) e comunicano con il server PostgreSQL utilizzando il protocollo frontend/backend standard.