Ralf Rapude: Oracle Fragen

Hallo Forum,
ein Kunde möchte ein paar Datenbankabfragen über PHP4 und (leider) Oracle
gelöst haben. Bisher habe ich aber nur mit MySQL gearbeitet und deshalb
haben sich ein paar Fragen aufgetan, bei denen mir hoffentlich jemand helfen
kann.
Ein PHP Tut. zu Oracle und PHP habe ich gefunden, aber Tuts zu Oracle
an sich sind schon dünner gesät (Administration z.B.).

Was mir außerdem etwas zu schaffen macht ist folgendes:
Wie kriege ich Oracle zum Entwickeln überhaupt zum laufen? Ich habe hier
zwar einen Linux Server(Suse 7.3), auf dem der Apache, MySQL usw. laufen,
aber wenn ich mich recht erinnere, haben sich letztes Jahr in der Firma
in der ich gearbeitet habe ein paar Nerds die Zähne dran ausgebissen,
Oracle unter Linux überhaupt erstmal nur zu installieren (mal abgesehen,
das es schon sinnlos wäre, sich über ISDN überhaupt die DB runterzuladen zu
wollen). Fällt da irgendjemandem eine Lösung ein? Gibt es nicht vielleicht
ähnliches wie WAMP auch für Oracle (sowas wie WAOP :o)?
Oder gibt es vielleicht sogar irgendwas in Richtung Oracle DB,
das man auch unter Win zum laufen bringt (exe doppelt klicken -> Oracle
läuft, wäre mir sehr recht *g*)? Wobei dann natürlich immer noch das Problem
bliebe, ob ich PHP dann neu kompilieren muß. Auf der Suse Cd jedenfalls
gab es keine Optionen für eine PHP - Oracle Installation.

Außerdem wäre da noch eine Frage zu SQL. Bisher war ich ja immer der Ansicht,
dass SQL standardisiert wäre. Jetzt habe ich aber gehört, dass es da durchaus
Unterschiede gibt. Aber das würde ja auch bedeuten, dass ich SQL auf Oracle
anpassen muß. Muß da wirklich die Syntax verändert werden?

Last not least, bliebe noch die Frage der Administration einer Oracle DB.
Gibt es da auch sowas wie PHP MyAdmin? Oder muß das Dingens komplett
über Konsole beackert werden?

Viele Fragen.
Ich hoffe jemand von euch kann das Durcheinander etwas lichten.

Grüße und Dank
Ralf

  1. Hi,

    Ein PHP Tut. zu Oracle und PHP habe ich gefunden, aber Tuts zu Oracle
    an sich sind schon dünner gesät (Administration z.B.).

    DBA bin ich leider auch nicht. Es handelt sich aber auch bei Oracle um einen Server, d.h. er muss installiert, konfiguriert und gestartet werden, er muss am richtigen Port lauschen (Stichwort "Listener") usw.

    Die Dokumentation ist allerdings sehr umfangreich.

    aber wenn ich mich recht erinnere, haben sich letztes Jahr in der Firma
    in der ich gearbeitet habe ein paar Nerds die Zähne dran ausgebissen,
    Oracle unter Linux überhaupt erstmal nur zu installieren

    Ja, es ist ein Profi-Programm, und nichts für Nerds. Es erfordert, sich mit der Gesamtthematik eingehend zu beschäftigen.

    (mal abgesehen,
    das es schon sinnlos wäre, sich über ISDN überhaupt die DB runterzuladen zu
    wollen).

    Oracle verschickt die Programme auch. Ich habe eine (nicht ganz aktuelle, okay) Version sogar kostenlos zugeschickt bekommen; auf CD, in einer großen Kiste, inklusive Port&Verpackung. Für Windows, nebenbei erwähnt. Dummerweise bin ich noch nicht dazu gekommen, es zu installieren... :-)

    Wobei dann natürlich immer noch das Problem
    bliebe, ob ich PHP dann neu kompilieren muß.

    Ja, stimmt.

    Außerdem wäre da noch eine Frage zu SQL. Bisher war ich ja immer der Ansicht,
    dass SQL standardisiert wäre.

    Nennt sich ANSI-SQL.

    Jetzt habe ich aber gehört, dass es da durchaus
    Unterschiede gibt.

    Nennt sich SQL-Dialekt :-) Auch MySQL benutzt etwas völlig eigenes, das nur auf ANSI-SQL beruht.

    Aber das würde ja auch bedeuten, dass ich SQL auf Oracle
    anpassen muß. Muß da wirklich die Syntax verändert werden?

    Vielleicht. Vielleicht auch nicht - kommt auf den Fall an. "Im Prinzip" ist die Syntax gleich, aber jedes DBMS hat seine eigenen Fähigkeiten. So hat MySQL z.B. weiß-Gottfried-wie-viele unterschiedliche Datums- und Zeittypen, während Oracle nur DATE kennt; dafür kann es Subselects. MySQL kennt LIMIT, Oracle hat Pseudospalten wie ROWNUM, in Oracle muss man nicht die maximale Breite der Spalten eines Index mit einkompilieren...

    Last not least, bliebe noch die Frage der Administration einer Oracle DB.
    Gibt es da auch sowas wie PHP MyAdmin? Oder muß das Dingens komplett
    über Konsole beackert werden?

    Es gibt ein ähnliches Programm, das in Perl geschrieben wurde und sogar (IMHO) um einiges mächtiger ist als PHPMyAdmin, obwohl es nicht mal dazu gedacht ist, Tabellen/Indizes zu erstellen, zu füllen o.ä. Wie der offizielle Name ist weiß ich nicht; die Datei trägt den klangvollen Namen "oracletool.pl". Copyright-Vermerk bei der Version, die ich vorliegen habe:

    #   Copyright (c) 1998,1999,2000 Adam vonNieda

    #   You may distribute under the terms of either the GNU General Public
    #   License or the Artistic License, as specified in the Perl README file,
    #   with the exception that it cannot be placed on a CD-ROM or similar media
    #   for commercial distribution without the prior approval of the author.

    Ich hoffe jemand von euch kann das Durcheinander etwas lichten.

    Ich hoffe, ein bisschen konnte ich helfen!

    Cheatah

  2. Hallo,

    -> als erstes gibt es da einen kleinen "Unterschied", MySQL ist eine Relationale Datenbank und ORACLE eine Objektrelationale DB. Nur so als Info kannst ja mal nachschlagen, wenns Dich Interressiert.

    Fällt da irgendjemandem eine Lösung ein?

    -> Habe eine Dokumentation CD für Oracle 8.0.5. Diese beinhaltet diverse HTML & PDF Dateien. Wenn Du möchtest kann ich ´Dir ein paar File zur Verfügung stellen. (Englisch)

    Das sind allerdings mehrere 100 MB, Du müsstest mir ungefähr sagen was Du brauchst & eMail.

    Gruß

    Stephan

  3. Hi,

    ein Kunde möchte ein paar Datenbankabfragen über
    PHP4 und (leider) Oracle

    schööön ... ;-)

    Ein PHP Tut. zu Oracle und PHP habe ich gefunden,
    aber Tuts zu Oracle an sich sind schon dünner gesät
    (Administration z.B.).

    Die gibt es mit Oracle auf CD-ROM.

    Ich habe hier eine Oracle804-Doku herumliegen -
    vollständig in HTML, allerdings riesengroße Seiten
    (mehrere davon sind _einzeln_ jeweils 2 MB groß - für
    Internet völlig untauglich, lokal aber kein Problem).

    Wie kriege ich Oracle zum Entwickeln überhaupt zum
    laufen?

    Beiliegende Dokumentation lesen - sorry, aber das ist
    nun mal nicht zu vermeiden. Vor allem hast Du sehr
    viele Schräubchen, an denen Du drehen kannst - und
    für die mußt Du verstehen, was sie bewirken.

    Und "zum Entwickeln" ist halt auch ein dehnbarer Be-
    griff. Oracle selbst liefert eine Anzahl eigener Pro-
    grammiersprachen mit - einen eigenen Forms-Generator,
    eine Sprache für stored procedures (PL/SQL), Präpro-
    zessoren für konventionelle Sprachen (in Pro*C kannst
    Du mitten in einen C-Quelltext irgendwelche SQL-
    Statements schreiben, der Präprozessor wandelt das
    um in API-Calls, welche der nachgeschaltete C-
    Compiler versteht usw.).
    PHP und das zugehörige API kenne ich leider nicht.

    Gibt es nicht vielleicht ähnliches wie WAMP auch
    für Oracle (sowas wie WAOP :o)?

    Mir wäre irgendwie neu, daß Oracle-Software plötzlich
    kostenlos und Open Source wäre ...

    Oder gibt es vielleicht sogar irgendwas in Richtung
    Oracle DB, das man auch unter Win zum laufen bringt
    (exe doppelt klicken -> Oracle läuft, wäre mir sehr
    recht *g*)?

    Die Komplexität von Oracle ist vergleichbar mit der
    Komplexität eines vollständigen Betriebssystems!
    (Oracle macht beispielsweise seine Plattenzugriffe
    selber, wenn Du das einschaltest - Dateisysteme sind
    für Tablespaces bloß Zeitverschwendung ... ;-)
    Erwartest Du von einem solchen Brocken, ihn ohne jede
    Konfigurationsarbeit zum Laufen zu bekommen?
    Wahrscheinlich brauchst Du keine 5% dessen, was Oracle
    alles könnte - trotzdem wirst Du den Rest wenigstens
    so weit verstehen können, daß Du Deiner Installation
    gemäß sinnvolle Werte einstellen kannst.

    Außerdem wäre da noch eine Frage zu SQL. Bisher war
    ich ja immer der Ansicht, dass SQL standardisiert
    wäre.

    Das ist es auch - genau wie HTML, oder JavaScript, oder
    CSS ... nur: Wer hält sich wie gut an welchen Standard,
    und wer erfindet über welchen Standard hinaus wieviele
    eigenen Fahrräder?

    Jetzt habe ich aber gehört, dass es da durchaus
    Unterschiede gibt.

    In der Tat. Erhebliche sogar.

    Aber das würde ja auch bedeuten, dass ich SQL auf
    Oracle anpassen muß. Muß da wirklich die Syntax
    verändert werden?

    Allgemein gesagt:
    1. Ja.
    2. Je einfacher Deine Statements, um so
       wahrscheinlicher mußt Du nichts ändern.

    Das Schlimmer ist noch nicht mal, die Syntax anzupas-
    sen (das wäre ja nur Arbeit) - so richtig lästig wird
    es, wenn Du die Semantik anpassen mußt, weil es das
    Konzept, auf dessen Existenz Du die gesamte Anwendung
    aufgebaut hast, auf der anderen Seite einfach nicht
    existiert. Da kann es sein, daß Du _alles_ wegwerfen
    und von vorne anfangen mußt.

    Aber tendentiell hättest Du das Problem eher beim
    Umstieg von Oracle auf mySQL.
    Oracle bietet eine ganze Reihe von Konzepten (nicht
    Befehlen!), welche in mySQL nicht mal ansatzweise
    existieren (Constraints, Trigger, Stored Procedures).
    Da geht es nicht mehr um Differenzen von Anweisungen,
    es geht um die Verfügbarkeit ganzer Zusatzsprachen
    bis hin zu einer völligen Änderung des Programmier-
    stils.
    Während Du beispielsweise in SQL die Eigenschaften
    der Ergebnisse beschreibst, kannst Du in Oracles
    PL/SQL plötzlich algorithmisch programmieren, dies
    aber mit SQL-Befehlen mischen.
    Und solche Programme kannst Du in der Datenbank ab-
    legen und an Ereignisse binden - beispielsweise an
    ein INSERT in eine Tabelle ...
    Das ist eine ganz andere Welt.
    Du hast nicht mehr die dumme Datenbank und die intel-
    ligente Anwendung - Du hast die intelligente Datenbank
    mit automatisch konsistenten, sich selbst überprüfen-
    den Datentypen! Und Du kannst in der Anwendung keine
    Checks mehr vergessen, weil diese in der Datenbank
    selbst statt finden. Gleichzeitig kannst Du in der
    Anwendung auch nicht mehr "pfuschen" ... durch diese
    hohle Gasse müssen sie kommen. Alle.
    Das alles will natürlich entsprechend konfiguriert
    sein. Und man kann Oracle letzten Endes auch im
    "mySQL-Modus" betreiben, ohne all diese Features.
    ("Man kann in jeder Sprache Fortran-Programme schreiben.")

    Umgekehrt hat auch mySQL eine Reihe von Besonderheiten.
    Das geht schon mal mit den zahlreichen verschiedenen
    Tabellentypen los, welche de facto unterschiedlich
    ausgerichtete Treiber bedeuten (teilweise sehr stark
    auf Performance optimiert, dafür aber nicht transak-
    tionsfähig, teilweise wiederum das genaue Gegenteil).
    Ähnliches gilt für die lange Liste der Feldtypen.
    oracle kennt so etwas wie Tabellentypen meines Wissens
    nicht - deren Tabellentreiber versucht, mit jedem
    mySQL-Tabellentyp in dessen Spezialgebiet mitzuhalten.
    Was Tuning angeht, macht Oracle eine ganze Menge sehr
    weit drinnen im Datenbank-Design, was Du auf der SQL-
    Ebene gar nicht zu Gesicht bekommst - bei mySQL ist
    das gesamte Instrumentarium Teil der SQL-Syntax.
    Deshalb wirst Du einige Sprachelemente von mySQL in
    Oracle vermissen, weil das den SQL-Programmierer dort
    einfach "nichts angeht".

    Wenn Du die höherwertigen mySQL-Treiber (InnoDB und
    BDB) kennst (also mit Tablespaces umgehen kannst etc.),
    dann wird Dir vieles von der Oracle-Denkweise bekannt
    vorkommen.
    Dort solltest Du Dich also mal umsehen - das mySQL-
    Kapitel über Tabellentypen finde ich äußerst lesenswert.

    Last not least, bliebe noch die Frage der
    Administration einer Oracle DB.
    Gibt es da auch sowas wie PHP MyAdmin? Oder muß
    das Dingens komplett über Konsole beackert werden?

    Dazu kann ich leider nichts sagen - dafür ist mein
    Oracle-Wissen zu alt. (Die letzte Version, die ich
    selbst betrieben habe, war Oracle 7 - da war alles
    noch sehr spartanisch. Aber arg viel Administration
    brauchte ich nie - alle paar Monate mal die Table-
    space-Größen anpassen ... der Rest lief via cron.)

    Viele Grüße
          Michael

  4. Hallo,
    also erstmal muß ich ja ganz doll an euch alle "Danke" sagen. Das war über alle Maßen hilfreich und erhellend, was ihr zu sagen hattet und das Angebot Help Files, tuts usw. zur Verfügung zu stellen ist ja nun auch nicht gerade selbstverständlich (evtl. müßte ich da sogar mal drauf zurückkommen).

    Für mich klingt das aber eher so, als müßte ich dem Kunden mitteilen, dass er mir einen Arbeitsplatz zur Verfügung stellen müßte, bei dem ich über PHP4 bereits Zugriff auf Oracle habe, oder den Job muß halt jemand anders machen. Letztendlich ist das ja sicherlich eine spannende Angelegenheit, aber fraglich ist doch auch
    immer, wer den ganzen Aufwand zahlt.

    D.h. wenn ich ein bis zwei Wochen brauche, um das Dingens überhaupt adäquat zum laufen zu bringen (und ob es überhaupt zu schaffen ist, scheint ja auch noch eher zweifelhaft zu sein, denn schließlich haben die Freaks, mit denen ich gearbeitet habe ja auch die Grätsche gemacht, ohne eine wirklich lauffähige Version an den Start zu kriegen), denn bleibt natürlich die Frage, wer die ganzen Stunden zahlt. Jetzt könnte ich mir zwar durchaus vorstellen, mal so zum Spaß zu versuchen Oracle unter Linux zum laufen zu bringen, aber mit
    dem Druck eines Auftrags im Nacken, erscheint mir das doch ein bißchen kühn.

    Ich glaube ich werde den mal anrufen, und ihm die Lage schildern. Dann werde ich mal bei Oracle anfragen, ob die mir auch mal so eine lecker CD mit Helpfiles usw. zukommen lassen würden und dann werde ich sozusagen aggressiv abwarten, was der Kunde sagt. Dann kann man immer nochmal in einer ruhigen Minute einfach mal unverbindlich mit Oracle auseinandersetzen.

    Scheiße das! Warum kann denn der sein Zeug nicht mit MySQL oder irgendeiner Datenbank machen, die ein Ideechen trivialer zu beackern ist. Normalerweise kriege ich ja irgendwie früher oder später alles zum laufen, wenn ich ungefähr eine Vorstellung davon habe, wie was geht. Aber das was ihr da erzählt habe, erscheint mir doch ein bisschen sehr fett.

    Trotzdem nochmals vielen Dank für die Mühe. War wirklich sehr hilfreich.

    Grüße
    Ralf

    1. Hi,

      Für mich klingt das aber eher so, als müßte ich dem Kunden mitteilen, dass er mir einen Arbeitsplatz zur Verfügung stellen müßte, bei dem ich über PHP4 bereits Zugriff auf Oracle habe, oder den Job muß halt jemand anders machen.

      wenn das Ergebnis ein PHP-tauglicher Server mit Zugang auf eine Oracle-DB sein soll, dann müsste beim Kunden doch eigentlich ein solches System verfügbar sein. Vielleicht reicht es, wenn hier eine Testumgebung geschaffen wird? Klar, das Entwickeln ist nicht gerade angenehm, wenn Du für jeden Test erst hochladen etc. musst, aber es würde immerhin gehen.

      Scheiße das! Warum kann denn der sein Zeug nicht mit MySQL oder irgendeiner Datenbank machen, die ein Ideechen trivialer zu beackern ist.

      Tja. MySQL hat sicher Vorteile bei der Installation und auch noch an anderen Stellen. Dummerweise sieht es neben Oracle aber aus wie eine Forelle neben einem Blauwal... Anders gesagt: Wer sich für eine Oracle-DB entscheidet, weiß vermutlich, dass eine andere - insbesondere eine leichter zu installierende - für seine Zwecke absolut nicht in Frage kommt.

      Trotzdem nochmals vielen Dank für die Mühe. War wirklich sehr hilfreich.

      Gern geschehen. Ich hoffe, Du findest mit Deinem Kunden zusammen eine Lösung! Wer Oracle benutztz, hat nämlich gewöhnlich auch Kohle ;-)

      Cheatah

      1. Hi auch,

        Wer Oracle benutztz, hat nämlich gewöhnlich auch
        Kohle ;-)

        ... und es ist auch nicht unwahrscheinlich, daß er einen Wartungsvertrag für diese Datenbank hat.
        Je nach Ausbaustufe könnte dieser Wartungsvertrag mindestens kostenlose Anrufe bei der Oracle-Hotline umfassen (bei uns war das damals so) oder vielleicht sogar Unterstützung bei der Installation von was auch immer.

        ManPower eines Herstellers einzukaufen ist normalerweise furchbar teuer - aber Oracle selbst eben auch. Insofern sollte man die Möglichkeit an dieser Stelle zumindest in Erwägung ziehen.

        Als ich damals lernen mußte, die von meinem Vorgänger geerbte Oracle-Forms-Umgebung zu verstehen und umzuschreiben, haben wir einen Oracle-Spezialisten (Freelancer) eingekauft, der ein paar Wochen bei uns gearbeitet (und mich dabei angelernt) hat ... das war halt im Etat mit drin. ;-)

        Viele Grüße
              Michael

      2. Hallo Cheetah,

        wenn das Ergebnis ein PHP-tauglicher Server mit Zugang auf eine Oracle-DB sein soll, dann müsste beim Kunden doch eigentlich ein solches System verfügbar sein. Vielleicht reicht es, wenn hier eine Testumgebung geschaffen wird? Klar, das Entwickeln ist nicht gerade angenehm, wenn Du für jeden Test erst hochladen etc. musst, aber es würde immerhin gehen.

        Ich glaube der Kunde weiß selber noch nicht genau, was das für eine Aktion ist, LAOP zum laufen zu bringen. Und nachdem ich jetzt seit einigen Stunden recherchiere, komme ich immer mehr zu der Ansicht, dass das ne Nummer zu groß für mich ist.

        Gern geschehen. Ich hoffe, Du findest mit Deinem Kunden zusammen eine Lösung! Wer Oracle benutztz, hat nämlich gewöhnlich auch Kohle ;-)

        Klar. An der Kohle hängt das bei denen auch nicht. Ich habe nur Schiß, dass ich mich total blamiere, wenn ich sage dass es mir ein Ideechen zu heiß ist, mich alleine an so eine Sache zu machen. Wenn man da zu zweit oder so dran sitzt, kann man ja meistens noch irgendwas reißen, aber allein kann man sich da afair ziemlich schnell selber ans Bein pinkeln. Ich muß mir das noch mal durch den Kopf gehen lassen. Das Problem ist ja auch, das es nicht damit getan ist, LAOP zum laufen zu bringen, sondern dass dann noch irgendwelche ominösen PHP Templates beackert werden sollen (und wenn die ähnlich strukturiert sind wie PHPGroupware, denn davon war die Rede, wird das noch mal ein Spaß für sich) und ich dann noch Selects über 20 Tabellen auf einer Oracle DB zurechtbasteln soll und das Ganze noch unter mächtigem Zeitdruck, dann bin ich doch fast geneigt, eher auf die Kohle zu verzichten. Der Scheck heiligt zwar bekanntermaßen die Mittel, aber dann verzichte ich lieber drauf.

        Grüße
        Ralf

        1. Hallo Ralf,

          Ich habe nur Schiß, dass ich mich total blamiere, wenn ich sage dass es mir ein Ideechen zu heiß ist, mich alleine an so eine Sache zu machen.

          Wobei Du auch beachten mußt, daß der Umgang mit Oracle ja auch nicht gerade in ein bis zwei Stunden gelernt ist.
          Ich weiß ja nicht wie einfach es ist, unter PHP die Datenbankschnittstelle zu wechseln. Wenn das recht einfach möglich ist, könntest Du den ganzen Programm-Logikteil ja auch ohne weiteres mit einer Dir bekannten Datenbank implementieren, wobei Du sämtliche Datenbankaufrufe in einem eigenen Modul zusammenfaßt, das dann in einem zweiten Schritt beim Kunden selbst durch eine Oracle-Variante ersetzt wird. Ich weiß schon, daß das auch nicht gerade einfach ist, und etwas Umdenken erfordert. Aber wenn Du meinst, daß Oracle eher ein einmaliges Abenteuer sei wird, dnan würde ich mir das in diese Richtung noch einmal überlegen.

          Grüße
            Klaus