venerdì 15 novembre 2019

Oracle: ridimensionare tablespace TEMP.

In un nostro Oracle database server ho notato un incremento anomalo di utilizzo spazio disco.

Rapidamente, utilizzando TreeFileFree, ho trovato un file TEMP01.DBF di quasi 25 GB!

Decisamente troppo, per cui ho cercato possibili soluzioni.

Di seguito le istruzioni su come eseguire un resizing di un tempdatafile.

Mi sono basato sulle indicazioni trovate qui: resolving-oracle-large-temp-tablespace-size-problem.

per vedere nome, percorso e dimensioni del datafile:

select * from v$tempfile;

1. si crea una nuova tablespace più piccola:

create temporary tablespace temp2
tempfile '<path>\TEMP02.DBF'
size 1000m autoextend on next 100m maxsize 4000m;

Nota: sostituire <path> con il vostro percorso.

2. si imposta il default temporary tablespace in quella creata nuova:

alter database default temporary tablespace temp2;

3. si cancella il file precedente:

alter database tempfile '<path>\TEMP01.DBF' 
drop including datafiles;

4. si ricrea la tablespace iniziale:

create temporary tablespace temp
tempfile '<path>\TEMP01.DBF'
size 1000m autoextend on next 100m maxsize 4000m;

Nota: qui c'era un errore nelle indicazioni poichè il comando restituisce il seguente errore:

ORA-01543: tablespace 'TEMP' already exists
State:S1000,Native:1543,Origin:[Oracle][ODBC][Ora]

Infatti la tablespace non è stata droppata, ma è stato solo cancellato il file, per cui ho eseguito il drop:

drop tablespace temp;

rilanciato il comando

create temporary tablespace temp
tempfile '<path>\TEMP01.DBF'
size 1000m autoextend on next 100m maxsize 4000m;

che termina senza errore.

5. si imposta il default temporary tablespace in quella creata nuova:

alter database default temporary tablespace temp;

6. si cancella la tablespace temporanea:

drop tablespace temp2 including contents and datafiles;

Mi resta ancora un problema di dimensioni sulla tablespace di sistema SYSTEM01.DBF di circa 20 GB, ma il resizing di questa non è così semplice.

Nessun commento:

Posta un commento