Oracle Standard Tablespace vorgeben

RafaelG

Mitglied
Hallo,

ich habe eine bestehende INFORMIX-Datenbank in ORACLE migriert und muss nun auch meinen Java-Code etwas anpassen.

Hierbei ist mir aufgefallen, dass ich bei den SQL-Statements nun jedes mal den Benutzernamen vor die Tabellenbezeichnung setzen muss damit die neuen Tabellen angesprochen werden können. Ansonsten gibt es den Fehler:
Java:
Error: ORA-00942: table or view does not exist

Ich wollte fragen ob es möglich ist in der Connection-URL zu ORACLE (10g) den Tabelspace mit anzugeben oder ob man diesen irgendwo als eine Art "default" mit eintragen kann. Habe leider noch nicht viel Erfahrung mit ORACLE, aber ich kann mir gut vorstellen dass es doch Möglichkeiten gibt, SQL-Statements auf benutzerdefinierte Tabellen auszuführen ohne den Benutzernamen vor jede Tabelle schreiben zu müssen.

Für Vorschläge oder Lösungsansätze bin ich sehr dankbar.


Gruss
RafaelG
 
G

Gast2

Gast
Das was du suchst ist nicht der "Tablespace" der Tabelle sondern das "Schema"/"User". Was du machen kannst um direkt auf eine Tabelle zuzugreifen ist ein public Synonym anzulegen:

SQL:
CREATE PUBLIC SYNONYM myTable FOR user.myTable;

Allerdings ist das meiner Meinung nach eine sehr unschöne Angewohnheit von faulen Datenbankprogrammierern. Erstens wird der Table Lookup langsamer (gut, nicht so das du es merken wirst) da zuerst immer lokale Objekte gesucht werden, dann in privaten Synonymen und als letztes erst in den public Synoynmen. Zweitens kann so immer nur ein User das public Synoym nutzen was evtl zu Inkositenzen führen kann wenn zwei User den selben Tabellennamen verwenden aber einer damit die Tabelle im User Namespace meint, der andere über das public Synonym eine andere Tabelle und ein dritter eine View über das Synonym verwendet. hier sind sehr restriktive Coding Conventions nötig - sonst suchst du dir später einen Wolf wwer auf welche Tabelle unter dem gleichen Namen zugreift. Drittens muss der DBA sehr vorsichtig sein was public Synonyme angeht. Mit [c]CREATE OR REPLACE PUBLIC SYNOYM myPackage.XYZ FOR sys.XYZ[/c] kann man eine ganze Menge Unfug anstellen ;)

EDIT://

Wenn du dich mit dem gleichen User auf die DB verbindest in dessen Schema auch die Tabelle liegt musst du übrigens nicht den Usernamen vor die Tabelle stellen.
 
Zuletzt bearbeitet von einem Moderator:

Ähnliche Java Themen


Oben