Auf der letzten DOAG konnte man bereits erste Blicke auf die neue BI Suite EE 11g, sowie den ebenso heiß erwarteten BI Pusblisher 11g werfen. Leider ist der offizielle Erscheinungstermin der neuen Releases noch etwas wage und wurde mit “im Laufe der nächsten 12 Monate” angegeben. Eines der wirklich hübschen neuen Features im BI Publisher ist der online Template Builder. Er soll eine Alternative für das Word Plugin sein, und die Reportgestaltung direkt im Browser ermöglichen. (weiterlesen…)
Archiv für die Kategorie „Oracle“
Online Template Builder im BIP
Mittwoch, 23. Dezember 2009Aktueller Benutzer im BI Publisher
Donnerstag, 17. September 2009Seit einigen Tagen beschäftige ich mich nebenbei ein wenig mit dem Oracle BI Publisher. Die ersten Versuche aus des Sicht des Administrators gelten natürlich zunächst der Sicherheit. Einen zentralen Reportingserver mit gespeicherten Zugängen zu produktiven Datenquellen sollte man nicht leichtfertig aufbauen. Während die Umstellung der Authentifizierung auf LDAP einwandfrei funktioniert hat, bin ich bei der Einschränkung der Daten auf größere Probleme gestoßen. Wie kann ich dem Benutzer – abhängig von seinen applikationsseitigen Rechten – nur gefilterte Daten zur Verfügung stellen?
Aus der vorherigen Frage ergab sich schnell die nächste… Welcher Benutzer ist eigentlich gerade am BI Publisher angemeldet?
Um es kurz zu machen: Die Dokumentation half hier nicht weiter, allerdings wurde ich im OTN Forum fündig. Die Bind Variable :xdo_user_name steht bei der Definition der Datenquelle in den SQL Statements zur Verfügung. Somit können die Daten über den Benutzernamen eingeschränkt werden.
SELECT *
FROM my_secret_table
WHERE username = :xdo_user_name;
Es wäre spannend zu wissen, ob weitere :xdo… Variablen existieren die z.B. die Gruppenzugehörigkeigt oder ähnliches erkennen lassen.
Jobketten in der Datenbank
Mittwoch, 4. März 2009
Seit Oracle 10g Release 2 unterstützt der interne Taskmanager der Datenbank, der sogenannte Scheduler auch komplexe Jobketten. Dies ermöglicht parallele Ausführung von Aufgaben und bedingte Ausführung von Jobs ohne Hilfsmittel wir Cronjobs oder externe Tools. Die folgende Grafik zeigt eine mögliche Jobkette die wir in der Datenbank abbilden werden.
Column based Virtual Private Database
Donnerstag, 5. Februar 2009In Zeiten des Datendiebstahls und der Bespitzelung sollten Anwendungsentwickler besonderen Wert auf die Sicherheit der gespeicherten Daten legen. Gerade personenbezogene Daten und Passwörter bedürfen einem besonderen Schutz auf aller tiefster Ebene: der Datenbank. Oracle stellt einen Mechanismus genannt Virtual Private Database (VPD) zur Verfügung den ich hier etwas näher erläutern möchte.
Oracle Expression Filter
Dienstag, 27. Januar 2009Was nützt ein riesiger und strukturierter Datenbestand, wenn man nicht flexibel aber dennoch effektiv darin suchen kann? Als eines von zahlreichen positiven Beispielen sei hier die Autobörse http://www.autoscout24.de/ genannt. Dem Benutzer stehen Suchkriterien von A bis Z, quasi der Automarke bis zum Zulassungsdatum, zur Eingrenzung seiner Suche zur Verfügung. Seine Wunschkriterien kann jeder Benutzer sogar speichern und bei neuen Einträgen wird er automatisch informiert.
Mit steigender Anzahl von Suchkriterien wächst die Komplexität der Suchabfrage. Wenn man sich das SQL Statement vorstellt, welches sich über diese Seite generieren lässt, kann einem Entwickler durchaus schwindelig werden. Ein wenig Abhilfe schafft der Oracle Expression Filter, ein Feature innerhalb der Datenbank.
Ändern Primärschlüssel die Logik von SQL?
Dienstag, 20. Januar 2009Im Zeichen des Datenschutzes war ich heute unterwegs um Daten in einer Datenbank unkenntlich zu machen, bevor sie an einen externen Partner ausgeliefert werden. Hierbei tritt das gleiche Problem auf, wie auch bei der sinnvollen Generierung von Testdaten. Die Daten sollen nicht mit realen Daten verknüpfbar sein, allerdings dürfen sie auch nicht kryptisch und unlesbar sein. Ein Beispiel sind z.B. Ortsbezeichnungen. Hierfür habe ich ein tolles Script von Colin Cromm unter http://www.ortsnamengenerator.de/ gefunden, mit dem es schnell möglich ist sich tausende von Ortsnamen zu generieren und für eigene Zwecke zu verwenden. Dieses Posting befasst sich jedoch nicht mit der Generierung von Testdaten, sondern mit einem interessanten Problem, welches mich dabei abgelenkt hat…
Pivoting in Oracle 11g
Donnerstag, 15. Januar 2009Ein mächtiges Feature im Bereich “Reporting” ist das sogenannte Pivoting (http://de.wikipedia.org/wiki/Pivot-Tabelle). Was bisher ein schlagkräftiges Argument für Excel war, oder umständlich im Client programmiert werden musste ist nun erstmals als neue SQL Erweiterung in Oracle 11g integriert. Wie mächtig und praxistauglich die Funktion wirklich ist soll ein kleines Beispiel zeigen.
Pimp my SQL
Mittwoch, 7. Januar 2009“Form schlägt Inhalt!” ist eine Aussage, der ich mich leider viel zu häufig gegenüber sehe. Das wichtige an einem Report ist die korrekte Schriftart, Linienstärken und die pixelgenaue Ausrichtung der Spalten. Ob eine Zahl hier und dort “ein wenig” falsch ist, das bemerkt in der Regel niemand. Wenn aber die Überschrift nicht zentriert und nicht in Arial 12 ist, dann ist der Bericht wertlos!
Jedoch nicht jede grafische Aufbereitung eines Berichts ist verschwendete Mühe. Seitenlange Zahlenreihen schaut sich niemand an, und selbst wenn, bleibt die Aussagekraft der Zahlen durch die Menge an Informationen verborgen. Ein Mittelweg zwischen Layout/Grafik und Information muss also her. Mein Werkzeug erster Wahl: SQL*Plus.
DRCP die Zweite
Montag, 29. Dezember 2008Nach meinem letzten gescheiterten Versuch das neue Connection Pooling Feature von Oracle 11g zu testen, habe ich mich ein wenig tiefer an die Basis herangewagt und OCCI für weitere Tests bemüht. Der Testverlauf ist recht simpel gehalten:
- Oracle Umgebung initialisieren
- Zeit merken
- 1000 mal
- Verbindung zur Datenbank aufbauen
- SELECT SYSDATE FROM DUAL
- Verbindung schliessen
- Zeit messen und Differenz errechnen
Verglichen wird der Verbindungsaufbau einer “normalen” Verbindung mittels oracle::occi::Environment::createConnection() und oracle::occi::StatelessConnectionPool::getConnection(). (weiterlesen…)
