Bonjour à tous,
J'ai une question un peu naïve mais à laquelle j'ai bien du mal à répondre.
Sur une base 10.2.0.4, j'ai un tablespace TEMP créé de la manière suivante :
En effectuant un import à partir d'un dump, j'obtiens ce message tant aimé...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 CREATE TEMPORARY TABLESPACE TEMP TEMPFILE '/<mypath>/tmp/tempSID.dbf' SIZE 4500M AUTOEXTEND OFF EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M;
... au moment de la création d'un index.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2ORA-01652: impossible d'étendre le segment temporaire de 64 dans le tablespace TEMP
Le DDL de cet index ressemble à ça, d'après la log d'import :
Je peux ajouter que :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 CREATE INDEX "TOTO_X" ON "TOTO" ("CODRUB" , "U##CODCOL" , "CODAGT" , "DATMAJ" , "U##HHMMSS" , "DTEDEB" , "DTEFIN" , "PROGRESS_RECID" ) PCTFREE 10 INITRANS 2 MAXTRANS 255 STORAGE(INITIAL 4294967294 FREELISTS 1 FREELIST GROUPS 1 BUFFER_POOL DEFAULT) TABLESPACE "IDX" NOLOGGING;
- la création de l'index "à la main" fonctionne si je lui mets un initial "à taille humaine", 1M par exemple
- et ça marche aussi, évidemment, avec un tablespace TEMP plus grand. J'ai remarqué avec la vue V$TEMP_SPACE_HEADER que l'espace temporaire consommé est de 5050M.
Ce que je ne comprends pas :
- pourquoi ça marche avec un initial à 1M, alors que le tablespace TEMP est en uniform size et qu'il ne devrait pas tenir compte de l'initial qu'on met dans les DDL ? Et pourquoi ça consomme moins d'espace temporaire ?
- pourquoi l'espace consommé, avec le DDL d'origine, est-il de 5050M ?
Alors oui, c'est vrai, je pourrais faire un gros tablespace TEMP et ne plus me poser de questions. Mais j'aime pas quand je comprends pas
Merci beaucoup infiniment...
Partager