ORA-01031: privilèges insuffisants lors de la sélection de view

quand j'essaie d'exécuter une vue qui inclut des tables de différents schémas un ora-001031 privilèges insuffisants est lancé. Ces tables ont la permission d'exécuter le schéma où la vue a été créée. Si j'exécute L'instruction SQL de la vue, cela fonctionne. Ce qui me manque?

28
demandé sur Igor Zelaya 2008-09-26 20:47:51

7 réponses

en tant que propriétaire de table, vous devez accorder L'accès SELECT sur les tables sous-jacentes à l'utilisateur, vous exécutez la déclaration SELECT sous.

grant SELECT on TABLE_NAME to READ_USERNAME;
19
répondu Steve K 2008-09-26 16:53:33

finalement j'ai réussi à le faire marcher. Steve réponse est juste, mais pas pour tous les cas. Elle échoue lorsque cette vue est exécutée à partir d'un troisième schéma. Pour que cela fonctionne, vous devez ajouter l'option grant:

GRANT SÉLECTIONNEZ ON [TABLE_NAME] TO [READ_USERNAME] WITH GRANT OPTION;

de cette façon, [READ_USERNAME] peut aussi accorder le privilège select sur la vue à un autre schéma

35
répondu Igor Zelaya 2008-09-26 18:47:15

Permettez-moi de faire un résumé.

lorsque vous construisez une vue contenant un objet de différents propriétaires, ces autres propriétaires doivent concéder "avec option de concession" au propriétaire de la vue. Ainsi, le propriétaire de la vue peut accorder à d'autres utilisateurs ou schémas....

Exemple: User_a est le propriétaire d'une table appelée mine_a User_b'est le propriétaire d'une table appelée yours_b

disons user_b'veut créer une vue avec une jointure de mine_a et yours_b

pour que la vue fonctionne bien, user_a a donner "grant select sur mine_a à user_b'with grant option"

alors user_b peut accorder select sur cette vue à tout le monde.

4
répondu Roberto Monterrey 2010-04-16 22:13:37

Q. Quand l'option" avec subvention " est-elle requise ?

A. lorsque vous avez une vue exécuté à partir d'un troisième schéma.

Exemple: schema DSDSW a une vue appelée 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

subventions typiques: grant sélectionnez sur dsdw.view_name à dsdw_select_role; accorder dsdw_select_role à fdr;

délivrer la subvention:

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

rad: sélectionnez count (*) à partir de dsdw.view_name; 5 lignes

3
répondu 2009-07-15 18:27:12

si la vue est accessible via une procédure stockée, la subvention d'exécution est insuffisante pour accéder à la vue. Vous devez accorder sélectionner explicitement.

1
répondu dacracot 2008-09-26 17:07:27

si la vue est accessible via une procédure stockée, la subvention d'exécution est insuffisante pour accéder à la vue. Vous devez accorder sélectionner explicitement.

tapez simplement ceci

accorder à tous les publics;

1
répondu akshay 2013-05-16 15:45:25

pour utiliser une vue, l'utilisateur doit avoir les privilèges appropriés mais seulement pour la vue elle-même, pas ses objets sous-jacents. Toutefois, si les privilèges d'accès pour les objets sous-jacents de la vue sont retirés, puis l'utilisateur n'a plus accès. Ce comportement se produit parce que le domaine de sécurité qui est utilisé quand un utilisateur interroge la vue est celui du definer de la vue. Si les privilèges sur les objets sous-jacents sont révoqués du definer de la vue, alors la vue devient invalide, et personne pouvez utiliser la vue. Par conséquent, même si un utilisateur a obtenu l'accès à la vue, l'utilisateur peut ne pas être en mesure d'utiliser la vue si les droits du définisseur ont été révoqués des objets sous-jacents de la vue.

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

0
répondu Van Gogh 2014-03-20 14:04:38