Ya que en muchas ocasiones es necesario saber el tamaño real que ocupa nuestra base de datos.
En este articulo, les quiero mostrar cómo calcular el tamaño de una base de datos Oracle.
Con la siguiente secuencia de querys, podemos obtener los valores de cada uno de los archivos que componen una base de datos
-- Tamaño de los data files
SELECT SUM(BYTES) / 1024 / 1024 / 1024 DATA_SIZE FROM DBA_DATA_FILES;
-- Tamaño de los data files temporales
SELECT NVL(SUM(BYTES), 0) / 1024 / 1024 / 1024 TEMP_SIZE FROM DBA_TEMP_FILES;
-- Tamaño de los redo logs
SELECT SUM(BYTES) / 1024 / 1024 / 1024 REDO_SIZE FROM V$LOG;
-- Tamaño de los control files
SELECT SUM(BLOCK_SIZE * FILE_SIZE_BLKS) / 1024 / 1024 / 1024 CONTROLFILE_SIZE FROM V$CONTROLFILE;
Luego, para calcular el tamaño total de la base de datos, debemos unir todos los querys
-- Tamaño de la base de datos
SELECT D.DATA_SIZE + T.TEMP_SIZE + R.REDO_SIZE + C.CONTROLFILE_SIZE "DATABASE SIZE IN GB"
FROM (SELECT SUM(BYTES) / 1024 / 1024 / 1024 DATA_SIZE FROM DBA_DATA_FILES) D,
(SELECT NVL(SUM(BYTES), 0) / 1024 / 1024 / 1024 TEMP_SIZE FROM DBA_TEMP_FILES) T,
(SELECT SUM(BYTES) / 1024 / 1024 / 1024 REDO_SIZE FROM V$LOG) R,
(SELECT SUM(BLOCK_SIZE * FILE_SIZE_BLKS) / 1024 / 1024 / 1024 CONTROLFILE_SIZE FROM V$CONTROLFILE) C
Quisiera agregar otro query, con el cual también se puede calcular el tamaño de la base de datos, adicional del tamaño libre y usado
-- Tamaño de la base de datos, espacio usado y espacio libre
SELECT ROUND(SUM(USED.BYTES) / 1024 / 1024 / 1024 ) "DATABASE SIZE IN GB",
ROUND(SUM(USED.BYTES) / 1024 / 1024 / 1024 ) - ROUND(FREE.P / 1024 / 1024 / 1024) "USED SPACE IN GB",
ROUND(FREE.P / 1024 / 1024 / 1024) "FREE SPACE IN GB"
FROM (SELECT BYTES FROM V$DATAFILE
UNION ALL
SELECT BYTES
FROM V$TEMPFILE
UNION ALL
SELECT BYTES
FROM V$LOG) USED, (SELECT SUM(BYTES) AS P
FROM DBA_FREE_SPACE) FREE GROUP BY FREE.P;
Te invito a seguir consultando más articulos relacionados a Oracle dando clic aquí.