Bonjour,
Je suis débutant , pouvez vous svp m’expliquer cette requête :
MerciiiiCode:
1
2
3
4
5 set pages 0 select 'alter user HR quota unlimited on ' || tablespace_name || ';' from dba_tablespaces where CONTENTS='PERMANENT' order by 1
Version imprimable
Bonjour,
Je suis débutant , pouvez vous svp m’expliquer cette requête :
MerciiiiCode:
1
2
3
4
5 set pages 0 select 'alter user HR quota unlimited on ' || tablespace_name || ';' from dba_tablespaces where CONTENTS='PERMANENT' order by 1
La requête liste tous les tablespaces "physiques" (pas les Undo, ni les TEMP).
Chaque ligne ramenée par la requête est une chaîne de caractère 'alter user HR quota unlimited on <tablespace>;'
Généralement ce genre de requête est spoolée dans un fichier puis le fichier est exécuté (pour accomplir les ALTER USER)
Merci pour la réponse claire . et la condition c'est pour quel objectif?
Le type qui a écrit cette requête a fait du bricolage (et je respecte tout à fait ce bricolage, le mot n'a rien de péjoratif).
Cette requête lit une table système ( plus ou moins réservée aux administrateurs), et renvoie la liste des Tablespace where CONTENTS='PERMANENT' , autrement dit, la liste des tablespace qui ne sont pas 'temporaires'.Code:
1
2
3
4 select tablespace_name from dba_tablespaces where CONTENTS='PERMANENT' order by 1
Le gars en question voulait faire une certaine manipulation sur tous ces tablespaces ; il voulait donner un accès en écriture à l'utilisateur HR sur tous ces tablespaces.
Il fallait donc qu'il lance la commande alter user HR quota unlimited on .... ; plein de fois, une fois pour chacun des tablespaces.
Plutôt que taper cette requête plein de fois, en changeant à chaque fois le nom du tablespace, il a lancé la requête que tu as copiée.
Cette requête a affiché un certain résultat.
Et le gars en question a ensuite fait un copier/coller de tout ce qui a été affiché. Ca a donné une succession de commandes SQL ; il ne restait plus qu'à exécuter toutes ces commandes, par un simple copier/coller.
Bricolage simple et efficace.