Frage

Wenn ich versuche, eine Ansicht auszuführen, die Tabellen aus verschiedenen Schemata ein ORA-001031 Unzureichende Privilegien geworfen wird, umfasst. Diese Tabellen haben Ausführungsrechte für das Schema, in dem die Ansicht erstellt wurde. Wenn ich die Auffassung der SQL-Anweisung ausführen funktioniert es. Was bin ich?

War es hilfreich?

Lösung

Als Tabellenbesitzer benötigen Sie SELECT-Zugriff auf den zugrunde liegenden Tabellen den Benutzer gewähren Sie die SELECT-Anweisung als ausgeführt werden.

grant SELECT on TABLE_NAME to READ_USERNAME;

Andere Tipps

Schließlich habe ich es zu arbeiten. Steve Antwort ist richtig, aber nicht für alle Fälle. Es schlägt fehl, wenn diese Ansicht von einem dritten Schema ausgeführt wird. Dafür arbeiten müssen Sie die Option GRANT hinzufügen:

GRANT SELECT ON [TABLE_NAME] TO [READ_USERNAME] WITH GRANT OPTION;

Auf diese Weise [READ_USERNAME] können auch wählen Privileg über die Ansicht in ein anderes Schema gewähren

Q. Wann ist die "mit GRANT-Option" erforderlich?

A. Wenn Sie eine Ansicht von einem dritten Schema ausgeführt haben.

Beispiel:     Schema DSDSW hat eine Ansicht namens view_name

a) that view selects from a table in another schema  (FDR.balance)
b) a third shema  X_WORK  tries to select  from that view

Typische Zuschüsse:     gewähren wählen auf dsdw.view_name dsdw_select_role;     gewähren dsdw_select_role zu fdr;

Aber: fdr bekommt     SELECT COUNT (*) von dsdw.view_name;      FEHLER in Zeile 1:      ORA-01031: Unzureichende Berechtigungen

Ausgabe der Zuschuss:

grant select on fdr.balance to dsdw with grant option;

Jetzt fdr:     SELECT COUNT (*) von dsdw.view_name;          5 Zeilen

Lassen Sie mich eine kurze Zusammenfassung machen.

Wenn Sie eine Ansicht enthält Objekt von verschiedenen Eigentümern aufzubauen, müssen die anderen Eigentümer „mit GRANT-Option“ an den Eigentümer der Ansicht gewähren. So kann der Anbieter an andere Benutzer oder Schemata gewähren ....

Beispiel: User_a ist der Eigentümer einer Tabelle namens mine_a Benutzer_b ist der Eigentümer einer Tabelle namens yours_b

Lassen Sie uns sagen user_b will eine Ansicht mit einer Verknüpfung von mine_a und yours_b

erstellen

Für die Ansicht gut zu funktionieren, hat user_a geben „grant wählt auf mine_a mit GRANT-Option Benutzer_b“

Dann kann user_b auf dieser Ansicht zu jedem wählen gewähren.

Wenn die Ansicht über eine gespeicherte Prozedur zugegriffen wird, ist der Ausführungs Zuschuss unzureichend, um die Ansicht zu gelangen. Sie müssen explizit wählen erteilen.

Wenn die Ansicht über eine gespeicherte Prozedur zugegriffen wird, ist der Ausführungs Zuschuss unzureichend, um die Ansicht zu gelangen. Sie müssen explizit wählen erteilen.

geben Sie einfach diese

Zuschuss alle auf dem öffentlichen;

Um eine Ansicht zu verwenden, muss der Benutzer über die entsprechenden Berechtigungen verfügen, sondern nur für die Ansicht selbst, nicht die zugrunde liegenden Objekte. Wenn jedoch die Zugriffsrechte für die zugrunde liegenden Objekte der Ansicht entfernt werden, dann wird der Benutzer nicht mehr zugreifen. Dieses Verhalten tritt auf, weil die Sicherheitsdomäne, die verwendet wird, wenn ein Benutzer die Ansicht abfragt, dass der definer der Ansicht ist. Wenn die Zugriffsrechte für die darunter liegenden Objekte aus der Sicht des definer widerrufen werden, dann wird die Ansicht ungültig, und niemand die Ansicht verwenden kann. Daher kann, selbst wenn ein Benutzer Zugriff auf die Ansicht gewährt wurde, kann nicht der Benutzer in der Lage sein, um die Ansicht zu verwenden, wenn die Rechte des definer haben aus Sicht der zugrunde liegenden Objekten aufgehoben.

Oracle-Dokumentation http://docs.oracle.com/cd/B28359_01 /network.111/b28531/authorization.htm#DBSEG98017

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top