Zum Inhalt springen
L

Wikipedia · einfach zusammengefasst · Stand

Oracle (Datenbanksystem)

Oracle Database (auch Oracle Database Server, Oracle RDBMS) ist eine Datenbankmanagementsystem-Software des Unternehmens Oracle.

Inhalt6 Abschnitte
  1. 1. Grundidee und Bedeutung
  2. 2. Funktionen und Datenmodell
  3. 3. Abweichungen vom SQL-Standard
  4. 4. Architektur und Arbeitsweise
  5. 5. Werkzeuge und Lizenzierung
  6. 6. Entwicklung der Versionen

Grundidee und Bedeutung

Oracle Database, auch Oracle Database Server oder Oracle RDBMS genannt, ist eine proprietäre Datenbankmanagementsystem-Software des Unternehmens Oracle. Ein Datenbankmanagementsystem verwaltet Daten, stellt Abfragen bereit und sorgt dafür, dass mehrere Benutzer oder Programme kontrolliert auf dieselben Daten zugreifen können. Oracle kann relationale Daten speichern, also Daten in Tabellen mit Beziehungen, und objektrelationale Daten, bei denen relationale Datenbanktechnik mit objektorientierten Konzepten verbunden wird.

Oracle gehört zusammen mit Microsoft SQL Server und IBM DB2 zu den Marktführern im RDBMS-Segment. Laut DB-Engines Ranking ist Oracle das populärste Datenbankmanagementsystem. Unterstützte Betriebssysteme sind Linux, Windows, Solaris, HP-UX und AIX. Als Programmiersprachen werden unter anderem Assemblersprache, C, C++ und Java genannt. Die erste Veröffentlichung erfolgte 1979; als aktuelle Version wird 23ai als Nachfolger von Long Term Release 19c (19.11) genannt, Stand Januar 2025.

Die Express Edition (XE) kann kostenlos genutzt werden, ist aber eingeschränkt: 1 GiB RAM, maximal ein CPU-Kern und maximal 11 GiB Datenbankgröße für Anwenderdaten. Außerdem unterstützt sie nicht das Laden von Java-Klassen in die Datenbank selbst, obwohl JDBC-Treiberzugriff möglich ist. Für Studienzwecke ist die Oracle-Datenbank auf der Herstellerseite frei erhältlich; technische Hürden wie Lizenz-Server oder Lizenzschlüssel werden im Artikel nicht genannt.

Funktionen und Datenmodell

Oracle verwendet SQL als beschreibende Abfragesprache. Weil SQL selbst keine prozedurale Programmiersprache ist, entwickelte Oracle PL/SQL, ausgeschrieben Procedural Language / Structured Query Language. PL/SQL-Kommandos können direkt als anonyme Blöcke eingegeben oder als Stored Procedures dauerhaft in der Datenbank gespeichert werden. Stored Procedures sind gespeicherte Programme, die in der Datenbank ausgeführt werden können.

Oracle unterstützt verschiedene Datenarten. XML-Datenstrukturen können mit XMLDB und XDK gespeichert werden. Nichtrelationale Daten wie Video, Musik, Dokumente oder Fax werden mit BLOBs, also binary large objects, und CLOBs, also character large objects, unterstützt. Auch die Indizierung vieler nichtrelationaler Datenformate ist enthalten; eigene programmatische Indizierungen können ergänzt werden. Raumbezogene Daten lassen sich relational speichern, und räumliche Indizierungen sowie Abfragen werden durch die Spatial-Option unterstützt.

Ein wichtiges Verhalten betrifft gleichzeitige Zugriffe. Die Standardeinstellung der Isolationsebene ist „Read committed“. Das bedeutet: Eine Abfrage sieht alle Daten konsistent in dem Zustand, in dem sie zu Beginn der Abfrage festgeschrieben waren. Für eine Session oder Transaktion können auch „Serialize“ oder „Read only“ festgelegt werden, wobei „Read only“ kein SQL-Standard ist. Die SQL-Standard-Isolationsebenen „Read uncommitted“ und „Repeatable read“ werden nicht explizit unterstützt. Durch Rollback-Informationen führen lesende Zugriffe nie zu Sperren schreibender Zugriffe und umgekehrt; der Artikel nennt dies non-blocking reads und non-blocking writes.

Weitere Eigenschaften sind ACID-Eigenschaften, also Anforderungen an zuverlässige Transaktionen, verteilte Datenbanken, Data-Warehouse-Funktionen, Messaging inklusive JMS, OLAP und Data-Mining, reguläre Ausdrücke in Abfragen, Versionierung von Tabellen, „Virtual Private Database“, Auditing, ein umfangreiches Sicherheitskonzept mit Rollen und Policies sowie ein Resource Manager zur Verteilung von Speicher, CPU-Zeit und I/O. Für Ausfallsicherheit nennt der Artikel Oracle RAC gegen Instance Failure, Standby-Datenbanken und Oracle Dataguard gegen Media Failure sowie Flashback gegen Anwenderfehler.

