Kommt Oracle mit USE Database nicht klar ???
Syntacs
- datenbank
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
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