iX 12/2017
S. 120
Praxis
Datenbanken
Aufmacherbild

Oracle 12.2 mit flexibleren Datenstrukturen

Letzte Runde

Oracle 12.2 reagiert mit Neuerungen bei REST-Schnittstellen, JSON-Objekten und Sharding auf aktuelle Entwicklungen in Unternehmen – und stellt auf einen neuen Veröffentlichungsrhythmus um.

In vielen Bereichen ergänzt und vervollständigt Release 2 der Oracle-Datenbank die Funktionen, die bereits mit dem Vorgänger 12.1 eingeführt wurden. Beispiele sind die Erweiterungen von Oracle Multitenant oder die JSON-Unterstützung in der Datenbank. R2 enthält aber auch einige neue Funktionen, etwa ein neues Sharding. Der Artikel gibt einen Überblick über die wichtigsten Neuerungen; allein aus Platzgründen können nicht alle aufgeführt werden. Wer an einer vollständigen Übersicht interessiert ist, dem sei ein Blick in den „New Features Guide“ in der Dokumentation empfohlen. Ob die Datenbank aus der Cloud gemietet oder „on Premises“ selbst betrieben wird, macht für die neuen Funktionen keinen Unterschied.

Oracle 12.2 ist die letzte Release im bekannten Versionierungsschema; künftig führt der Hersteller ein neues ein. Wurde bislang etwa alle 18 bis 24 Monate eine Major Release herausgebracht, auf die zwei Minor Releases folgten, sind nun jährliche Major Releases geplant. Die Versionsnummer soll sich am Erscheinungsjahr orientieren. Das bedeutet, die Anfang 2018 erscheinende Version wird nicht 13c, sondern 18c heißen. Im Drei-Monats-Abstand soll es Release Updates (RU) geben, die ausgewählte Bugfixes enthalten und am ehesten den bisherigen Bundle Patches entsprechen. Möchte man seine Datenbank möglichst lange auf Basis eines bestimmten RU betreiben, wird darüber hinaus die Möglichkeit bestehen, eine Release Update Revision (RUR) einzuspielen, die lediglich Fehler in den Bugfixes eines spezifischen RU behebt.

SQL für alle Daten

Jede Version der Oracle-Datenbank führt neue Funktionen im Kernbereich von SQL und PL/SQL (der hauseigenen Programmiersprache) ein – so auch 12.2. An einigen Beispielen ist erkennbar, dass Oracle seine SQL-Funktionen für den Umgang mit flexiblen Datenstrukturen rüstet und mit größerer Fehlertoleranz versieht. Dies war schon in der Vorversion 12.1 bei den JSON-Funktionen so und setzt sich mit der aktuellen Release fort.

Listing 1: String in Zahl umwandeln und im Fehlerfall NULL zurückliefern

select to_number('XXX' DEFAULT NULL ON CONVERSION ERROR) as num_value from dual

NUM_VALUE
---------
- NULL -

Listing 2: Eine SQL-Ergebnisspalte nach DATE umwandeln und im Fehlerfall NULL zurückgeben

select to_date( {Tabellenspalte} DEFAULT NULL ON CONVERSION ERROR, 'YYYY-MM-DD HH24:MI:SS' ) 
  from {tabelle}

Soll ein String (VARCHAR2) in einen numerischen, einen Datumswert oder einen Zeitstempel umgewandelt werden, gibt es hierfür die Funktionen TO_NUMBER, TO_DATE und TO_TIMESTAMP. Im Fehlerfall (der String lässt sich nicht konvertieren) löst Oracle bisher stets einen „harten“ Fehler aus. Entwickler haben sich daher oft eigene Konvertierungsfunktionen in PL/SQL geschrieben, die in solchen Fällen NULL oder einen Default-Wert zurückgeben. Das alles ist mit 12.2 nicht mehr nötig, wie die Listings 1, 2 und 3 zeigen.

Listing 3: VALIDATE_CONVERSION stellt fest, ob sich ein Wert umwandeln lässt

select VALIDATE_CONVERSION( '90' AS NUMBER ) as val_conv from dual;

VAL_CONV
--------
       1

select VALIDATE_CONVERSION( 'xyz' AS NUMBER ) as VAL_CONV from dual;

VAL_CONV
--------
       0

Besonders nützlich ist die Neuerung im Zusammenhang mit externen Tabellen, wenn Dateien im Dateisystem des Datenbankservers als Tabelle aufgefasst werden. Hier kommt es oft vor, dass einzelne Zeilen ungültige Daten enthalten – die neuen SQL-Funktionen vereinfachen die Arbeit mit solchen Daten. Passend dazu stellt die neue Funktion VALIDATE_CONVERSION fest, ob eine Konvertierung möglich ist (Listing 3).