Abweichungen vom SQL-Standard

Oracle entspricht, wie die meisten Datenbanksysteme, nicht vollständig dem jeweils gültigen SQL-Standard. Ein Grund ist, dass die ersten Versionen entstanden, bevor SQL erstmals von ANSI festgeschrieben wurde. Später wurden ANSI-Standards schrittweise erfüllt. Neben der proprietären Syntax, die weiter verfügbar ist, unterstützt Oracle inzwischen auch die ANSI-Join-Syntax.

Für die Portierung von anderen Datenbanksystemen zu Oracle sind mehrere Abweichungen wichtig. Der Datentyp date enthält zusätzlich die Uhrzeit. Ein Datentyp boolean ist nicht vorhanden. Der numerische Datentyp number umfasst mehrere numerische Sub-Datentypen, darunter dec, decimal, numeric, double precision, float, int, integer, smallint und real. Leere Zeichenketten werden nicht vom Nullwert unterschieden. In UNIONs ist der Wert NULL nur mit Zeichenketten statt mit allen Datentypen kompatibel und muss gegebenenfalls konvertiert werden.

Der Datentyp für unterschiedlich lange Zeichenketten heißt in Oracle VARCHAR2 und ist auf 4000 Bytes begrenzt. Ab Oracle 12 sind auch 32767 Bytes möglich. Der ANSI-Datentyp VARCHAR wird zwar unterstützt, die Spalte wird intern aber trotzdem als VARCHAR2 erstellt. In früheren Versionen konnten Tabellenspalten vom Typ VARCHAR bis Version 7 maximal 2000 Zeichen speichern; bis Version 6 wurde eine Folge von Leerzeichen als NULL interpretiert.

Architektur und Arbeitsweise

Ein für Clients nutzbares Oracle-Datenbanksystem besteht aus drei Hauptteilen: einem oder mehreren Listener-Prozessen, einer oder mehreren Datenbank-Instanzen und einer Menge von Datenbank-Dateien. Der Listener nimmt Verbindungswünsche von Datenbank-Clients entgegen, verbindet sie mit einer Datenbank-Instanz und startet Oracle-Server-Prozesse für diese Clients.

Die Datenbank-Instanz ist das eigentliche Datenbankmanagementsystem. In ihr werden CPU und RAM zugeteilt. Sie besteht aus Oracle-Server-Prozessen, also Vordergrund- und Hintergrundprozessen, sowie gemeinsamem Arbeitsspeicher in Form von Shared Memory. Vordergrundprozesse nehmen Datenbankabfragen und Datenmodifikationsanweisungen in SQL entgegen, führen sie aus und liefern Ergebnisse zurück. Manche Arbeiten erfolgen direkt auf den Datenbank-Dateien, andere werden an Hintergrundprozesse übergeben.

Zu den wichtigsten Hintergrundprozessen gehören DBWR, LGWR, ARCH, SMON und PMON. Der Database Writer (DBWR) schreibt Änderungen an Datenblöcken in die Data-Files. Der Log Writer (LGWR) schreibt Redo-Informationen in die Redo-Log-Files. Der Archiver (ARCH) archiviert Redo-Log-Files, wenn die Datenbank im Archive-Log-Modus läuft. Der System Monitor (SMON) schreibt Konsistenzinformationen und kann nach einem Crash eine Crash Recovery einleiten. Dabei werden fehlende Transaktionen aus den Redo-Log-Files in die Data-Files übertragen, bis die Datenbank wieder konsistent ist. Der Prozess Monitor (PMON) überwacht Oracle-Prozesse.

Die eigentlichen Daten liegen in der Oracle-Database, also in einer Menge von Datenbank-Dateien. Diese werden meist in Dateien eines Dateisystems gespeichert, können aber auch als Raw Devices oder mit ASM verwaltete Diskgroups vorliegen. Data-Files enthalten die Dateninhalte. Redo-Log-Files dienen als Transaktionslogs und speichern Datenblockänderungen, damit festgeschriebene Änderungen nach einem ungeplanten oder beabsichtigten Ende des Systems wiederhergestellt werden können. Control-Files enthalten Struktur- und Zustandsinformationen, darunter die System-Change-Number (SCN) sowie Pfade und Namen aller Data-Files und Redo-Log-Files.

