Logo Oracle Deutschland   Application Express Community
Oracle's Eleven: Das Beste aus der 11g-Datenbank

Im Februar 2011 erfuhren 300 Teilnehmer der Veranstaltungsreihe Oracle's Eleven - das Beste aus der 11g-Datenbank mehr über die technischen Möglichkeiten der Oracle-Datenbank. Im Fokus steht dabei die in Standard- und Enterprise Edition bereits eingebaute Funktionalität.

Für die Mitglieder der deutschsprachigen Communities stellen wir diese Informationen exklusiv nochmals zusammen. Wenn Sie nicht die Gelegenheit zur Teilnahme hatten, finden Sie hier einen groben Überblick über die behandelten Themen und weiterführende Links.

Die Folien zur Veranstaltungsreihe stehen hier zur Verfügung - Geben Sie Editionen als Schlüsselwort ein.

http://apex.oracle.com/folien

Inhaltsverzeichnis
  1. Überblick über die Datenbankeditionen
  2. Funktionen, die Sie sich schon immer gewünscht haben - die Grundausstattung der Datenbank
  3. Die Sicherheitsausstattung in der Enterprise Edition

Überblick über die Datenbankeditionen

Die Oracle-Datenbankeditionen

Abbildung 1: Die Oracle-Datenbankeditionen

Die Oracle-Datenbank kann in verschiedenen Editionen lizensiert werden. Am Anfang steht die kostenlose Variante OracleXE. Eine OracleXE-Datenbank darf kostenlos heruntergeladen und - auch produktiv - genutzt werden. Allerdings sind einige Limitierungen zu beachten - diese sind in der Dokumentation genau beschrieben. Weiterhin ist zu erwähnen, dass für OracleXE-Installationen kein Oracle-Support möglich ist - bei Fragen gibt das OTN-Forum Hilfestellung. Konsequenterweise können auch keine Patches aus Metalink heruntergeladen werden.

Die Standard Edition One ist als Lizenz für kleinere Systeme geeignet. Die Limitierungen der OracleXE-Datenbank fallen weg und es kann auch ein Wartungsvertrag geschlossen werden. Die Standard Edition One enthält alle Features der Standard-Edition, kann aber nur auf maximal 2 CPU-Sockets betrieben werden. Die Features im einzelnen aufzulisten, würde zu weit führen - Kapitel 2 gibt einen kleinen Einblick. Die Standard Edition der Oracle-Datenbank ist für "mittlere" Systeme vorgesehen und kann auf bis zu 4 Sockets betrieben werden. Eine Besonderheit der Standard Edition ist die Möglichkeit, ein RAC-Cluster aufzusetzen. Es gilt dabei die gleiche Obergrenze: im gesamten Cluster dürfen maximal 4 Sockets vorhanden sein. Die Anzahl der tatsächlichen CPU-Kerne spielt bei den Standard-Editionen übrigens noch keine Rolle - erst bei der nachfolgend beschriebenen Enterprise Edition ist das von Belang.

Die Enterprise Edition ist für unternehmensweise Anwendungen ausgelegt. Es gibt keine Limits hinsichtlich der Anzahl CPU oder Sockets, auf denen die Datenbank laufen darf. Neben allen Features der Standard Edition sind zahlreiche weitere Funktionen enthalten, die vor allem auf den verbesserten Betrieb von Datenbanken in großen Rechenzentren hin abzielen. Eine (allerdings nicht vollständige) Liste von Datenbankfeatures mitsamt deren Zuordnung zu Standard- oder Enterprise Edition finden Sie in der Dokumentation "Licensing Guide".

Zurück zum Anfang des Artikels

Die Grundausstattung der Datenbank

Die "Grundausstattung der Datenbank" findet sich in der Standard Edition und der Standard Edition One wieder. Die darin enthaltenen Funktionen richten sich vor allem an Entwickler - so sind fast alle (Ausnahmen bestätigen wie immer die Regel) SQL- und PL/SQL-Funktionen bereits in der Standard Edition verfügbar. Natürlich können im Rahmen dieses Artikels nicht alle SQL- und PL/SQL-Funktionen betrachtet werden - wie auf der Veranstaltung werden wenige, interessante Funktionen hervorgehoben.

Die Leser der APEX-Community wissen längst, dass APEX die Entwicklung von Anwendungen mit bislang ungeahnter Produktivität erlaubt. Das Inhaltsverzeichnis der APEX Community ist voll von Tipps, Tricks und Howto-Dokumenten. Für Anfänger sei der Einsteigerbereich mit sechs Tutorials zum Einstieg in APEX genannt - hiermit bekommt man recht schnell einen Eindruck von der Art und Weise, wie Anwendungen mit APEX gebaut werden.

Von der MT AG aus Ratingen gibt es Einsteigertutorials auf YouTube. Darin lässt sich "live" verfolgen, wie einfach sich Anwendungen mit APEX erstellen lassen.

