{"id":80,"date":"2022-01-19T20:22:29","date_gmt":"2022-01-19T20:22:29","guid":{"rendered":"https:\/\/akicom.de\/?p=80"},"modified":"2022-01-20T09:56:23","modified_gmt":"2022-01-20T09:56:23","slug":"alle-gegen-oracle","status":"publish","type":"post","link":"https:\/\/akicom.de\/?p=80","title":{"rendered":"Alle gegen ORACLE"},"content":{"rendered":"\n<div class=\"wp-block-image\"><figure class=\"aligncenter size-large is-resized\"><img fetchpriority=\"high\" decoding=\"async\" src=\"https:\/\/akicom.de\/wp-content\/uploads\/2022\/01\/alle_gegen_ORACLE-1-1024x204.jpg\" alt=\"\" class=\"wp-image-91\" width=\"605\" height=\"120\" srcset=\"https:\/\/akicom.de\/wp-content\/uploads\/2022\/01\/alle_gegen_ORACLE-1-1024x204.jpg 1024w, https:\/\/akicom.de\/wp-content\/uploads\/2022\/01\/alle_gegen_ORACLE-1-300x60.jpg 300w, https:\/\/akicom.de\/wp-content\/uploads\/2022\/01\/alle_gegen_ORACLE-1-768x153.jpg 768w, https:\/\/akicom.de\/wp-content\/uploads\/2022\/01\/alle_gegen_ORACLE-1.jpg 1100w\" sizes=\"(max-width: 605px) 100vw, 605px\" \/><\/figure><\/div>\n\n\n\n<p class=\"has-drop-cap\">Seit mehr als 25 Jahren besch\u00e4ftige ich mich mit Datenbanken. Klar gab es damals eine Reihe von Datenbanken, dBase, FoxPro, Postgres, Informix usw.. Kommerziell haben sich aber nur DB2 von IBM, MS-SQL von Microsoft, Teradata und vor allen die Datenbank von ORACLE durchgesetzt. <\/p>\n\n\n\n<p class=\"has-drop-cap\">Ich habe mich haupts\u00e4chlich mit ORACLE besch\u00e4ftigt und damit so ziemlich jede Aufgabe gel\u00f6st. Nat\u00fcrlich habe ich auch mit anderen Datenbanken gearbeitet: ein Data Warehouse mit Teradata, TimesTen f\u00fcr Echtzeit-Datenerfassung, MySQL f\u00fcr einen Webshop usw.  <br>Meinen Kunden habe ich auch immer versucht, die Datenbank vorzuschlagen, die f\u00fcr ihr Vorhaben mir am besten geeignet schien, halt die mit dem besten Kosten-Nutzen-Verh\u00e4ltnis. Meist war es ORACLE, weil alles andere kam kaum in Frage, DB2 gabs nur f\u00fcr Grossrechner oder teure AIX-Maschinen,  MS-SQL war auch nicht gew\u00fcnscht, weil man lieber UNIX-Server als Windows-Server haben wollte oder die Anwendung lief damit nicht. TimesTen und Terradata waren zu speziell und MySQL war (noch) nicht &#8222;business-ready&#8220;.<br>Seit mehreren Jahren dr\u00e4ngen nun viele andere Datenbanken in den Markt: PostgreSQL, MariaDB, Mongo-DB, NO-SQL-Datenbanken, Cassandra und auch Datenbankservices f\u00fcr verschiedene Zwecke in der AWS-Cloud usw..<\/p>\n\n\n\n<p class=\"has-drop-cap\">Eigentlich f\u00fcr mich als Datenbank-&#8222;Fuzzi&#8220; eine komfortable Situation, die Auswahl ist nun gr\u00f6sser und ich  kann einem Kunden mehrere Varianten vorschlagen. <br>Allerdings kam mit den Datenbankalternativen eine gewisse Stimmungsmache gegen ORACLE auf. Schon davor kam Diskussionen und Skepsis auf, diese wurde von Jahr zu Jahr heftiger und schlug in einen fast schon feindlichen ja aggressiven Ton um.<br> Mir selbst schlug diese Stimmungsmache und Aggressivit\u00e4t entgegen bei einem festen Engagement, bei dem ich f\u00fcr das Unternehmen den ORACLE-Stack  neu konzipieren, h\u00e4rten und optimieren sollte. Allein nur weil ich im ORACLE-Umfeld t\u00e4tig war, schlug mir von meinem Chef und danach auch von einigen Kollegen erst Skepsis und dann Feindseligkeit entgegen.  <\/p>\n\n\n\n<p class=\"has-drop-cap\"> Was ist da passiert? Aus meiner Sicht begann es eigentlich recht harmlos: Mit dem Aufkommen von objektorientierter Programmierung und JAVA kollidierte die OO-Sicht mit der relationalen Speicherung von Daten in der Datenbank. Man entwickelte Klassen f\u00fcr die Transformation zwischen beiden Welten, wie z.B. Hibernate. Diese waren dann die  Persistenzschicht, also der Layer, der die Daten abspeichert. Damit wurde der Umgang mit Datenbanken abstrahiert. Die Entwickler verloren den Fokus auf ein performantes Datenmanagement, getreu dem Motto &#8222;das macht die Java-Klasse&#8220;. Meines Erachtens leider eine fatale Sicht bei den immer gr\u00f6sser werdenden  Datenvolumen, die verarbeitet werden m\u00fcssen. Hinzu kam, dass man bei der Entwicklung uns Datenbanktypen aussen vorgelassen hat, auch weil die &#8222;Java-Klasse macht das ja&#8220;&#8230;. Also wurden dann die fertigen JAVA-Apps f\u00fcr den Betrieb &#8222;\u00fcber den Zaun geworfen&#8220;. Naja und dann kamen halt im Betrieb die \u00fcblichen Probleme, die mit steigendem Datenvolumen so einhergehen: Lange Wartezeiten und Timeouts. Was kannst du da als DBA (Datenbankadministrator) machen? Wenn man Gl\u00fcck hat, hilft ein Index oder zwei. An die Query kommt man meist nicht ran, die ist im JAVA-Quellcode.  Mit Chance bekomme ich die Query vom Entwickler oder aus dem Trace. Dann kann ich diese optimieren und den optimalen Execution Plan der urspr\u00fcnglischen Query unterschieben (Ja das geht in ORACLE, und so weit ich weiss nur in ORACLE).<br>Ich habe mal f\u00fcr einen Versandh\u00e4ndler gearbeitet und dieser wollte auf seiner Online-Plattform mit einem Gewinnspiel E-Mail-Adressen f\u00fcr seine Newsletter sammeln. Der Entwickler, man nannte ihn &#8222;Gott&#8220;, weil er virtuos in JAVA programmieren konnte, hatte die Komponente erstellt und immer in der Nacht von Donnerstag auf Freitag wurde so etwas deployed. Ja und um 11 Uhr vormittags stand der Shop. Was war passiert ? Vor dem Eintragen der Mailadresse in eine Tabelle wurde gepr\u00fcft, ob diese Mailadresse schon eingetragen war. Und auf der Tabelle war kein Index. Also jede Abfrage ein Full Table Scan und die Tabelle wurde immer gr\u00f6sser und damit dauerte das Eintragen immer l\u00e4nger. Und wir als Web-User sind ja nicht gerade geduldig, wenns l\u00e4nger dauert, einfach noch mal Refresh dr\u00fccken, und der Prozess beginnt von vorn, was das Problem weiter versch\u00e4rft. Ich habe dann einen Index angelegt, das dauerte 30 Sekunden, damit war das Problem in der Datenbank behoben. Die Applikationsserver waren aber so zu, dass man sie durchstarten musste. Der Shop war insgesamt ca. 2 Stunden weg, in denen kein Umsatz generiert werden konnte. Ich bin dann zu &#8222;Gott&#8220; und habe ihn gefragt, ob er getestet hat. Klar hat er, die Funktionalit\u00e4t, aber keine Mengentests. &#8222;Gott&#8220; hat von da an immer Funktions- und Massentests gemacht. Trotzdem wurde in den h\u00f6heren Etagen die Ursache in der Datenbank ausgemacht, weil die Funktion war ja fehlerfrei, die Datenbank hat l\u00e4nger gebraucht beim Ergebnis finden. Solche Situationen habe ich schon mehrere erlebt. Ich nenne das den &#8222;Datenbank-Knick&#8220;. Immer dann, wenn ich das Problem in der Datenbank l\u00f6sen konnte, dann war die Datenbank auch am Problem &#8222;schuld&#8220;. Und wenn nicht, war sie es trotzdem. <br><\/p>\n\n\n\n<p class=\"has-drop-cap\">Und dann kamen die Opensource-Datenbanken,  Die lassen sich kostenlos aus dem Internet runterladen und installieren, meist mit einem Kommando, n\u00e4mlich yum.  Dann gibt es da noch Tools wie PHPMyAdmin (f\u00fcr MySQL) oder pgAdmin (PostgreSQL), ebenfalls frei installierbar. Damit kann man sich eine Datenbank erzeugen und ein paar Tabellen, den Rest \u00fcberl\u00e4sst man der Persistenzsschicht. Das geht alles schnell und einfach und man braucht keinen DBA.  Klar, dass das die Entwickler begeistert.  Und irgendwann auch die Chefs. Und die fragten sich dann auch bald: Wieso zahlen ich soviel Geld f\u00fcr ORACLE-Datenbank-Lizenzen? <\/p>\n\n\n\n<p class=\"has-drop-cap\"> Jetzt kam der Wind von zwei Seiten, die Entwickler warfen weiterhin und noch schneller ihre Apps \u00fcber&#8217;n Zaun, diesmal mit Cassandra oder MariaDB oder PostgreSQL oder gar eine NoSQL-Datenbank als &#8222;Daten-Layer&#8220;. Das allein ist nicht das Problem. Das Problem ist dabei, dass dann im Betrieb dieser Datenbanken auftretende Performanceprobleme nicht so einfach zu l\u00f6sen sind wie bei ORACLE. Ja einen Index anlegen geht da auch, hilft aber nicht immer.  Und dann geht das &#8222;Gebastel&#8220; los.  Klar man kann PostgreSQL &#8222;kostenlos&#8220; skalieren, naja Rechenleistung in der Cloud braucht es auch und die muss bezahlt werden und PostgreSQL-Skalierung On-Premise heisst Hardware-Erweiterung, die ist auch nicht unbedingt kostenlos. Dann gibt es noch eine Reihe von Erweiterungen, die man installieren kann, die kommen von verschiedenen Entwicklern und sind auch nicht alle kostenlos. D.h. man muss rausfinden, welche Extention einem hilft. Dann kann man noch die Community fragen, das kann aber etwas dauern. Oder man fragt einen Spezialisten. Das kostet auch Geld, mindestens aber Zeit. <br>Nach meiner Erfahrung kann ich feststellen: Die Kostenwelle bei freien Datenbanken kommt sp\u00e4ter, n\u00e4mlich im Betrieb, w\u00e4hrend die Kosten bei ORACLE (Lizenzen &amp; Wartung) bei der Anschaffung, also vor dem Betrieb, kommen. Leider nimmt der Mensch aber die Anschaffungskosten st\u00e4rker wahr als die Betriebskosten&#8230;.<br> Von der anderen Seite kam die Chefetage mit der Frage: Wie kann man ORACLE durch Opensource-Datenbanken ersetzen?  Ich  bin auch gerade mit so einem Plan konfrontiert, der die Abl\u00f6sung von ORACLE vorsieht. Wenn es selbstentwicklete Software ist, kann man versuchen, die Datenbank z.B. in PostgreSQL zu migrieren, da sich ORACLE und PostgreSQL &#8222;\u00e4hneln&#8220;. Da gibt es auch Tools f\u00fcr die Konvertierung. Bei Datentypen funktioniert das recht gut. Bei der Umwandlung von etwas komplexeren Views und PL\/SQL geht es schon nicht mehr. Also baut man alles von Hand um, was dauert und damit kostet.<br>Bei Datenbanken, die von Dritt-Anbieter-Apps ben\u00f6tigt werden, kann man nur den Hersteller fragen. Bisher habe ich dabei immer erlebt, dass solche Anfragen mindestens 50:50 ausgingen, Eine H\u00e4lfte l\u00e4sst sich umstellen auf eine Opensource-Datenbank, die andere H\u00e4lfte nicht. Also bleibt einem ORACLE weiter erhalten. Hat man dann ein Engineered  System (Exadata oder ODA) im Rechenzentrum stehen, w\u00e4re eine Umstellung wirtschaftlich nicht empfehlenswert, da die Lizenzkosten gleich bleiben, bei weniger Datenbanken. Damit kostet jede verbliebene Datenbank mehr als vorher.  Hier sollte man eher nachdenken noch mehr ORACLE-Datenbanken auf das System zu bringen, also eher von Opensource auf ORACLE umstellen. So kann man meines Erachtens die Lizenzkosten effizient nutzen.<br><\/p>\n\n\n\n<p class=\"has-drop-cap\">Leider scheint aber der Zug f\u00fcr solche \u00dcberlegungen abgefahren zu sein. Der Hype &#8222;Nur noch Opensource&#8220; oder auch &#8222;Bloss nicht ORACLE&#8220; scheint voll im Gange. Und wenn dann noch ein DBA wie ich damit kommt, der  fast nur mit ORACLE gearbeitet hat, dann h\u00f6ren ihm erst recht weder Entwickler noch Chefs oder Entscheider zu. <br>Naja, dass es zu dieser Situation kam, hat wohl auch ORACLE&#8217;s Haltung zur Lizenzierung von ORACLE-Produkten auf VMWare zu tun. Neben dem Einsatz von Opensource ist Virtualisierung ein weiterer Baustein zur Kosteneinsparung. Und ein grosser Player, wenn nicht der Player f\u00fcr Virtualisierung ist VMWare. Mit Virtualisierungssoftware ist es m\u00f6glich, dass mehrere Server virtuell (sogenannte VMs = Virtuelle Maschine) auf einer Hardware ausgef\u00fchrt werden. Sie teilen sich die Ressourcen (CPU, Speicher etc.), was die Kosten f\u00fcr die Hardware reduziert.  <\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"alignright size-full is-resized\"><img decoding=\"async\" src=\"https:\/\/akicom.de\/wp-content\/uploads\/2022\/01\/grafik.png\" alt=\"\" class=\"wp-image-121\" width=\"397\" height=\"244\" srcset=\"https:\/\/akicom.de\/wp-content\/uploads\/2022\/01\/grafik.png 618w, https:\/\/akicom.de\/wp-content\/uploads\/2022\/01\/grafik-300x184.png 300w\" sizes=\"(max-width: 397px) 100vw, 397px\" \/><\/figure><\/div>\n\n\n\n<p class=\"has-drop-cap\">ORACLE steht bei VMWare (und soviel ich weiss auch bei Hyper-V von Microsoft)  nun auf dem Standpunkt, dass man, wenn man z.B. eine ORACLE Datenbank auf einer VMWare-Virtualisierung laufen l\u00e4sst, muss man alle Prozessoren aller VMWare-Nodes lizensieren, da die VM mit der ORACLE-Datenbank drauf theoretisch auf jedem Prozessor laufen k\u00f6nnte (<code><a href=\"https:\/\/www.oracle.com\/assets\/partitioning-070609.pdf\">\"Oracle Partitioning Letter\"<\/a><\/code><a rel=\"noreferrer noopener\" href=\"https:\/\/www.oracle.com\/assets\/partitioning-070609.pdf\" data-type=\"URL\" target=\"_blank\" data-id=\"https:\/\/www.oracle.com\/assets\/partitioning-070609.pdf\">)<\/a> . D.h. also, wenn man auf einer Hardware-Farm mit 100 CPUs virtualisiert, und man dort eine VM mit einer ORACLE-Datenbank installiert, die vielleicht 2 CPUs ben\u00f6tigt , muss man laut  ORACLE alle 100 CPUs lizensieren. Das ist keine Kostenreduktion, sondern eine Kosten-Explosion. Nachvollziehen kann ich diese Praxis nicht ganz. Eine Lizenzpraxis, wie z.B. bei  IBM&#8217;s LPAR oder der ORACLE eigenen Virtualisierung ORACLE VM, f\u00fcr alle Virtualisierungsanbieter w\u00fcrde den aktuellen Gegenwind f\u00fcr ORACLE erheblich abflauen lassen. <\/p>\n\n\n\n<p class=\"has-drop-cap\">Neben dem Simplifizieren, der Kostensenkung durch Opensource und ORACLE&#8217;s komischen Lizenzregeln beim &#8222;Fremd&#8220;-Virtualisieren gibt es noch ein paar andere Gr\u00fcnde, warum ORACLE verteufelt wird. In den letzten 25 Jahren habe ich da schon ein paar kuriose aufgedeckt, von allein sagt einem das niemand, h\u00f6chstens bei ein paar Bier am Abend und unter vier Augen.  Da gab es z.B. Entwickler, die nicht wussten,  wie man eine ORACLE-Datenbank installiert. Ja fr\u00fcher war das nicht einfach, und das war h\u00e4ngen geblieben, heutzutage kann ein Huhn  ORACLE installieren, man muss nur ein paar K\u00f6rner auf die ENTER-Taste legen., und nat\u00fcrlich geht das jetzt auch mit yum.<br>Dann sollte ich an der Abschaffung von ORACLE mitwirken.Man hatte eine ExaData und wollte Oracle abschaffen ? Nach einer Weile fand ich raus, dass die ExaData nicht im eigenen Rechenzentrum stand, sondern bei einem Provider. Ja und der hatte wohl  nicht so viel KnowHow in ExaData, jedenfalls liessen seine Jobgesuche f\u00fcr einen ExaData-Engineer drauf schliessen. Aber miteinander dar\u00fcber gesprochen haben Provider und Eigner der ExaData nicht. F\u00fcr den Eigner sah es so aus, als ob das ORACLE-&#8222;Zeugs&#8220; nicht richtig funktioniert und war entsprechend sauer, nat\u00fcrlich auf ORACLE, Tenor:  &#8222;Ein Haufen Geld und kein Service&#8220; . Wer denkt da nicht dran, den &#8222;Krempel&#8220; wieder los zu werden.<br>Ja und dann gibts noch die Entwickler, die partout keine Funktionen einer Datenbank benutzen und diese lieber in JAVA nachbilden. Als Argument wird dann immer aufgef\u00fchrt, dass so die Datenbank jederzeit austauschbar ist. Kann man machen, aber man verliert dabei Performance und zwar nicht nur bei ORACLE sondern mehr oder minder bei allen Datenbanken. Datenfunktionen (Analytische, OLAP usw. ) sind in Datenbanken effiizient integriert, weil nahe an den Daten. Keine Programmiersprache kann dem das Wasser reichen. Ich halte es daher f\u00fcr eine bessere Idee, sich bei seiner App-Entwicklung auf ein paar Datenbanken zu fokussieren, dann abber deren Datenfunktionen zu benutzen und auch deren Programmiersprache. <\/p>\n\n\n\n<p class=\"has-drop-cap\">F\u00fcr mich ist dieses ORACLE-&#8222;Bashing&#8220; v\u00f6llig unangebracht. Ich habe fast mein ganzes Berufsleben mit Datenbanken und anderen Produkten von ORACLE zu tun gehabt. Bisher gab es immer eine L\u00f6sung, entweder mit irgendwelchen Komponenten (z.B. Data Masking, InMemory,  usw.) oder mit simplem Tuning-Handwerk oder mit dem ORACLE Support.  Klar kostet das Lizenzen und Wartung, daf\u00fcr bekommt man aber auch ein System, mit dem ein sicherer und stabiler Betrieb garantiert wird. Des Weiteren deckt ORACLE mit seiner Datenbank nahezu jeden Anwendungsbereich ab. Deswegen ist es v\u00f6lliger Unsinn und ein grosser Fehler , diese Datenbank von vornherein auszuschliessen. <br>Auch das Abschaffen von ORACLE sollte \u00fcberlegt sein und man sollte vorher wissen, was das f\u00fcr den eigenen Betrieb  zeit- und kostentechnisch bedeutet.  Ich hatte schon ein paar Anfragen fr\u00fcherer Kunden, die gern wieder auf ORACLE Datenbanken zur\u00fcck wollten&#8230;..<br>Nat\u00fcrlich haben alle anderen Datenbanken ob nun Opensource oder nicht auch ihre Daseinsberechtigung. Es kommt drauf an, die richtige Datenbank f\u00fcr den jeweiligen Zweck zu finden und mit dieser dann die App oder das System zu realisieren und dabei auch die Vorz\u00fcge der Datenbank in der Programmierung auszunutzen. <br>Nat\u00fcrlich kommt man bei solchen Realisierungen an Punkte, wo man etwas nicht weiss bzgl. Datenbanzugriff oder -abfrage oder  was auch immer. Das ist kein Beinbruch, daf\u00fcr gibts solche Leute wie mich, die kann man alles fragen. Es gibt keine dumme Fragen nur dumme Antworten. <br>Ich denke nur so kann man gute Projekte realisieren:  zusammen ohne Aggressionen und ohne Vorurteile. Jeder macht mal Fehler: ich, der ein oder andere Entwickler, ORACLE. <br>Egal, irgendwann merkt man es und korrigiert es &#8230;hoffe ich.  <\/p>\n","protected":false},"excerpt":{"rendered":"<p>Seit mehr als 25 Jahren besch\u00e4ftige ich mich mit Datenbanken. Klar gab es damals eine Reihe von Datenbanken, dBase, FoxPro, Postgres, Informix usw.. Kommerziell haben sich aber nur DB2 von IBM, MS-SQL von Microsoft, Teradata und vor allen die Datenbank &hellip; <a href=\"https:\/\/akicom.de\/?p=80\">Weiterlesen <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":144,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[3],"tags":[],"class_list":["post-80","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-datenbanken-im-allgemeinen"],"jetpack_featured_media_url":"https:\/\/akicom.de\/wp-content\/uploads\/2022\/01\/alle_gegen_ORACLE_beitragsbild.jpg","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/akicom.de\/index.php?rest_route=\/wp\/v2\/posts\/80"}],"collection":[{"href":"https:\/\/akicom.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/akicom.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/akicom.de\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/akicom.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=80"}],"version-history":[{"count":57,"href":"https:\/\/akicom.de\/index.php?rest_route=\/wp\/v2\/posts\/80\/revisions"}],"predecessor-version":[{"id":146,"href":"https:\/\/akicom.de\/index.php?rest_route=\/wp\/v2\/posts\/80\/revisions\/146"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/akicom.de\/index.php?rest_route=\/wp\/v2\/media\/144"}],"wp:attachment":[{"href":"https:\/\/akicom.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=80"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/akicom.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=80"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/akicom.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=80"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}