Rapports Oracle AWR

L’une des grandes forces d’Oracle est la panoplie d’outils qu’il propose, notamment l’Automatic Worload Repository. Comme son nom l’indique, il collecte et stocke les données sur l’utilisation de la base, autant sur les requêtes effectuées que les ressources utilisées. C’est évidemment un outil très utile dans le cas d’étude de performance et d’optimisation de base de données.

Activation

Pour activer la surveillance et la prise de ‘snapshots’, il faut d’abord exécuter la commande suivante dans sqlplus (évidemment avec un compte admin) :

EXECUTE dbms_workload_repository.modify_snapshot_settings (retention=>43200, INTERVAL=>10);

Les deux paramètres de la procédure sont en minutes, et configure la fréquence des snapshots (10 minutes ici) et la durée de rétention (30 jours).

Création d’un rapport

Pour consulter la liste des snapshots disponibles :

SELECT snap_id, begin_interval_time, end_interval_time
    FROM dba_hist_snapshot
    ORDER BY 1;

Pour générer un rapport :

@%ORACLE_HOME%/rdbms/admin/awrrpti.SQL

Il vous sera demandé les snapshots de début et de fin du rapport pour déterminer la période à étudier avant de vous générer un html très complet.

On y trouve les resources consommées (CPU, mémoire, I/O…), les requêtes les plus coûteuses, les plus longues, les plus consultées etc… Bref, tout ce qu’il faut pour une étude de performance de la base !

 

{lang: 'fr'}

Contrôler et augmenter le nombre de sessions Oracle

L’utilisation de pool de connexions peut facilement saturer le nombre de connexions disponibles par défaut sur une base Oracle. D’autant plus qu’Oracle semble en utiliser pour son propre usage.

Une saturation se caractérise généralement par les erreurs suivantes:

ORA-12519, TNS:no appropriate service handler found

ATTENTION: pour passer les commandes ci-dessous, il faut avoir les droits DBA.
Pour les contrôler, utiliser la commande suivante:

SELECT sid, username, program, server FROM v$session

Pour augmenter:

alter system set PROCESSES=200 SCOPE=SPFILE ;
alter system set SESSIONS=200 SCOPE=SPFILE ;

Un arrêt / relance d’Oracle est ensuite nécessaire pour prendre en compte ces modifications.
Pour vérifier que la modification a bien été prise en compte:

select name, value from v$parameter where name in (’processes’,’sessions’);
{lang: 'fr'}