it-swarm.com.de

ORA-01031: Unzureichende Berechtigungen beim Auswählen der Ansicht

Wenn ich versuche, eine Ansicht auszuführen, die Tabellen aus verschiedenen Schemas enthält, wird ein ORA-001031 Unzureichende Berechtigungen ausgelöst. Diese Tabellen haben Ausführungsberechtigung für das Schema, in dem die Ansicht erstellt wurde. Wenn ich die SQL-Anweisung der Ansicht ausführte, funktioniert sie. Was vermisse ich?

29
Igor Zelaya

Als Tabellenbesitzer müssen Sie dem Benutzer, mit dem Sie die SELECT-Anweisung ausführen, SELECT-Zugriff auf die zugrunde liegenden Tabellen gewähren.

grant SELECT on TABLE_NAME to READ_USERNAME;
19
Steve K

Endlich habe ich es geschafft. Steves Antwort ist richtig, aber nicht für alle Fälle. Es schlägt fehl, wenn diese Ansicht von einem dritten Schema aus ausgeführt wird. Damit dies funktioniert, müssen Sie die Zuschussoption hinzufügen:

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

Auf diese Weise kann [READ_USERNAME] auch einem anderen Schema die Auswahlberechtigung für die Ansicht erteilen

35
Igor Zelaya

F: Wann ist die Option "mit Grant" erforderlich?

A. wenn Sie eine Ansicht aus einem dritten Schema ausgeführt haben.

Beispiel: Schema DSDSW hat eine Ansicht namens Ansichtsname

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 Sie select auf dsdw.view_name an dsdw_select_role; Erlaube dsdw_select_role an fdr;

Aber: fdr bekommt Wählen Sie count (*) aus dsdw.view_name; FEHLER in Zeile 1: ORA-01031: Unzureichende Berechtigungen

den Zuschuss ausstellen: 

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

jetzt fdr: Wählen Sie count (*) aus dsdw.view_name; 5 Reihen 

4
oracledba

Lass mich eine Zusammenfassung machen.

Wenn Sie eine Ansicht erstellen, die Objekte verschiedener Eigentümer enthält, müssen diese anderen Eigentümer dem Eigentümer der Ansicht die Option "Mit Grant" gewähren. So kann der Ansichtsbesitzer anderen Benutzern oder Schemas gewähren ...

Beispiel: User_a ist der Besitzer einer Tabelle namens mine_a User_b ist der Besitzer einer Tabelle namens yours_b

Angenommen, user_b möchte eine Ansicht mit einem Join von mine_a und yours_b erstellen

Damit die Ansicht einwandfrei funktioniert, muss user_a "Grant select auf mine_a an user_b mit Grant-Option" erteilen.

Dann kann user_b jedem auf diese Ansicht select geben.

4

Wenn auf die Ansicht über eine gespeicherte Prozedur zugegriffen wird, reicht die Ausführungsgenehmigung nicht aus, um auf die Ansicht zuzugreifen. Sie müssen select explizit gewähren.

tippen Sie einfach das ein

alle an die Öffentlichkeit weitergeben;

1
akshay

Wenn auf die Ansicht über eine gespeicherte Prozedur zugegriffen wird, reicht die Ausführungsgenehmigung nicht aus, um auf die Ansicht zuzugreifen. Sie müssen select explizit gewähren.

1
dacracot

Um eine Ansicht verwenden zu können, muss der Benutzer über die entsprechenden Berechtigungen verfügen, jedoch nur für die Ansicht selbst, nicht für die zugrunde liegenden Objekte. Wenn jedoch Zugriffsberechtigungen für die zugrunde liegenden Objekte der Ansicht entfernt werden, hat der Benutzer keinen Zugriff mehr. Dieses Verhalten tritt auf, weil die Sicherheitsdomäne, die verwendet wird, wenn ein Benutzer die Ansicht abfragt, die des Definierers der Ansicht ist. Wenn die Berechtigungen für die zugrundeliegenden Objekte vom Definierer der Ansicht widerrufen werden, wird die Ansicht ungültig, und niemand kann die Ansicht verwenden. Selbst wenn einem Benutzer Zugriff auf die Ansicht gewährt wurde, kann der Benutzer die Ansicht daher möglicherweise nicht verwenden, wenn die Rechte des Definierers für die zugrunde liegenden Objekte der Ansicht widerrufen wurden.

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

0
Van Gogh