Newsgroup: it.comp.software.database
Titolo: Tablespace Temporanei

salve,
ho creato un tablespace temporaneo da 400 MB per un particolare utente, il
problema č che č sempre pieno anche quando l'utente ha finito di interrogare
il db.
qualcuno sa dirmi perchč?
grazie
--------------------------------
Inviato via 
http://usenet.libero.it

Parliamo di Oracle????


si parliamo di oracle, precisando vorrei sapere perchè nel file di alert
trovo:
ORA-1652: unable to extend temp segment by 128 in tablespace...
pur avendo i file del tablespace con autoextend on


DBornotDB ha scritto:


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

 pur avendo i file del tablespace con autoextend on
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?

 sui seg. temp.).
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
-