Neben den "normalen" SQL-Operationen, die jede Datenbank beherrscht (INSERT, UPDATE, DELETE), zeichnet sich die Oracle-Datenbank vor allem durch ihre Funktionsfülle aus. Neben normalen Tabellen hat die Oracle-Datenbank spezielle Funktionen für XML-Verarbeitung, Geodaten, Bilder und Dokumente und vieles mehr. Auch spezielle Such- und Analysefunktionen stehen bereit. Ein "brandneues" Feature der 11g-Datenbank ist die Ähnlichkeitssuche für Namen (Name Search), mit der sich auch falsch geschriebene Namen in Tabellen finden lassen.

Ähnlichkeitssuche für Namen in Aktion

Abbildung 2: Ähnlichkeitssuche für Namen in Aktion

Damit das Name Search-Feature nutzbar wird, reicht es allerdings nicht aus, Oracle 11g Release 2 (11.2) aus dem Technet herunterzuladen. Das Feature steht erst bereit, wenn das Patchset 11.2.0.2 installiert wurde. Wie Sie den Oracle TEXT Index für die Ähnlichkeitssuche einrichten, ist im deutschsprachigen Oracle TEXT Blog ausführlich beschrieben. Wie man in einer APEX-Anwendung mit Oracle TEXT eine Volltextrecherche ganz allgemein aufsetzt, ist in diesen beiden Community-Tipps beschrieben.

Flashback Query ist eine schon etwas älteres Funktionalität - sie wurde mit Oracle9i eingeführt. Flashback Query erlaubt es, kurz gesagt, eine SQL-Abfrage "in der Vergangenheit" auszuführen. In den interaktiven APEX-Berichten ist Flashback Query bereits eingebaut (Abbildung 3).

Flashback Query in einem interaktiven APEX-Bericht

Abbildung 3: Flashback Query in einem interaktiven APEX-Bericht

Wie weit man "in die Vergangenheit" kommt, richtet sich danach, wie die Datenbank vom DBA aufgesetzt wurde - hier spielt vor allem die Größe des sog. UNDO-Tablespace und der Datenbankparameter UNDO_RETENTION eine Rolle. Auf produktiven Systemen sollte eine Frist von 15 bis 30 Minuten realistisch sein.

Wie man an den interaktiven APEX-Berichten erkennen kann, ist Flashback Query am interessantesten, wenn man es dem Endanwender direkt in der Anwendung anbieten kann. Einen versehentlich gelöschten Datensatz kann dieser dann selbst reparieren. Allerdings bietet der interaktive Bericht nur die Möglichkeit des "Betrachtens" zu einem früheren Zeitpunkt an - reizvoll wäre es, die Informationen in ein APEX-Formular zu laden und dann mit Mausklick eine Art Insert Back durchzuführen. Wie Sie das umsetzen und Flashback Query auch in anderen APEX-Komponenten (Formulare, "klassische" Berichte) nutzen können, beschreibt ein Community Tipp.

Darüber hinaus bietet die Datenbank zahlreiche weitere Funktionen und Werkzeuge an - kennt man sie, kann sich die tägliche Arbeit doch erheblich erleichtern.

  • Mit der LISTAGG-Funktion steht ab Oracle11g Release 2 auch eine Aggregatsfunktion für VARCHAR2-Spalten bereit. Das folgende Beispiel illustriert die Funktion am Beispiel der Tabelle EMP.
    select 
     deptno, 
     listagg(ename, ':') within group (order by ename) ename_list 
    from emp 
    group by deptno
    
        DEPTNO ENAME_LIST
    ---------- ----------------------------------------
            10 CLARK:KING:MILLER
            20 ADAMS:FORD:JONES:SCOTT:SMITH
            30 ALLEN:BLAKE:JAMES:MARTIN:TURNER:WARD
    
    Im Blog SQL und PL/SQL in Oracle finden Sie eine ähnliche (nicht ganz so mächtige) Funktion für Oracle10g und Oracle11g Release 1.

  • Wenn es darum geht, XML aus Tabellendaten zu erzeugen, finden sich in Blogs, Diskussionsforen und Online-Artikeln zahlreiche Varianten und Spielarten. Zu empfehlen ist mittlerweile nur noch eine, nämlich die Verwendung der auch im SQL-Standard enthaltenen SQL/XML-Funktionen. Damit lässt sich XML per SQL SELECT-Anweisung erzeugen; die Funktionen erlauben das einfache "Zusammenbauen" des XML-Dokumentes. Im Blog SQL und PL/SQL in Oracle finden sich zwei Tutorials, welche den Umgang mit den Funktionen beschreiben ...
    Interessant sind diese Funktionen, wenn bspw. RSS-Feeds anhand von Tabellendaten bereitgestellt werden sollen; für diesen speziellen Anwendungsbereich ist ebenfalls ein APEX Community-Tipp verfügbar.
  • Reguläre Ausdrücke werden in der Anwendungsentwicklung sehr häufig verwendet - erlauben sie dem Entwickler doch, sehr komplexe Prüfungen, in kompakter Syntax, auszudrücken. In der Oracle-Datenbank werden reguläre Ausdrücke seit der Version 10g unterstützt. Die Funktionen REGEXP_LIKE, REGEXP_COUNT, REGEXP_SUBSTR, REGEXP_REPLACE und REGEXP_INSTR erlauben die einfache Nutzung der regulären Ausdrücke in SQL-Abfragen, DML-Anweisungen, Constraint-Definitionen und vielem mehr. Zu regulären Ausdrücken gibt es ebenfalls einen Community-Tipp:
  • Geht es daran, Daten mit SQL-Abfragen auszuwerten, stehen zahlreiche SQL-Funktionen bereit - Aggregatsfunktionen wie SUM, AVG, MIN oder MAX kennt nahezu jedermann. Neben der normalen Anwendung mit GROUP BY stehen Sie aber auch als Analytische Funktionen bereit - die Tabellenzeilen, auf die das jeweilige Aggregat berechnet wird, lassen sich dann wesentlich flexibler bestimmen als mit dem klassischen GROUP BY. Gleitende Durchschnitte, "laufende Summen" und andere Berechnungen sind mit einfachen SQL-Abfragen machbar. Es gibt hierzu ebenfalls bereits Community-Tipps:
    Besonders hervorzuheben ist die Tatsache, dass auch SQL-Funktionen für die einfache lineare Regression bereitstehen; das Finden der Parameter für eine Funktion, die nach der Methode der kleinsten Quadrate den minimale Abweichung zu den vorhandenen Datenpunkten aufweist, wird einfach mit den SQL-Funktionen REGR_SLOPE und REGR_INTERCEPT realisiert (Abbildung 4).
    with regr_koeffizienten as (
     select 
       REGR_INTERCEPT(UMSATZ_EUR, WERBUNG_TV_EUR) as A,
       REGR_SLOPE(UMSATZ_EUR, WERBUNG_TV_EUR)     as B
     from verkauf
    )
    select 
      a + b * WERBUNG_TV_EUR as UMSATZ_PROGNOSE
    from VERKAUF, REGR_KOEFFIZIENTEN
    

