Todo depende de si el archivo de datos es autoextensible o no.
para que pueda obtener la información correcta de la DBA_DATA_FILES:
Si AUTOEXTENSIBLE se establece en sí, entonces necesita la suma total de MAXBYTES.
Si AUTOEXTENSIBLE está establecido en NO, entonces necesita la suma total de BYTES.
MAX_SIZE en DBA_TABLESPACES no tiene nada que ver con el tamaño máximo del tablespace. De acuerdo con Oracle documenation es el
"tamaño máximo predeterminado de segmentos"
lo que la consulta correcta es:
select TABLESPACE_NAME, sum(decode(AUTOEXTENSIBLE, 'YES', MAXBYTES, BYTES)) MAX_SIZE
from DBA_DATA_FILES
group by TABLESPACE_NAME;
Esto ha sido probado en 11g pero también debería funcionar en 10g. Le da el tamaño máximo de cada espacio de tabla en bytes.
Lo mismo vale para los espacios de tabla TEMP:
select TABLESPACE_NAME, sum(decode(AUTOEXTENSIBLE, 'YES', MAXBYTES, BYTES)) MAX_SIZE
from DBA_TEMP_FILES
group by TABLESPACE_NAME;
Parece que no funciona para mí. Lo primero era que next_extent era nulo, así que justificó initial_extent * max_extents, pero max_extents parece ser MAXINT (2147483645) siempre (y los espacios de tabla no se crearon con MAXSIZE unlimited) –
No quiero que se le asigne el espacio actual. Necesito el tamaño que se especificó con MAXSIZE cuando se creó. No veo que esto carezca de sentido, es de suponer que Oracle se negará a extender un tablespace más allá de MAXSIZE. –
@Paul: Oracle se negará a extender un espacio de tabla más allá de los límites de sus archivos de datos asignados actualmente (porque autoextend está desactivado, o el sistema de archivos está lleno, o ha alcanzado el MAXSIZE especificado para el archivo de datos). – APC