Tablespace Size en SQL Developer
Para los que utilizan SQL Developer, este es un reporte que muestra la información sobre el tamaño de los tablespaces en una base de datos.
Regularmente nos piden el tamaño de la base de datos o simplemente tenemos que ajustar el tamaño de los tablespaces como parte del mantenimiento.
El siguiente reporte nos permite ver de manera rápida toda esta información.
- Dar click en el reporte dentro la sección de User Defined Reports.
- Seleccionar la conexión sobre la cual deseamos obtener la información.
- Seleccionar a que porcentaje deseamos dejar los tablespaces. Por ejemplo si actualmente sabemos que unos estan a 98% y queremos dejarlos al 50% entonces ponemos 50. El reporte obtendrá cuanto espacio (MB) se necesita agregar a los tablespaces para bajarlos a 50%
El query que da la información anterior es el siguiente:
SELECT nvl(name,'=== TOTAL for DB ===') "Tablespace" ,
TO_CHAR(SUM(mbytes),'999,999,999.99') "Total MB" ,
TO_CHAR(SUM(used),'999,999,999.99') "Used MB" ,
TO_CHAR(SUM(free),'999,999,999.99') "Free MB" ,
ROUND(AVG(pct_used),2) "%Used" ,
ROUND(AVG(pct_free),2) "%Free" ,
'SQLDEV:GAUGE:0:100:0:0:'
|| AVG(pct_used) AS "Tablespace Utilization" ,
TO_CHAR(SUM(new_sz),'999,999,999.99') "Expected Size" ,
TO_CHAR(SUM(add_sz),'999,999,999.99') "Add MB for desired %"
FROM
(SELECT name ,
ROUND(mbytes,2) mbytes ,
ROUND(used,2) used ,
ROUND(free,2) free ,
ROUND(pct_used,2) pct_used,
ROUND(pct_free,2) pct_free,
ROUND(
CASE
WHEN ( ((100 *used)/ trim(:desired_pct))-mbytes < 0)
THEN mbytes
ELSE ((100*used)/ trim(:desired_pct))
END,2) new_sz,
ROUND(
CASE
WHEN ( (((100 *used)/ trim(:desired_pct))-mbytes) < 0 )
THEN 0
ELSE (((100 *used)/ trim(:desired_pct))-mbytes)
END,2) add_sz
FROM
(SELECT NVL(b.tablespace_name, NVL(a.tablespace_name,'UNKOWN')) name,
mbytes_alloc Mbytes ,
mbytes_alloc-NVL(mbytes_free,0) used ,
NVL(mbytes_free,0) free ,
((mbytes_alloc-NVL(mbytes_free,0))/ mbytes_alloc)*100 pct_used ,
100 -(((mbytes_alloc-NVL(mbytes_free,0))/ mbytes_alloc)*100) pct_free
FROM
(SELECT SUM(bytes)/1024/1024 Mbytes_free,
MAX(bytes) /1024/1024 largest ,
tablespace_name
FROM dba_free_space
GROUP BY tablespace_name
) a ,
(SELECT SUM(bytes)/1024/1024 Mbytes_alloc,
SUM(maxbytes) /1024/1024 Mbytes_max ,
tablespace_name
FROM sys.dba_data_files
GROUP BY tablespace_name
UNION ALL
SELECT SUM(bytes)/1024/1024 Mbytes_alloc,
SUM(maxbytes) /1024/1024 Mbytes_max ,
tablespace_name
FROM dba_temp_files
GROUP BY tablespace_name
) b
WHERE a.tablespace_name (+) = b.tablespace_name
)
)
GROUP BY rollup (name)
ORDER BY
CASE
WHEN name IS NULL
THEN 200
ELSE ROUND(AVG(pct_free),2)
END ASC
Para crear el reporte solo hay que dar click derecho sobre User Defined Reports y seleccionar Add Report
Luego llenar los detalles del reporte:
Después Apply…y listo, a disfrutar del reporte.
Aquí esta el codigo XML para importar el reporte
Categories: Oracle







Hola ,
Obtuve el siguiente inconveniente relacionado abajo, podrias por favor ayudarme en como resolverlo:
SQL> EXEC dbms_stats.create_stat_table(ACUSER,’AC_HISTORIAL’);
begin dbms_stats.create_stat_table(ACUSER,’AC_HISTORIAL’); end;
ORA-06550: line 1, column 36:
PLS-00201: identifier ‘ACUSER’ must be declared
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored
Faltan las comillas sencillas, debe ser:
EXEC dbms_stats.create_stat_table(‘ACUSER’,'AC_HISTORIAL’);