Lesson learnt: Oracle mag ich nicht
Wer kennt das Sprichwort nicht: Lächle und sei froh, es könnte schlimmer kommen, ich lächelte und war froh und es kam schlimmer.
Vor allem ist es immer wieder interessant, dass man Dinge erleben kann, die sich wie eine unglaubliche Geschichte anhören. In einem der letzten Projekte ging es mir so.
Das Hauptproblem in einem Projekt war, dass ein DWH, dass auf einer eingerichteten Oracle-Schreibmaschine, die nicht den Anspruch einer soliden Grundlage erfüllte, problemlos lief. Auf dem Zielsystem unterlag die Performance jedoch starken Schwankungen. Einen Hinweis zur Definition Schreibmaschine: So nenne ich Rechner, die eigentlich nur für Office vorgesehen sind und unter dem Windows-Leistungsindex von 4 liegen.
Nach dem ersten Review kam u. a. heraus, dass die Umgebung virtualisiert war und es mehrere Zonen gab. Was für mich die Performanceschwankungen erklärte, stellte aber für den Performance-Spezialist (Guru) nicht das Problem dar und er präsentierte auch ein paar angepasste SQL-Skripts. Um dies auch rechtfertigen zu können, wurden kurzerhand die spezifizierten Hardwareanforderungen auf die tatsächliche Umgebung angepasst. Das ist mal agiles Projektmanagement aus einem anderen Blickwinkel. Für mich kam dadurch eine neue Herausforderung hinzu: Wie mache ich aus einer Schreibmaschine einen Taschenrechner? Der RAM ist ja schnell begrenzt, aber die CPU-Leistung? So bin ich auch mit cpulimit in Berührung gekommen.
Für mich war das eine sehr wichtige Erfahrung, denn so konnte ich auch lernen, dass Gutes SQL in Oracle-Umgebungen gleichzusetzen ist mit produktspezifisch und Tricky. Ein weiterer Vorteil, die Empfehlungen aus den Review habe ich in einer Testumgebung auf einem SQL-Server testen können.
Nach diesen ersten Tests habe ich doch mal im Duden zur Bedeutung von Oracle nachschlagen müssen und da steht Folgendes:
Ora|kel das; -s, - <lat.; »Sprechstätte«>:
a) Stätte (bes. im Griechenland der Antike), wo Priester[innen], Seher[innen] o. Ä. Weissagungen verkündeten oder [rätselhafte, mehrdeutige] Aussagen in Bezug auf gebotene Handlungen, rechtliche Entscheidungen o. Ä. machten;
b) durch das Orakel (a) erhaltene Weissagung, [rätselhafte, mehrdeutige] Aussage Duden - Das Fremdwörterbuch, 9. Aufl. Mannheim 2007 [CD-ROM]
Rätselhafte, mehrdeutige Aussage da habe ich doch ein Déjà-vu. Denn im ersten Review wurde bspw. ein Punkt kritisiert, welcher im zweiten wieder empfohlen wurde. Auch gab es Kritikpunkte an ein paar Einstellungen, die wir auf Empfehlung des Oracle-DBA implementierten. Die Literatur, die ich mir zum Thema organisierte, war für den Guru natürlich nicht die beste und er musste den Autor Donald K. Burleson eines Werkes auch kritisieren. Das hat System, denn in Oracle-Umgebungen macht man gerne den Developer zum Sündenbock.
Ganz ehrlich besser hätte Oracle seinen Namen gar nicht treffen können, bildlich stelle ich mir das so vor:.

- Abbildung 1 Oracle-Consulting, demnächst bei Mike Shiva?
Auch wenn Oracle einen grösseren Funktionsumfang bietet, so sind damit Sachen möglich, die man besser nicht machen sollte, da sie zu Performanceeinbussen führen.
Was sich aus den Tests auf dem SQL Server ableiten lässt, ist Folgendes:
- Ein Oracle-Developer der SQL für den SQL-Server schreiben soll, wird keine Probleme bekommen, da dieser sehr tolerant und robust ist.
- Ein SQL-Server-Developer sollte vorher die Tipps und Tricks-Kurse der Gurus besuchen. Da diese auch Geld verdienen wollen, werden sicherlich nicht alle Tricks im ersten Kurs verraten. Mit dieser Salami-Taktik lässt sich gut verdienen und mit ein bisschen Geschick nimmt der Guru den eigentlichen Kunden auch gleich mit. Um dies zu umgehen, sollten die Schulungen nicht bei „Wir machen alles Unternehmen“ gebucht werden, die einen noch die Unterstützung anbieten. ;-)
- Während man in der Oracle-Umgebung mit dem Feintuning beschäftigt ist und womöglich noch auf das schlechte SQL der Developer schimpft, weil mal wieder der Append-Hint bei grossen Datenmengen fehlt, lassen sich mit dem SQL-Server schon die ersten Kundenanforderungen realisieren. ;-)
- Der mit Oracle mitgelieferte SQL Developer ist ein schlechter Aprilscherz.
- Dem Oracle-Developer und Guru muss man vorher vielleicht noch das Lizenzmodell erklären, sonst könnte es passieren, dass er viele Funktionalitäten der Tools nicht nutzt, in der Annahme diese seien nicht lizenziert.
So etwas passiert eben, wenn die Erwartungen zu hoch sind und deswegen habe ich jetzt um so mehr Freude daran, einen Oracle-Server in die ewigen Jagdgründe migrieren zu dürfen, so als Wiedergutmachung.
- 3 Kommentar(e)


