Hoy vamos a volver con las entradas para dummies. Vamos algunas consultas prácticas sobre tablespaces temporales.
Lo primero vamos a ir a las consultas mas básicas, ver los tablespaces temporales, los tempfiles, crear un o o modificar su tamaño
-- Ficheros temporales
select * from dba_temp_files;
-- Creación de Tablespaces temporales gestionados localmente.
create temporary tablespace tempaux
tempfile '/oradata/orcl/temp_aux01.dbf' SIZE 300M REUSE
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 4M;
--Añadimos un fichero a un tablespace
alter tablespace TEMPAUX
add tempfile '/oradata/orcl/temp:aux02.dbf' size 200M ;
--Cambio de tamaño
alter database tempfile
'/oradata/orcl/temp_aux02.dbf' resize 5000M;
Y luego veamos algunas consultas algo mas complejas que nos pueden servir para comprobar el uso de los temporales
--Uso de tablespaces temporal
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;
--Uso de temporal por sesion
SELECT S.sid || ',' || S.serial# sid_serial, S.username, S.osuser, P.spid, S.module,
P.program, SUM (T.blocks) * TBS.block_size / 1024 / 1024 mb_used, T.tablespace,
COUNT(*) statements
FROM v$sort_usage T, v$session S, dba_tablespaces TBS, v$process P
WHERE T.session_addr = S.saddr
AND S.paddr = P.addr
AND T.tablespace = TBS.tablespace_name
GROUP BY S.sid, S.serial#, S.username, S.osuser, P.spid, S.module,
P.program, TBS.block_size, T.tablespace
ORDER BY sid_serial;