wake-up-neo.com

Wie in Oracle mit einem DBLINK in einem anderen Schema AUSWÄHLEN?

Wir haben ein Oracle DBMS (11g) und die folgende Konfiguration:

  • Ein DB-Benutzer "MYUSER"
  • Zwei Schemata "MYUSER" und "SCHEMA_B"
  • Der Benutzer "MYUSER" kann auf "SCHEMA_B" zugreifen und verfügt über Leseberechtigungen für seine Tabellen
  • Ein öffentlicher DB-Link "DB_LINK" in "SCHEMA_B"
  • Der DB_LINK arbeitet, wenn der DB-Benutzer "SCHEMA_B" direkt verwendet wird

Frage: Wenn Sie als "MYUSER" angemeldet sind, wie lautet die korrekte Syntax für den Zugriff auf Tabellen über den DB-Link von "SCHEMA_B"? Ist das überhaupt möglich?

Ich habe bereits mehrere Sternbilder ausprobiert, die alle nicht funktionierten:

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, die ich erhalte, lautet: ORA-02019. 00000 - "Verbindungsbeschreibung für entfernte Datenbank nicht gefunden"

Danke für jeden Vorschlag!

12
Steffen

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

Eine gute Möglichkeit, dies zu umgehen, besteht darin, in SCHEMA_B eine Ansicht zu erstellen, in der die Tabelle verfügbar gemacht wird, auf die Sie über die Datenbankverknüpfung zugreifen möchten. Auf diese Weise können Sie auch steuern, wer aus der Datenbankverbindung auswählen darf, da Sie den Zugriff auf die Ansicht steuern können.

Mach das so:

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