Oracle: el archivo TEMP01.DBF es demasiado grande

El servidor de base de datos Oracle utiliza tablespaces en formato.DBF, por ejemplo USERS01.DBF para el tablespace USERS. El fichero de intercambio temporal TEMP también tiene su propio fichero de sistema: TEMP01.DBF. El espacio de tablas temporal se utiliza para almacenar clasificaciones que no pueden ejecutarse en la memoria (RAM).

Este tutorial ha sido creado en un servidor Oracle 12c pero las otras ediciones también son compatibles (11g, 10g, 9i). El sistema operativo de ejemplo es Windows Server pero estas peticiones serán las mismas en un servidor Linux / UNIX. Ejemplo a continuación con un archivo TEMP01.DBF que pesa 32 / 33 GB.

Error relacionado con el desbordamiento temporal del tablespace de Oracle

Dos ejemplos de errores que se pueden mostrar cuando el archivo de espacio de tabla TEMP está 100% lleno.

Cuando una petición es demasiado importante:

ORA-01652: imposible extender el segmento temporal de 128 en el TEMP
espacio estable
00000 – «incapaz de extender el segmento de temperatura en %s en tablespace %s»

*ause: No se ha asignado la extensión del número requerido de bloques para un segmento temporal en el tablespace indicado.

*Acción: Utilice la sentencia ALTER TABLESPACE ADD DATAFILE para añadir uno o más archivos al tablespace indicado.

O al importar una base de datos:

ORA-39171: La obra se enfrenta a una espera con posibilidad de recuperación.
Error reanudable: ORA-01652: imposible extender el segmento temporal de 128 en el TEMP
table
Resumable stmt: BEGIN SYS.KUPW$WORKER.MAIN(‘SYS_IMPORT_FULL_01′,’NOMBRE’, 0); END;
>.
Estado de stmt reanudable: SUSPENDIDO

¿En qué casos debo seguir este tutorial?

El archivo enlazado al tablespace Temp puede configurarse en Autoextend para que se pueda ampliar según sea necesario. No es normal que el archivo pese varias decenas de gigabytes, pero esto puede suceder dependiendo del tipo de uso del servidor Oracle (pruebas en un editor de software, demasiadas sesiones de matanza, peticiones enormes…). Podríamos simplemente vaciar o reducir este espacio de tabla, pero esto no siempre es posible. Si no puede ampliar el archivo TEMP01.DBF o crear un archivo TEMP02.DBF, la solución es eliminar el archivo y crearlo vacío para que la base de datos Oracle pueda volver a utilizarlo correctamente. Este procedimiento puede implicar un cierre temporal del servidor de base de datos.

Obviamente no es una solución permanente borrar y recrear el tablespace temporal porque la misma situación podría ocurrir de nuevo en un futuro próximo. Este tutorial puede ser utilizado para servidores de prueba, pero también para solucionar una situación de bloqueo en un servidor Oracle de producción. Lo ideal es entonces tratar de entender qué es lo que consume tiempo y por qué no crear diferentes archivos temporales para identificar el consumo excesivo.

Eliminar y recrear el tablespace temporal de Oracle

1. Abra una consola SQLPlus en una cuenta equivalente «sys’ o un símbolo del sistema y ejecute «sqlplus / as sysdba» para conectarse directamente con un usuario «sys'». El uso del cmd proporciona soporte para copiar/pegar comandos que luego se escribirán.

2. Eliminar el archivo del tablespace temporal de Oracle:

Por ejemplo: ALTER DATABASE TEMPFILE’ D:\oracle\oradata\orcl\TEMP01.DBF’ DROP INCLUYENDO DATAFILES;

3. Se ha eliminado el archivo TEMP01.DBF y el disco duro del servidor ha recuperado el tamaño completo del archivo en cuestión.

4. Cree un nuevo archivo TEMP01.DBF y asígnelo al archivo temporal de Oracle. Aquí, su tamaño inicial es de 500MB con extensión automática permitida. En Windows, este archivo DBF crecerá a 32 GB o 33 GB de tamaño.

 ALTER TABLESPACE TEMP ADD TEMP TEMPFILE '[file path]\TEMP01.DBF' SIZE 500M REUSE AUTOEXTEND ON; 

Por ejemplo: ALTER TABLESPACE TEMPFILE ADD TEMPFILE’D:\oracle\oradata\orcl\TEMP01.DBF’ SIZE 500M REUSE AUTOEXTEND ON;

Error ORA-25152: TEMPFILE no se puede eliminar ahora

Si aparece un mensaje de error del tipo «ERROR en la línea 1: ORA-25152: TEMPFILE cannot be deleted now»: el servicio OracleServiceORCL (u otro nombre de instancia) debe detenerse y reiniciarse.

Relacionado:  ¿Cómo activar el reproductor de vídeo en Windows 10?

Detenerlo sería inútil ya que el servicio Oracle debe iniciarse para conectarse en SQL*Plus.

Contenido relacionado

[pt_view id=»b21675bme7″]

Deja un comentario