AdrCi : La puissance n'est rien sans contrôle

Objectif

Dans cette première partie, nous allons voir comment utiliser la puissance et la simplicité de l’AdrCi. Cette démonstration a été réalisée en EE 11.2.0.3 64bits Windows.
Imaginons que notre instance subisse quelques avaries, au lieu de chercher les erreurs dans les fichiers log, nous allons utiliser ADR.
Nous allons voir comment remonter les informations, les traiter et le cas échéant les envoyer à Oracle en compressant les données pour alimenter une SR.

Créons une table :

set echo on
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
SQL> set echo on
SQL> create table HR.TABEASY(c number) tablespace users;
SQL> Table créée.

Alimentons la table :

SQL> variable obj number;
SQL> begin
SQL> select object_id into : obj  from dba_objects where owner='HR' and object_name='TABEASY';
SQL> end
SQL> /
SQL> Procédure PL/SQL terminée avec succès.
SQL> print obj
SQL> /
SQL> ObJ ---------      76587
SQL> update tab$ set cols=1001 where obj#=:obj;
SQL> 1 ligne mise à jour.
SQL> commit
SQL>/
SQL> Validation effectuée.
SQL> commit
SQL>/
SQL> alter system flush shared_pool
SQL>/
SQL> Système modifié.

Générons l’erreur afin de tirer parti de l’AdrCi :

SQL> select * from hr.tabeasy
SQL> /
SQL> ERREUR à la ligne 1 :
SQL> ORA-03113: fin de fichier sur canal de communication
SQL> ID de processus : 7528
SQL> ID de session : 15,  Numéro de série : 475

Suite à cette erreur nous allons utiliser l’AdrCi :

ADRCI: Release 11.2.0.3.0 - Production on Mer. Juin 06 17:46:22 2012
Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserve
ADR base = "C:u01apporacle"
adrci> show home <= Permet de vérifier les Homes des logs
ADR Homes:
diagclientsuser_SystÞmehost_2067115172_80
diagrdbmsorclorcl
diagtnslsnrmonreplistenerdiagclientsuser_SystÞmehost_2067115172_80

Selctionnons le répertoire des logs pour l’instance ORCL :

set home diagrdbmsorclorcl <= Positionne le bon Home Diag
Regardons dans le fichier logs les erreurs produites lors de notre
interrogations
2012-06-06 17:46:34.679000 +02:00
Exception [type: ACCESS_VIOLATION, UNABLE_TO_WRITE] [ADDR:0x0] [PC:0x951CD59, qcstda()+779]
ERROR: Unable to normalize symbol name for the following short stack (at offset 199):
....
2012-06-06 17:46:35.731000 +02:00
Errors in file c:u01apporaclediagrdbmsorclorcltraceorcl_ora_6908.trc  (incident=40977):

ORA-07445: exception trouve : dump noyau [qcstda()+779] [ACCESS_VIOLATION] [ADDR:0x0] [PC:0x951CD59]

 [UNABLE_TO_WRITE] []
Incident details in: c:u01apporaclediagrdbmsorclorclincidentincdir_40977orcl_ora_6908_i40977.trc
....
Sweep [inc2][40977]: completed
Nous retrouvons bien ici notre erreur ORA-07445 :

Regardons de plus près les Problèmes et les Incidents

adrci> show problem
ADR Home = c:u01apporaclediagrdbmsorclorcl:
**************************************************
PROBLEM_ID   PROBLEM_KEY              LAST_INCIDENT LASTINC_TIME
------------ ------------------------ ------------- ---------------------------------
1            ORA 7445 [qcstda()+779]   40961        2012-06-06 17:56:03.959000 +02:00
1 rows fetched
adrci> show incident
ADR Home = c:u01apporaclediagrdbmsorclorcl:
**************************************************
INCIDENT_ID          PROBLEM_KEY                   CREATE_TIME
-------------------- ----------------------------- -----------------------------------
40961                ORA 7445 [qcstda()+779]       2012-06-06 17:56:03.959000 +02:00
1 rows fetched

Allons vérifier l’Incident :

show incident -mode detail -p "incident_id=40961"
ADR Home = c:u01apporaclediagrdbmsorclorcl:
**********************************************************
**********************************************************
INCIDENT INFO RECORD 1
**********************************************************
   INCIDENT_ID                   40961
   STATUS                        ready
   CREATE_TIME                   2012-06-06 17:56:03.959000 +02:00
   PROBLEM_ID                    1
   CLOSE_TIME
   FLOOD_CONTROLLED              none
   ERROR_FACILITY                ORA
   ERROR_NUMBER                  7445
   ERROR_ARG1                    qcstda()+779
   ERROR_ARG2                    ACCESS_VIOLATION
   ERROR_ARG3                    ADDR:0x0
   ERROR_ARG4                    PC:0x951CD59
   ERROR_ARG5                    UNABLE_TO_WRITE
   ERROR_ARG6
   ERROR_ARG7
   ERROR_ARG8
   ERROR_ARG9
   ERROR_ARG10
   ERROR_ARG11
   ERROR_ARG12
   SIGNALLING_COMPONENT
   SIGNALLING_SUBCOMPONENT
   SUSPECT_COMPONENT
   SUSPECT_SUBCOMPONENT
   ECID
   IMPACTS                       0
   PROBLEM_KEY                   ORA 7445 [qcstda()+779]
   FIRST_INCIDENT                40977
   FIRSTINC_TIME                 2012-06-06 17:46:35.731000 +02:00
   LAST_INCIDENT                 40961
   LASTINC_TIME                  2012-06-06 17:56:03.959000 +02:00
   IMPACT1                       0
   IMPACT2                       0
   IMPACT3                       0
   IMPACT4                       0
   KEY_NAME                      Client ProcId
   KEY_VALUE                     ORACLE.EXE.2896_6328
   KEY_NAME                      PQ
   KEY_VALUE                     (0, 1338998162)
   KEY_NAME                      ProcId
   KEY_VALUE                     20.254
   KEY_NAME                      SID
   KEY_VALUE                     8.1025
   OWNER_ID                      1
   INCIDENT_FILE                 c:u01apporaclediagrdbmsorclorcltraceorcl_ora_6328.trc
   OWNER_ID                      1
   INCIDENT_FILE                 c:u01apporaclediagrdbmsorclorclincidentincdir_40961orcl_ora_6328_i40961.trc
show trace c:u01apporaclediagrdbmsorclorclincidentincdir_40961orcl_ora_6328_i40961.trc

*** 2012-06-06 17:56:04.006 dbkedDefDump(): Starting a non-incident diagnostic dump (flags=0x3, level=3, mask=0x0) 3> ***** Current SQL Statement for this session (sql_id=g06b623urv7th) ***** select * from tabeasy where c=100 3< ***** current_sql_statement *****


Nous allons voir comment utiliser les packages IPS pour l’envoi des informations à Oracle lors de l’ouverture un SR

Lancement de la création du package
adrci> ips create package incident 40961 correlate all
Created package 2 based on incident id 40961 correlation level all
Génération du fichier Zip suite au package
adrci> ips generate package 1 in c:temps
Generated package 1 in file c:tempsORA7445qc_20120606182140_COM_1.zip, mode complete

Ce package généré contient l’ensemble des informations nécessaires pour alimenter la SR.
Vous y trouverez les répertoires alert, incident, incpkg, trace.

Bonne lecture