Skip to content

Eros-Klein/XML

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Oracle XML Beispielprojekt - Start-Anleitung

Voraussetzungen

  • Docker und Docker Compose installiert
  • Java 21+
  • Maven

1. Oracle-Datenbank starten

# In das Projektverzeichnis wechseln
cd quarkus-demo

# Oracle Database Container starten (dauert ~1-2 Minuten)
docker-compose up -d oracle-db

# Warten bis DB bereit ist
docker-compose logs -f oracle-db
# Warten auf: "DATABASE IS READY TO USE!"
# (CTRL+C zum Beenden)

Hinweis: Beim ersten Start werden Sie eine Warnung über ORA-65012: Pluggable database FREEPDB1 already exists sehen können. Diese kann ignoriert werden - sie tritt auf, wenn die Datenbank bereits aus einem früheren Start persistiert wurde.

2. Datenbank initialisieren

Beim ersten Start (oder nach docker-compose down -v):

# Benutzer erstellen (nur beim ersten Start nötig)
docker exec oracle-xml-db bash -c "echo -e 'CREATE USER xmluser IDENTIFIED BY oracle123;\nGRANT CONNECT, RESOURCE TO xmluser;\nGRANT CREATE TABLE, CREATE VIEW, CREATE SEQUENCE TO xmluser;\nGRANT UNLIMITED TABLESPACE TO xmluser;\nEXIT;' | sqlplus system/oracle123@FREEPDB1"

# Schema und Testdaten laden
docker exec oracle-xml-db bash -c "sqlplus xmluser/oracle123@FREEPDB1 < /container-entrypoint-initdb.d/01-schema.sql"

Verifizieren:

# Prüfen ob Tabellen erstellt wurden
docker exec oracle-xml-db bash -c "echo 'SELECT table_name FROM user_tables ORDER BY table_name;' | sqlplus -s xmluser/oracle123@FREEPDB1"

# Sollte ausgeben: EMPLOYEES, PRODUCTS, XML_DOCUMENTS

3. Quarkus-Anwendung starten

./mvnw quarkus:dev

Die Anwendung läuft auf: http://localhost:8080

4. API testen

Oracle XDK (bleibt dateibasiert)

curl http://localhost:8080/xdk/employees

Oracle XSU

# XMLElement() Konvertierung
curl http://localhost:8080/xsu/employees

# ROWSET Format
curl http://localhost:8080/xsu/employees/rows

# SQL Aggregation
curl http://localhost:8080/xsu/summary

Oracle XMLType

# XMLType erstellen
curl -X POST 'http://localhost:8080/xmltype/create?name=test' \
  -H 'Content-Type: application/xml' \
  -d '<employee><name>Test User</name><salary>50000</salary></employee>'

# Wert extrahieren (docId von create verwenden)
curl 'http://localhost:8080/xmltype/extract/1?xpath=/employee/name'

# Wert aktualisieren
curl -X PUT 'http://localhost:8080/xmltype/update/1?xpath=/employee/salary&value=60000'

# Mitarbeiter nach Skill suchen
curl http://localhost:8080/xmltype/search/skill/Java

5. Swagger UI

http://localhost:8080/q/swagger-ui

Datenbank-Zugriff

# SQL*Plus
docker exec -it oracle-xml-db sqlplus xmluser/oracle123@FREEPDB1

# SQLcl (moderner)
docker exec -it oracle-xml-db sql xmluser/oracle123@FREEPDB1

Nützliche SQL-Befehle:

-- Alle Tabellen anzeigen
SELECT table_name FROM user_tables;

-- Employees ansehen
SELECT * FROM employees;

-- XMLType Spalte ansehen
SELECT id, name, skills_xml.getClobVal() FROM employees;

-- XPath auf XMLType
SELECT id, name,
  extractValue(skills_xml, '/skills/skill[1]') as first_skill
FROM employees;

Troubleshooting

ORA-01017: Invalid credential or not authorized

Der Benutzer xmluser wurde nicht erstellt:

# Lösung: Benutzer manuell erstellen
docker exec oracle-xml-db bash -c "echo -e 'CREATE USER xmluser IDENTIFIED BY oracle123;\nGRANT CONNECT, RESOURCE TO xmluser;\nGRANT CREATE TABLE, CREATE VIEW, CREATE SEQUENCE TO xmluser;\nGRANT UNLIMITED TABLESPACE TO xmluser;\nEXIT;' | sqlplus system/oracle123@FREEPDB1"

ORA-65012: Pluggable database FREEPDB1 already exists

Dies ist keine Fehlermeldung, sondern nur eine Warnung beim Neustart. Die Datenbank wurde bereits beim ersten Start initialisiert und die Daten sind persistent. Sie können dies ignorieren.

Für einen kompletten Neustart:

# Alles löschen (inklusive Daten!)
docker-compose down -v
# Neu starten
docker-compose up -d oracle-db
# Dann Schritt 2 (Datenbank initialisieren) erneut ausführen

DB startet nicht

docker-compose logs oracle-db
docker-compose restart oracle-db

Connection failed

# Prüfen ob DB läuft
docker ps | grep oracle

# Port prüfen
ss -tuln | grep 1521

# Health-Status prüfen
docker inspect oracle-xml-db | grep -A5 Health

XMLIndex Fehler (ORA-29958)

Die XMLIndex-Erstellung schlägt fehl, da Oracle Free Edition spezielle Konfigurationen benötigt. Dies ist kein Problem - die Tabellen funktionieren trotzdem. Die Indizes sind nur Performance-Optimierungen.

Oracle-Technologien

XDK (XML Developer's Kit)

  • Dateibasiert mit OracleXdkParser
  • Endpoints: /xdk/*

XSU (XML SQL Utility)

  • Oracle-DB mit XsuService
  • Native Funktionen: XMLElement(), XMLAgg(), getClobVal()
  • Endpoints: /xsu/*

XMLType

  • Oracle-DB mit XmlTypeRepository
  • Native Funktionen: XMLType(), extract(), existsNode(), updateXML()
  • XMLType Spalten in employees.skills_xml und xml_documents.xml_data
  • Endpoints: /xmltype/*

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors