Oracle User

Résolu/Fermé
termgsi Messages postés 678 Date d'inscription vendredi 5 juin 2009 Statut Membre Dernière intervention 3 novembre 2016 - 17 mai 2011 à 15:33
termgsi Messages postés 678 Date d'inscription vendredi 5 juin 2009 Statut Membre Dernière intervention 3 novembre 2016 - 28 mai 2011 à 09:40
Bonjour,

Voilà mon problème j'ai crée toutes mes tables à l'aide d'un utilisateur mais quand je crée un nouvelle utilisateur Oracle que les tables n'existent pas .

Merci d'avance.

2 réponses

jee pee Messages postés 39577 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 16 avril 2024 9 220
Modifié par jee pee le 17/05/2011 à 21:33
Bonjour,

Pour que les tables d'un utilisateur soient visibles par les autres, il faut explicitement l'autoriser.

Cela s'effectue via la commande grant, et revoke pour enlever ces mêmes droits : https://www.techonthenet.com/oracle/grant_revoke.php

par exemple :

grant select on table1 to user2;

grant all on table1 to user2;

Après pour utiliser ces tables, si elles appartiennent à l'utilisateur user1, user2 devra utiliser une syntaxe de ce type :

select * from user1.table1 ;

Et pour une autorisation à tous les utilisateurs :

grant all on table1 to public ;

cdlt



Un étranger, c'est un ami qu'on n'a pas encore rencontré.
1
termgsi Messages postés 678 Date d'inscription vendredi 5 juin 2009 Statut Membre Dernière intervention 3 novembre 2016 39
20 mai 2011 à 17:31
Enter user-name: alex => Celui qui a crée les tables
Enter password: *******
Connected.

SQL> Grant Connect,resource, dba
2 To Lambda;

Grant succeeded.

SQL> Grant all
2 On Cheval
3 To Lambda;

Grant succeeded.

SQL> connect
Enter user-name: Lambda => Celui que veut y avoir accès
Enter password: *******
Connected.

SQL> select * from cheval;
select * from cheval
*
ERROR at line 1:
ORA-00942: table or view does not exist

Voilà j'ai toujours fait comme ce là.
0
jee pee Messages postés 39577 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 16 avril 2024 9 220
Modifié par jee pee le 20/05/2011 à 17:34
Bah non si les tables appartiennent à un autre user il faut faire :

select * from alex.cheval;

Puisque lambda pourrait aussi avoir sur son compte une table qui s'appelle cheval et qui serait différente de celle d'alex.
0
termgsi Messages postés 678 Date d'inscription vendredi 5 juin 2009 Statut Membre Dernière intervention 3 novembre 2016 39
20 mai 2011 à 17:44
Merci dans ce cas sa fonctionne, si dans le cas où je les aurai rajouté à mon tablespace et qu'il s auraient crée des tables, ils auraient pu tous les 2 accès aux tables sans sans avoir à mettre X.cheval ?
0
jee pee Messages postés 39577 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 16 avril 2024 9 220
20 mai 2011 à 18:15
Non. Il n'y a pas de rapport avec le tablespace où est stockée la table. Ce qui prime c'est le user (schéma) propriétaire de la table.
0
DROE Messages postés 148 Date d'inscription mardi 5 mai 2009 Statut Membre Dernière intervention 26 juillet 2012 48
21 mai 2011 à 23:39
Hello,
sinon pour éviter le pré-fixage dans les requêtes avec le nom de son propriétaire, un synonyme public serait le bienvenue

SQL> CREATE OR REPLACE PUBLIC SYNONYM table_1 FOR ALEX.table_1;
SQL> CREATE OR REPLACE PUBLIC SYNONYM table_2 FOR ALEX.table_2;

http://www.dba-ora.fr/article-creer-ou-supprimer-un-synonyme-oracle-46440354.html
0
termgsi Messages postés 678 Date d'inscription vendredi 5 juin 2009 Statut Membre Dernière intervention 3 novembre 2016 39
24 mai 2011 à 18:32
Ok merci je vais testé ceci
0