Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Tablespace Temporanei

66 views
Skip to first unread message

DBornotDB

unread,
Jun 27, 2003, 4:48:27 AM6/27/03
to
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

Andrea Salzano

unread,
Jun 27, 2003, 6:28:15 AM6/27/03
to


Parliamo di Oracle????

DBornotDB

unread,
Jun 27, 2003, 7:11:42 AM6/27/03
to
Il 27 Giu 2003, 12:28, "Andrea Salzano" <andrea....@inwind.it> ha
scritto:
>
>
>
> 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

ubi

unread,
Jun 27, 2003, 8:50:55 AM6/27/03
to
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


Andrea Salzano

unread,
Jun 30, 2003, 3:06:10 AM6/30/03
to
> 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

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?

felice_pago

unread,
Jun 30, 2003, 5:24:03 AM6/30/03
to
Il 30 Giu 2003, 09:06, "Andrea Salzano" <andrea....@inwind.it> ha
scritto:

> > 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
>
> 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.).

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
-

0 new messages