Bonjour,
J'ai un problème avec les privilèges.
J'ai 2 users :
-user1 avec la table table1
-user2 doit veut pouvoir faire un select sur table1 de user1.

Pour cela, je pensais utiliser un seul role pour les 2 users.

Voici les commandes que je saisie (j'ai simplifiée les create user) :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
 
CREATE USER user1;
 
create table table1 (a int);
 
create role ROLE1;
GRANT CREATE TABLE,ALTER SESSION,CREATE SESSION TO ROLE1;
create or replace directory datadir as 'monrep';
grant read,write on directory datadir to ROLE1;
 
GRANT ROLE1 to user1;
 
 
GRANT SELECT, INSERT, UPDATE, DELETE ON user1.table1 TO ROLE1;
 
CREATE USER user2;
GRANT ROLE1 to user2;
Si apres cela, je me connecte a user2, puis je fait :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
select * from table1
j'ai le message d'erreur

ORA-00942: Table ou vue inexistante
pour la table table1.

Si apres tout cela, je refait :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
GRANT SELECT, INSERT, UPDATE, DELETE ON user1.table1 TO ROLE1;
Alors la c'est bon, l'utilisateur user2 peut faire une requette sur user1.table1.

Est-ce qu'il y a une explication a ce drole de fonctionnement ?
Il y a peut être un problème entre les privilèges systemes et les privilèges objets, mais je suis débutant en Oracle.

Pour information, je travaille avec Oracle 10 XE.