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.
Behandeln Sie anonyme Blöcke in dynamischen SQL Anweisungen in Aurora Postgre SQL
Erstellt von anuradha chintha () AWS
Umgebung: PoC oder Pilotprojekt | Quelle: Database Relational | Ziel: Postgre SQL |
R-Typ: Re-Architect | Arbeitslast: Oracle; Open Source | Technologien: Datenbanken; Migration |
AWSDienstleistungen: Amazon Aurora; Amazon RDS |
Übersicht
Dieses Muster zeigt Ihnen, wie Sie den Fehler vermeiden können, der beim Umgang mit anonymen Blöcken in dynamischen SQL Anweisungen auftritt. Sie erhalten eine Fehlermeldung, wenn Sie das AWS Schema Conversion Tool verwenden, um eine Oracle-Datenbank in eine Aurora SQL Postgre-Compatible Edition-Datenbank zu konvertieren. Um den Fehler zu vermeiden, müssen Sie den Wert einer OUT
Bind-Variablen kennen, aber Sie können den Wert einer OUT
Bind-Variablen erst kennen, nachdem Sie die SQL Anweisung ausgeführt haben. Der Fehler ist darauf zurückzuführen, dass das AWS Schema Conversion Tool (AWSSCT) die Logik innerhalb der SQL Dynamic-Anweisung nicht versteht. AWSSCTkann die dynamische SQL Anweisung nicht in SQL PL/Code (d. h. Funktionen, Prozeduren und Pakete) konvertieren.
Voraussetzungen und Einschränkungen
Voraussetzungen
Aktives Konto AWS
Amazon Relational Database Service (AmazonRDS) für Oracle-DB-Instance
AWS_ORACLE_EXT
Schema (Teil des AWSSCTErweiterungspakets) in Ihrer ZieldatenbankAktuelle Version des AWSSchema Conversion Tool (AWSSCT)
und der erforderlichen Treiber
Architektur
Quelltechnologie-Stack
Lokale Oracle-Datenbank 10g und neuere Version
Zieltechnologie-Stack
Amazon Aurora Aurora-Postfach SQL
Amazon RDS für Postgre SQL
AWSSchema Conversion Tool (AWSSCT)
Architektur der Migration
Das folgende Diagramm zeigt, wie Sie mithilfe AWS SCT von OUT
Oracle-Bind-Variablen Ihren Anwendungscode nach eingebetteten SQL Anweisungen durchsuchen und den Code in ein kompatibles Format konvertieren, das eine Aurora-Datenbank verwenden kann.
Das Diagramm zeigt den folgenden Workflow:
Generieren Sie einen AWS SCT Bericht für die Quelldatenbank, indem Sie Aurora Postgre SQL als Zieldatenbank verwenden.
Identifizieren Sie den anonymen Block im dynamischen SQL Codeblock (für den der AWS SCT Fehler aufgetreten ist).
Konvertieren Sie den Codeblock manuell und stellen Sie den Code in einer Zieldatenbank bereit.
Tools
AWSDienste
Amazon Aurora SQL Postgre-Compatible Edition ist eine vollständig verwaltete, ACID konforme relationale Datenbank-Engine, die Sie bei der Einrichtung, dem Betrieb und der Skalierung von Postgre-Bereitstellungen unterstützt. SQL
Amazon Relational Database Service (AmazonRDS) for Oracle unterstützt Sie bei der Einrichtung, dem Betrieb und der Skalierung einer relationalen Oracle-Datenbank in der AWS Cloud.
AWSDas Schema Conversion Tool (AWSSCT)
hilft Ihnen dabei, heterogene Datenbankmigrationen vorhersehbar zu machen, indem das Quelldatenbankschema und ein Großteil der Datenbankcodeobjekte automatisch in ein mit der Zieldatenbank kompatibles Format konvertiert werden.
Andere Tools
pgAdmin
ermöglicht es Ihnen, eine Verbindung zu Ihrem Datenbankserver herzustellen und mit ihm zu interagieren. Oracle SQL Developer
ist eine integrierte Entwicklungsumgebung, mit der Sie Datenbanken in Oracle Database entwickeln und verwalten können. Sie können entweder SQL*Plus oder Oracle SQL Developer für dieses Muster verwenden.
Epen
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Erstellen Sie eine Oracle-Instanz auf Amazon RDS oder AmazonEC2. | Informationen zum Erstellen einer Oracle-DB-Instance auf Amazon RDS finden Sie in der RDS Amazon-Dokumentation unter Eine Oracle-DB-Instance erstellen und eine Verbindung zu einer Datenbank auf einer Oracle-DB-Instance herstellen. Informationen zum Erstellen einer Oracle-DB-Instance auf Amazon Elastic Compute Cloud (AmazonEC2) finden Sie unter Amazon EC2 for Oracle in der AWS Prescriptive Guidance-Dokumentation. | DBA |
Erstellen Sie ein Datenbankschema und Objekte für die Migration. | Sie können Amazon Cloud Directory verwenden, um ein Datenbankschema zu erstellen. Weitere Informationen finden Sie in der Cloud Directory Directory-Dokumentation unter Schema erstellen. | DBA |
Konfigurieren Sie Sicherheitsgruppen für eingehenden und ausgehenden Datenverkehr. | Informationen zum Erstellen und Konfigurieren von Sicherheitsgruppen finden Sie unter Steuern des Zugriffs mit Sicherheitsgruppen in der RDS Amazon-Dokumentation. | DBA |
Vergewissern Sie sich, dass die Datenbank läuft. | Informationen zum Überprüfen des Status Ihrer Datenbank finden Sie in der RDSAmazon-Dokumentation unter RDS Amazon-Ereignisse anzeigen. | DBA |
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Erstellen Sie eine Aurora SQL Postgre-Instanz in AmazonRDS. | Informationen zum Erstellen einer Aurora SQL Postgre-Instance finden Sie unter Erstellen eines DB-Clusters und Herstellen einer Verbindung zu einer Datenbank auf einem Aurora SQL Postgre-DB-Cluster in der RDS Amazon-Dokumentation. | DBA |
Konfigurieren Sie eine Sicherheitsgruppe für eingehenden und ausgehenden Datenverkehr. | Informationen zum Erstellen und Konfigurieren von Sicherheitsgruppen finden Sie in der Aurora-Dokumentation unter Gewähren des Zugriffs auf den DB-Cluster in der VPC durch Erstellen einer Sicherheitsgruppe | DBA |
Vergewissern Sie sich, dass die Aurora SQL Postgre-Datenbank läuft. | Informationen zum Überprüfen des Status Ihrer Datenbank finden Sie unter RDSAmazon-Ereignisse anzeigen | DBA |
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Connect AWS SCT zur Quelldatenbank her. | Informationen AWS SCT zum Herstellen einer Verbindung mit Ihrer Quelldatenbank finden Sie in der AWS SCT Dokumentation unter Verbindung mit Postgre SQL als Quelle herstellen. | DBA |
Connect AWS SCT zur Zieldatenbank her. | Informationen AWS SCT zur Verbindung mit Ihrer Zieldatenbank finden Sie unter Was ist das AWS Schema Conversion Tool? im Benutzerhandbuch für das AWS Schema Conversion Tool. | DBA |
Konvertieren Sie das Datenbankschema in AWS SCT und speichern Sie den automatisch konvertierten Code als SQL Datei. | Informationen zum Speichern AWS SCT konvertierter Dateien finden Sie unter Speichern und Anwenden des konvertierten AWS Schemas AWS SCT im Schema Conversion Tool User Guide. | DBA |
Aufgabe | Beschreibung | Erforderliche Fähigkeiten |
---|---|---|
Holen Sie sich die SQL Datei für die manuelle Konvertierung. | Rufen Sie in der AWS SCT konvertierten Datei die SQL Datei ab, für die eine manuelle Konvertierung erforderlich ist. | DBA |
Aktualisieren Sie das Skript. | Aktualisieren Sie die SQL Datei manuell. | DBA |
Zugehörige Ressourcen
Zusätzliche Informationen
Der folgende Beispielcode zeigt, wie die Oracle-Quelldatenbank konfiguriert wird:
CREATE or replace PROCEDURE calc_stats_new1 ( a NUMBER, b NUMBER, result out NUMBER) IS BEGIN result:=a+b; END; /
set serveroutput on ; DECLARE a NUMBER := 4; b NUMBER := 7; plsql_block VARCHAR2(100); output number; BEGIN plsql_block := 'BEGIN calc_stats_new1(:a, :b,:output); END;'; EXECUTE IMMEDIATE plsql_block USING a, b,out output; DBMS_OUTPUT.PUT_LINE('output:'||output); END;
Der folgende Beispielcode zeigt, wie die Aurora SQL Postgre-Zieldatenbank konfiguriert wird:
w integer, x integer) RETURNS integer AS $BODY$ DECLARE begin return w + x ; end; $BODY$ LANGUAGE plpgsql; CREATE OR REPLACE FUNCTION test_pg.init() RETURNS void AS $BODY$ BEGIN if aws_oracle_ext.is_package_initialized ('test_pg' ) then return; end if; perform aws_oracle_ext.set_package_initialized ('test_pg' ); PERFORM aws_oracle_ext.set_package_variable('test_pg', 'v_output', NULL::INTEGER); PERFORM aws_oracle_ext.set_package_variable('test_pg', 'v_status', NULL::text); END; $BODY$ LANGUAGE plpgsql; DO $$ declare v_sql text; v_output_loc int; a integer :=1; b integer :=2; BEGIN perform test_pg.init(); --raise notice 'v_sql %',v_sql; execute 'do $a$ declare v_output_l int; begin select * from test_pg.calc_stats_new1('||a||','||b||') into v_output_l; PERFORM aws_oracle_ext.set_package_variable(''test_pg'', ''v_output'', v_output_l) ; end; $a$' ; v_output_loc := aws_oracle_ext.get_package_variable('test_pg', 'v_output'); raise notice 'v_output_loc %',v_output_loc; END ; $$