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?
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;
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
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.
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
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.
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;
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