Eine Menge von Datenbank-Dateien kann von mehreren Datenbank-Instanzen gleichzeitig geöffnet sein; das heißt Oracle RAC. Eine einzelne Datenbank-Instanz kann zu einem Zeitpunkt nur eine Menge von Datenbank-Dateien offen haben. Der Oracle System Identifier, kurz SID, ist die Kennung der Oracle-Instanz auf einem Server und wird benötigt, wenn ein Server mehr als eine Instanz unterstützt.

Werkzeuge und Lizenzierung

Für Entwicklung und Verwaltung gibt es Werkzeuge von Oracle und von anderen Herstellern. SQL*Plus ist ein kommandozeilenorientiertes Werkzeug zur Administration und Bedienung von Oracle-Datenbanken. Damit lassen sich Verwaltungstätigkeiten sowie Eingabe, Änderung, Abfrage und Löschen von Daten durchführen; wegen der Kommandozeilenorientierung sind umfangreiche SQL-Kenntnisse nötig. Oracle SQL Developer ist ein kostenloses Java-Programm mit grafischer Oberfläche für Datenbankentwickler. Es unterstützt das Bearbeiten von Datenbankobjekten, SQL-Statements und Skripten, PL/SQL-Prozeduren und einfache Datenbankanalyse. Weitere Oracle-Werkzeuge sind unter anderem Oracle Enterprise Manager Database Control, Oracle Enterprise Manager Grid Control, Data Guard Control, Server Control und Oracle JDeveloper.

Werkzeuge anderer Hersteller sind zum Beispiel TOAD, TOra, PL/SQL Developer, SQL Workbench/J, SQuirreL SQL Client und Aqua Data Studio. Einige richten sich besonders an Entwicklung und Verwaltung von Oracle-Datenbanken, andere sind datenbankübergreifend.

Die Lizenzierung war lange entweder nach der Anzahl der Prozessorkerne oder nach der Anzahl sogenannter Named User geregelt. Named User sind benannte oder registrierte Benutzer; entscheidend ist die Anzahl der möglichen Benutzer, nicht die Zahl der tatsächlichen Benutzer. In der Enterprise Edition bleibt dies so. Bei Intel-Systemen benötigt man eine Lizenz für 2 Kerne, bei Sparc eine Lizenz für 4 Kerne. Für Standard Edition und Standard Edition One ist seit einiger Zeit auch eine Lizenzierung abhängig von der Anzahl der CPU-Sockel möglich. Änderungen der Lizenzierung der Standard Edition ab 12c im Zusammenhang mit Oracle RAC sowie die Lizenzpolitik in virtualisierten Umgebungen führten zu Diskussionen und Kritik vieler Anwender. Die Express Edition ist kostenlos nutzbar und darf auch als Datenbank für eigene Programmentwicklungen an Dritte weitergegeben werden, ohne dass eine Lizenz erworben werden muss.

Entwicklung der Versionen

Die Anfänge der Oracle-Datenbank gehen auf die Forschungsarbeit von Edgar F. Codd zurück, der in den 70er Jahren im Auftrag von IBM den Datenbank-Prototyp System R entwickelte. Diese Studie inspirierte Larry Ellison zur Entwicklung einer eigenen Datenbank namens Oracle. Die Datenbank kam direkt als Version 2 auf den Markt, weil man befürchtete, dass sich eine Version 1 schlechter verkauft.

1979 erschien Oracle V2 mit Basisfunktionen für Queries und Joins, aber ohne Transaktionen. 1983 brachte Version 3 Transaktionen mit COMMIT und ROLLBACK. 1984 führte Version 4 read-consistency ein: Lesende Transaktionen erhalten freien und konsistenten Zugriff, auch wenn Daten gerade verändert werden; die frühere Version der Daten wird in Rollback-Segmenten aufgehoben. Das Verfahren heißt heute Multiversion Concurrency Control. 1985 erschien Version 5 als Datenbank in Client-Server-Architektur. 1988 brachte Version 6 unter anderem PL/SQL, Oracle Forms v3 und row-level locking. 1992 folgte Version 7 mit Fremdschlüssel-Beziehungen, Stored Procedures, Triggern, dem Datentyp LONG bis 2 GiB und dem Package UTL_FILE.

Version 8 erschien 1997, Version 8i 1999. Neu waren unter anderem ein kostenbasierter Anfrageoptimierer, objektorientierte Daten, eine native Java Virtual Machine, Unicode-Support (UTF-8), BLOB, CLOB und NCLOB, funktionsbasierte Indizes sowie PL/SQL-Erweiterungen wie Execute Immediate, Bulk-Collect und FORALL. Version 9i erschien 2001 und brachte unter anderem Online-Reorganisation von Tabellen, automatische Verwaltung von Rollbacksegmenten, Flashback, SPFILE, das Case-Statement, MERGE, Full Outer Joins, With-Klausel, mehr XML-Funktionen und iSQL*Plus.

