Bonsoir,
j'ai pas pu comprendre la difference excacte entre schema et user.
ya-t-il de requette sql me permet de consulter la liste des schemas et la liste des users pour une instance de base des données.
Bonsoir,
j'ai pas pu comprendre la difference excacte entre schema et user.
ya-t-il de requette sql me permet de consulter la liste des schemas et la liste des users pour une instance de base des données.
Effectivement, c'est assez ressemblant
En gros
Un schemas est un ensemble d'objet (tables, vues, procédures) appartenant à un USER
Tu peux avoir un user sans schéma, mais pas l'inverse !
Liste des users
liste des schemasselect * from all_users
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 select distinct owner from all_objects
bonjour,
Merci Garuda,
1-je veux savoir comment le schema et le user sont conçus au niveau meta data d 'oracle...autrement, quelle est la cardinalité entre user et schema?
2- normalement quand on crée un user, un schema par defaut sera créer automatiquement.
Quelle est la structure de ce schema? est ce qu'il est compoé par des objets sql?
pourkoi le shema et le user sont conçus separemment? porkoi les oradistes n'ont pas choisi la strategie de confondre la notion de schema et de user?
Chez Oracle, schéma et user sont effectivement synonymes.
Aucun objet n'est créé par défaut dans un schéma / user.
Bonjour,
C vrai que la notion de schema et user sur Oracle est confuse. Sur Oracle, les notions du schéma et user sont vraiment differentes des autres SGBD notamment ; SQL Server, DB2 et MYSQL...
Sur Oracle, la relation entre schéma et user est une relation 1-1 , ce n'est pas comme on avait répondu avant qu'un user ne peut pas avoir de schéma, ca c'est faux car même, si ne vous créez pas d'objets sous un user, Oracle crée par défaut un schéma composants de plusieurs vues , tables de dictionnaire de données comme user_tables, user_errors, user_....*
Dans ce qui suit, vous pouvez avoir une idée, la diff entre schéma et user sur Oracle.
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
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46 SQL> conn wissem/wissem Connected. SQL> select object_name from user_objects; OBJECT_NAME -------------------------------------------------------------------------------- T_WISSEM T2_WISSEM 11 rows selected. SQL> conn orawiss / wissem Connected. SQL> select object_name from user_objects; OBJECT_NAME -------------------------------------------------------------------------------- T2_ORAWISS T_ORAWISS SQL> alter session set current_schema=wissem; Session altered. SQL> select object_name from user_objects; OBJECT_NAME -------------------------------------------------------------------------------- T2_ORAWISS T_ORAWISS SQL> select username, schemaname from v$session ; USERNAME SCHEMANAME ------------------------------ ------------------------------ SYS ORAWISS WISSEM SYS SYS SYS 5 rows selected. SQL>
@oraswiss
Ce n'est pas ce qui a été dit !Sur Oracle, la relation entre schéma et user est une relation 1-1 , ce n'est pas comme on avait répondu avant qu'un user ne peut pas avoir de schéma, ca c'est faux car même, si ne vous créez pas d'objets sous un user, Oracle crée par défaut un schéma composants de plusieurs vues , tables de dictionnaire de données comme user_tables, user_errors, user_....*
Ce qui a été dit, c'est qu'il peut exister un user "TOTO" sans schéma "TOTO" (c'est à dire sans objets lui appartenant) !
Ton exemple n'est pas parlant !
Sauf erreur, les objets dont tu parles, ne sont pas créés dans le schéma du user mais dans le schéma SYS à la creation de la base !!!!!
1)
L'utilisateur fait référence à la notion d'identité.
Le schéma fait référence à la notion de propriété.
Tout utilisateur X possède un schéma de même nom X (l'ensemble des objets qui lui appartiennent), initialement vide.
Les privilèges sont associés à l'utilisateur, et non au schéma.
Quand on se connecte, on le fait sous une certaine identité (disons SCOTT), et on est placé par défaut dans le schéma du même nom.
Mais comme Wissem l'a rappelé, on peut changer de schéma courant (disons HR) sans changer pour autant d'identité. C'est à dire qu'on continue à travailler avec les privilèges de SCOTT sur les objets de HR. On ne devient pas HR !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 connect system/system grant select on hr.employees to scott;2)
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
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 SQL> connect scott/tiger Connecté. SQL> select username, schemaname from v$session where sid=(select max(sid) from v$mystat); USERNAME SCHEMANAME ------------------------------ ------------------------------ SCOTT SCOTT SQL> SQL> alter session set current_schema=HR; Session modifiée. SQL> select username, schemaname from v$session where sid=(select max(sid) from v$mystat); USERNAME SCHEMANAME ------------------------------ ------------------------------ SCOTT HR SQL> select count(*) from employees; COUNT(*) ---------- 107 SQL> SQL> -- ce sont les objets de SCOTT qui sont listés ! SQL> select object_name, object_type from user_objects; OBJECT_NAME OBJECT_TYPE --------------- ------------------- PK_DEPT INDEX DEPT TABLE EMP TABLE PK_EMP INDEX BONUS TABLE SALGRADE TABLE
C'est aussi une question de convention.
Dans certaines équipes, on fait une distinction opérationnelle entre utilisateur et schéma : un schéma est un compte Oracle possédant les objets applicatifs, alors qu'un utilisateur est un simple compte Oracle ne possédant aucun objet en propre, et qui va utiliser les objets du schéma applicatif.
Bonjour,
Comment peut on savoir la liste des objets associés à l'utilisateur et la liste associés au schemaTout utilisateur X possède un schéma de même nom X (l'ensemble des objets qui lui appartiennent), initialement vide.
Les privilèges sont associés à l'utilisateur, et non au schéma.
j'ai compris qu'un user peut posseder plusieurs schemas....est ce c'est Correcte? est ce que l'inverse est correcte?on peut changer de schéma courant (disons HR) sans changer pour autant d'identité.
je cherche un plus d'explication sur la cardinalité entre le user et le schema.
OK je vais rajouter une couche alors...
user = schema <=> schema = user
Pas besoin de se prendre la tête dessus !
Ce que Pomalaix voulait démontrer c'est qu'on peut switch de user en user tout en gardant les droits du user initial.
En utilisant la fonction recherche sur le titre exacte du post on obtient :
http://www.developpez.net/forums/d15...e-user-schema/
PS : Fred = orafrance
qui dit clairement que c'est la même chose tout le reste n'est que pinaillage... (possède,est,équivaut...)
Sur le forum on pinaille parfois parce que par exemple vous pouvez avoir un schéma (= user) A qui contient les données (tables), puis un schéma (= user) B qui contient les méthodes (proc stock) accédant au précédent schéma (=user) A et un user (= schéma) C applicatif qui se connecte à la base pour exécuter les procs stock définies par le précédent schéma(= user) B.
Est ce vraiment plus clair...hmmm...je ne suis pas sûr...
Un utilisateur X possède un et seul schéma qui s'appelle X aussi. Comme on l'a dit, le schéma de X, c'est l'ensemble des objets qui appartiennent à X.
Autrement dit, il y a une relation 1-1 entre schéma et utilisateur. (Et là j'entends les mauvaises langues qui vont dire que si c'est 1-1, c'est qu'il y a identité).
Par contre, un utilisateur X peut posséder des droits sur des objets qui appartiennent à d'autres utilisateurs, donc qui sont situés dans d'autres schémas.
Partager