Home > Bases de Datos, Oracle, Query > Automatizar el proceso de estadisticas de un esquema

Automatizar el proceso de estadisticas de un esquema

En varias ocaciones me ah sucedido que se debe automatizar el proceso de actualización de estadisticas del motor o bien de un esquema en particular, suponiendo que en dicho esquema estan los datos mas importantes y que mas utiliza el cliente.-

Para esto es posible dejar en un crontab (Unix/Linux) o bien en una tarea programada (Windows) un pequeño script que identidique todas las tablas de un esquema, elimine las estadisticas antiguas y luego las actualice, para esto les dejo el siguiente script que hace ésta labor.-

Por crontab puede quedar programado para alguna hora ya sea en la noche o bien durante el fin de seman…

#!/bin/bash
export NLS_LANG=spanish_spain.WE8ISO8859P1
export PATH=/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/home/oracle/bin::/opt/j2sdk1.4.1/bin:/opt/oracle/product/9.2.0/bin
export ORACLE_HOME=
export ORACLE_SID=
RUTA= export ORACLE_SID ORACLE_HOME RUTA
rm -f $RUTA/ejecuta_estadisticas_esquema.sql
#Genera script SQL para estadisticas ...
sqlplus user/pass @$RUTA/estadisticas_esquema.sql
#Ejecuta las estadisticas
sqlplus user/pass @$RUTA/ejecuta_estadisticas_esquema.sql

Detalle script estadisticas_esquema.sql

set pages 0
set feed off
set head off
set lines 90
spool /ejecuta_estadisticas_esquema.sql
select rtrim(a.an1||' delete statistics;'),rtrim(b.an1||' compute statistics;')
from (select 'analyze table '|| a.owner ||'.'|| a.table_name as an1 from dba_tables a
where owner =''
) a
,(select 'analyze table '|| b.owner ||'.'|| b.table_name as an1 from dba_tables b
where owner =''
) b
where a.an1 = b.an1
;
select 'exit' from dual
;
spool off
exit

  1. No comments yet.
  1. No trackbacks yet.