Reclamable Space on Oracle Tables script

Cuando tenemos actividades en la base de datos, con tipo de transacciones que involucran  DML’s del tipo UPDATE, DELETE, derivara con el tiempo realizar tareas de mantenimiento y  reorganización de datos.

De esta manera la TABLA se ira degradando.

La acción requerida, sera compactarla, reorganizarla.

Parte de nuestra tarea consiste en averiguar las TABLAS candidatas a ser reorganizadas, con el método SHRINK.

Por ello, es necesario revisar y contar con un listado.

Ejecutar el siguiente query

*Agradecemos a Lucas Juarez por compartirlo.

set line 200
set pages 200
col OWNER format a10
    select 
	owner,
	table_name,
	mb_total,
	mb_usado,
	mb_total-mb_usado mb_reclamable,
	round((mb_total-mb_usado)/mb_total*100,2) "%_RECLAMABLE"
		from (select owner,table_name,round((blocks*8)/1024,2) mb_total, round((num_rows*avg_row_len/1024)/1024,2) mb_usado
					from dba_tables
						where owner not in ('ANONYMOUS','APEX_PUBLIC_USER','APEX_030200','APPQOSSYS','BI','CTXSYS',
                       'DBSNMP','DIP','DMSYS','EXFSYS','HR','IX','PUBLIC','MDSYS','ORACLE_OCM',
                       'LBACSYS','MDDATA','MDSYS','MGMT_VIEW','ODM','ODM_MTR','OE','OLAPSYS','ORDDATA',
					   'ORDPLUGINS','ORDSYS','OUTLN','PM','PERFSTAT','TSMSYS','SCOTT','SH','SI_INFORMTN_SCHEMA',
					   'SPATIAL_CSW_ADMIN_USR','OWF_MGR','SPATIAL_WFS_ADMIN_USR','SYS','SYSMAN','SYSTEM','TRACESRV',
					   'MTSSYS','OWBSYS_AUDIT','WEBSYS','WMSYS','XDB')
		and blocks <> 0 )
			where ( (mb_total > 10   and mb_total < 50 and round((mb_total-mb_usado)/mb_total*100,2) > 50 ) 
			or (mb_total > 50   and mb_total < 200 and round((mb_total-mb_usado)/mb_total*100,2) > 40 )
			or (mb_total > 200 and mb_total < 500 and round((mb_total-mb_usado)/mb_total*100,2) > 30 )
			or (mb_total > 500 and round((mb_total-mb_usado)/mb_total*100,2)  > 15 ) )
		order by mb_total desc;

Como resultado podemos obtener una salida como la siguiente:

OWNER       TABLE_NAME                       MB_TOTAL   MB_USADO MB_RECLAMABLE %_RECLAMABLE
----------- ------------------------------ ---------- ---------- ------------- ------------
REAL_STATE  REAL_STATEPEDIDOSUCURSALITEM     12469.59    7976.53       4493.06        36.03
REAL_STATE  REAL_STATEPEDIDOITEMDETALLE      10319.11    6381.22       3937.89        38.16
REAL_STATE  VENTASUCURSALITEMPROMEDIO         5592.85    3742.67       1850.18        33.08
REAL_STATE  DISPONIBLEITEMDETALLE             5196.11    3827.21        1368.9        26.34
REAL_STATE  REAL_STATEPEDIDOSUCURSALITEM_X    4126.63    3304.58        822.05        19.92
REAL_STATE  STOCK                             1468.77     590.96        877.81        59.76
REAL_STATE  STOCKDISPONIBLE                    414.56     217.03        197.53        47.65
REAL_STATE  REAL_STATECOMPRAITEM                278.1     171.36        106.74        38.38
REAL_STATE  RS_REPRESENTATIVA                   55.25      16.02         39.23           71
REAL_STATE  RS_DISTRIBUCIONESP                  15.73        .04         15.69        99.75
REAL_STATE  RS_ARTICULOUNIDADENVIO              15.73        .38         15.35        97.58
REAL_STATE  PARAMETRODESCRIPCION                15.73          0         15.73          100

Con la lista propuesta, procedemos a la ejecución del SHRINK.

Acerca de Juan Andres Mercado

Big Data Enthusiast, DBA & Exadata Manager | Consultant | Father | Musician | Farmer | Environmentalist Argentina | juanmercadoit.com
Esta entrada fue publicada en DB - 11gR2, Oracle 12c, Scripting, Tunning y etiquetada , , . Guarda el enlace permanente.