Oracle temporary tablespace shrink
ovvero
Ridurre la dimesione del tablespace temporaneo

Questa pagina riporta come effettuare la riduzione del tablespace temporaneo dell'RDBMS Oracle.

Di solito sull'RDBMS Oracle scrivo di aspetti piu' complessi o articolati... questa volta si tratta di banali comandi SQL, che ho voluto riportare lo stesso!

Tablespace temporanei

Oracle memorizza sui tablespace gli oggetti che deve matenere: tabelle ed indici. I tablespace temporanei servono invece per i risultati intermedi di alcune elaborazioni che richiedono uno spazio tale da non poter essere effettuate solo in memoria... ad esempio gli ORDER BY o i GRUOP BY di tabelle di grandi dimensioni.

E' tipico di Oracle preallocare lo spazio e rilasciarlo con qualche difficolta'... La stessa cosa avviene per i temporanei: non e' infrequente che un'elaborazione complessa (o errata) allarghi il tablespace temporaneo di default.
Per riportare alla normalita' la quantita' di spazio utilizzato dal tablespace temporaneo deve eseguire alcuni passi... riportati nei prossimi capitoli.

Ridurre le dimensioni del tablespace temporaneo (fino alla 10g)

Non e' possibile ridurre le dimesioni del tablespace temporaneo di default con una base dati attiva. Ma e' possibile avere piu' tablespace temporanei [NdA per eventuali utenti troppo esigenti], quindi c'e' un modo semplice ed applicabile a database attivo...

La tecnica da utilizzare e' quella di creare una altro tablespace temporaneo, configurarlo come default, cancellare il tablespace originale e ricrearlo in modo corretto.

Difficile? Base seguire questo esempio:

SQL> CREATE TEMPORARY TABLESPACE temp2 2 TEMPFILE '/u01/app/oracle/oradata/MYDB/temp2.dbf' SIZE 5M REUSE 3 AUTOEXTEND ON NEXT 1M MAXSIZE unlimited 4 EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M; Tablespace created. SQL> ALTER DATABASE DEFAULT TEMPORARY TABLESPACE temp2; Database altered. SQL> DROP TABLESPACE temp INCLUDING CONTENTS AND DATAFILES; Tablespace dropped. SQL> CREATE TEMPORARY TABLESPACE temp 2 TEMPFILE '/u01/app/oracle/oradata/MYDB/temp01.dbf' SIZE 256M REUSE 3 AUTOEXTEND ON NEXT 128M MAXSIZE unlimited 4 EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M; SQL> ALTER DATABASE DEFAULT TEMPORARY TABLESPACE temp; Database altered. SQL> DROP TABLESPACE temp2 INCLUDING CONTENTS AND DATAFILES; Tablespace dropped.

Tablespace shrink

Dalla versione 11g e' stata introdotta la vista dba_temp_free_space per verificare la quantita' di spazio libero e diversi comandi che semplificano la gestione delle aree di TEMP.
Per ridurre la dimensione della TEMP in Oracle 11g basta un solo comando:

SQL> alter tablespace TEMP shrink space keep 256M; Tablespace altered.

Molto piu' semplice!

Non e' l'unica novita' della 11g...


Titolo: Oracle temporary tablespace shrink tips
Livello: Base (1/5)
Data: 14 Febbraio 2015
Versione: 1.0.2 - 14 Febbraio 2016
Autore: mail [AT] meo.bogliolo.name