19.2 Oracle
19.2.1 Verteilte DB-Verarbeitung
Oracle gestattet, in einer Transaktion und auch innerhalb einer SQL-Operation auf mehrere unabhängige Datenbanken zuzugreifen (verteilte Join-Berechnung u.ä.). Die Übertragung von Operationen und Ergebnissen erfolgt über die Kommunikationskomponente SQL*NET, die eine Reihe unterschiedlicher LAN- und WAN-Kommunikationsprotokolle unterstützt (TCP/IP, SNA, DECnet etc.). SQL*NET ist dabei auf jedem Client- und Server-Rechner zu installieren. Die Übersetzung und Optimierung der SQL-Anweisungen erfolgt stets auf Server-Seite durch eines der Oracle-DBS, das mit anderen DBS (DB-Servern) zusammenarbeitet. Für diese Zusammenarbeit sind zuvor sogenannte DB-Links zu spezifizieren. Um systemweit eindeutige Objektnamen zu bekommen, werden sie mit dem jeweiligen Knotennamen erweitert. Durch Definition von Synonymen kann dem Benutzer gegenüber jedoch Ortstransparenz erreicht werden (Kap. 4.4).
Verteilte Änderungstransaktionen sind erst seit Einführung eines verteilten Zwei-Phasen-Commit-Protokolls in Oracle V7 (1992) möglich. Seit dieser Version wird auch eine Schnappschuß-Replikation unterstützt.
Für den Zugriff auf DBS anderer Hersteller bietet Oracle eine Reihe von Gateways im Rahmen der Produktfamilie SQL*CONNECT. SQL*CONNECT läuft dabei (zusätzlich zu SQL*NET) stets auf dem Server-Rechner des Fremd-DBS. Anwendungen können damit auf das Fremd-DBS quasi wie auf eine Oracle-Datenbank zugreifen. Beim Gateway-Einsatz sind drei Zugriffsformen zu unterscheiden:
- Oracle-Tools können i.a. direkt über ein SQL*CONNECT-Gateway auf SQL-DBS anderer Hersteller zugreifen, also ohne Involvierung eines Oracle-DBS. SQL*CONNECT erzeugt dabei dynamische SQL-Anweisungen für das Fremd-DBS. Für DB2 und Tandem NonStop SQL sind neben lesenden auch ändernde Zugriffe möglich. Es handelt sich dabei jedoch um lokale Transaktionen, da jeweils nur ein DBS pro Transaktion involviert ist.
- Ein indirekter Zugriff liegt vor, wenn ein Oracle-Werkzeug mit einem Oracle-DBS zusammenarbeit, von dem aus über DB-Links auf externe Datenbanken zugegriffen wird. In diesem Fall sind lediglich lesende Zugriffe auf die Fremd-Datenbank möglich, jedoch können in einer SQL-Operation Daten mehrerer Datenbanken bearbeitet werden. Auch verteilte Sichten (Views) werden unterstützt. Mit dieser Einsatzform kann auch auf nicht-relationale DBS sowie Dateisysteme zugegriffen werden.
- Direkter Zugriff auf mehrere Datenbanken ist möglich über Anwendungsprogramme mit eingebettetem SQL-Anweisungen. Dabei sind von der Anwendung Verbindungen mit den einzelnen DB-Servern aufzubauen, über die dann die SQL-Anweisungen verschickt werden. Die Verteileinheiten sind somit ganze DB-Operationen.
Oracle-DBS können auch zur verteilten Transaktionsverarbeitung unter Kontrolle verschiedener TP-Monitore eingesetzt werden. Zudem unterstützt Oracle die XA-Schnittstelle von X/Open DTP (Kap. 11.4.1), so daß es in ein verteiltes Commit-Protokoll eingebunden werden kann. Ferner wird Microsofts ODBC-Schnittstelle (Kap. 11.4.5) über entsprechende Treiber abgedeckt, worüber Client-Anwendungen in standardisierter Weise auf Oracle-Datenbanken zugreifen können.