Veröffentlicht 23. Januar 2023
Aktualisiert Oktober 2025
Einführung
In einer neuen zweiteiligen Blogserie zeigen wir Ihnen, wie Sie KeepTool in Verbindung mit Oracle XML DB nutzen können. Wie Sie sich vielleicht erinnern, ermöglicht Oracles Standard-XML-Lösung das Speichern und Abrufen von XML-Dokumenten direkt in der Datenbank. Sie können XML-Schemata registrieren und Abfragen über objekt-relational strukturierte Daten ausführen. Dieser erste Blogeintrag führt Sie in die Grundlagen ein und gipfelt in einer funktionierenden Datenimport-Schnittstelle für die Tabelle HR.EMPLOYEES.
Im nächsten Blog zeigen wir, wie Sie eine Datenexport-Schnittstelle erstellen. Sie lernen, wie man technisch mit Master/Detail-Beziehungen (z. B. HR.DEPARTMENTS und HR.LOCATIONS) umgeht.
Insgesamt konzentrieren wir uns strikt auf die wesentlichen Schritte — Sie haben später noch viel Raum, die Logik an Ihre eigenen Anforderungen anzupassen.
Ein typischer Anwendungsfall
Stellen Sie sich eine regionale Niederlassung eines großen Unternehmens vor. Lokal wird eine eigene Kopie der HR-Datenbank geführt. Die Mitarbeiterdaten werden zentral in der Zentrale verwaltet. Die regionale Stelle erhält Updates zu neuen oder geänderten Mitarbeiterdaten per XML-Schnittstelle:
-
Die Hauptdatenbank sendet periodisch (z. B. nachts oder bei jeder Änderung eines Datensatzes) neue oder modifizierte EMPLOYEES-Daten als XML.
Diese XML-Struktur kann über Web-Services, Remote-Datenbankzugriffe oder andere Mechanismen übertragen werden.
-
Die lokale Seite empfängt die XML-Datenstruktur und importiert sie in die eigene Datenbank.
Neue Datensätze werden eingefügt, bestehende Datensätze aktualisiert.
In Teil 1 unserer Serie zeigen wir, wie eine XML-Struktur importiert werden kann. Die EMPLOYEES-Daten der lokalen HR-Datenbank werden entweder eingefügt oder aktualisiert. Der zweite Blogbeitrag erläutert anschließend, wie der Datenexport technisch umgesetzt wird.
Definition von PL/SQL-Types
Wir orientieren uns an der HR.EMPLOYEES-Tabelle und definieren zuerst PL/SQL-Typen, die Oracle XML DB die Erstellung eines XSD-Schemas ermöglichen:
-
EMPLOYEE_XML_ITEM: ein Objekttyp, dessen Attribute den Spalten der Tabelle entsprechen
-
EMPLOYEES_XML_LIST: ein Collection-Typ, der eine Liste von EMPLOYEE_XML_ITEM darstellt
-
EMPLOYEES_XML_ELEM: ein Objekttyp, der eine Instanz von EMPLOYEES_XML_LIST enthält
(Wir benötigen diese Verschachtelung, um die Collection in ein Wurzel-Element zu kapseln.)
Auf Hora’s SQL-Seite führen Sie den folgenden Code aus, um diese PL/SQL-Typen zu erzeugen:

Anschließend finden Sie die Typen in Hora unter PL/SQL Types („All types“ Tab). Dort werden Objekttypen und Collection-Typen gemeinsam aufgelistet:

Hora zeigt automatisch Warnungen und Fehlermeldungen des Datenbankservers an.
Erzeugen des XSD-Schemas
Nun verwenden wir dbms_xmlschema.generateschema
, um eine XML-Schemabeschreibung zu erzeugen:
select dbms_xmlschema.generateschema( 'HR', 'EMPLOYEES_XML_ELEM', 'EMPLOYEES_LIST') from dual;
Das Ergebnis ist ein CLOB mit dem XSD, den wir anschließend mit dbms_xmlschema.registerschema
registrieren:
begin
dbms_xmlschema.registerschema( 'EMPLOYEES.XSD',
dbms_xmlschema.generateschema(
schemaname => 'HR',
typename => 'EMPLOYEES_XML_ELEM',
elementname => 'EMPLOYEES_LIST'),
gentypes => FALSE,
genbean => FALSE,
gentables => FALSE);
end;
Nachdem Sie diesen anonymen Block ausgeführt haben, ist das XSD in der Datenbank registriert. In Hora sehen Sie dann auf der XML-Seite:

