Von Andreas Baier auf Mittwoch, 24. Juni 2026
Kategorie: Data Management

Oracle trifft OpenAI: SELECT AI als Brücke zwischen Sprache und SQL

Oracle 26ai erweitert die relationale Datenbank um native KI-Funktionalitäten: einen Vektordatentyp, eingebettete ONNX-Modelle für Embeddings und SELECT AI für natürlichsprachliche Abfragen. Die genannten Funktionen laufen direkt in der Datenbank ohne externe Vektordatenbank. Diese Beitragsreihe zeigt, wie der Stack aufgebaut wird und worauf geachtet werden muss. Starten wir in diesem Teil mit der SELECT-AI-Funktionalität.

Voraussetzungen für die gezeigten Beispiele: Oracle 26ai, ein:e Datenbankbenutzer:in mit entsprechenden Berechtigungen und für den SELECT-AI-Teilzugriff auf eine Large-Language-Model-API, in diesem Beispiel OpenAI.

SELECT AI: natürlichsprachige Datenbankabfragen

SELECT AI übersetzt natürlichsprachige Eingaben über ein externes LLM in SQL und führt das SQL direkt gegen die Datenbank aus. Das Modell sieht dabei ausschließlich die Tabellen-Metadaten (DDL, Spaltennamen, Kommentare). Die eigentliche Abfrageausführung findet in der Oracle-Datenbank statt.

Technisch basiert SELECT AI auf DBMS_CLOUD_AI. Für die Nutzung ist ein AI-Profil notwendig, das den LLM-Anbieter, das Modell und die Zielobjekte (Tabellen/Views) definiert.

Ablauf der SELECT-AI-Verarbeitung

Benutzer:in gibt SELECT AI … ein. Das ist für den SQL-Parser wie ein normales Statement.

Die Oracle DB Engine erkennt das AI-Schlüsselwort, aktiviert das AI-Modul und lädt das aktive Profil.

Das AI-Profil (DBMS_CLOUD_AI) baut die erweiterte Abfrage zusammen: Die natürlichsprachige Frage wird mit Tabellennamen, Spaltentypen und Kommentaren aus dem Schema angereichert – damit weiß das LLM, welche Daten überhaupt vorhanden sind.

Der LLM-Anbieter (OpenAI, Azure usw.) empfängt nur den angereicherten Prompt, niemals die echten Daten und antwortet mit einem SQL-Statement.

Das generierte SQL wird zurück an die DB-Engine übergeben und dort ausgeführt.

Bei NARRATE geht das Rohresultat nochmal zurück an das LLM, welches daraus einen lesbaren Text formuliert.

Das Endergebnis, Tabelle oder Text wird angezeigt. 

Setup: User:in und Berechtigungen

Als SYSDBA müssen folgende Berechtigungen gesetzt werden, bevor der/die Arbeitsbenutzer:in (hier: vectest) die AI-Funktionen nutzen kann: 

Konfiguration:

Netzwerkzugriff und Credential-Konfiguration für externe LLM-Modelle

Damit Oracle-Datenbankbenutzer:innen auf externe Large Language Models (LLMs) wie GPT-4 von OpenAI zugreifen können, sind zwei wesentliche Konfigurationsschritte erforderlich. Die Freigabe des Netzwerkzugriffs auf Ebene der Datenbank sowie die sichere Verwaltung der Authentifizierungsdaten (Credentials).

Die Verwaltung der Netzwerkfreigaben erfolgt über das Paket DBMS_NETWORK_ACL_ADMIN, das auf dem Konzept der Access Control Lists (ACLs) basiert. Eine ACL ist eine Zugriffskontrollliste, die festlegt, welche:r Datenbankbenutzer:in (Principal) Verbindungen zu welchem Hostnamen oder IP-Adressbereich mit welchen Protokollrechten aufbauen darf. Für den Zugriff auf REST-APIs externer LLM-Anbieter sind die Privilegien http und http_proxy relevant.

Der Netzwerkzugriff allein reicht nicht aus. Die/Der Datenbankbenutzer:in benötigt auch gültige Authentifizierungsdaten, um sich gegenüber dem externen API-Endpunkt auszuweisen. Oracle stellt hierfür das Paket DBMS_CLOUD bereit.

Credentials werden als benannte Objekte in der Datenbank gespeichert. Der API-Schlüssel wird dabei verschlüsselt im Datenbankschema abgelegt und ist nicht im Klartext auslesbar. Dies ist ein wesentlicher Sicherheitsvorteil gegenüber dem direkten Einbetten von Schlüsseln in PL/SQL-Code oder Konfigurationsdateien.

Profil für SELECT AI anlegen und aktivieren

Das AI-Profil verknüpft das Credential mit dem gewünschten LLM-Modell und dem Datenbankschema. Die wichtigsten Parameter sind unter „attributes“ im JSON-Format definiert. 

Je weniger Tabellen im „object_list“-Parameter aufgeführt sind, desto präziser und schneller arbeitet SELECT AI. Es empfiehlt sich, nur die für den Anwendungsfall relevanten Tabellen freizugeben. Das reduziert Token-Verbrauch und verhindert ungewollten Datenzugriff.

