Articles autour des SGBD Oracle, SQL Server & PostgreSQL
21 Mars 2018
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 ;-)