Générer des archives de traces pour le support Oracle ?

ADRCI (Automatic Diagnostic Repository Command Interpreter) est apparu avec Oracle 11G et est depuis cette version, le moyen natif le plus simple afin d’interagir avec les différents types de traces.
Aujourd’hui, nous allons nous attarder sur une des possibilités qu’offre cet outil:
L’invocation d’IPS (Incident Packaging Service), afin de générer simplement des archives de traces à destination du support « Oracle ».
La base de données sur laquelle s’appuieront les différentes démonstrations est une CDB (Container Database) en version 12.1.0.2.0 Enterprise Edition.
                  Positionnons-nous dans le répertoire « ADR home » dans lequel nous souhaitons travailler:
(Remarque: Si aucun « ADR Home » n’est positionné, les incidents s’étant produit dans l’ensemble des « ADR Homes » listés par la commande « show homes » seront ciblés)
En effet, il existe potentiellement plusieurs référentiels « ADR Home » (un pour chaque base de données, un pour le listener, etc..) sur votre serveur. L’ensemble de ces « ADR Home » sont visualisables via la commande « show homes », comme indiqué ci-dessous:

ADRCI: Release 12.1.0.2.0 - Production on Fri Apr 24 01:03:35 2015
Copyright (c) 1982, 2014, Oracle and/or its affiliates.  All rights reserved.
ADR base = "/home/oracle/app/oracle"
adrci> show homes
ADR Homes:
diag/rdbms/cdb1/cdb1
diag/clients/user_oracle/host_61728193_82
diag/diagtool/user_oracle/adrci_61728193_82
diag/tnslsnr/localhost/listener
adrci> set homepath diag/rdbms/cdb1/cdb1
adrci> show homes
ADR Homes:
diag/rdbms/cdb1/cdb1

 
                  Ciblons les incidents s’étant produit dans notre base de données nommées « CDB1 » :
adrci> show incident

adrci> show incident
ADR Home = /home/oracle/app/oracle/diag/rdbms/cdb1/cdb1:
*************************************************************************
INCIDENT_ID          PROBLEM_KEY                                                 CREATE_TIME
-------------------- ----------------------------------------------------------- ----------------------------------------
45673                ORA 700 [kskvmstatact: excessive swapping observed]         2014-08-15 13:13:25.146000 -07:00
1 rows fetched

 
Il est bien entendu possible d’obtenir plus d’informations au sujet d’un incident particulier. L’ensemble des informations relatives à l’incident n°45673 pourront s’obtenir via:
adrci> show incident [-mode {BASIC|BRIEF|DETAIL}] -p « incident_id=45673 »
Un incident est une occurrence d’un problème particulier. Afin de lister l’ensemble des problèmes étant survenus dernièrement dans notre base de données « CDB1 », il suffit d’utiliser la commande « show problem »:
adrci> show problem

adrci> show problem
ADR Home = /home/oracle/app/oracle/diag/rdbms/cdb1/cdb1:
*************************************************************************
PROBLEM_ID           PROBLEM_KEY                                                 LAST_INCIDENT        LASTINC_TIME
-------------------- ----------------------------------------------------------- -------------------- ----------------------------------------
1                    ORA 700 [kskvmstatact: excessive swapping observed]         45673                2014-08-15 13:13:25.146000 -07:00
1 rows fetched

 
                  Créons un nouveau package « IPS » logique, vierge de tout contenu:
adrci> ips create package

adrci> ips create package
Created package 9 without any contents, correlation level typical

 
                  Ajoutons l’incident n°45673, au package logique précédemment créé:
adrci> ips add incident 45673 package 9

adrci> ips add incident 45673 package 9
Added incident 45673 to package 9

 
Il est possible d’ajouter les informations de plusieurs incidents (« INCIDENT_ID »), au sein d’un même package. Nous pouvons également y ajouter des informations relatives à un « PROBLEM_ID » et/ou à un « PROBLEM_KEY ». Le mot clé « TIME » peut être utilisé afin de cibler une période bien particulière.
Il serait également envisageable de créer un package directement, dans un répertoire de son choix, en ciblant le l’ID de l’incident souhaité:
adrci> ips pack incident 45673 in /tmp

adrci> ips pack incident 45673 in /tmp
Generated package 10 in file /tmp/ORA700ksk_20150424011324_COM_1.zip, mode complete
[oracle@localhost tmp]$ pwd
/tmp
[oracle@localhost tmp]$ ls | grep zip
ORA700ksk_20150424011324_COM_1.zip
[oracle@localhost tmp]$

 
Nous pourrions également envisager de créer un package directement, en ciblant non plus un ID d’incident précis, mais l’ensemble des incidents s’étant produits durant un intervalle de temps donné:
adrci> ips create package time ‘2015-04-05 00:00:00 -08:00’ to ‘2015-04-06 00:00:00 -08:00’

adrci> ips create package time '2015-04-05 00:00:00 -08:00' to '2015-04-06 00:00:00 -08:00'
Created package 11 based on time range 2015-04-05 00:00:00.000000 -08:00 to 2015-04-06 00:00:00.000000 -08:00, correlation level typical

 
                  Générons l’archive à destination du support « Oracle »:
adrci> ips generate package 9

adrci> ips generate package 9
Generated package 9 in file /tmp/IPSPKG_20150424011043_COM_1.zip, mode complete

 
L’archive générée dans cette démonstration peut être envoyée telle qu’elle est au support « Oracle ». Elle contient en effet l’exhaustivité des informations relatives à l’incident qu’on souhaite traiter:
IPS2
Nous avons donc entrevu les possibilités offertes par « IPS ». L’utilisation de cet outil (pouvant également être invoqué via la console « EM »), peut être source de gain de temps significatif lors des échanges avec le support « Oracle ».
Dans nos exemples, le packaging des incidents a été traité (il va de soi qu’il est également envisageable de reproduire tout cela, en ciblant un/des problèmes.