Sp auto

De wiki.nexiat.fr
Aller à la navigation Aller à la recherche
Fiche express
Type Script SQL*Plus d'administration (Statspack)
Voir aussi Sp auto 15 · SGA usage

Sp auto crée, via DBMS_JOB, une tâche planifiée exécutant un instantané Statspack (statspack.snap) toutes les heures pile. À exécuter connecté sous le compte propriétaire du référentiel Statspack (typiquement PERFSTAT) ; le script invite lui-même à saisir son mot de passe via connect perfstat.

Pré-requis : le paramètre d'instance job_queue_processes doit être supérieur à 0 pour que les jobs planifiés s'exécutent réellement — le script affiche sa valeur courante en fin d'exécution pour vérification, ainsi que le numéro de job créé (à noter pour le modifier ou le supprimer par la suite) et la prochaine échéance planifiée.

Statspack reste une alternative gratuite à AWR (Automatic Workload Repository), qui nécessite de son côté une licence Diagnostics Pack — pertinent en Standard Edition, ou sur une Enterprise Edition non licenciée pour ce pack. DBMS_JOB est l'ordonnanceur historique d'Oracle, remplacé depuis Oracle 10g par DBMS_SCHEDULER (plus complet : fenêtres de maintenance, chaînes de jobs, contraintes de ressources...) mais toujours fonctionnel et suffisant pour ce cas d'usage simple.

Script

PROMPT =========================================================================
PROMPT Ce script crée un nouveau job DBMS_JOB exécuté au sommet de chaque heure.
PROMPT Le job effectue un instantané Statspack via le package STATSPACK fourni
PROMPT par Oracle.
PROMPT
PROMPT À exécuter connecté en tant que propriétaire du référentiel STATSPACK
PROMPT (typiquement PERFSTAT). Le script demande le mot de passe PERFSTAT.
PROMPT
PROMPT Le paramètre init.ora job_queue_processes doit être supérieur à zéro
PROMPT pour pouvoir soumettre et exécuter un job.
PROMPT =========================================================================
PROMPT
PROMPT Appuyer sur [ENTRÉE] pour continuer, ou CTRL-C pour annuler...
PAUSE

PROMPT Mot de passe de l'utilisateur PERFSTAT :
CONNECT perfstat

-- Planifie un instantané exécuté sur cette instance toutes les heures pile
VARIABLE jobno  NUMBER;
VARIABLE instno NUMBER;

BEGIN

  SELECT instance_number INTO :instno
  FROM   v$instance;

  DBMS_JOB.SUBMIT(:jobno, 'statspack.snap;', trunc(sysdate+1/24,'HH'),
                  'trunc(SYSDATE+1/24,''HH'')', TRUE, :instno);

  COMMIT;

END;
/

PROMPT Numéro de job (à noter pour le modifier ou le supprimer) :
PRINT jobno

PROMPT Valeur courante de job_queue_processes :
SHOW PARAMETER job_queue_processes

PROMPT Prochaine exécution planifiée :
SELECT job, next_date, next_sec
FROM   user_jobs
WHERE  job = :jobno;

Voir aussi

  • Sp auto 15 — même principe, toutes les 15 minutes
  • SGA usage — occupation mémoire, autre volet du suivi de performance