Bonjour,
Je veux écrire un script qui me permet de contrôler facilement les espaces libres et occupés sur une base, j'ai donc écrit ce qui suit:

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
select  fs.TABLESPACE_NAME "Tablespace",
		to_char (sum(df.BYTES)/1024/1024,'999990.00') "Size Mo",
		to_char (sum(fs.BYTES)/1024/1024,'999990.00') "Free Mo", 
		to_char (sum(df.BYTES/1024/1024)-(sum(fs.BYTES)/1024/1024),'999990.00') "Used Mo",
		to_char ((sum(fs.BYTES)/1024/1024) / (sum(df.BYTES)/1024/1024)*100 ,'999990.00') "Free %",
		to_char (((sum(df.BYTES)/1024/1024)-(sum(fs.BYTES)/1024/1024)) / (sum(df.BYTES)/1024/1024)*100 ,'999990.00') "Used %"
from dba_data_files df,
     (select TABLESPACE_NAME,
			 FILE_ID,
             sum(BYTES) BYTES
      from dba_free_space
	  group by TABLESPACE_NAME,
               FILE_ID) fs
where fs.FILE_ID=df.FILE_ID
group by fs.TABLESPACE_NAME
order by fs.tablespace_name;
J'obtiens le résultat suivant:

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
Tablespace                     Size Mo    Free Mo    Used Mo    Free %     Used %
------------------------------ ---------- ---------- ---------- ---------- ----------
DATA_AV                           2532.00       3.44    2528.56       0.14      99.86
DATA_CH                           1934.00    1006.00     928.00      52.02      47.98
DATA_IV                           1200.00     563.94     636.06      46.99      53.01
DATA_MO                           1934.00    1244.94     689.06      64.37      35.63
DATA_SE                           1934.00     814.44    1119.56      42.11      57.89
DATA_VA                           1934.00       0.69    1933.31       0.04      99.96
HISTORIQUE_AV                     3500.00     270.31    3229.69       7.72      92.28
HISTORIQUE_CH                     3230.00    2021.69    1208.31      62.59      37.41
HISTORIQUE_IV                     3000.00    2110.88     889.13      70.36      29.64
HISTORIQUE_MO                     3230.00    2106.13    1123.88      65.21      34.79
HISTORIQUE_SE                     3230.00    2125.94    1104.06      65.82      34.18
HISTORIQUE_VA                     3230.00       4.75    3225.25       0.15      99.85
IDX_DATA_AV                        800.00      77.81     722.19       9.73      90.27
IDX_DATA_CH                        800.00     576.69     223.31      72.09      27.91
IDX_DATA_IV                        800.00     707.00      93.00      88.38      11.63
IDX_DATA_MO                        800.00     688.94     111.06      86.12      13.88
IDX_DATA_SE                        800.00     557.31     242.69      69.66      30.34
IDX_DATA_VA                        800.00     584.06     215.94      73.01      26.99
IDX_HIS_AV                        3000.00    1958.38    1041.63      65.28      34.72
IDX_HIS_CH                        3000.00    2330.75     669.25      77.69      22.31
IDX_HIS_IV                        3000.00    1645.81    1354.19      54.86      45.14
IDX_HIS_MO                        3000.00    2442.06     557.94      81.40      18.60
IDX_HIS_SE                        3000.00    2407.38     592.63      80.25      19.75
IDX_HIS_VA                        3000.00    2073.19     926.81      69.11      30.89
SYSTEM                            1100.00      37.81    1062.19       3.44      96.56
TOOLS                               10.00       9.94       0.06      99.38       0.63
UNDOTBS1                          4385.00    4175.69     209.31      95.23       4.77
 
27 rows selected.
Donc, ça marche sans problème à un détail prés, je ne vois pas le tablespace TEMP ce qui fausse mes calculs quand à l'occupation du disque, la base parait plus réduite qu'elle ne l'est. Or comme c'est la gestion de l'espace disque au plus juste qui me pose problème, ça ne me sert pas à grand chose .

Donc, comment intégrer le volume du tablespace TEMP dans le résultat???

Merci
Patrick