Syntacs: Kommt Oracle mit USE Database nicht klar ???

Hallo, ich habe gerade ein Java-Programm fertiggestellt und wollte jetzt mal auf eine Oracle-Datenbank zugreifen.("jdbc:oracle:thin:@10.20.7.30:1521:test37")
Zuerst gabs Probleme mit dem Befehl CREATE Database (darf nur der Datenbankadmin ändern) und der macht Urlaub -> toll ! Ich, das ganze Programm umgeschrieben auf den anderern Datenbanknamen (SID: test37) und nach CREATE Database kommt bei mir der Befehl USE Database und Oracle meint dazu (--> invalid SQL Statement) funktioniert z.B. unter mySQL einwandfrei. Kann mir das bitte jemand erklären bzw. sagen wie ich den jetzt nun meine Tabellen anlegen kann ?? Ich wette wenn ich USE weglassen und gleich CREATE Table macht sagt Oracle keine Datenbank ausgewählt oder so...

thx & viele greetx syntacs

  1. Hi,

    Hallo, ich habe gerade ein Java-Programm fertiggestellt und wollte
    jetzt mal auf eine Oracle-Datenbank zugreifen.
    ("jdbc:oracle:thin:@10.20.7.30:1521:test37")
    Zuerst gabs Probleme mit dem Befehl CREATE Database (darf nur der
    Datenbankadmin ändern) und der macht Urlaub -> toll!

    Das Konzept, was eine "Datenbank" ist, unterscheidet sich m. E. zwischen
    Oracle und mySQL schon ein wenig.

    In mySQL hast Du eine Instanz der Datenbank-Software mit mehreren
    "Datenbanken"; Du meldest Dich bei der _Instanz_ an und steuerst dann
    über "use" oder durch eine Präfixadressierung des Tabellennamens die
    Teilbereiche an, in denen die Tabellen liegen.

    Bei Oracle (mein Wissensstand ist allerdings Oracle 7) entspricht eine
    Datenbank-Instanz einer Datenbank. Du meldest Dich also bei der _Datenbank_
    an (andere Datenbanken besitzen separate Definitionen von Benutzernamen
    und Kennworten); deshalb macht "use" in diesem Kontext gar keinen Sinn.

    Ich, das ganze Programm umgeschrieben auf den anderern Datenbanknamen
    (SID: test37) und nach CREATE Database kommt bei mir der Befehl
    USE Database und Oracle meint dazu (--> invalid SQL Statement)
    funktioniert z.B. unter mySQL einwandfrei.
    Kann mir das bitte jemand erklären

    Tja, es gibt Standards und proprietäre Erweiterungen.
    Das ist bei SQL nicht anders als bei HTML ...

    wie ich den jetzt nun meine Tabellen anlegen kann ??
    Ich wette wenn ich USE weglassen und gleich CREATE Table macht
    sagt Oracle keine Datenbank ausgewählt oder so...

    Nein, genau das sagt es nicht, weil Du die Datenbank bereits über Dein
    login implizit festgelegt hast. (Wie gesagt: Oracle 7, dürfte sich aber
    kaum geändert haben.)

    Es könnte höchstens sein, daß Dein Benutzer nicht per Default das Privileg
    hat, überhaupt Tabellen anlegen zu dürfen.

    Und es könnte sein, daß Du Dir Gedanken machen mußt, innerhalb welches
    Tablespace Du Deine Tabelle anlegen willst (wahrscheinlich hat Deine
    Benutzerkennung aber einen sinnvollen Default-Wert dafür).

    Außerdem könnte es sein, daß Du bei Oracle sehr viel mehr Parameter für
    CREATE TABLE angeben mußt (oder zumindest willst), weil das Datenhaltungs-
    modell von Oracle signifikant komplexer ist.
    Wenn Du bezüglich Performance etwas reißen willst, dann macht es Sinn,
    sich mit Konzepten wie Tablespaces, konfigurierbaren Tabellenwachstums-
    strategien, Fragmentierung etc. zu befassen; vieles davon ist bei mySQL
    "irgendwie gottgegeben", bei Oracle aber sehr fein definierbar. (Wobei
    dann derjenige, der den Tablespace aufgebaut hat, in dem Deine Tabellen
    liegen, für alles irgendwelche Defaultwerte definiert hat, so daß Du ggf.
    auch ihn diese Entscheidungen fällen lassen kannst.)

    CREATE TABLE und überhaupt alle DDL-Anweisungen (data description language,
    im Gegensatz zur data manipulation language mit INSERT, SELECT etc.) ist
    in Oracle um Größenordnungen mächtiger als bei "einfacheren" Datenbanken,
    deshalb aber auch etwas komplexer in seiner Anwendung.

    Viele Grüße
          Michael