ver tamaño tablas maximo español consultar checar aumentar 12c 11g oracle tablespace

tamaño - ver tablas de un tablespace oracle



Descubre el espacio libre en tablespace (7)

A menos que me equivoque, el código anterior no tiene en cuenta el espacio no asignado, por lo que si realmente desea saber cuándo llegará a un límite estricto, debe usar maxbytes.

Creo que el código a continuación hace eso. Calcula el espacio libre como "espacio libre" + espacio no asignado.

select free.tablespace_name, free.bytes, reserv.maxbytes, reserv.bytes, reserv.maxbytes - reserv.bytes + free.bytes "max free bytes", reserv.datafiles from (select tablespace_name, count(1) datafiles, sum(maxbytes) maxbytes, sum(bytes) bytes from dba_data_files group by tablespace_name) reserv, (select tablespace_name, sum(bytes) bytes from dba_free_space group by tablespace_name) free where free.tablespace_name = reserv.tablespace_name;

Nuestra aplicación ha fallado varias veces porque se ha superado una ''ORA-01536: cuota espacial para el espacio de tablas'', y nos gustaría poder evitar esto al verificar regularmente el espacio libre en el tablespace y generar una alerta cuando cae por debajo de cierto nivel .

¿Hay alguna forma de averiguar cuánto espacio libre queda en un tablespace?

Después de algunas investigaciones (no soy un DBA), intenté lo siguiente:

select max_bytes-bytes from user_ts_quotas; select sum(nvl(bytes,0)) from user_free_space;

pero esas consultas arrojan resultados completamente diferentes.


Esta es una de las consultas más simples para el mismo que encontré y también la utilizamos para monitorear:

SELECT TABLESPACE_NAME,SUM(BYTES)/1024/1024/1024 "FREE SPACE(GB)" FROM DBA_FREE_SPACE GROUP BY TABLESPACE_NAME;

Un artículo completo sobre Oracle Tablespace: Tablespace


Hay muchas maneras de verificar el tamaño, pero como desarrollador no tenemos mucho acceso a tablas meta de consulta, encuentro esta solución muy fácil (Nota: si recibe el mensaje de error ORA-01653 ''El error ORA-01653 es causado porque necesitas agregar espacio a un tablespace. '')

--Size of All Table Space --1. Used Space SELECT TABLESPACE_NAME,TO_CHAR(SUM(NVL(BYTES,0))/1024/1024/1024, ''99,999,990.99'') AS "USED SPACE(IN GB)" FROM USER_SEGMENTS GROUP BY TABLESPACE_NAME --2. Free Space SELECT TABLESPACE_NAME,TO_CHAR(SUM(NVL(BYTES,0))/1024/1024/1024, ''99,999,990.99'') AS "FREE SPACE(IN GB)" FROM USER_FREE_SPACE GROUP BY TABLESPACE_NAME --3. Both Free & Used SELECT USED.TABLESPACE_NAME, USED.USED_BYTES AS "USED SPACE(IN GB)", FREE.FREE_BYTES AS "FREE SPACE(IN GB)" FROM (SELECT TABLESPACE_NAME,TO_CHAR(SUM(NVL(BYTES,0))/1024/1024/1024, ''99,999,990.99'') AS USED_BYTES FROM USER_SEGMENTS GROUP BY TABLESPACE_NAME) USED INNER JOIN (SELECT TABLESPACE_NAME,TO_CHAR(SUM(NVL(BYTES,0))/1024/1024/1024, ''99,999,990.99'') AS FREE_BYTES FROM USER_FREE_SPACE GROUP BY TABLESPACE_NAME) FREE ON (USED.TABLESPACE_NAME = FREE.TABLESPACE_NAME);

Gracias



Una DECLARACIÓN SQL mucho más precisa

SELECT a.tablespace_name, ROUND (((c.BYTES - NVL (b.BYTES, 0)) / c.BYTES) * 100,2) percentage_used, c.BYTES / 1024 / 1024 space_allocated, ROUND (c.BYTES / 1024 / 1024 - NVL (b.BYTES, 0) / 1024 / 1024,2) space_used, ROUND (NVL (b.BYTES, 0) / 1024 / 1024, 2) space_free, c.DATAFILES FROM dba_tablespaces a, ( SELECT tablespace_name, SUM (BYTES) BYTES FROM dba_free_space GROUP BY tablespace_name ) b, ( SELECT COUNT (1) DATAFILES, SUM (BYTES) BYTES, tablespace_name FROM dba_data_files GROUP BY tablespace_name ) c WHERE b.tablespace_name(+) = a.tablespace_name AND c.tablespace_name(+) = a.tablespace_name ORDER BY NVL (((c.BYTES - NVL (b.BYTES, 0)) / c.BYTES), 0) DESC;


Yo uso esta consulta

column "Tablespace" format a13 column "Used MB" format 99,999,999 column "Free MB" format 99,999,999 column "Total MB" format 99,999,999 select fs.tablespace_name "Tablespace", (df.totalspace - fs.freespace) "Used MB", fs.freespace "Free MB", df.totalspace "Total MB", round(100 * (fs.freespace / df.totalspace)) "Pct. Free" from (select tablespace_name, round(sum(bytes) / 1048576) TotalSpace from dba_data_files group by tablespace_name ) df, (select tablespace_name, round(sum(bytes) / 1048576) FreeSpace from dba_free_space group by tablespace_name ) fs where df.tablespace_name = fs.tablespace_name;


column pct_free format 999.99 select used.tablespace_name, (reserv.maxbytes - used.bytes)*100/reserv.maxbytes pct_free, used.bytes/1024/1024/1024 used_gb, reserv.maxbytes/1024/1024/1024 maxgb, reserv.bytes/1024/1024/1024 gb, (reserv.maxbytes - used.bytes)/1024/1024/1024 "max free bytes", reserv.datafiles from (select tablespace_name, count(1) datafiles, sum(greatest(maxbytes,bytes)) maxbytes, sum(bytes) bytes from dba_data_files group by tablespace_name) reserv, (select tablespace_name, sum(bytes) bytes from dba_segments group by tablespace_name) used where used.tablespace_name = reserv.tablespace_name order by 2 /