Précédent   Forum des professionnels en informatique > Bases de données > Oracle > Débuter
Débuter Forum d'entraide pour débuter avec Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 03/03/2011, 18h28   #1
Invité régulier
 
Inscription : février 2011
Messages : 38
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 38
Points : 9
Points : 9
Par défaut Trouver les droits d'un utilisateur

Bonjour,

J'aimerais savoir s'il existe un select permettant de retrouver le résultat de la création d'utilisateur avec droits suivants :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
CREATE user &&utillisateur1 IDENTIFIED BY &&mdp1 DEFAULT tablespace &&3 TEMPORARY tablespace &&4 quota unlimited ON &&3 quota unlimited ON &&4;
GRANT &&5 TO &&1 WITH admin OPTION;
GRANT SELECT ON sys.obj$ TO &&1 &&WITH GRANT OPTION;
GRANT SELECT ON sys.ind$ TO &&1 &&WITH GRANT OPTION;
GRANT SELECT ON sys.user$ TO &&1 &&WITH GRANT OPTION;
GRANT SELECT ON sys.col$ TO &&1 &&WITH GRANT OPTION;
GRANT SELECT ON sys.icol$ TO &&1 &&WITH GRANT OPTION;
GRANT SELECT ON sys.con$ TO &&1 &&WITH GRANT OPTION;
GRANT SELECT ON sys.ccol$ TO &&1 &&WITH GRANT OPTION;
GRANT SELECT ON sys.cdef$ TO &&1 &&WITH GRANT OPTION;
GRANT SELECT ON sys.ts$ TO &&1 &&WITH GRANT OPTION;
GRANT SELECT ON sys.seg$ TO &&1 &&WITH GRANT OPTION;
GRANT CREATE VIEW TO &&1 WITH admin OPTION;
GRANT CREATE TRIGGER TO &&1 WITH admin OPTION;
Y a t'il un moyen d'exporter tout ses éléments pour les rejouer par requête ensuite.
Par exemple, j'ai 2 utilisateurs qui semble avoir la même table temporaire physique...mais qui ont 2 tablespace par défaut? est ce rationnel ?
Bref je voudrais pour un utilisateur1 trouver sa tablespace par défaut et son fichier temporaire
Jenesépa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/03/2011, 21h48   #2
Membre chevronné
 
Homme O. Joly
Support
Inscription : décembre 2010
Messages : 287
Détails du profil
Informations personnelles :
Nom : Homme O. Joly
Âge : 38
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : Support
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : décembre 2010
Messages : 287
Points : 617
Points : 617
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
SQL> DESC dba_users
 Nom
 -------------------------------
 USERNAME
 USER_ID
 PASSWORD
 ACCOUNT_STATUS
 LOCK_DATE
 EXPIRY_DATE
 DEFAULT_TABLESPACE
 TEMPORARY_TABLESPACE
 CREATED
 PROFILE
 INITIAL_RSRC_CONSUMER_GROUP
 EXTERNAL_NAME
 PASSWORD_VERSIONS
 EDITIONS_ENABLED
 AUTHENTICATION_TYPE
Donc

Code sql :
1
2
3
4
SELECT USERNAME, 
     , DEFAULT_TABLESPACE
     , TEMPORARY_TABLESPACE
FROM dba_users ;

Réponds à la question des 2 Tablespaces (temporaire et permanent) utilisés par défaut par l'utilisateur.

Une table temporaire est propre à un schéma (et donc à un utilisateur). Ce qui signifie que même si deux utilisateurs U1 et U2 utilisent chacun une table temporaire T, en fait U1 utilisae U1.T et U2 utilise U2.T.
ojo77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/03/2011, 10h27   #3
Invité régulier
 
Inscription : février 2011
Messages : 38
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 38
Points : 9
Points : 9
Bonjour,

donc si le résultat de la requête est :
Code :
1
2
3
4
5
6
7
8
 
SELECT USERNAME, 
     , DEFAULT_TABLESPACE
     , TEMPORARY_TABLESPACE
FROM dba_users ;
USERNAME    TABLESPACE    TEMPORARY_TABLESPACE
TOTO           TABLE_TOTO           TEMP
TATA           TABLE_TATA           TEMP
pour avoir le même résultat est ce que je fais
solution1
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
 
SET utillisateur1 =TOTO
SET mdp1=mdp_toto
SET 3 = TABLE_TOTO
SET 4 = TEMP
 
