Oracle Database (auch Oracle Database Server, Oracle RDBMS) ist eine Datenbankmanagementsystem-Software des Unternehmens Oracle.
Es können sowohl relationale Daten als auch objektrelationale Daten gespeichert werden.
Eigenschaften Oracle gehört zusammen mit Microsoft SQL Server und IBM DB2 zu den Marktführern im RDBMS-Segment. Im Großrechner-Bereich sind Sun-Fire-Maschinen mit dem Unix-System Solaris oder IBM-Maschinen häufig verwendete Plattformen. Im Midrange-Bereich werden nahezu alle Unix-Systeme unterstützt und eingesetzt, daneben aber auch OpenVMS. Linux wurde neben Solaris als strategische Hauptplattform längere Zeit favorisiert und findet sehr starke Verbreitung. Windows wird aufgrund der hohen Verbreitung ebenfalls strategisch unterstützt. Oracle ist laut dem DB-Engines Ranking das populärste Datenbankmanagementsystem.DB-Engines Ranking
Das Oracle-Datenbankmanagementsystem kann als Express-Edition (XE) kostenlos genutzt werden. Diese Version ist jedoch stärker eingeschränkt als die entsprechende kostenlose Db2-Version von IBM, weil sie u. a. das Laden von Javaklassen in die Datenbank selbst nicht unterstützt (der JDBC-Treiberzugriff ist jedoch möglich). Zusätzlich gibt es eine Beschränkung von 1 GiB RAM, Nutzung maximal eines CPU-Kerns sowie eine maximale Datenbankgröße von 11 GiB für Anwenderdaten.
Für Studienzwecke ist die Oracle-Datenbank auf der Herstellerseite frei erhältlich. Technische Hemmnisse, wie Lizenz-Server oder Lizenzschlüssel, sind nicht vorhanden. Auch die anderen Produkte des Unternehmens Oracle stehen dort zur Verfügung.
Mit dem Release 10g wurde die Vision eines Oracle-Grid (siehe auch Grid-Computing) weiter umgesetzt: Auch das kleine „g“ im Release-Namen steht für Grid. Kernstück des Oracle-Grid ist der Aktiv/Aktiv-Cluster, der von Oracle unter dem Namen Real Application Cluster (RAC) vertrieben wird. Oracle bietet seit 10g eine eigene Cluster-Manager-Software unter dem Namen Oracle Cluster Ready Services an. Diese wurde erstmals in 9i zunächst für Linux, später auch für Windows freigegeben. Seit Oracle 10g steht diese für jede von Oracle unterstützte Plattform zur Verfügung. Mit der Buchstabenerweiterung „c“ in der Version 12c wird nach eigener Aussage der Fokus auf Cloud-Produkte betont.
Da SQL nur eine beschreibende Sprache ist, wurde eine proprietäre prozedurale Erweiterung von SQL mit dem Namen PL/SQL entwickelt. PL/SQL steht für Procedural Language / Structured Query Language. PL/SQL-Kommandos können ad hoc als anonyme Blöcke eingegeben werden oder in Form von sogenannten „Stored Procedures“ in der Datenbank abgelegt werden.
Es können XML-Datenstrukturen (XMLDB, XDK) gespeichert werden. Das Speichern nichtrelationaler Daten (Video, Musik, Dokumente, Fax etc.) wird mit BLOBs (binary large objects) und CLOBs (character large objects) unterstützt. Die Indizierung von zahlreichen nichtrelationalen Datenformaten wird bereits mitgeliefert. Die Erweiterung um eigene programmatische Indizierungen wird unterstützt. Raumbezogene Daten können relational abgelegt werden, räumliche Indizierungen und Abfragen werden unterstützt (Spatial-Option).
Die Standardeinstellung der Isolationsebene einer Oracle-Datenbank ist „Read committed“, d. h. eine Abfrage sieht alle Daten konsistent in dem Zustand, in dem sie zu Beginn der Abfrage festgeschrieben waren. Man kann auch die Isolationsebenen „Serialize“ oder „Read only“ (kein SQL-Standard) für eine Session oder eine Transaktion festlegen. Die anderen beiden im SQL-Standard definierten Isolationsebenen („Read uncommitted“, „Repeatable read“) werden nicht explizit unterstützt. Durch die Speicherung von Rollback-Informationen führen lesende Zugriffe nie zu Sperren der schreibenden Zugriffe (non-blocking reads) und umgekehrt (non-blocking writes).
Liste weiterer Eigenschaften Implementierung der ACID-Eigenschaften plattformübergreifende Unterstützung verteilter Datenbanken Data-Warehouse-Funktionalität Messaging inklusive JMS OLAP und Data-Mining intelligente Datensicherung (wahlweise mit Block oder Row Change Tracking) Java (man kann Java innerhalb der Datenbank ausführen) Gespeicherte Prozeduren in PL/SQL oder Java (in der XE-Version ohne Java) Unterstützung regulärer Ausdrücke in Abfragen Versionierung von Tabellen (Langzeittransaktionen) „Virtual Private Database“-FunktionalitätOracle Virtual Private Database von Heinz-Wilhelm Fabry, ORACLE Deutschland GmbH Absicherung gegen Instance Failure (z. B. Stromausfall) durch die Option eines Aktiv/Aktiv-Clusters mit Failover-Funktionalität (Oracle RAC), Media Failure (Festplattenfehler) durch optionale Standby-Datenbank und Oracle Dataguard sowie Anwenderfehler mittels Flashback (auf Satzebene, Tabellenebene oder auch datenbankweit) Data-Warehouse Features sind z. B. Datentypen zur Speicherung großer Datenmengen (CLOB, BLOB), Partitioning (Aufteilung der Daten in Untertabellen, etwa nach Datum), transportable Tablespaces, Big Tablespaces (Datendateien mit maximal 128 PiB), Bitmap-Indexe für OLAP-Queries, Star-Transformation, Zugriff auf verteilte Datenbanken, Standby-Datenbank Große Auswahl an eingebauten SQL-Funktionen und analytischen Funktionen, beide durch selbst definierbare Funktionen beliebig erweiterbar Kostenbasierter Optimizer, der automatisch Ausführungspläne zur Laufzeit entsprechend dem vorgegebenen Ziel Durchsatz oder Reaktionszeit erstellt Umfangreiches Sicherheitskonzept zur Verwaltung und Weitergabe von Rechten an allen Datenbankobjekten, Vergabe von Rollen und Policies Zeilenweise Zugriffskontrolle (FGAC) als Ergänzung zur sowieso vorhandenen spaltenweisen Zugriffskontrolle Auditing (Protokollierung aller Zugriffe oder in Teilen) Resource Manager zum dynamischen Verteilen der Ressourcen (Speicher, CPU-Zeit, I/O) auf Profile Ausgefeilte Tuningmöglichkeiten, ab Version 10g durch sogenannte „Advisors“ ergänzt (Datenbank kann sich selbst tunen oder Hinweise geben, Stichwort „ADDM“) Performance Features wie Index-Organized Tables (Tabellen werden als Index abgespeichert, Grundtabelle entfällt) Proprietäre, mit SQL verwobene eingebaute Programmiersprache PL/SQL (native Kompilierung möglich, native Datentypen) Ab Version 8i zusätzlich Verzahnung mit Java im Oracle Kernel (Laden von Java in die Datenbank) Erweiterungen wie Oracle Spatial and Graph, die die Speicherung und Analyse von Geodaten erlauben integrierte Volltextsuche (Oracle Text, in früheren Versionen intermedia Text) Anbindung an Big Data und Hadoop mit Konnektoren
Abweichungen vom ANSI-SQL-Standard
Das Datenbanksystem entspricht, wie die meisten Datenbanksysteme, nicht vollständig dem jeweils gültigen SQL-Standard – vor allem, weil die ersten Versionen von Oracle programmiert wurden, bevor SQL erstmals von der ANSI festgeschrieben wurde. Doch wurden sukzessive ANSI-Standards erfüllt. So wird neben der proprietären Syntax, die auch weiterhin zur Verfügung steht, inzwischen die ANSI-Join-Syntax unterstützt.
Bei einer Portierung von anderen Datenbanksystemen zur Oracle-Datenbank sind unter anderem folgende Abweichungen vom SQL-Standard von Bedeutung:
Der Datentyp date enthält zusätzlich die Uhrzeit. Der Datentyp boolean ist nicht vorhanden. Der numerische Datentyp number hat mehrere numerische Sub-Datentypen: dec, decimal, numeric, double precision, float, int, integer, smallint und real.Oracle Docs - Table 3-6 Predefined Subtypes of NUMBER Data Type Leere Zeichenketten werden nicht vom Nullwert unterschieden. In UNIONs ist der Wert NULL nur mit Zeichenketten statt mit allen Datentypen kompatibel (muss konvertiert werden). Der Datentyp zum Speichern von unterschiedlich langen Zeichenketten heißt in Oracle „VARCHAR2“ und ist auf 4000 Bytes begrenzt. Ab Oracle 12 sind auch 32767 Bytes möglich. Die Angabe des ANSI-Datentyps VARCHAR wird zwar auch unterstützt, doch wird die Spalte intern trotzdem als VARCHAR2 erstellt. In früheren Versionen konnte bei Tabellenspalten vom Typ VARCHAR nur maximal 2000 Zeichen gespeichert werden (bis Version 7) und eine Folge von Leerzeichen wurde als NULL interpretiert (bis Version 6).
Architektur
Ein Oracle-Datenbanksystem, welches von Clients verwendbar ist, besteht aus: einem oder mehreren Listener-Prozessen (Oracle-Listener) einer oder mehreren Datenbank-Instanzen (Oracle-Instance), das eigentliche Datenbankmanagementsystem (DBMS) eine Menge von Datenbank-Dateien (Oracle-Database), die eigentliche Datenbank (DB)
Eine Menge von Datenbank-Dateien kann von mehreren Datenbank-Instanzen gleichzeitig geöffnet sein, dies bezeichnet man als Oracle RAC. Eine Datenbank-Instanz kann zu einem Zeitpunkt nur eine Menge von Datenbank-Dateien offen haben.
Im Einzelnen kann das System wie folgt charakterisiert werden:
Listener-Prozess (Oracle-Listener) Nimmt Verbindungswünsche von Datenbank-Clients entgegen und verbindet sie mit einer Datenbank-Instanz. Startet Oracle-Server-Prozesse für Datenbank-Clients.
Datenbank-Instanz (Oracle-Instance) Hier erfolgt die Ressourcen-Zuteilung für CPU und RAM. Eine Instanz besteht aus mehreren Oracle-Server-Prozessen (Vordergrund- und Hintergrundprozesse), welche den gemeinsamen Arbeitsspeicher in Form von Shared Memory bereitstellen. Die Vordergrundprozesse nehmen Datenbankabfragen (Query) oder Datenmodifikationsanweisungen (DML) in der Sprache SQL von den Datenbank-Clients entgegen, führen diese Aufträge aus und liefern Ergebnisdaten zurück. Dabei agieren die Oracle-Server-Prozesse teilweise direkt auf den Datenbank-Dateien, teilweise übertragen sie jedoch auch Aktivitäten auf die Hintergrundprozesse der Datenbank-Instanz. Die wichtigsten Hintergrundprozesse sind: Der Database Writer (DBWR), der Änderungen an den Datenblöcken in die Data-Files schreibt. Der Log Writer (LGWR), der Redo-Informationen in die Redo-Log-Files schreibt. Der Archiver (ARCH), der Redo-Log-Files archiviert, sofern die Datenbank im sogenannten Archive-Log-Modus betrieben wird. Der System Monitor (SMON), der Konsistenzinformationen in die Control-Files sowie in die Header von Data-Files und in Redo-Log-Files schreibt. Beim Wiederanlauf einer Datenbank nach einem Crash prüft der System-Monitor diese Konsistenzinformationen in einem Quercheck über alle Control-Files, Data-Files und Redo-Log-Files. Sollte der SMON Inkonsistenzen feststellen, so leitet der System-Monitor eine Crash Recovery ein, bei dem aus den Redo-Log-Files solange fehlende Transaktionen in die Data-Files übertragen werden, bis die Datenbank mit allen Data-Files wieder in sich konsistent ist. Der Prozess Monitor (PMON), der die Oracle-Prozesse überwacht.
Der Oracle System Identifier (Kurzform: SID) ist die Kennung für die Instanz von Oracle, die auf dem Server läuft. Diese Kennung ist erforderlich, wenn eine Verbindung zu einem Server hergestellt werden soll, der mehr als eine Instanz einer Oracle-Datenbank unterstützt. Die SID wird in network/admin/tnsnames.ora unter dem Oracle-Installationsverzeichnis gespeichert.
Die Datenbank-Instanz benötigt auch einige Dateien zur Steuerung und Protokollierung, diese werden unterschieden nach: Parameter-Files Speicherort der Control-Files. Initiale Angabe vom Hauptspeicher und weitere Attribute. Trace-Files Dateien zur Diagnose, meist bei Performance-Problemen. Alert-Files Dateien speziell für Fehlermeldungen.
Menge von Datenbank-Dateien (Oracle-Database) Hier werden die Daten gespeichert. Dies erfolgt zumeist in Dateien in einem Dateisystem. Es werden jedoch auch Raw Devices oder per ASM (Oracle Automatic Storage Management Cluster File System) verwaltete Diskgroups verwendet. Man unterscheidet die Dateiarten: Data-Files die eigentlichen Datendateien mit den Dateninhalten.