Version 10g erschien 2003. Das „g“ steht für Grid; wichtig war die weitere Umsetzung eines Oracle-Grid mit Real Application Cluster (RAC) und Oracle Cluster Ready Services. Funktionen waren unter anderem Recycle-Bin, ASM, reguläre Ausdrücke, Data Pump, Oracle Warehouse Builder, ADDM und SQL Tuning Advisor. Version 11g erschien 2007 als Release 1 mit clientseitigem Abfrage-Cache, Unicode 5.0, SecureFiles, virtuellen Tabellen-Spalten, unsichtbaren Indizes und Real Application Testing; Release 2 folgte 2009 mit Verbesserungen bei ASM, Datenkompression und Oracle RAC One Node.

Version 12c erschien 2013. Das „c“ betont laut Oracle den Fokus auf Cloud-Produkte. Neu waren unter anderem VARCHAR2 bis 32767 Bytes, Unicode 6.1, unsichtbare Spalten, OFFSET und FETCH NEXT, Multitenant mit bis zu 252 „Pluggable“ Datenbanken innerhalb einer Container-Datenbank, automatische Datenoptimierung mit Heat Maps, JSON-Verwendung und In-Memory-Datenbank. Release 2 erschien im Dezember 2016 in der Oracle Cloud und im März 2017 für eigene Rechenzentren oder Hosts; es brachte unter anderem NFS-Server-Funktion, Sharding, Approximate Query Processing, Verbesserungen bei Performance, Optimizer, In-Memory, Sicherheit und eine maximale Identifier-Länge von 128 Bytes statt früher 30 Bytes.

Nach Oracle 12.2 beschloss Oracle, neue Versionen jährlich zu veröffentlichen und mit den letzten beiden Ziffern des Jahres zu benennen. 18c erschien im Juli 2018 mit neuen Funktionen in Security, Performance, Data Warehousing, Multitenant und RMAN. In den Jahren 2019, 2021 und 2023 wurden 19c, 21c und 23c veröffentlicht. Anfang 2025 wurde 23ai als Nachfolger von 23c freigegeben.

Weiterlesen

Microsoft Windows Microsoft Windows (englische Aussprache [ˈmaɪ.kɹoʊ.sɒft ˈwɪn.doʊz]) bzw. Windows ist eine Reihe proprietärer grafischer Betriebssystemfamilien von Microsoft … Assemblersprache Eine Assemblersprache, kurz auch Assembler genannt (von englisch to assemble ‚zusammenfügen'), ist eine Programmiersprache, die auf den Befehlsvorrat eines … C (Programmiersprache) C ist eine imperative und prozedurale Programmiersprache, die der Informatiker Dennis Ritchie in den frühen 1970er Jahren an den Bell Laboratories entwickelte. Java (Programmiersprache) Java ist eine objektorientierte Programmiersprache und eine eingetragene Marke des Unternehmens Sun Microsystems, welches 2010 von Oracle übernommen wurde. Relationale Datenbank Eine relationale Datenbank ist eine digitale Datenbank, die zur elektronischen Datenverwaltung in Computersystemen dient und auf einem tabellenbasierten … Marktanteil Als Marktanteil (englisch market share) bezeichnet man allgemein in der Wirtschaft und speziell in der Marktforschung den in Prozent ausgedrückten … Java-Technologie Programme für die Java-Plattform werden in der Regel mit Hilfe der Programmiersprache Java erstellt. Die Verwendung anderer Programmiersprachen ist möglich, z. Random-Access Memory Die gängigsten Formen gehören zu den Halbleiterspeichern. RAM wird als integrierter Schaltkreis hauptsächlich in Silizium-Technologie realisiert und in allen … Prozessor Aufbau und Funktionale Einheiten · Hauptprozessor (CPU) und Mehrprozessorkerne · Steuer- bzw. Leitwerk · Rechenwerk und Register · Datenleitungen · Caches und MMU. Lizenzschlüssel Die ersten drei Zeichen dürfen keine der folgenden Gruppen sein: 333, 444, 555, 666, 777, 888 oder 999. · Die nächsten sieben Zeichen müssen Zahlen von 0-8 sein. Extensible Markup Language Erweiterbare Auszeichnungssprache), abgekürzt XML, ist eine Auszeichnungssprache zur Darstellung hierarchisch strukturierter Daten im Format einer Textdatei … ACID ACID, deutsch auch AKID, ist eine Abkürzung in der Informatik. Es beschreibt häufig erwünschte Eigenschaften von Transaktionen in …