Traurig, aber wahr...
Schön, dass man auf ein so trauriges Projekt noch mit Humor reagieren kann. "Leider" kann ich alle Fakten in diesem Text zu 100% bestätigen.
Konkrete Probleme / Fehler
Hallo René, deinen Frust bezüglich Oracle kann ich gut nachvollziehen. Als ich vor einigen Jahren meine ersten Projekte mit Oracle machte, war ich auch häufigt verwundert / verzweifelt. Ab der Version 9i hatte sich dies allerdings zumindest bei mir weitestgehends relativiert. Allerdings würde ich gerne aus deinen Erfahrungen lernen und wollte dich daher bitten, ob du ein paar Konkrete Probleme / Fehler / Tipps weitergeben könntest (natürlich auch gerne anonymisiert). Z. B. würde mich sehr interessieren, was ich nicht machen darf, da es zu Performance Problemen kommen könnte. Außerdem fände ich es sehr spannend zu erfahren, ob du in deinem Projekt die SQL Statements von Hand geschrieben hattest, oder ob sie durch einen ORM erzeugt wurden.
Hauptproblem Zwischenmenschliche Beziehungen und Kommunikation
Hi André Konkrete Beispiele im Bezug auf Oracle habe ich jetzt hinten angestellt, werde diese aber zu gegebener Zeit nachliefern. Meine Beispiele werden sich aber auf DWH-Umgebungen beziehen und nicht auf den OLTP-Bereich. Ein Mindmap existiert bereits unter http://www.databinding.net/nc/blog/post/2010/04/15/oracle-performance-nichts-fuer-schwache-nerven.html. Bedingt durch den Review-Bericht gehen sie auch nicht vergessen. ;-)
Das ORM auch lustiges SQL erstellen können ist mir bewusst, deswegen verwende ich das Entity Framework nur in Verbindung mit dem EFTracingProvider, einfach um Änderungen im SQL-Bereich, die nach einem Audit oder Review angestrebt werden auch umsetzen zu können.
Ich habe schon einige Projekte mit Oracle realisiert und hatte bisher nie solche Probleme, wie im letzten Projekt. Wie bereits erwähnt habe ich mich zum Thema Performanz eingelesen, aber was nützt das, wenn die Performance-Heinis sich über die Autoren belustigen und nur ihr eigenes Wissen als das einzig richtige betrachten. In so einer Umgebung macht die Arbeit ganz einfach keinen Spass.
Zudem kommt hinzu, dass die Client-Tools unter aller Sau sind. Wenn man vernünftig arbeiten will, braucht man zusätzliche Tools wie zum Beispiel Toad. Auch die Treiber für das .NET Framework sind nicht gerade robust. Ich gehe mal davon aus, dass das auch der Hauptgrund dafür ist, warum DevArt so gute Geschäfte mit seiner Oracle-Produktpalette machen kann.
Bedingt durch meine Erfahrungen, gefällt mir dieser Clip (http://www.youtube.com/watch?v=nwXHUts9uPA) besonders gut ;-)
Interessant sind auch die Kommentare der Oracle-Fangemeinde. ;-)
Ich habe mir mein Urteil gebildet: Oracle ist die Diva unter den Datenbanken, ich habe jedoch im Projekt weder Zeit noch die Lust eine Datenbank zu verhätscheln, wenn dadurch die funktionalen Anforderungen des Kunden leiden. Den Review-Bericht kann ich auch nicht öffentlich verfügbar machen, wenn wir uns aber mal wieder über den Weg laufen, kann ich dir die Punkte zeigen und die Resultate von Oracle und SQL-Server. Ich war erstaunt, da Oracle bekanntlich als das Mass aller Dinge hingestellt wird.