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