Tutto dipende dal fatto che il file di dati sia auto estensibile o meno.
modo da ottenere il le informazioni giuste da DBA_DATA_FILES:
Se AUTOEXTENSIBLE è impostata su Sì, allora avete bisogno la somma totale di maxbytes.
Se AUTOEXTENSIBLE è impostato su NO, è necessaria la somma totale di BYTES.
MAX_SIZE in dba_tablespaces non ha nulla a che fare con la dimensione massima dello spazio tabella stessa. Secondo Oracle documenation è la "dimensione massima predefinita di segmenti"
Quindi la domanda giusta è:
select TABLESPACE_NAME, sum(decode(AUTOEXTENSIBLE, 'YES', MAXBYTES, BYTES)) MAX_SIZE
from DBA_DATA_FILES
group by TABLESPACE_NAME;
Questa è stata testata su 11g ma dovrebbe funzionare anche su 10g. Ti dà la dimensione massima di ogni tablespace in byte.
La stessa cosa vale per gli spazi tabella TEMP:
select TABLESPACE_NAME, sum(decode(AUTOEXTENSIBLE, 'YES', MAXBYTES, BYTES)) MAX_SIZE
from DBA_TEMP_FILES
group by TABLESPACE_NAME;
Non sembra funzionare per me. La prima cosa era next_extent era null, quindi ho appena fatto initial_extent * max_extents, ma max_extents sembra essere MAXINT (2147483645) sempre (e gli tablespace non sono stati creati con MAXSIZE unlimited) –
Non voglio che lo spazio attuale sia assegnato ad esso. Ho bisogno della dimensione che è stata specificata con MAXSIZE quando è stata creata. Non vedo questo come privo di significato - presumibilmente Oracle si rifiuterà di estendere un tablespace oltre MAXSIZE. –
@Paul - Oracle rifiuterà di estendere un tablespace oltre i limiti dei suoi file di dati attualmente assegnati (perché l'autoextend è disattivato, o il file system è pieno, o hai raggiunto il MAXSIZE specificato per il file di dati). – APC