CREATE user &&utillisateur1 IDENTIFIED BY &&mdp1 DEFAULT tablespace &&3 TEMPORARY tablespace &&4 quota unlimited ON &&3 quota unlimited ON &&4;
GRANT &&5 TO &&1 WITH admin OPTION;
GRANT SELECT ON sys.obj$ TO &&1 &&WITH GRANT OPTION;
GRANT SELECT ON sys.ind$ TO &&1 &&WITH GRANT OPTION;
GRANT SELECT ON sys.user$ TO &&1 &&WITH GRANT OPTION;
GRANT SELECT ON sys.col$ TO &&1 &&WITH GRANT OPTION;
GRANT SELECT ON sys.icol$ TO &&1 &&WITH GRANT OPTION;
GRANT SELECT ON sys.con$ TO &&1 &&WITH GRANT OPTION;
GRANT SELECT ON sys.ccol$ TO &&1 &&WITH GRANT OPTION;
GRANT SELECT ON sys.cdef$ TO &&1 &&WITH GRANT OPTION;
GRANT SELECT ON sys.ts$ TO &&1 &&WITH GRANT OPTION;
GRANT SELECT ON sys.seg$ TO &&1 &&WITH GRANT OPTION;
GRANT CREATE VIEW TO &&1 WITH admin OPTION;
GRANT CREATE TRIGGER TO &&1 WITH admin OPTION;

ou

solution2

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
 
SET utillisateur1 =TOTO
SET mdp1=mdp_toto
SET 3 = TABLE_TOTO
SET 4 = TABLE_TOTO
 
CREATE user &&utillisateur1 IDENTIFIED BY &&mdp1 DEFAULT tablespace &&3 TEMPORARY tablespace &&4 quota unlimited ON &&3 quota unlimited ON &&4;
GRANT &&5 TO &&1 WITH admin OPTION;
GRANT SELECT ON sys.obj$ TO &&1 &&WITH GRANT OPTION;
GRANT SELECT ON sys.ind$ TO &&1 &&WITH GRANT OPTION;
GRANT SELECT ON sys.user$ TO &&1 &&WITH GRANT OPTION;
GRANT SELECT ON sys.col$ TO &&1 &&WITH GRANT OPTION;
GRANT SELECT ON sys.icol$ TO &&1 &&WITH GRANT OPTION;
GRANT SELECT ON sys.con$ TO &&1 &&WITH GRANT OPTION;
GRANT SELECT ON sys.ccol$ TO &&1 &&WITH GRANT OPTION;
GRANT SELECT ON sys.cdef$ TO &&1 &&WITH GRANT OPTION;
GRANT SELECT ON sys.ts$ TO &&1 &&WITH GRANT OPTION;
GRANT SELECT ON sys.seg$ TO &&1 &&WITH GRANT OPTION;
GRANT CREATE VIEW TO &&1 WITH admin OPTION;
GRANT CREATE TRIGGER TO &&1 WITH admin OPTION;
Jenesépa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/03/2011, 10h49   #4
Membre chevronné
 
Homme O. Joly
Support
Inscription : décembre 2010
Messages : 287
Détails du profil
Informations personnelles :
Nom : Homme O. Joly
Âge : 38
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : Support
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : décembre 2010
Messages : 287
Points : 617
Points : 617
La solution 1 en elevant les '&&' devant les 'WITH'
Code sql :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
define utillisateur1 =&1
define mdp1=&2
-- SET 3 = TABLE_TOTO
-- SET 4 = TEMP
 
CREATE user &&utillisateur1 IDENTIFIED BY &&mdp1 DEFAULT tablespace &&3 TEMPORARY tablespace &&4 quota unlimited ON &&3 quota unlimited ON &&4;
GRANT &&5 TO &&1 WITH admin OPTION;
GRANT SELECT ON sys.obj$ TO &&1 WITH GRANT OPTION;
GRANT SELECT ON sys.ind$ TO &&1 WITH GRANT OPTION;
GRANT SELECT ON sys.user$ TO &&1 WITH GRANT OPTION;
GRANT SELECT ON sys.col$ TO &&1 WITH GRANT OPTION;
GRANT SELECT ON sys.icol$ TO &&1 WITH GRANT OPTION;
GRANT SELECT ON sys.con$ TO &&1 WITH GRANT OPTION;
GRANT SELECT ON sys.ccol$ TO &&1 WITH GRANT OPTION;
GRANT SELECT ON sys.cdef$ TO &&1 WITH GRANT OPTION;
GRANT SELECT ON sys.ts$ TO &&1 WITH GRANT OPTION;
GRANT SELECT ON sys.seg$ TO &&1 WITH GRANT OPTION;
GRANT CREATE VIEW TO &&1 WITH admin OPTION;
GRANT CREATE TRIGGER TO &&1 WITH admin OPTION;

et les variable 1, 2, 3, 4, 5 doivent être des paramètres de ton script
ojo77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/03/2011, 11h02   #5
Rédacteur
 
