oracle10g - full - ora-01652 unable to extend temp segment by 128 in tablespace temp
ORA-01652 No se puede extender el segmento temporal en tablespace (3)
Estoy creando una tabla como
create table tablename
as
select * for table2
Estoy recibiendo el error
ORA-01652 Unable to extend temp segment by in tablespace
Cuando busqué en Google por lo general, encontré el error ORA-01652 que mostraba algún valor como
Unable to extend temp segment by 32 in tablespace
No obtengo ningún valor de este tipo. Ejecuté esta consulta
select
fs.tablespace_name "Tablespace",
(df.totalspace - fs.freespace) "Used MB",
fs.freespace "Free MB",
df.totalspace "Total MB",
round(100 * (fs.freespace / df.totalspace)) "Pct. Free"
from
(select
tablespace_name,
round(sum(bytes) / 1048576) TotalSpace
from
dba_data_files
group by
tablespace_name
) df,
(select
tablespace_name,
round(sum(bytes) / 1048576) FreeSpace
from
dba_free_space
group by
tablespace_name
) fs
where
df.tablespace_name = fs.tablespace_name;
Tomado de: Encuentra espacio libre en tablespace
y descubrí que el espacio de tabla que estoy usando actualmente tiene alrededor de 32 GB de espacio libre. Incluso intenté crear una mesa como
create table tablename tablespace tablespacename
as select * from table2
Pero estoy recibiendo el mismo error de nuevo. ¿Alguien puede darme una idea, dónde está el problema y cómo resolverlo? Para su información, la declaración de selección me traería 40,000,000 de registros.
Cree un nuevo archivo de datos ejecutando el siguiente comando:
alter tablespace TABLE_SPACE_NAME add datafile ''D:/oracle/Oradata/TEMP04.dbf''
size 2000M autoextend on;
Encontré la solución a esto. Existe un espacio de tabla temporal llamado TEMP que se usa internamente por la base de datos para operaciones como distintas, uniones, etc. Dado que mi consulta (que tiene 4 combinaciones) recupera casi 50 millones de registros, el espacio de tabla TEMP no tiene mucho espacio para ocupar todos los datos. Por lo tanto, la consulta falla a pesar de que mi espacio de tablas tiene espacio libre. Por lo tanto, después de aumentar el tamaño del espacio de tablas TEMP, el problema se resolvió. Espero que esto ayude a alguien con el mismo problema. Gracias :)
No es necesario crear un nuevo archivo de datos; puede ampliar sus archivos de datos de espacio de tabla existentes.
Ejecute lo siguiente para determinar el nombre de archivo para el espacio de tablas existente:
SELECT * FROM DBA_DATA_FILES;
Luego extienda el tamaño del archivo de datos de la siguiente manera (reemplace el nombre del archivo con el de la consulta anterior):
ALTER DATABASE DATAFILE ''D:/ORACLEXE/ORADATA/XE/SYSTEM.DBF'' RESIZE 2048M;