Einfache lineare Regression mit SQL-Funktionen als APEX Diagramm

Abbildung 4: Einfache lineare Regression mit SQL-Funktionen als APEX Diagramm

Übrigens: SQL-Aggregatsfunktionen können auch selbst erstellt werden. Hält man sich dabei an ein von Oracle vorgegebenes Schema, kann diese eigene Funktion in SQL-Abfragen zusammen mit GROUP BY oder als analytische Funktion verwendet werden. Ein Beispiel dafür findet sich im Blog SQL und PL/SQL in Oracle:

Es ließen sich mit Sicherheit noch zahlreiche weitere Beispiele für den Funktionsumfang der Oracle-Datenbank finden, der Rahmen dieses Artikels würde dann jedoch gesprengt. Interessierten Lesern sei das Inhaltsverzeichnis der APEX-Community empfohlen; hier werden noch zahlreiche weitere Datenbankfunktionen erläutert.

Zurück zum Anfang des Artikels

Die Sicherheitsausstattung der Datenbank

Im Bereich der Sicherheit sind die fortgeschrittenen Funktionen Teil der Enterprise Edition; der Funktionsumfang der Standard-Edition im Bereich der Sicherheit beschränkt sich auf die Standard-Rechteverwaltung (GRANT, REVOKE) sowie das Standard-Benutzer und Rollenkonzept.

Das wichtigste "fortgeschrittene" Feature zur Zugriffssteuerung in Tabellen ist die Virtual Private Database (VPD) - sie ist Teil der Enterprise Edition. VPD erlaubt das Einrichten einer Policy-Function auf der Datenbanktabelle. Diese Funktion kann (muss) selbst programmiert werden und muss einen SQL-Filter zurückliefern, der in eine WHERE-Klausel eingebaut werden kann. Wann immer eine SQL-Anweisung auf die Tabelle (Abfrage, Insert, Update, Delete) erfolgt, ruft die Datenbank-Engine automatisch diese Policy-Function auf - und der zurückgegebene SQL-Filter wird in die WHERE-Klausel integriert. Das hat zur Folge, dass unterschiedliche Nutzer, auch wenn beide ein SELECT * FROM {TABELLE} absetzen, unterschiedliche Ergebnismengen sehen können (Abbildung 5).

Virtual Private Database: Das Konzept

Abbildung 5: Virtual Private Database: Das Konzept

Zum Umgang mit der Virtual Private Database gibt es in der APEX- und in der DBA-Community jeweils ein Howto-Dokument. Während das erste Dokument den Umgang speziell für APEX-Umgebungen erläutert, betrachtet das zweite den Umgang mit VPD im Allgemeinen.

Eng verwandt mit der Virtual Private Database ist Fine Grained Auditing: Während VPD das standardmäßige GRANT und REVOKE auf Objektebene hin zu einer Zugriffssteuerung auf Zeilenebene erweitert, erweitert Fine Grained Auditing (FGA) das standardmäßige AUDIT-Kommando vom Datenbankobjekt (Tabelle) hin zu einem Auditing auf Tabellenzeilenebene. Je nach Inhalt der Tabellenzeile werden andere Audit-Informationen (oder gar keine) geschrieben. Auch dies wird in Community-Tipps ausführlich erläutert.

Zurück zum Anfang des Artikels

Zurück zur Community-Seite