Inscription : décembre 2002
Messages : 2 385
Détails du profil
Informations personnelles :
Localisation : France, Var (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : décembre 2002
Messages : 2 385
Points : 3 261
Points : 3 261
Je crois qu'il faut clarifier pas mal de choses avant d'aller plus loin.

Sans vouloir être désobligeant, j'ai l'impression que vous avez fait un copier coller de quelque chose que vous ne comprenez pas.

1) Déjà, quelle est votre version d'Oracle ?

Citation:
Envoyé par Jenesépa Voir le message
Par exemple, j'ai 2 utilisateurs qui semble avoir la même table temporaire physique
2) Je suppose que c'est de tablespace temporaire que vous parlez ?

3) Ensuite, pourquoi intervenez-vous sur les tables telles que SYS.OBJ$ ?
En temps normal, on n'a pas besoin d'accéder à ces tables.

4) Ces droits WITH GRANT OPTION ou WITH ADMIN OPTION sont-ils bien nécessaires ?

5) Quel est réellement et précisément votre objectif ?
Dans le titre, vous parlez de "droits", dans le corps de votre question, il ne s'agit apparemment que de tablespace principal ou temporaire... Difficile de s'y retrouver !
__________________
Consultant / formateur Oracle indépendant
Certifié OCP 10g et 11g, sécurité 11g
Pomalaix est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 04/03/2011, 11h06   #6
Rédacteur
 
Inscription : décembre 2002
Messages : 2 385
Détails du profil
Informations personnelles :
Localisation : France, Var (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : décembre 2002
Messages : 2 385
Points : 3 261
Points : 3 261
Citation:
Envoyé par Jenesépa Voir le message
Code :
1
2
3
4
SET utillisateur1 =TOTO
SET mdp1=mdp_toto
SET 3 = TABLE_TOTO
SET 4 = TEMP
Pour définir une variable de substitution, SET n'est pas possible, c'est DEFINE.
__________________
Consultant / formateur Oracle indépendant
Certifié OCP 10g et 11g, sécurité 11g
Pomalaix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/03/2011, 11h20   #7
Rédacteur
 
Inscription : décembre 2002
Messages : 2 385
Détails du profil
Informations personnelles :
Localisation : France, Var (Provence Alpes Côte d'Azur)

Informations forums :
Inscription : décembre 2002
Messages : 2 385
Points : 3 261
Points : 3 261
Citation:
Envoyé par ojo77 Voir le message
Une table temporaire est propre à un schéma (et donc à un utilisateur). Ce qui signifie que même si deux utilisateurs U1 et U2 utilisent chacun une table temporaire T, en fait U1 utilisae U1.T et U2 utilise U2.T.
D'après ma demi-compréhension de la question, cette histoire de table temporaire est hors sujet, mais je trouve néanmoins votre formulation très ambiguë.

Sous Oracle, les tables temporaires sont obligatoirement de type GLOBAL, c'est à dire qu'elles sont accessibles par tous les utilisateurs sans qu'il soit nécessaire de donner des droits particuliers. (Par contre les données de cette table temporaire sont privées : chaque session ne peut voir que les données qu'elle a elle-même introduites).
Si SCOTT crée une table temporaire TABTEMP, HR peut immédiatement accéder à cette table en la désignant par SCOTT.TABTEMP, puisque SCOTT en est le propriétaire.
__________________
Consultant / formateur Oracle indépendant
Certifié OCP 10g et 11g, sécurité 11g
Pomalaix est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/03/2011, 11h29   #8
Membre chevronné
 
Homme O. Joly
Support
Inscription : décembre 2010
Messages : 287
Détails du profil
Informations personnelles :
Nom : Homme O. Joly
Âge : 38
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : Support
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : décembre 2010
Messages : 287
Points : 617
Points : 617
Citation:
Envoyé par Pomalaix Voir le message
D'après ma demi-compréhension de la question, cette histoire de table temporaire est hors sujet, mais je trouve néanmoins votre formulation très ambiguë.

Sous Oracle, les tables temporaires sont obligatoirement de type GLOBAL, c'est à dire qu'elles sont accessibles par tous les utilisateurs sans qu'il soit nécessaire de donner des droits particuliers. (Par contre les données de cette table temporaire sont privées : chaque session ne peut voir que les données qu'elle a elle-même introduites).
Si SCOTT crée une table temporaire TABTEMP, HR peut immédiatement accéder à cette table en la désignant par SCOTT.TABTEMP, puisque SCOTT en est le propriétaire.
En effet mes termes ne sont pas assez précis. Donc de manière plus claire (j'espère)

L'utilisateur u1 peut créer la table temporaire t
Code sql :
CREATE global TEMPORARY TABLE t AS SELECT * FROM dba_objects WHERE 1=2;

L'utilisateur u2 peut lui aussi créer une table temporaire t

Code sql :
CREATE global TEMPORARY TABLE t AS SELECT * FROM dba_segments WHERE 1=2;

Si u1 utilise la table temporaire t sans préciser de schéma, il utilisera U1.T. De même si u2 utilise la table temporaire t sans préciser de schéma, il utilisera U2.T.

Bon ceci dit ça ne semble en effet pas être le problème ici.
ojo77 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 04/03/2011, 18h30   #9
Invité régulier
 
Inscription : février 2011
Messages : 38
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 38
Points : 9
Points : 9
Bonjour,

En fait je récupère une mécanique d'import/export (qui n'est pas moi) pour mettre à jour une base de test (j'ai vu des tutoriaux qui m'ont l'air plus simple comme celui ci => http://orafrance.developpez.com/dbahelp/#L2.1).
Mais j'hésite à sortir des sentiers fléchés. D'autant plus que la procédure d'import/export permet de diminuer la taille physique des DBF sur un serveur saturé (si autre méthode fiable et sans risque pour diminuer la taille je suis preneur ).

Donc pour continuer la création de 2 utilisateurs avec la requête citée en est le point final.
Les allégations de la procédures d'import cite de mettre en valeur :
1=>TOTO
2=>TOTO
3=>TOTO
4=>WITH GRANT OPTION
Seulement ça m'a étonné car qd je faisais la requête :
Code :
1
2
 
SELECT *FROM dba_users ;
Je ne voyais pas de table temporaire TOTO ni non plus physiquement, alors j'ai donc après qq recherche préférer soumettre mes doutes à vos conseils avisés.
Mon objectif est juste de comparer l'existant qui a été créé avec cette requête pour mettre à jour de façon précise la procédure et la base de test.

Pour répondre à Pomalaix

1) Déjà, quelle est votre version d'Oracle ?
=> 9.2.0.4 Standard

