Aller au contenu

Collecte AWR (Oracle)

AWR (Automatic Workload Repository) est disponible à partir d'Oracle 10g, mais nécessite que le client ait acquis l'option Oracle Diagnostic Pack. Sans cette option, utilisez Statspack, qui offre des données comparables sans coût de licence supplémentaire.

KAIROS fournit deux méthodes de collecte pour produire les rapports AWR/ASH à transmettre au système.

Méthode 1 — Script Korn Shell (kairosora.ksh)

Le script kairosora.ksh (fourni dans collects/Oracle/) est transféré directement sur le système hébergeant la base Oracle.

Environnement Oracle (oraenv)

Si votre installation utilise le mécanisme oraenv pour basculer entre environnements Oracle, ajoutez le flag -oraenv. Sinon, assurez-vous que le contexte Oracle est déjà correctement positionné (variables d'environnement ORACLE_HOME, ORACLE_SID) avant l'exécution.

Commande de collecte AWR

ksh /TOOLDIR/kairosora.ksh -sid:MYINSTANCE -day:YYYY-MM-DD -awr -lvl:3 -zip -grp:GGGG -dir:DDDD
Paramètre Signification
TOOLDIR Répertoire où se trouve le script de collecte
MYINSTANCE Nom de l'instance Oracle
YYYY-MM-DD Jour à extraire (ex. 2024-11-20)
-lvl:3 Niveau de détail : 1 = AWR seul, 2 = détail des requêtes, 3 = inclut ASH
GGGG (optionnel) symbole identifiant l'entreprise, UNKNOWN par défaut
DDDD Répertoire de sortie du résultat (archive zip ou tar)

Automatisation via cron

Si le paramètre -day est omis, les données du jour précédent sont extraites automatiquement. C'est le comportement recommandé pour une exécution planifiée quotidienne (cron), afin de produire un nouveau rapport chaque jour sans modification de la commande.

Méthode 2 — Script Python sous Jython (kairosora.py)

Cette méthode est recommandée lorsque Java est disponible, car elle ne nécessite pas d'être exécutée directement sur le serveur Oracle : elle peut tourner depuis n'importe quel poste disposant d'un accès SQL*Net vers la base cible.

a) Repérer un exécutable Java

find / -name 'java' 2> /dev/null

Choisissez de préférence un binaire situé sous le répertoire Oracle (ex. /oracle/12.2.0/jdk/bin/java), puis vérifiez sa version :

/oracle/12.2.0/jdk/bin/java -version

b) Repérer un driver JDBC Oracle (ojdbc)

find / -name '*ojdbc*jar' 2> /dev/null

Les fichiers ojdbc6.jar ou ojdbc8.jar conviennent généralement. Un fichier ojdbc6.jar est également fourni dans collects/Oracle/ du projet KAIROS.

c) Préparer Jython

Transférez jython-standalone.jar (fourni dans collects/Oracle/) sur le système d'extraction, puis créez un alias combinant Java, Jython et le driver JDBC :

alias jython='/oracle/12.2.0/jdk/bin/java -classpath /tmp/jython-standalone.jar:/oracle/12.2.0/jdbc/lib/ojdbc8.jar org.python.util.jython'

Vérifiez que Jython démarre correctement :

jython

d) Consulter les options du script

jython kairosora.py -h
usage: kairosora.py [-h] [--version] [--awr] [--host HOST] [--port PORT]
                    [--service SERVICE] [--user USER] [--password PASSWORD]
                    [--instance INSTANCE] [--level LEVEL] [--from FROM]
                    [--to TO] [--directory DIRECTORY] [--bash]

  --awr                 True: extraction AWR, False: extraction STATSPACK
  --host HOST           Hôte à contacter en SQL*Net (défaut: hôte courant)
  --port PORT           Numéro de port (défaut 1521)
  --service SERVICE     Service à contacter (défaut: valeur de ORACLE_SID)
  --user USER           Schéma source des données STATSPACK (défaut: PERFSTAT)
  --password PASSWORD   Mot de passe du schéma PERFSTAT (Statspack) ou SYS (AWR)
  --instance INSTANCE   Instance cible (défaut: valeur de ORACLE_SID)
  --level LEVEL         1: AWR seul, 2: détail des requêtes, 3: ASH
  --from FROM           Date de début d'extraction
  --to TO                Date de fin d'extraction
  --directory DIRECTORY Répertoire de sortie (défaut: /tmp)
  --bash                True: extraction B-ASH

e) Lancer l'extraction AWR

jython kairosora.py --awr --host MYHOST --port 1521 --service TARGETDB \
    --instance ABCD --user SYS --password ******** \
    --level 3 --from "2024-11-20 08:00" --to "2024-11-20 18:00" \
    --directory /mydirectory

Cet exemple extrait le niveau 3 (AWR + ASH) pour la fenêtre horaire indiquée, et écrit le résultat dans /mydirectory.

Une fois le rapport produit

Le fichier ou l'archive généré doit être importé dans KAIROS — voir Importer un rapport dans KAIROS. L'analyseur intégré de KAIROS reconnaîtra automatiquement le contenu AWR, sans configuration supplémentaire.