--------------------------------
Inviato via http://usenet.libero.it
Parliamo di Oracle????
Oracle non rilascia i segmenti temporanei dopo averli usati. Se crea un
segmento di 400 MB lo lascia allocato anche dopo che l'utente si č
scollegato. Lo rilscia solo dopo lo shutdown.
Ma non č una cosa fastidiosa, non crea problemi.
--
questo articolo e` stato inviato via web dal servizio gratuito
http://www.newsland.it/news segnala gli abusi ad ab...@newsland.it
Dunque, Oracle utilizza i segmenti temporanei quando deve eseguire
ordinaemnti: ad esempio quando crei un indice o o esegui una distinct.
Ovviamente se nella select usi ORDER BY o GROUP BY, anche viene
eseguito un'ordinamento e quindi viene usato TEMPORARY TABLESPACE.
Quando l'rdbms usa i segmenti temporanei, e' poi smon che si
preoccupa di ripulirli e riutilizzare lo spazio. Ovviamente smon
ha i suoi tempi. In particolare esiste una scala di priorita'
secondo cui smon esegue i suoi compiti; ergo non hai visibilita'
su quando smon operera' sui segmenti temporanei (forse,ma non ne
sono certo, esiste un evento per cui puoi forzare smon a lavorare
sui seg. temp.).
L'algoritmo con cui i segmenti temporanei vengono usati, dovrebbe
sessere qualcosa del tipo (ma va controllato):
usa SORT_AREA_SIZE
se, dopo che si e' riempito SORT_AREA_SIZE, e ne hai
ancora bisogno, sposta i dati in SORT_AREA_SIZE nei
segmenti temporanei e riutilizza SORT_AREA_SIZE
Ecco perche':
1. conviene dimensionare il tablespace TEMP in modo tale
che gli EXTENT siano multipli di SORT_AREA_SIZE
2. se sai che dovrai fare un ordinamento di 3MB, setti SORT_AREA_SIZE
per la tua sessione a 3MB
SQL> alter session set sort_area_size=3145728;
Dopo una piccola panoramica su TEMPORARY TABLESPACE (che magari non
centra nulla), veniamo alla tua domanda.
ORA-1652: unable to extend temp segment by 128 in tablespace...
pur avendo i file del tablespace con autoextend on
*Hai controllato in next extend sui segmenti temporanei e confrontato
con la dimensione del file system?
SQL> col SEGMENT_NAME for a10
SQL> col NEXT for a10
SQL> select SEGMENT_NAME,SEGMENT_TYPE,NEXT_EXTENT/1024/1024||'MB' next
2 from dba_segments where TABLESPACE_NAME='TEMP';
SEGMENT_NA SEGMENT_TYPE NEXT
---------- ------------------ ------------------------------------------
4.393218 TEMPORARY 2MB
* Su che piattaforma sei? Linux/Unix/Winzoz? Che release di O. hai?
il workaround da utilizzare per far si che smop faccia il coalesce
sul tbs temp, sicuramente si trova su aix, è di modificare
la pctincrease != da 0.
e solo dopo almeno 5', il passaggio di smon:
alter session set events 'immediate trace name DROP_SEGMENTS level TS#+1';
altrimenti
allargare temp o eseguire shutdown.
felice_pago
-