Es muy común recibir el ORA-01652 cuando lanzamos inserts o imports y éste nos advierte de que el tablespace ya no tiene espacio libre, es decir, que se ha llenado. Es muy similar al ORA-01653 del que ya he hablado en otro artículo pero en este caso se refiere a tablespaces temporales, como el TEMP que incluye Oracle Database.
Siempre que trabajamos con tablespaces sin espacio libre, tenemos dos opciones: ampliar su tamaño (siempre y cuando sea posible) o añadir un nuevo datafile. En ambos casos necesitaremos saber varios datos, como el nombre de los datafile asociado y su ubicación. Con esta query lo podemos obtener:
select * from dba_temp_files;
Si queremos afinarla un poco más, para ver solo el tablespace que nos ha producido el error:
select * from dba_temp_files where tablespace_name=<NOMBRE_TABLESPACE>;
Ampliar tablespace
Esta es la primera opción y para ello deberemos de saber cómo es nuestra instalación de Oracle para tener claro cuál es el tamaño de bloque de nuestros datafiles y hasta que punto podemos ampliarlo. En la mayoría de instalaciones el límite es 32GB pero eso no tiene porque ser siempre así. Podemos actualizarlo de esta forma:
alter database datafile '<RUTA_Y_NOMBRE_DE_DATAFILE>' autoextend on maxsize unlimited;
Como siempre, el maxsize lo podemos dejar ilimitado (unlimited) o a un valor concreto.
Añadir un datafile temporal
En este caso no nos sirve añadir un datafile estándar, como en el caso del ORA-01653 que comentaba anteriormente, tiene que ser un datafile temporal. Lo podemos hacer de la siguiente forma:
ALTER TABLESPACE TEMP ADD TEMPFILE '<RUTA_Y_NOMBRE_DE_DATAFILE>' SIZE 10G AUTOEXTEND ON NEXT 1G MAXSIZE UNLIMITED;
Como siempre los valores de tamaño (size), autoextensible (autoextend) y tamaño máximo (maxsize) los configuramos acorde a nuestras necesidades.
Con estas dos opciones ya deberíamos ser capaces de solventar el ORA-01652 y despedirnos de él por una buena temporada. Si necesitáis más información sobre añadir datafiles a tablespaces temporales os recomiendo este artículo, escrito por Zed DBA, eso sí, está en perfecto inglés!