- Eine Mapping-Ansicht zwischen XSD-Elementen und PL/SQL-Typen

Zur Vereinfachung haben wir die beschriebenen PL/SQL-Logiken in einem Paket XML_LOGIC gebündelt:

Mit diesem Package reicht später ein einfacher Aufruf:
begin
XML_LOGIC.register_xsd( 'EMPLOYEES');
end;
Zusätzlich zur Registrierung in der Datenbank wird die XSD als Datei in einem vordefinierten Oracle-Verzeichnis gespeichert — ideal, um sie an Entwicklerteams weiterzugeben, die XML-Daten importieren wollen.
Schnittstellentabelle für den Datenimport
Zur Verwaltung des XML-Importprozesses definieren wir eine Schnittstellentabelle namens XML_EMPLOYEES_TRANSFER
. Externe Systeme fügen ihre XML-Payloads in diese Tabelle ein:

Wichtige Spalten:
-
ID: Primärschlüssel, gesetzt durch einen Trigger, basierend auf einer Sequenz
-
XML_DATA: CLOB mit dem XML-Dokument
-
Metadata-Spalten: Zeitstempel, Statistikwerte, Fehlerprotokoll
Auf dieser Basis wird eine relationale Sicht erstellt: XML_EMPLOYEES_TRANS_DATA_V, die XML-Daten und Metadaten gemeinsam darstellt:

Diese View verwendet Oracle-Techniken (z. B. XMLTable), um XML-Inhalte in tabellarische Spalten zu zerlegen. Weitere Informationen zur Technik finden Sie z. B. hier: https://www.oratable.com/xmltable-convert-xml-to-relational-form/ .
Logik für den Datenimport
Nun erstellen wir das Paket XML_INTERFACE, das eine Prozedur für den XML-Import enthält. Die Implementierung umfasst folgende Schritte:
-
Iteration über Datensätze in XML_EMPLOYEES_TRANS_DATA_V für eine gegebene Import-ID
-
Für jeden Datensatz:
-
Nach der Verarbeitung: Statistik aktualisieren und Fehlerprotokoll führen
….
Der Import erfolgt in zwei Schritten:
Darstellung importierter Daten
Nach dem Import können Sie die Ergebnisse direkt in Hora einsehen:

Nach Ausführung der Prozedur zeigt die Datenansicht in Hora den eingefügten Datensatz an:

Die Statistiken der Transfer-Tabelle wurden ebenfalls aktualisiert:

Die View XML_EMPLOYEES_TRANS_DATA_V ermöglicht es, XML-Inhalt zusammen mit den Spalten der XML_EMPLOYEES_TRANSFER Tabelle in relationaler Form anzuzeigen:

Fazit
Ihre XML-basierte Import-Schnittstelle funktioniert nun! Sie können unser Beispiel als Vorlage herunterladen und für eigene Projekte anpassen.
Bereits in zahlreichen Projekten wurde dieser Ansatz erfolgreich eingesetzt — Entwickler berichten von deutlich gesteigerter Produktivität durch die Verwendung unserer Tools.
Im nächsten Blogbeitrag bauen wir die Export-Schnittstelle, inklusive Master/Detail-Beziehungen, auf.
➡️ KeepTool kostenlos testen
Die Oracle-Tools von KeepTool wurden speziell für Entwickler, DBAs und Support-Teams entwickelt.
Basierend auf über 25 Jahren Erfahrung optimieren wir unsere Software kontinuierlich, um Ihre Datenbankanalyse und -dokumentation schneller, effizienter und übersichtlicher zu gestalten.