2012-09-27 26 views
10

Wir haben eine Oracle-DBMS (11 g) und die folgende Konfiguration:Wie SELECT in Oracle mithilfe eines DBLINK, das sich in einem anderen Schema befindet?

  • Ein DB-Benutzer "MYUSER"
  • Zwei-Schemata "MYUSER" und "SCHEMA_B"
  • User "MYUSER" kann „Zugriff SCHEMA_B "und hat Leseberechtigungen für seine Tabellen
  • Eine öffentliche DB Link "db_link" befindet sich in "SCHEMA_B"
  • die db_link arbeiten wird, wenn die DB-Benutzer mit "SCHEMA_B" direkt

Frage: Wie lautet die richtige Syntax für den Zugriff auf Tabellen mit dem DB-Link von "SCHEMA_B", wenn Sie als "MYUSER" angemeldet sind? Ist es überhaupt möglich?

Ich habe bereits versucht mehrere Konstellationen, die alle nicht funktioniert:

select * from [email protected]"DB_LINK" 
select * from [email protected]"SCHEMA_B"."DB_LINK" 
select * from [email protected]_B."DB_LINK" 
select * from [email protected]_B.DB_LINK 
select * from [email protected]_LINK 
select * from "SCHEMA_B"[email protected]_LINK 

Die Fehlermeldung erhalte ich ist: ORA-02019. 00000 - "Verbindungsbeschreibung für entfernte Datenbank nicht gefunden"

Danke für jeden Vorschlag!

Antwort

11

Ich glaube nicht, dass es möglich ist, eine Datenbankverbindung zwischen mehr als einem Benutzer, aber nicht alle zu teilen. Sie sind entweder privat (nur für einen Benutzer) oder öffentlich (für alle Benutzer).

Eine gute Möglichkeit, um eine Ansicht in SCHEMA_B zu erstellen, die die Tabelle verfügbar macht, auf die Sie über die Datenbankverbindung zugreifen möchten. Dies gibt Ihnen auch eine gute Kontrolle darüber, wer aus dem Datenbanklink auswählen darf, da Sie den Zugriff auf die Ansicht steuern können.

wie folgt tun:

create database link db_link... as before; 
create view mytable_view as select * from [email protected]_link; 
grant select on mytable_view to myuser; 
+0

Datenbankverbindung zu teilen, um alle Benutzer die ‚öffentlichen‘ Richtlinie verwenden. PUBLIC DATABASE LINK ERSTELLEN ... – Rusty1