Installation PERFSTAT oracle 10

Introduction :

Dans le cadre d’une mission chez l’un de nos clients, une petite PME de la région parisienne , qui rencontrait une baisse de performance au niveau de sa base de production.

J’ai mis en place l’outil gratuit d’oracle  afin d’étudier  la provenance de cette baisse de performance .

Il est à noter qu’il existe un autre outil ( oracle tunning pack)  permettant de proposer les recommandations et de trouver la root cause de la baisse de performance, malheureusement il est payant.

 

QU’EST  CE QUE PERFSTAT  :

L’utilitaire PERFSTAT est nécessaire aux bases de données de production . il permet de stocker les performances et les statistiques de la base sous la forme d’une prise d’image appelée SNAPSHOT.

Il permet aussi de comparer ces SNAPSHOTS deux à deux.

Avoir un rapport à un instant t va nous donner des informations sur des requêtes coûteuses

L’installation se décompose en 3 étapes:

1) création du tablespace par défaut :

sinon oracle va utiliser le tablespace sysaux comme table par defaut

SQL> create tablespace PerfStat datafile ‘/oracle/oradata/orcl/Perfstat.dbf’
2 size 200M autoextend ON next 50M maxsize 1G;

SQL> select tablespace_name from dba_tablespaces;

TABLESPACE_NAME
——————————
SYSTEM
SYSAUX
UNDOTBS1
TEMP
USERS
PERFSTAT
APPL

2) Installation :

ci-dessous un petit script d’installation :

sqlplus / as sysdba << _EOF_

define perfstat_password=perfpass

define default_tablespace=PERFSTAT

define tempory_tablepace=temp

@/soft/oracle/product/db/10.2.0/rdbms/admin/spcreate.sql

_EOF_

Le script spcreate.sql éxecute 3 autres scripts

  1. spcusr.sql ==> Création de l’utilisateur PERFSTAT et accorder droits nécessaires
  2. spctab.sql ==> Création des tables
  3. spcpkg.sql ==> création du package

3) post-installation

Une fois l’installation terminée, il est fortement conseillé d’aller jeter un oeil dans le fichier de log

  • Pour info, il y a trois fichiers de log (et 1 par script)
  1. spcusr.lis
  2. spctab.lis
  3. spcpkg.lis

4) Déinstallation :

rien de plus simple :

executer le script

@/soft/oracle/product/db/10.2.0/rdbms/admin/spdrop.sql

et supprimer aussi le tablespace .

5) Prendre un cliché :

encore un petit script pour prendre un cliché

sqlplus  -s perfstat/perfpass  << _EOF_

exec statspack.snap;

_EOF_

Il est conseillé d’automatiser la prise des clichés à une frequence de 30 min :

un petit script qui va faire cela

DECLARE X NUMBER;
 BEGIN
    SYS.DBMS_JOB.SUBMIT
  (
   job => X,
   what => 'statspack.snap;',
   next_date => SYSDATE+30/1440,
   interval => 'SYSDATE+30/1440',
   no_parse => FALSE
  );
  END;
 /

6) calcul des statistiques:

sqlplus  -s perfstat/perfpass  << _EOF_

exec dbms_utility.analyze_schema(‘PERFSTAT »,’COMPUTE’);

_EOF_

7) suppression  de donnée :

script de suppression de donnée entre deux SNAPSHOTS:

lemin=$(sqlplus -s perfstat/perfpass << EOF  select min(snap_id) MIN  from perfstat.stats\$snapshot  ;

EOF

)

lemax=$(sqlplus -s perfstat/perfpass << EOF  select max(snap_id) MAX  from perfstat.stats\$snapshot  ;

EOF

)

echo  « *************************DEBUT********************* »

echo »Choisissez deux valeurs entre le min et le max »

echo « $lemin »

echo « $lemax »

echo « Entrez une valeur minimal »

read lemin

echo « Entrez une valeur maximal »

read lemax

 

sqlplus -s perfstat/perfpass << _EOF_

define losnapid=$lemin

define hisnapid=$lemax

@/soft/oracle/product/db/10.2.0/rdbms/admin/sppurge.sql

_EOF_

 

 

Génération de rapport perfstat:

@?/rdbms/admin/spreport.sql
  • La ,on obtient la liste des clichés avec le SNAP Id et la date et heure du cliché. Ce qui peut être pratique.
  • Le jour ou l’on vous dit que « ça a ramé » le 12 entre 15 heures et 16 heure, il suffira d’identifier les snap id correspondants.
  • Pour faire un rapport, il faut deux clichés.
  • On répond à la question posée:
Entrez une valeur pour begin_snap:
 Entrez une valeur pour end_snap :
 Entrez une valeur pour report_name : Il faut en fait indique chemin + nom (ex:c:\temp\report.log)

statspackanalyzer

Voilà j’espère que cela vous sera utile .

 

 

Post Comment

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *