select t2."TempTotal" "TempTotal (Mb)",
t1."TempUsed" "TempUsed (Mb)",
t2."TempTotal" - t1."TempUsed" "TempFree (Mb)"
from (select nvl(round(sum(tu.blocks * tf.block_size) / 1024 / 1024, 2), 0) "TempUsed"
from v$tempseg_usage tu, dba_tablespaces tf
where tu.TABLESPACE = tf.tablespace_name) t1,
(select round(sum(bytes) / 1024 / 1024, 2) "TempTotal"
from dba_temp_files) t2
Con esta sentencia se puede ir monitoreando el espacio disponible. Puede resultar conveniente su utilización para hacer seguimiento de procesos batch que hayan cancelado por falta de espacio temporal. Es bastante frecuente que un proceso se quede sin espacio cuando las sentencias que lo componen generan un plan que requiere demasiado agrupamiento, agregacion, hashing, producto cartesiano, etc. Si faltaran indices o estadisticas en los segmentos involucrados se podría armar un plan erroneo que requiera mas espacio temporal que el necesario. Si las sentencias estuvieran bien escritas, los objetos con estadisticas actualizadas y con el esquema de indexacion adecuado podria estar subestimado el espacio temporal y se necesite un redimensionamiento.
Ok, muchas gracias, soy DBA iniciandome en este negocio y me llamaba mucho la atención que en mi EM me mostrara el TEMP casi al 100% pero revisando los datafiles se mostraran casi inutilizados.
ResponderEliminar