SELECT Daten aus einem anderen Schema in Oracle

7

Ich möchte eine Abfrage ausführen, die Daten aus einem anderen als dem in der DB-Verbindung angegebenen Schema auswählt (gleicher Oracle-Server, gleiche Datenbank, anderes Schema)

Ich habe eine Python-App, die mit einem Oracle-Server kommuniziert. Es öffnet eine Verbindung zur Datenbank (Server / Schema) A und führt Select-Abfragen für Tabellen innerhalb dieser Datenbank aus.

Ich habe Folgendes versucht:

%Vor%

Aber ich verstehe:

%Vor%

Ich habe auch versucht, den Schemanamen mit Klammern zu umgeben:

%Vor%

Ich bekomme:

%Vor%

Die Abfragen werden mit dem cx_Oracle Python-Modul in einer Django-App ausgeführt.

Kann das gemacht werden oder sollte ich eine neue db Verbindung herstellen?

    
marianov 04.12.2012, 18:07
quelle

3 Antworten

18

Hat der Benutzer, mit dem Sie eine Verbindung zur Datenbank herstellen (Benutzer A in diesem Beispiel), SELECT access für die Objekte im Schema PCT ? Unter der Annahme, dass A diesen Zugriff nicht hat, erhalten Sie den Fehler "Tabelle oder Ansicht existiert nicht".

Sehr wahrscheinlich benötigen Sie Ihren DBA, um dem Benutzer A Zugriff auf alle Tabellen im Schema PCT zu gewähren, die Sie benötigen. Etwas wie

%Vor%

Sobald dies erledigt ist, sollten Sie in der Lage sein, auf die Objekte im Schema PCT zu verweisen, indem Sie die Syntax pct.pi_int verwenden, wie Sie es anfangs in Ihrer Frage gezeigt haben. Der Bracket-Syntax-Ansatz funktioniert nicht.

    
Justin Cave 04.12.2012, 18:15
quelle
3

Zusätzlich zu den Grants können Sie versuchen, Synonyme zu erstellen. Dadurch müssen Sie nicht jedes Mal das Tabelleneignerschema angeben.

Aus dem verbindenden Schema;

SYNONYM ERSTELLEN pi_int FÜR pct.pi_int;

Dann können Sie pi_int als;

abfragen

SELECT * FROM pi_int;

    
Sanjaya Balasuriya 05.12.2012 03:50
quelle
0

Abhängig von dem Schema / Konto, das Sie für die Verbindung mit der Datenbank verwenden, würde ich vermuten, dass Sie dem Konto, mit dem Sie eine Verbindung zur Datenbank herstellen, keine Berechtigung erteilen.

Verbinden Sie sich als PCT-Konto in der Datenbank und erteilen Sie dem Konto, das Sie verwenden, den Auswahlzugriff für die Tabelle.

bewilligen Sie die Auswahl von pi_int für Account_used_to_connect

    
Michael Ballent 04.12.2012 18:16
quelle

Tags und Links