ORA-01652 impossible de prolonger le segment temp dans tablespace
je crée une table comme
create table tablename
as
select * for table2
j'obtiens l'erreur
ORA-01652 Unable to extend temp segment by in tablespace
quand j'ai googlé, j'ai trouvé une erreur ORA-01652 montrant une valeur comme
Unable to extend temp segment by 32 in tablespace
Je n'obtiens pas une telle valeur.J'ai lancé cette requête
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;
tiré de: Retrouvez l'espace libre sur tablespace
et j'ai trouvé que le tablespace que j'utilise dispose actuellement d'environ 32 Go d'espace libre. J'ai même essayé de créer une table comme
create table tablename tablespace tablespacename
as select * from table2
mais j'ai encore la même erreur. Quelqu'un peut-il me donner une idée, où est le problème et comment le résoudre. Pour votre information, la déclaration select me rapporterait 40 millions de dossiers.
3 réponses
j'ai trouvé la solution. Il existe un tablespace temporaire appelé TEMP qui est utilisé en interne par la base de données pour des opérations telles que distinct, joins,etc. Depuis ma requête (qui a 4 jointures) récupère près de 50 millions d'enregistrements l'espace de Tablet TEMP N'a pas beaucoup d'espace pour occuper toutes les données. Par conséquent, la requête échoue même si ma tablespace a de l'espace libre.Ainsi, après avoir augmenté la taille de l'espace de travail temporaire, le problème a été résolu. Espérons que cela aide quelqu'un avec le même problème. Grâce :)
Créer un nouveau fichier de données en exécutant la commande suivante:
alter tablespace TABLE_SPACE_NAME add datafile 'D:\oracle\Oradata\TEMP04.dbf'
size 2000M autoextend on;
vous n'avez pas besoin de créer un nouveau fichier de données; vous pouvez étendre vos fichiers de données tablespace existants.
exécutez ce qui suit pour déterminer le nom du fichier pour l'espace de table existant:
SELECT * FROM DBA_DATA_FILES;
puis étendre la taille du fichier de données comme suit (remplacer le nom du fichier par celui de la requête précédente):
ALTER DATABASE DATAFILE 'D:\ORACLEXE\ORADATA\XE\SYSTEM.DBF' RESIZE 2048M;