Bajo ciertas circunstancias puede ser necesario lanzar
manualmente el job de recopilación automática de estadísticas del optimizador. Esto es habitual en casos donde se está
evaluando la performance de algún SQL o luego de depuraciones grandes de datos.
A partir de la versión 11g, el mecanismo de ejecución de “Auto-Tasks” para
tareas de mantenimiento, reemplazó la necesidad de gather_stats_job.
También existe la
posibilidad de forzar la ejecución manual (fuera de la ventana de
mantenimiento) utilizando la siguiente sentencia:
SQL> exec DBMS_AUTO_TASK_IMMEDIATE.GATHER_OPTIMIZER_STATS
Para utilizar este comando es necesario el privilegio de
DBA.
Esto le indica al subsistema "Automated Maintenance
Tasks" iniciar un job para recolectar estadísticas, siempre y cuando no
exista ya un job en ejecución.
Este caso puede darse si una ventana de mantenimiento está
abierta en ese momento. Si el job es finalmente lanzado sin problemas, tendrá
un nombre con el formato: ORA $ _AT_OS_MANUAL_nnnnnn (nnnnn son uno o más
dígitos decimales).
Como comentaba, a diferencia de los jobs de mantenimiento
automatizados normales , el job "MANUAL" no está directamente
vinculado a una ventana de mantenimiento específica.
SQL> select job_name,state
from
dba_scheduler_jobs
where
program_name='GATHER_STATS_PROG';
Y en el caso se ser necesario cancelarla:
SQL> variable jobid varchar2(32)
SQL> exec select job_name into :jobid from
dba_scheduler_jobs where program_name='GATHER_STATS_PROG';
SQL> print :jobid
SQL> exec dbms_scheduler.stop_job(:jobid,false)
No hay comentarios:
Publicar un comentario