Bonjour,

Je dois migrer une application sur un serveur oracle, et je gère en ce moment les utilisateurs sur la base de données,

Je voudrais donc créer ma base a partir d'un utilisateur A et ensuite me connecter avec une utilisateur B depuis mon applicatif, qui n'aurait que les SELECT, UPDATE, DELETE et INSERT de base.

Seulement voilà, j'ai quelques problèmes :

- je crée donc un utilisateur A, depuis lequel j'execute le script de création de base.
- Je crée ensuite un role, puis un utilisateur B auquel j'affecte le role créé.
- Je créé ensuite des synonymes pour l'utilisateur B sur toutes les tables de l'utilisateur A
- Et enfin j'attribue la droit pour le rôle sur les tables que je veux.

Ca donne :

Avec l'utilisateur SYSTEM

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
create user A identified by A
	default tablespace A_DATA
	quota unlimited on A_DATA
	profile DEFAULT ;
grant CONNECT to A;
grant RESOURCE to A;
Je me connecte avec l'utilisateur A

Code : Sélectionner tout - Visualiser dans une fenêtre à part
CREATE TABLE A.T_A (....)
Reconnexion avec l'utilisateur SYSTEM

Code : Sélectionner tout - Visualiser dans une fenêtre à part
create role RL_USER not identified;
Création de l'utilisateur B

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
create user B identified by B
	default tablespace B_DATA
	quota unlimited on B_DATA
	profile DEFAULT ;
grant CONNECT to B ;
grant RESOURCE to B ;
grant RL_USER to B ;
Les synonymes

Code : Sélectionner tout - Visualiser dans une fenêtre à part
create synonym B.T_A for A.T_A;
Et enfin les droits sur les tables

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
GRANT DELETE ON A.t_A TO "RL_USER"
GRANT INSERT ON A.t_A TO "RL_USER"
GRANT SELECT ON A.t_A TO "RL_USER"
GRANT UPDATE ON A.t_A TO "RL_USER"
Après avoir fait cela, je test mon appli avec l'utilisateur A, tout est OK, en revanche avec l'utilisateur B, j'ai une formidable erreur "table or view doesn't exists" !

Pourtant si je me connecte à sqlplus et que je tape

Code : Sélectionner tout - Visualiser dans une fenêtre à part
select * from user_synonyms
J'ai bien mes synonymes affichés

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
SYNONYM_NAME : T_A
TABLE_OWNER : A
TABLE_NAME : T_A
...
Je séche vraiment la et je ne sais plus quoi essayer...

Quelqu'un pourrait m'aider s'il vous plait ?

Merci d'avance.