2 Stimmen

Einschränkungen für Oracle-Schema-Tabellennamen

Ich erwäge die Verwendung von JBoss 5.1.0GA auf Oracle, und habe gesehen ce Ich sollte ausdrücklich den Namen des Schemas angeben, in dem die Tabelle TIMERS erstellt werden soll, da Oracle nicht zulässt, dass derselbe Tabellenname zweimal verwendet wird, auch nicht in verschiedenen Schemas.

Nachdem ich dies gelesen hatte, sah ich diese Frage auf StackOverflow und würde gerne etwas über die Hierarchie der Objekte in Oracle erfahren.

Angenommen, wir haben einen einzigen Oracle-Datenbankserver. Innerhalb dieses Servers erstellen wir zwei Datenbanken - D1 und D2. Innerhalb jeder Datenbank erstellen wir zwei Schemata - S1 und S2. Innerhalb jedes Schemas auf jeder Datenbank erstellen wir eine einzelne Tabelle - T1 bis T4:

+-D1
| +---S1
| |   +---T1
| +---S2
|     +---T2
+-D2
  +---S1
  |   +---T3
  +---S2
      +---T4

Gehe ich recht in der Annahme, dass, wenn ich dann eine weitere Tabelle mit dem Namen T1 in D1/S2 hinzufügen, es nicht funktionieren wird, weil die Tabellennamen innerhalb der Schemata eindeutig sein müssen und T1 bereits in D1/S1 vorhanden ist, aber wenn ich T1 entweder zu D2/S1 oder D2/S2 hinzufüge, wird es in Ordnung sein, weil die beiden Tabellen mit dem Namen T1 in verschiedenen Datenbanken sind?

Ich habe das ungute Gefühl, dass mein Verständnis von Oracle-Schemata mangelhaft ist (es ist keine Datenbank, die ich zuvor viel benutzt habe), also tut es mir leid, wenn ich dumme Fragen stelle.

Vielen Dank im Voraus

Reich

4voto

Vincent Malgrat Punkte 65127

Die Datenbank-Hierarchieebene gibt es in Oracle nicht: eine Instanz (eine Reihe von Prozessen) kann höchstens eine Datenbank (eine Reihe von Dateien) eingebunden haben. Innerhalb einer Datenbank befinden sich Schemata, die in Oracle auch den Benutzern entsprechen.

Jedes Schema hat einen unabhängigen Namensraum, z. B. Schemas S1 y S2 können beide eine Tabelle namens T1 in derselben Datenbank. Sie greifen auf diese Tabellen zu, indem Sie deren Eigentümer als Präfix verwenden: S1.T1 y S2.T1 .

Einige Objekte haben keinen Eigentümer (oder ihr Eigentümer ist PUBLIC): Öffentliche Synonyme und Verzeichnisse zum Beispiel. Der Name dieser Objekte muss in einer Datenbank natürlich eindeutig sein. Verwenden Sie öffentliche Synonyme mit Bedacht (=sparsam, meiner Meinung nach), um Namenskollisionen zu vermeiden.

0 Stimmen

Was bedeutet dann der Kommentar auf der RedHat-Website (der erste der beiden Links)?

0 Stimmen

@Rich: vielleicht timers ist ein öffentliches Synonym ?

0 Stimmen

"Sie müssen jedoch vorsichtig sein, wenn Sie jetzt auf eine der beiden Tabellen zugreifen, da der Benutzer, mit dem Sie sich mit der Datenbankinstanz verbinden, Zugriff auf beide hat. Um eindeutig auf eine Tabelle in einem bestimmten Schema zu verweisen, verwenden Sie schema.table." - Ich nehme an, dass dies das Problem ist. Von stackoverflow.com/questions/1685775/

1voto

dpbradley Punkte 11447

Bei Oracle können Sie denselben Tabellennamen in zwei verschiedenen Schemata haben. Möglicherweise gibt es eine Besonderheit bei der Verwendung von JBoss, über die Sie gelesen haben, aber es handelt sich nicht um eine Einschränkung von Oracle.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X