Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Migrieren Sie Legacy-Anwendungen von Oracle Pro*C zu ECPG
Erstellt von Sai Parthasaradhi (AWS) und Mahesh Balumuri (AWS)
Umgebung: PoC oder Pilotprojekt | Quelle: Oracle | Ziel: PostgreSQL |
R-Typ: Re-Architect | Arbeitslast: Oracle | Technologien: Migration; Datenbanken |
Übersicht
Die meisten älteren Anwendungen mit eingebettetem SQL-Code verwenden den Oracle Pro*C-Precompiler für den Zugriff auf die Datenbank. Wenn Sie diese Oracle-Datenbanken zu Amazon Relational Database Service (Amazon RDS) for PostgreSQL oder Amazon Aurora PostgreSQL-Compatible Edition migrieren, müssen Sie Ihren Anwendungscode in ein Format konvertieren, das mit dem Precompiler in PostgreSQL kompatibel ist, das als ECPG bezeichnet wird. Dieses Muster beschreibt, wie Oracle Pro*C-Code in sein Äquivalent in PostgreSQL ECPG konvertiert wird.
Weitere Informationen zu Pro*C finden Sie in der Oracle-Dokumentation.
Voraussetzungen und Einschränkungen
Voraussetzungen
Ein aktives AWS-Konto
Eine Amazon RDS for PostgreSQL- oder Aurora PostgreSQL-kompatible Datenbank
Eine Oracle-Datenbank, die lokal läuft
Tools
Die im nächsten Abschnitt aufgeführten PostgreSQL-Pakete.
AWS CLI — Die AWS-Befehlszeilenschnittstelle (AWS CLI) ist ein Open-Source-Tool für die Interaktion mit AWS-Services über Befehle in Ihrer Befehlszeilen-Shell. Mit minimaler Konfiguration können Sie AWS-CLI-Befehle, die Funktionen implementieren, die denen entsprechen, die von der browserbasierten AWS-Managementkonsole bereitgestellt werden, von einer Befehlszeile aus ausführen.
Epen
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Installieren Sie PostgreSQL-Pakete. | Installieren Sie die erforderlichen PostgreSQL-Pakete mithilfe der folgenden Befehle.
| App-Entwickler, Ingenieur DevOps |
Installieren Sie die Header-Dateien und Bibliotheken. | Installieren Sie das
Führen Sie nur für die Entwicklungsumgebung auch die folgenden Befehle aus.
| App-Entwickler, DevOps Ingenieur |
Konfigurieren Sie die Umgebungspfadvariable. | Legen Sie den Umgebungspfad für PostgreSQL-Clientbibliotheken fest.
| App-Entwickler, Ingenieur DevOps |
Installieren Sie bei Bedarf zusätzliche Software. | Falls erforderlich, installieren Sie PGLoader als Ersatz für SQL*Loader in Oracle.
Wenn Sie Java-Anwendungen von Pro*C-Modulen aus aufrufen, installieren Sie Java.
Installieren Sie Ant, um den Java-Code zu kompilieren.
| App-Entwickler, DevOps Ingenieur |
Installieren Sie den AWS CLI. | Installieren Sie die AWS-CLI, um Befehle zur Interaktion mit AWS-Services wie AWS Secrets Manager und Amazon Simple Storage Service (Amazon S3) von Ihren Anwendungen aus auszuführen.
| App-Entwickler, DevOps Ingenieur |
Identifizieren Sie die Programme, die konvertiert werden sollen. | Identifizieren Sie die Anwendungen, die Sie von Pro*C nach ECPG konvertieren möchten. | App-Entwickler, App-Besitzer |
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Entfernen Sie unerwünschte Header. | Entfernen Sie die | App-Besitzer, App-Entwickler |
Aktualisieren Sie die Variablendeklarationen. | Fügen Sie Entfernen Sie die
| App-Entwickler, App-Besitzer |
Aktualisieren Sie die ROWNUM-Funktionalität. | Die Pro*C-Code:
ECPG-Kode:
| App-Entwickler, App-Besitzer |
Aktualisieren Sie die Funktionsparameter, um Aliasvariablen zu verwenden. | In PostgreSQL können Funktionsparameter nicht als Hostvariablen verwendet werden. Überschreiben Sie sie mithilfe einer Aliasvariablen. Pro*C-Code:
ECPG-Kode:
| App-Entwickler, App-Besitzer |
Aktualisieren Sie die Strukturtypen. | Definieren Sie Pro*C-Code: Header-Datei ()
ECPG-Code: Header-Datei ()
Pro*C-Datei ()
ECPG-Datei ()
| App-Entwickler, App-Besitzer |
Ändern Sie die Logik, um von Cursorn abzurufen. | Um mithilfe von Array-Variablen mehrere Zeilen aus Cursorn abzurufen, ändern Sie den zu verwendenden Code. Pro*C-Code:
ECPG-Kode:
| App-Entwickler, App-Besitzer |
Ändern Sie Paketaufrufe, die keine Rückgabewerte haben. | Oracle-Paketfunktionen, die keine Rückgabewerte haben, sollten mit einer Indikatorvariablen aufgerufen werden. Wenn Ihre Anwendung mehrere Funktionen mit demselben Namen enthält oder wenn die Funktionen unbekannter Typen Laufzeitfehler erzeugen, typisieren Sie die Werte in die Datentypen. Pro*C-Code:
ECPG-Kode:
| App-Entwickler, App-Besitzer |
Schreiben Sie SQL_CURSOR-Variablen neu. | Schreiben Sie die Pro*C-Code:
ECPG-Kode:
| App-Entwickler, App-Besitzer |
Wenden Sie gängige Migrationsmuster an. |
| App-Entwickler, App-Besitzer |
Aktivieren Sie das Debugging, falls erforderlich. | Um das ECPG-Programm im Debug-Modus auszuführen, fügen Sie dem Hauptfunktionsblock den folgenden Befehl hinzu.
| App-Entwickler, App-Besitzer |
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Erstellen Sie eine ausführbare Datei für ECPG. | Wenn Sie eine eingebettete SQL C-Quelldatei mit dem Namen haben
| App-Entwickler, App-Besitzer |
Erstellen Sie eine Make-Datei für die Kompilierung. | Erstellen Sie eine Make-Datei, um das ECPG-Programm zu kompilieren, wie in der folgenden Beispieldatei gezeigt.
| App-Entwickler, App-Besitzer |
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Testen Sie den Code. | Testen Sie den konvertierten Anwendungscode, um sicherzustellen, dass er ordnungsgemäß funktioniert. | App-Entwickler, App-Besitzer, Testingenieur |
Zugehörige Ressourcen
ECPG - Eingebettetes SQL in C
(PostgreSQL-Dokumentation) Fehlerbehandlung
(PostgreSQL-Dokumentation) Warum den Oracle Pro*C/C++ Precompiler verwenden
(Oracle-Dokumentation)
Zusätzliche Informationen
PostgreSQL hat einen eingebetteten SQL-Precompiler, ECPG, der dem Oracle Pro*C-Precompiler entspricht. ECPG konvertiert C-Programme mit eingebetteten SQL-Anweisungen in Standard-C-Code, indem es die SQL-Aufrufe durch spezielle Funktionsaufrufen ersetzt. Die Ausgabedateien können dann mit jeder C-Compiler-Toolchain verarbeitet werden.
Eingabe- und Ausgabedateien
ECPG konvertiert jede Eingabedatei, die Sie in der Befehlszeile angeben, in die entsprechende C-Ausgabedatei. Wenn ein Eingabedateiname keine Dateierweiterung hat, wird .pgc angenommen. Die Erweiterung der Datei wird durch ersetzt, .c
um den Namen der Ausgabedatei zu erstellen. Sie können jedoch den Standardnamen der Ausgabedatei überschreiben, indem Sie die -o
Option verwenden.
Wenn Sie einen Bindestrich (-
) als Namen der Eingabedatei verwenden, liest ECPG das Programm aus der Standardeingabe und schreibt in die Standardausgabe, sofern Sie dies nicht mit der -o
Option überschreiben.
Header-Dateien
Wenn der PostgreSQL-Compiler die vorverarbeiteten C-Codedateien kompiliert, sucht er im PostgreSQL-Verzeichnis nach den ECPG-Header-Dateien. include
Daher müssen Sie möglicherweise die -I
Option verwenden, um den Compiler auf das richtige Verzeichnis zu verweisen (z. B.). -I/usr/local/pgsql/include
Bibliotheken
Programme, die C-Code mit Embedded SQL verwenden, müssen mit der libecpg
Bibliothek verknüpft werden. Sie können beispielsweise die Linker-Optionen -L/usr/local/pgsql/lib -lecpg
verwenden.
Konvertierte ECPG-Anwendungen rufen Funktionen in der libpq
Bibliothek über die Embedded SQL-Bibliothek (ecpglib
) auf und kommunizieren mit dem PostgreSQL-Server unter Verwendung des Standard-Frontend-/Backend-Protokolls.