Overblog
Editer l'article Suivre ce blog Administration + Créer mon blog
LAMI DBA

Articles autour des SGBD Oracle, SQL Server & PostgreSQL

ORACLE : Comment lancer manuellement les statistiques via le job en AUTOTASK

Récemment, j'ai été amené à étudier la collecte des statistiques Oracle via le job automatiquement lancé par les AUTOTASKS, et j'ai eu besoin à un moment de lancer manuellement la collecte, sans passer par une commande sql classique (utilisation de dbms_stats) ni un script maison.

Alors comment faire pour utiliser et lancer manuellement le job automatique de calcul de stats, le même qui est quotidiennement planifié à 22h chaque jours (défaut Oracle) ?

La réponse est assez simple, il suffit d’utiliser le package "DBMS_AUTO_TASK_IMMEDIATE", disponible depuis la version 11g !

Depuis le compte SYS, il suffit de lancer la commande ci dessous pour lancer le calcul de stats via le job par défaut :

SQL> exec DBMS_AUTO_TASK_IMMEDIATE.GATHER_OPTIMIZER_STATS;
PL/SQL procedure successfully completed.

 

Autre alternative, mais moins pratique, serait de modifier l'heure de la fenêtre de maintenance, ce qui aurait nécessité les actions ci dessous (par exemple pour modifier l'heure à 11h au lieu de 22h), mais cela implique que la planification des autres jobs (auto space advisor, sql tuning advisor) serait également impactée.

Pour identifier les jobs automatiques :

SQL> select client_name, status, window_group from dba_autotask_client;

CLIENT_NAME                                    STATUS   WINDOW_GROUP
--------------------------------------------- --------  ------------
sql tuning advisor                            ENABLED  ORA$AT_WGRP_SQ
auto optimizer stats collection               ENABLED  ORA$AT_WGRP_OS
auto space advisor                            ENABLED  ORA$AT_WGRP_SA

 

Pour modifier la planification des jobs via les fenêtres de maintenance quotidienne :

EXECUTE DBMS_SCHEDULER.SET_ATTRIBUTE('MONDAY_WINDOW',   'repeat_interval','freq=daily;byday=MON;byhour=11;byminute=0; bysecond=0');
EXECUTE DBMS_SCHEDULER.SET_ATTRIBUTE('TUESDAY_WINDOW',  'repeat_interval','freq=daily;byday=TUE;byhour=11;byminute=0; bysecond=0');
...

 

Note : Pour changer l'heure de déclenchement des jobs, il faut modifier directement les fenêtres de maintenances quotidiennes et non pas le groupe de fenêtre de maintenance.

Enjoy ;-)

Partager cet article
Repost0
Pour être informé des derniers articles, inscrivez vous :
Commenter cet article