Script oracle,probleme de tri

Script oracle,probleme de tri - Codes et scripts - Linux et OS Alternatifs

Marsh Posté le 15-01-2006 à 08:31:49    

Salut a tous!
 
J'utilise un p'tit script que j'ai trouve sur le net.
J'ai fait quelque modifs d'ordre esthetique.
 

Code :
  1. action(){
  2. sqlplus '/ as sysdba'<<!
  3. SET ECHO OFF
  4. ALTER SESSION
  5.    SET NLS_DATE_FORMAT = 'DD/MM/YYYY HH24:MI:SS';
  6.    Set lines 80
  7.         SET FEEDBACK OFF
  8.         SET TRIMSPOOL ON
  9. col NOM format a21 heading "Nom"
  10. col TOTAL format a15 heading "Total"
  11. col FREE format a15 heading "Espace libre"
  12. col PERCENT_FREE format a20 heading "Pourcentage libre"
  13. select a.tablespace_name as nom,
  14.   lpad(substr(round(a.bytes / (1024*1024),1),1,10)||' M',10) as total,
  15.   lpad(substr(round(b.bytes / (1024*1024),1),1,10)||' M',10) as free ,
  16.   lpad(substr(round(100* b.bytes / a.bytes,1),1,8)||' %',12) as percent_free
  17. from
  18. (select tablespace_name, sum(bytes) bytes from dba_data_files
  19.    group by tablespace_name) a,
  20. (select tablespace_name, sum(bytes) bytes from dba_free_space
  21.    group by tablespace_name) b
  22. where a.tablespace_name = b.tablespace_name
  23. order by percent_free;
  24. !
  25. }
  26. action| awk '/^SQL> /, /^SQL> D/' | grep -v "SQL>"|grep -v "Session altered"


 
Ce script sert a voir l'espace libre des tablespace oracle.
Comme vous pouvez le voir je veux que les resultats soit trié par % d'espace libre.
Voici le resultat
 

Code :
  1. Nom                   Total           Espace libre    Pourcentage libre
  2. --------------------- --------------- --------------- --------------------
  3. ATXCC08UT_0211              2402 M          1250 M              52 %
  4. ATXCCC03UI                   500 M           290 M              58 %
  5. ATXCC10UT_0305              3903 M            25 M              ,6 %
  6. ATXCC10UI_0510               101 M           100 M              99 %
  7. ATXCC08UI_0601               101 M           100 M              99 %
  8. ATXCC10UT_0209              3603 M            50 M             1,4 %
  9. ATXCC17UT_0212              3503 M            50 M             1,4 %
  10. ATXCC08UI_0508               201 M           200 M            99,5 %
  11. ATXCC24UT                    501 M           500 M            99,8 %
  12. ATXCCH06AT                   151 M         150,6 M            99,8 %


 
Le probleme, c'est que des que le nombre n'est plus un entier, le tri est faux (voir ci dessus)
J'ai pas trouver de solution via le tri SQL.... :pfff:  
 
Donc si vous avez des idées, n'hesitez pas!!
 
Merci :jap:


Message édité par shaman200 le 15-01-2006 à 09:21:37
Reply

Marsh Posté le 15-01-2006 à 08:31:49   

Reply

Marsh Posté le 20-01-2006 à 22:15:49    

Je sent que vous hesitez  :D  
 
Alors,personne n'a d'avis sur la question ?  :bounce:

Reply

Marsh Posté le 20-01-2006 à 22:41:45    

tu aurais peut-être plus de réponse dans la catégorie programmation, sous catégorie SQL.


---------------
Celui qui pose une question est idiot 5 minutes. Celui qui n'en pose pas le reste toute sa vie. |  Membre du grand complot pharmaceutico-médico-scientifico-judéo-maçonnique.
Reply

Marsh Posté le 12-06-2006 à 04:33:54    

Bonjour, je ne suis pas dba, alors je n'ai pu tester mais je suppose que ça va fonctionner. Ajoute une colonne numérique et tri par celle-ci.
 
select a.tablespace_name as nom,
b.bytes / a.bytes as percent_free_num
  lpad(substr(round(a.bytes / (1024*1024),1),1,10)||' M',10) as total,
  lpad(substr(round(b.bytes / (1024*1024),1),1,10)||' M',10) as free ,
  lpad(substr(round(100* b.bytes / a.bytes,1),1,8)||' %',12) as percent_free
from
 (select tablespace_name, sum(bytes) bytes from dba_data_files
   group by tablespace_name) a,
 (select tablespace_name, sum(bytes) bytes from dba_free_space
   group by tablespace_name) b
where a.tablespace_name = b.tablespace_name
order by percent_free_num;
!
}


Message édité par Jacques B le 14-06-2006 à 14:46:24
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed