Gestión Tablespace TEMP

En este documento podemos encontrar diversas consultas Para evaluar el estado del Tablespace TEMP, Si hace falta ampliarlo, su nos sobra…

Espacio disponible en los datafiles del tablespace TEMP

SELECT tablespace_name,
	SUM(bytes)/1024/1024 MB, 
	SUM(blocks) BLOQUES
FROM DBA_TEMP_FILES 
GROUP BY tablespace_name

Consultas varias - Espacio Usado del TEMP

SELECT b.SID,
	b.saddr,
	a.username,
	osuser,
	program,
	TABLESPACE, 
	EXTENTS, 
	blocks 
FROM v$sort_usage a, 
	v$session b 
WHERE a.SESSION_ADDR=b.saddr
SELECT SYSDATE,
	V$SQL.SQL_TEXT,
	SUM(BLOCKS)*32 BYTES
FROM V$SORT_USAGE,
	V$SQL
WHERE V$SORT_USAGE.www.='TEMP'
AND V$SORT_USAGE.SQL_ID=V$SQL.SQL_ID
AND V$SORT_USAGE.USERNAME ='<Usuario>'
GROUP BY V$SQL.SQL_TEXT
SELECT V$SQL.SQL_TEXT
FROM V$SQL,
	V$SESSION
WHERE V$SQL.SQL_ID=V$SESSION.SQL_ID
	AND V$SESSION.USERNAME='<Usuario>'
	AND STATUS ='ACTIVE'
SELECT V$SORT_USAGE.USERNAME,
	SUM(V$SORT_USAGE.BLOCKS*32)/1024 Kb
FROM V$SORT_USAGE 
GROUP BY V$SORT_USAGE.USERNAME
SELECT tablespace_name, 
	used_extents,
	used_blocks , 
	free_extents, 
	free_blocks 
FROM v$sort_segment
 Cuando free_extents llega a 0 ---> ORA-01652 
 01652, 00000, "unable to extend temp segment by %s in tablespace %s"
  • Cause: Failed to allocate an extent for temp segment in tablespace.
  • Action: Use ALTER TABLESPACE ADD DATAFILE statement to add one or more

EJEMPLO PARA RECREAR EL TABLESPACE TEMP

 En el caso de pérdida o corrupción de los datafiles que forman el 
 Tablespace Temp es necesario recrearlo. 
 Como una BBDD no puede dejar de tener un Tbs TEMP por defecto, 
 no basta con crear otro, hay que llevar a cabo el 
 siguiente procedimiento:

Crear un Tbs TEMP Intermedio

CREATE TEMPORARY TABLESPACE TEMP_BACKUP 
TEMPFILE '<Path>/Nombre_del_fichero' 
SIZE 64M REUSE AUTOEXTEND ON MAXSIZE  1024M 
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1024K;

Seteando para que sea default

ALTER DATABASE DEFAULT TEMPORARY TABLESPACE TEMP_BACKUP;
 
SELECT * 
  FROM DATABASE_PROPERTIES 
 WHERE PROPERTY_NAME='DEFAULT_TEMP_TABLESPACE';

Eliminar tablespace TEMP Corrupto

DROP TABLESPACE TEMP INCLUDING CONTENTS AND DATAFILES;

– Opcional (si gustas regresar al mismo temp anterior, pero recostruido)

CREATE TEMPORARY TABLESPACE TEMP TEMPFILE '<Path>/Nombre_del_fichero' 
SIZE 256M REUSE AUTOEXTEND ON MAXSIZE 256M EXTENT MANAGEMENT LOCAL 
  UNIFORM SIZE 1024K;
 
ALTER DATABASE DEFAULT TEMPORARY TABLESPACE TEMP;
 
SELECT * FROM DATABASE_PROPERTIES 
WHERE PROPERTY_NAME='DEFAULT_TEMP_TABLESPACE';

Eliminar tablespace TEMP Intermedio

DROP TABLESPACE TEMP_BACKUP INCLUDING CONTENTS AND DATAFILES;

Discusión

Enter your comment (wiki syntax is allowed):

Herramientas personales