2) Je suppose que c'est de tablespace temporaire que vous parlez ?
=>Oui

3) Ensuite, pourquoi intervenez-vous sur les tables telles que SYS.OBJ$ ?
En temps normal, on n'a pas besoin d'accéder à ces tables.
=> C'est dans la procédure

4) Ces droits WITH GRANT OPTION ou WITH ADMIN OPTION sont-ils bien nécessaires ?
=> C'est dans la procédure

5) Quel est réellement et précisément votre objectif ?
Dans le titre, vous parlez de "droits", dans le corps de votre question, il ne s'agit apparemment que de tablespace principal ou temporaire... Difficile de s'y retrouver !
=> Voir plus haut

Si j'ai bien compris Ojo77 je dois mettre TEMP dans ma requête car c'est ce que je vois dans le résultat de la requête sur dba_users. Je m'excuse pour le vocabulaire je suis plus à l'aise sur d'autre BDD.

Merci beaucoup pour vos réponses à tous et si vous pouviez m'éclairer sur les limites de la méthode http://orafrance.developpez.com/dbahelp/#L2.1 et s'il existe une fonction de maintenance sans risque comme dans pervasive ou sql server pour réduire la taille des fichiers de données et les remettre au propre
Jenesépa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/03/2011, 15h33   #10
Membre éprouvé
 
Femme
Administrateur de base de données
Inscription : novembre 2007
Messages : 341
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France

Informations professionnelles :
Activité : Administrateur de base de données

Informations forums :
Inscription : novembre 2007
Messages : 341
Points : 478
Points : 478
bonjour,

si ce sont les droits sur les objets qui t'intéressent c'est la table dba_tab_privs qu'il faut consulter, si tu veux savoir qui possède quoi, c'est la table dba_objects, les droits d'écriture dans un tablespace, c'est la table dba_ts_quotas t les tablespaces par défaut... c'est bien dans dba_users.

maintenant, je trouve que les with grant options sont bien inutiles, que l'accès aux vues des sys sont étranges, et qu'une réponse "c'est dans la procédure" est bien insatisfaisante au vu des implications de certains choix de construction de schémas par rapports aux exigences de sécurité
Heaven93 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/03/2011, 14h51   #11
Invité régulier
 
Inscription : février 2011
Messages : 38
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 38
Points : 9
Points : 9
Merci pour vos réponses et vos précisions.
Cela m'a aidé, par ailleurs je suis allé dans l'interface oracle de gestion qui m'a permis de confirmer tout ça.
En effet toutes les infos sont écrites graphiquement dans l'arborescence définissant les propriétés de l'utilisateur.
Jenesépa est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h37.


 
 
 
 
Partenaires

Hébergement Web