Statspack
Par
Jaouad ZOUAGHI (home)
Nous allons apprendre à installer l'utilitaire gratuit de mesures des performances sous Oracle: Statspack. I. Introduction II. Différences entre STATSPACK et ULTBSTATS/ UTLESTATS III. Installation III-A. Préambule III-B. Création du tablespace III-C. Installation III-D. Désinstallation IV. Statpack IV-A. Préambule IV-B. Comment fonctionne t'il ? IV-C. Paramétrer la prise de clichés IV-D. Tâches d'administration IV-E. Compatibilité, Upgrade et nouveauté en 9i I. Introduction
En période de charge et lorsque des problèmes interviennent, vous devez effectuer un snapshot toutes les 15 minutes. Sinon une prise de clichés toutes les 30 minutes est suffisante dans la plupart des systèmes de productions. Statspack a été introduit avec la version 8.1.6 d'oracle, cependant il est utilisable avec une base 8.0. C'est un outil de mesure des performances qui remplace les scripts UTLBSTATS.SQL et UTLESTATS.SQL sur les anciennes versions d'Oracle. Avant de procéder à l'installation de cet utilitaire il convient de s'assurer de la bonne valeur d'un paramètre que nous avons déjà eu l'occasion de voir : TIMED_STATISTICS. En effet ce dernier doit être positionnée à TRUE. Positionné à true au niveau instance (PFILE, SPFILE ou par le biais de la commande « alter system ou alter session »), ce paramètre va permettre à Oracle de fournir des informations temporelles. Les statistiques temporelles sont exprimées en microsecondes. Dans les versions 9.2 et ultérieures les statistiques sont collectées de manière automatique pour l'instance si STATISTICS_LEVEL est à TYPICALL ou ALL. Si par contre, sa valeur est BASIC alors dans ce cas là il faut que le paramètre TRUE soit affecté à TIMED_SATISTICS. Pour modifier la valeur de ce paramètre :
Lors du prochain arrêt redémarrage de la base, ce changement de paramétrage sera également appliqué au SPFILE ( Server Parameter File).
II. Différences entre STATSPACK et ULTBSTATS/ UTLESTATS
Statspack enregistre beaucoup plus d'informations et de manière plus complète que la version précédente de mesure des statistiques d'Oracle.
Statpack s'exécute donc sous le schéma PERFSTAT, il a donc son propre schéma mais également des tables, indexes, séquences et un package. Statpack doit être installé sur chaque base, avant de procéder à l'installation :
III. InstallationIII-A. Préambule
Oracle recommande d'effectuer l'installation uniquement sous SQL*PLUS et non sous Server Manager (pour les versions compatibles ). Tout les scripts d'installation, paramétrage et utilisation se trouve dans :
Et se présentent sous la forme sp*.sql Sous unix :
Il existe en plus des scripts traditionnels d'exploitation, des scripts permettant d'assurer des tâches d'administration sur des versions inférieures notamment, notamment lorsque l'on effectue des upgrades: spup817.sql , spup90.sql ( ici nous sommes dans un ORACLE_HOME 10G ). Commencer par la création du Tablespace : III-B. Création du tablespace
III-C. Installation
L'installation se lance en se connectant à l'instance sous un super utilisateur et en exécutant le script SPCREATE.SQL Trois scripts sont lancés par SPCREATE : Spcusr : qui permet la création de l'utilisateur et lui donne les privilèges ainsi que des vues nécessaires. Spctab : qui crée les tables et indexes. Spcpkg : qui conclut par la création du package STATPACK. La première action est de demander un nouveau mot de passe pour cet utilisateur. Il est préférable, dans un souci de commodité, de laisser le mot de passe à PERFSTAT. D'autant plus que les privilèges de cet utilisateur ne permettent pas d'actions dangereuses.
Attention comme il est indiqué le fait de ne pas lui préciser de PASSWORD fait échouer l'installation.
Après avoir donné tous les privilèges requis, l'installation à besoin de connaître la tablespace par défaut et le temporaire. Avant de vous demander le TBS notez qu'Oracle effectue un récapitulatif des espaces de tables présents. Ensuite Oracle lance les deux scripts de création de segments. Ici il n'y a pas besoin d'actions du DBA. Un message de fin indique que l'installation c'est déroulé sans problème :
Comme souvent lors de l'installation d'outil Oracle, des reports d'installation sont crées sous le répertoire courant de lancement de Sql*Plus : Ils se nomment ainsi : Spcusr.lis : report sur la création de l'utilisateur. Spctab.lis : report sur la création des tables et indexes. Spcpkg.lis : report sur la création du package STATPACK. III-D. Désinstallation
Pour effectuer une désinstallation propre ou si au cours de l'installation se produit une erreur il suffit de simplement lancé le script SPDROP.sql. Ce script appelle deux autres scripts : Spdtab.sql qui va supprimer les objets de PERFSTAT.Il produit un fichier de sortie dans le répertoire courant : spdtab.lis qui permet de visualiser le déroulement du script. Spusr.sql qui supprime le user PERFSTAT.Il produit également un spool : spdusr.lis IV. StatpackIV-A. Préambule
La procédure statpack.snap extrait des informations des tables V$ et les enregistre dans les tables du référentiel de Perfstat. Il existe une séquence STATS$SNAPSHOT_ID qui permet d'identifier de manière unique les reports notamment lors de la production de ces derniers ou lors d'opérations de purge. IV-B. Comment fonctionne t'il ?
Grâce à la procédure Perstat.statpack.snap on va pouvoir effectuer des clichés permettant donc de prendre différentes mesures et de les stocker en base. Lorsque l'on a pris au moins deux clichés, nous allons pouvoir formater un report en effectuant une comparaison des valeurs pour les deux périodes. Pour pouvoir générer un rapport il faut tout simplement exécuter le script SPREPORT comme nous le voyons ici :
Lorsque nous exécutons SPREPORT on voit s'afficher à l'écran le nom de l'instance et de la base de données. Nous voyons également l'ID qui est le numéro unique d'identification et enfin la date de prise de cliché et le niveau du cliché. Il suffit alors de donner l'ID du report de début et l'ID du report de fin. Ainsi que le nom du report. Cette information est facultative : en effet si nous ne donnons pas de nom spécifique, Oracle nomme toujours ces reports de la manière suivante : SP_IDDEBUT_IDFIN.LST
Rappelons-nous que les clichés sont basés sur des informations insérés dans des tables. Pour ce faire on peut retrouver tous les clichés que l'on a prit interrogeant la table Perfstat.stats$snapshot.
IV-C. Paramétrer la prise de clichés
Pour programmer la prise de clichés, on peut programmer une tache planifiée sous CRON et/ou AT en fonction de votre système d'exploitation. Il existe une autre solution qui est indépendante du système d'exploitation : Le planificateur de tâche Oracle :DBMS_JOB. Celui est conseillé pour ce genre de tâches d'administration car il permet ainsi de soulager le système de gestion des tâches planifiées et de ne pas interférer avec les autres tâches d'administration du système ( même si sous UNIX le user Oracle peut avoir sa propre CRONTAB ). Le package statspack est constitué de quatre procédures et une fonction : Statspack.modify_statspack_parameter :
Cette fonction permet de modifier les seuils de définition des ordres SQL les plus consommateurs. Notamment grâce à : I_executions_th : nombre d'exécutions maximum d'une requête ( INTEGER => 0 défaut 100). I_disk_read_th : Nombre de lecture Disque par requête ( integer => 0 défaut 1000) I_parse_call_th : nombre de parse par appel ( integer => 0 défaut 1000). I_buffer_gets_th : nombre de buffer par requête, ce paramètre indique les requêtes qui peuvent nécessiter une optimisation : en effet il faut surveiller les requêtes qui consomment beaucoup trop de buffer/ nombre de lignes ramenées. (Absence d'index ou mauvaise jointure) ( integer => 0 défaut 10 000). I_sharable_mem_th : Mémoire consommée par requête ( integer => 0 défaut 1048576 l'unité est l'octet ) On peut également voir les ordres SQL les plus consommateurs en se basant sur la table :
La liste des paramètres est visible également par une requête SQL :
Note : Le DBID est celui que l'on peut retrouver dans la vue V$DATABASE. Statspack. QAM_STATSPACK_PARAMETER:
Statspack. SNAP ( permet la prise de clichés) .
On peut également paramétrer le niveau de finesse de prise des clichés. Levels >= 0 : Performances générales de la base. Ici nous avons les ratios principaux ( cache, shared_pool, les différents caches ) et la liste des contentions ( Wait event ) et des statistiques de l'instance ( les latchs, UNDO.. ). Levels >=5 : Ajout des ordres SQL les plus consommateurs. Levels >=6 : Ajout des Explain plan Levels >= 10 : Parent and child childrens ( En règle général il sert au support Oracle ). Les fonctions SLARTI et la procédure STAT_CHANGES sont secondaires et très peu utilisés. Une recherche sur Métalink ou OTN vous permettra d'avoir une explication précise. IV-D. Tâches d'administration
Bien entendu comme tout outil STATSPACK réclame une administration qui se consiste en deux points essentiels : Le premier est de calculer des statistiques sur le schéma PERFSTAT. Et oui cet outil de mesures statistiques a également besoin de stats afin que la génération de report soit le plus rapide possible. Un exemple :
Et enfin de temps en temps il faut vider les tables du référentiel afin de garantir un bon accès aux données et de ne pas surcharger inutilement le tablespace. Sppurge supprime les entrées dans les tables :
Comme pour Spreport on choisit l'ID de début et L'id de fin. Il est possible à la fin du script d'effectuer un ROLLBACK Sptrunc truncate toutes les tables :
IV-E. Compatibilité, Upgrade et nouveauté en 9i
Il est impossible d'utiliser une version de statspack sur une version inférieure de base de données. Ainsi Les scripts 9i ne fonctionnent qu'avec la 9i. Cependant il est possible d'utiliser statspack 817 sur une base 9i. A chaque upgrade il est effectivement conseillé d'upgrader également Statspack ( script d'upgrade fournit avec la version 9i et 10g , par spup817.sql permet d'upgrader un statspack 817 en 9i ) A partir de la 9i STATSPACK supporte les environnements RAC mais il permet également :
|
Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2005 Jaouad ZOUAGHI. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.