[SCRIPT] - monitoring_tablespace.sql

  • 01/11/2016/
  • Monitoração/Troubleshooting

clear columns
column tablespace format a26
column total_mb format 999,999,999,999.99
column used_mb format 999,999,999,999.99
column free_mb format 999,999,999.99
column pct_used format 999.99
column graph format a25 heading "GRAPH (X=5%)"
column status format a10
compute sum of total_mb on report
compute sum of used_mb on report
compute sum of free_mb on report
break on report 
set lines 200 pages 100
SELECT /*+ parallel(total,12) parallel(free,12) first_rows */ 
total.ts                                  tablespace, 
Decode(total.mb, NULL, 'OFFLINE', 
                 dbat.status)             status, 
total.mb                                  total_mb, 
Nvl(total.mb - free.mb, total.mb)         used_mb, 
Nvl(free.mb, 0)                           free_mb, 
Decode(total.mb, NULL, 0, 
                 Nvl(Round(( total.mb - 
free.mb ) / ( total.mb ) * 100, 2), 100)) pct_used, 
CASE 
  WHEN ( total.mb IS NULL ) THEN '[' 
                                 ||Rpad(Lpad('OFFLINE', 13, '-'), 20, '-') 
                                 ||']' 
  ELSE '[' 
       || Decode(free.mb, NULL, 'XXXXXXXXXXXXXXXXXXXX', 
                             Nvl(Rpad(Lpad('X', Trunc(( 100 - Round( 
( free.mb ) / ( total.mb ) * 
100, 
      2) ) / 
5), 
'X'), 20, '-'), '--------------------')) 
||']' 
END                                       AS GRAPH 
FROM   (SELECT tablespace_name          ts, 
               SUM(bytes) / 1024 / 1024 mb 
        FROM   dba_data_files 
        GROUP  BY tablespace_name) total, 
       (SELECT tablespace_name          ts, 
               SUM(bytes) / 1024 / 1024 mb 
        FROM   dba_free_space 
        GROUP  BY tablespace_name) free, 
       dba_tablespaces dbat 
WHERE  total.ts = free.ts(+) 
       AND total.ts = dbat.tablespace_name 
UNION ALL 
SELECT sh.tablespace_name, 
       'TEMP', 
       SUM(sh.bytes_used + sh.bytes_free) / 1024 / 1024 
       total_mb, 
       SUM(sh.bytes_used) / 1024 / 1024 
       used_mb, 
       SUM(sh.bytes_free) / 1024 / 1024 
       free_mb, 
       Round(SUM(sh.bytes_used) / SUM(sh.bytes_used + sh.bytes_free) * 100, 2) 
       pct_used, 
       '[' 
       ||Decode(SUM(sh.bytes_free), 0, 'XXXXXXXXXXXXXXXXXXXX', 
         Nvl(Rpad(Lpad('X', ( Trunc( 
                            Round( 
                  ( 
         SUM( 
                                                           sh.bytes_used) / SUM( 
         sh.bytes_used + sh.bytes_free) ) * 100, 2) / 5) ), 'X'), 20, '-'), 
         '--------------------')) 
       ||']' 
FROM   v$temp_space_header sh 
GROUP  BY tablespace_name 
ORDER  BY 6 ;