web-dev-qa-db-fra.com

"La table ou la vue n'existe pas" sur synonyme

J'ai une base de données et un utilisateur l'administrateur. Ensuite, j'ai un user_app supplémentaire à qui j'ai accordé un accès CRUD à toutes les tables de mon modèle de données Oracle (puis appliquée celles via le script généré)

J'ai créé un synonyme pour chaque table du compte user_app, avec la syntaxe suivante:

create synonym USER_APP.CLIENTS for USER.CLIENTS;

Et pour chaque génération de table réussit et commettre. Mais quand j'essaie de l'utiliser de toute façon sur ce compte, par exemple:

select * from CLIENTS;

Je reçois une erreur que les clients n'existent pas, à savoir

ORA-00942 : table or view does not exist.

Que puis-je faire pour résoudre ce problème ou où dois-je regarder pour déterminer la cause/solution?

4
infoholic_anonymous

Les synonymes n'ont rien à voir avec les privilèges. Ils sont simplement un moyen de simplifier la dénomination.

L'erreur que vous obtenez semble indiquer que user_app n'a pas de privilèges sur le user.clients tableau. Vous auriez besoin d'accorder que

GRANT SELECT, INSERT, UPDATE, DELETE
   ON user.clients
   TO user_app;

Bien sûr, dans votre système actuel, je suppose qu'il y a un rôle que vous accorderiez des privilèges à et ce rôle serait accordé à user_app.

6
Justin Cave