Für unterschiedliche Anwendungsfälle können separate Profile angelegt und bei Bedarf aktiviert werden.

SELECT-AI: Beispiele mit Seminardaten

Alle folgenden SELECT-AI-Abfragen beziehen sich auf eine Tabelle SEMINARE_TEST im Schema VECTEST. Die Tabelle enthält das Schulungsangebot eines IT-Dienstleisters mit Bezeichnung, Kategorie, Dauer, Preis, Ort und Buchungsstand. 

Tabelle und Datenbasis anlegen:

SELECT AI: Direkte Abfrage (Standard)

Die natürlichsprachliche Anfrage wird an das LLM gesendet, das daraus SQL generiert und sofort ausführt. Das Ergebnis erscheint wie bei jeder normalen SQL-Abfrage als Tabelle. 

SHOWSQL prüfen vor der Ausführung

SHOWSQL ist das wichtigste Werkzeug für Entwicklung und Qualitätssicherung. Das generierte SQL wird angezeigt, ohne ausgeführt zu werden. So lässt sich prüfen, ob das LLM die Frage korrekt interpretiert hat. 

NARRATE-Ergebnis als lesbarer Text

NARRATE führt die SQL-Abfrage aus und übergibt das Ergebnis zurück an das LLM, das daraus eine lesbare Zusammenfassung formuliert. Geeignet für Reports, Dashboards oder automatisierte Statusmeldungen.

Wichtig: Bei NARRATE verlassen tatsächliche Datenbankwerte die Oracle-Instanz. Das Abfrageergebnis wird als Teil des Prompts an den externen LLM-Anbieter übertragen.

CHAT: Allgemeine Fragen ohne Datenbankbezug

CHAT leitet die Anfrage direkt ans LLM weiter, ohne Datenbankstrukturen zu übertragen. Nützlich für technische Erklärungen und Konzeptfragen direkt aus SQL Developer oder SQLcl heraus. 

Qualität durch Kommentare verbessern

Die Güte der generierten SQL-Abfragen hängt direkt von der Qualität der Metadaten im Schema ab. Oracle SELECT AI überträgt Tabellen- und Spaltenkommentare als Kontext an das LLM, je präziser die Beschreibung, desto besser die Interpretation.

Besonders wichtig sind Kommentare bei Mengenangaben und Einheiten (Euro, Tage, Stück), Statusfeldern mit festem Wertebereich ('aktiv', 'inaktiv', 'archiviert') oder Geschäftsregeln, die sich aus mehreren Spalten ergeben (z. B. 'ausgebucht = gebuchte_tn = max_tn'). Mit dem Profilattribut „comments: true“ werden alle Kommentare automatisch an das LLM übertragen.

Die vier Abfrageaktionen im Überblick

AKTION VERHALTEN
​ SELECT AI <Frage> ​ Generiert SQL, führt es aus und gibt das Ergebnis als Tabelle zurück
​ SELECT AI SHOWSQL <Frage> ​ Zeigt nur das generierte SQL, ohne Ausführung
​ SELECT AI NARRATE <Frage> ​ Führt das SQL aus und formuliert das Ergebnis als Fließtext
​ SELECT AI CHAT <Frage> ​ Allgemeine LLM-Konversation ohne Datenbankbezug

Fazit

SELECT AI schließt die Lücke zwischen natürlicher Sprache und relationaler Datenbank. Fachbereichsmitarbeiter:innen, Controller:innen oder Support-Teams können damit direkt auf strukturierte Unternehmensdaten zugreifen, ohne SQL-Kenntnisse zu benötigen. Die Abfrage erfolgt so, wie man eine Frage stellen würde.

Die Qualität der generierten SQL-Abfragen ist dabei kein Zufallsprodukt. Sie lässt sich gezielt steuern: Aussagekräftige Tabellen- und Spaltenkommentare, Views mit ausgewählten Werten, eine bewusst eingegrenzte object_list im AI-Profil und die Wahl des richtigen Modells (z. B. gpt-4o statt gpt-4o-mini für komplexere Schemata) haben direkten Einfluss auf Präzision und Zuverlässigkeit.

SELECT AI ist aber kein Ersatz für geprüfte und parametrisierte SQL‑Abfragen in sicherheitskritischen Produktivsystemen. Stattdessen entfaltet es seinen Mehrwert vor allem in Self‑Service‑Analysen, der Prototypenentwicklung und bei internen Werkzeugen zur freien Datenanalyse. Die Nutzer:innen können flexibel Fragen stellen und Daten interaktiv untersuchen.

Der entscheidende Vorteil gegenüber externen KI‑Lösungen liegt dabei in der Datenhoheit. Abgesehen von der NARRATE-Funktion verbleiben die Daten in der Datenbank und das Sprachmodell erhält ausschließlich das Schema als Kontext, nicht jedoch die zugrunde liegenden Rohdaten.

Seminarempfehlungen

Verwandte Beiträge

Kommentare hinterlassen