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:
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.