4 Trace d'une application 4 - 2 Objectifs A la fin de ce chapitre, vous pourrez

4 Trace d'une application 4 - 2 Objectifs A la fin de ce chapitre, vous pourrez : • configurer l'utilitaire SQL Trace afin de collecter des statistiques concernant une session • consolider des fichiers trace SQL à l'aide de l'utilitaire trcsess • mettre en forme des fichiers trace à l'aide de l'utilitaire tkprof • interpréter la sortie de la commande tkprof 4 - 3 Défi posé par la fonction de trace de bout en bout d'une application • Je veux extraire les traces relatives au service CRM. • Je veux extraire les traces relatives au client C4. • Je veux extraire les traces relatives à la session 6. Client Serveur dédié Fichier trace Clients Serveur partagé Fichier trace Serveur partagé Fichier trace Serveur partagé Fichier trace Client Serveur dédié Fichier trace Client Serveur dédié Fichier trace CRM ERP CRM CRM ERP CRM Client C4 Client OE Client JF/Session 6 Client OE 4 - 4 Fonction de trace de bout en bout d'une application • Elle simplifie le diagnostic des problèmes de performances dans les environnements à plusieurs niveaux, grâce à la présentation de la charge globale des applications selon différents critères : – Service – Module – Action – Session – Client • Outils permettant de tracer de bout en bout une application : – Enterprise Manager – DBMS_APPICATION_INFO, DBMS_SERVICE, DBMS_MONITOR, DBMS_SESSION – Utilitaires SQL Trace et trcsess – tkprof 4 - 5 Emplacement des traces de diagnostic Données de diagnostic Ancien emplacement Emplacement dans le référentiel ADR Traces des processus en avant-plan USER_DUMP_DEST $ADR_HOME/trace Traces des processus en arrière-plan BACKGROUND_DUMP_DEST $ADR_HOME/trace Données des fichiers d'alertes BACKGROUND_DUMP_DEST $ADR_HOME/alert $ADR_HOME/trace Dumps noyau CORE_DUMP_DEST $ADR_HOME/cdump Dumps d'incident USER_DUMP_DEST BACKGROUND_DUMP_DEST $ADR_HOME/incident/incdir_n $ADR_HOME/trace Trace Oracle Database 11g - Trace d'erreur critique <= V$DIAG_INFO DIAGNOSTIC_DEST 4 - 6 Services : Présentation • Ils permettent de regrouper des sessions qui exécutent un même type de tâche. • Ils fournissent une image monosystème au lieu d'une image multi-instance. • Ils font partie des tâches d'administration standard qui assurent l'allocation dynamique de services aux instances. • Ils servent de base à la haute disponibilité des connexions. • Ils offrent une nouvelle dimension pour le réglage des performances. • Ils permettent la capture d'informations de trace. 4 - 7 Utiliser des services avec les applications client ERP=(DESCRIPTION= (ADDRESS=(PROTOCOL=TCP)(HOST=mynode)(PORT=1521)) (CONNECT_DATA=(SERVICE_NAME=ERP))) url="jdbc:oracle:oci:@ERP" url="jdbc:oracle:thin:@(DESCRIPTION= (ADDRESS=(PROTOCOL=TCP)(HOST=mynode)(PORT=1521)) (CONNECT_DATA=(SERVICE_NAME=ERP)))" 4 - 8 Générer une trace au niveau service • Les applications peuvent désigner les services qu'elles utilisent par : – MODULE – ACTION – CLIENT_IDENTIFIER • Pour l'exécution, utilisez les packages PL/SQL suivants : – DBMS_APPLICATION_INFO – DBMS_SESSION • La fonction de trace est possible à tous les niveaux : – CLIENT_IDENTIFIER – SESSION_ID – SERVICE_NAMES – MODULE – ACTION – Combinaison de SERVICE_NAME, MODULE, ACTION 4 - 10 Utiliser Enterprise Manager pour générer une trace au niveau service 4 - 11 Générer une trace au niveau service : Exemple • Activer la fonction de trace pour un service, un module et une action : • Activer la fonction de trace pour un identificateur de client spécifique : exec DBMS_MONITOR.SERV_MOD_ACT_TRACE_ENABLE('AP'); exec DBMS_MONITOR.SERV_MOD_ACT_TRACE_ENABLE(- 'AP', 'PAYMENTS', 'QUERY_DELINQUENT'); exec DBMS_MONITOR.CLIENT_ID_TRACE_ENABLE (client_id=>'C4', waits => TRUE, binds => FALSE); 4 - 12 Générer une trace au niveau session : Exemple • Pour toutes les sessions de la base de données : • Pour une session spécifique : EXEC dbms_monitor.DATABASE_TRACE_ENABLE(TRUE,TRUE); EXEC dbms_monitor.DATABASE_TRACE_DISABLE(); EXEC dbms_monitor.SESSION_TRACE_ENABLE(session_id=> 27, serial_num=>60, waits=>TRUE, binds=>FALSE); EXEC dbms_monitor.SESSION_TRACE_DISABLE(session_id =>27, serial_num=>60); 4 - 14 Générer une trace pour votre propre session • Activer la fonction de trace : • Désactiver la fonction de trace : • Identifier facilement des fichiers trace : EXEC DBMS_SESSION.SESSION_TRACE_DISABLE(); EXEC DBMS_SESSION.SESSION_TRACE_ENABLE(waits => TRUE, binds => FALSE); alter session set tracefile_identifier='mytraceid'; 4 - 15 Utilitaire trcsess TRCSESS Fichier trace pour un client tkprof Fichier d'état trcsess Fichier trace pour un service CRM Client Serveur dédié Clients Serveur partagé Serveur partagé Fichier trace Serveur partagé Client Serveur dédié Fichier trace Client Serveur dédié CRM ERP CRM CRM ERP CRM Fichier trace Fichier trace Fichier trace Fichier trace 4 - 16 Lancer l'utilitaire trcsess trcsess [output=output_file_name] [session=session_id] [clientid=client_identifier] [service=service_name] [action=action_name] [module=module_name] [<trace file names>] Fichier trace Fichier trace TRCSESS Fichier trace consolidé Fichier trace 4 - 17 Utilitaire trcsess : Exemple exec dbms_session.set_identifier('HR session'); exec dbms_session.set_identifier('HR session'); exec DBMS_MONITOR.CLIENT_ID_TRACE_ENABLE( - client_id=>'HR session', waits => FALSE, - binds => FALSE); select * from employees; select * from departments; exec DBMS_MONITOR.CLIENT_ID_TRACE_DISABLE( - client_id => 'HR session'); trcsess output=mytrace.trc clientid='HR session' $ORACLE_BASE/diag/rdbms/orcl/orcl/trace/*.trc … … Première session Deuxième session Troisième session 4 - 18 Contenu des fichiers trace SQL • Nombre de lignes analysées, exécutées et extraites • Temps CPU et temps écoulé • Lectures physiques et lectures logiques • Nombre de lignes traitées • Echecs dans le cache "library" • Nom utilisateur associé à chaque analyse (parse) • Opérations de validation (commit) et d'annulation (rollback) individuelles • Données relatives aux attentes et aux affectations de valeurs pour chaque instruction SQL • Opérations sur les lignes représentant le plan d'exécution réel de chaque instruction SQL • Nombre de lectures cohérentes, de lectures physiques et d'écritures physiques, et temps écoulé pour chaque opération effectuée sur une ligne 4 - 19 Contenu des fichiers trace SQL : Exemple *** [ Unix process pid: 15911 ] *** 2010-07-29 13:43:11.327 *** 2010-07-29 13:43:11.327 *** 2010-07-29 13:43:11.327 *** 2010-07-29 13:43:11.327 … ==================== PARSING IN CURSOR #2 len=23 dep=0 uid=85 oct=3 lid=85 tim=1280410994003145 hv=40 69246757 ad='4cd57ac0' sqlid='f34thrbt8rjt5' select * from employees END OF STMT PARSE #2:c=3000,e=2264,p=0,cr=0,cu=0,mis=1,r=0,dep=0,og=1,plh=1445457117, tim=1280410994003139 EXEC #2:c=0,e=36,p=0,cr=0,cu=0,mis=0,r=0,dep=0,og=1,plh=1445457117, tim=1280410994003312 FETCH #2:c=0,e=215,p=0,cr=3,cu=0,mis=0,r=1,dep=0,og=1,plh=1445457117, tim=1280410994003628 FETCH #2:c=0,e=89,p=0,cr=5,cu=0,mis=0,r=15,dep=0,og=1,plh=1445457117, tim=1280410994004232 … FETCH #2:c=0,e=60,p=0,cr=1,cu=0,mis=0,r=1,dep=0,og=1,plh=1445457117, tim=1280410994107857 STAT #2 id=1 cnt=107 pid=0 pos=1 obj=73933 op='TABLE ACCESS FULL EMPLOYEES (cr=15 pr=0 pw=0 time=0 us cost=3 size=7383 card=107)' XCTEND rlbk=0, rd_only=1, tim=1280410994108875 ===================== 4 - 20 Mettre en forme les fichiers trace SQL : Présentation Recourez à l'utilitaire tkprof pour mettre en forme les fichiers trace SQL : • Triez les informations brutes du fichier pour mettre en évidence les instructions SQL les plus consommatrices de ressources. • Filtrez les instructions de dictionnaire. Fichier trace Fichier trace Fichier trace tkprof Fichier d'état trcsess Fichier trace consolidé Fichier trace Fichier trace Fichier trace Fichier trace Fichier trace Fichier trace Fichier trace concaténé 4 - 21 Lancer l'utilitaire tkprof tkprof inputfile outputfile [waits=yes|no] [sort=option] [print=n] [aggregate=yes|no] [insert=sqlscriptfile] [sys=yes|no] [table=schema.table] [explain=user/password] [record=statementfile] [width=n] 4 - 23 Options de tri tkprof Option de tri Description prscnt Nombre d'appels d'analyse (parse calls) prscpu Temps CPU consommé pour l'analyse prsela Temps écoulé pour l'analyse prsdsk Nombre de lectures sur disque au cours de l'analyse prsqry Nombre de tampons en lecture cohérente au cours de l'analyse prscu Nombre de tampons en lecture "current" au cours de l'analyse prsmis Nombre d'échecs dans le cache "library" au cours de l'analyse execnt Nombre d'exécutions appelées execpu Temps CPU consommé pour l'exécution exeela Temps écoulé pour l'exécution exedsk Nombre de lectures sur disque au cours de l'exécution exeqry Nombre de tampons en lecture cohérente au cours de l'exécution execu Nombre de tampons en lecture "current" au cours de l'exécution 4 - 24 Options de tri tkprof Option de tri Description exerow Nombre de lignes traitées au cours de l'exécution exemis Nombre d'échecs dans le cache "library" au cours de l'exécution fchcnt Nombre d'appels d'extraction (fetch calls) fchcpu Temps CPU consommé pour l'extraction fchela Temps écoulé pour l'extraction fchdsk Nombre de lectures sur disque au cours de l'extraction fchqry Nombre de tampons en lecture cohérente au cours de l'extraction fchcu Nombre de tampons en lecture "current" au cours de l'extraction fchrow Nombre de lignes extraites userid ID utilisateur sous lequel le curseur a été analysé 4 - 25 Sortie de la commande tkprof • Texte de l'instruction SQL • Statistiques de trace (pour les instructions et les appels récursifs) correspondant aux trois étapes de traitement SQL : PARSE Convertit l'instruction SQL en plan d'exécution. EXECUTE Exécute l'instruction. (Les données sont modifiées dans le cas des instructions INSERT, UPDATE et DELETE.) FETCH Extrait les lignes renvoyées par une interrogation. (Instructions SELECT uniquement.) 4 - 26 Sortie de la commande tkprof Il existe sept catégories de statistiques de trace : Count Nombre d'exécutions de la procédure CPU Durée totale de traitement en secondes Elapsed Durée totale d'exécution en secondes Disk Nombre de blocs physiques lus Query Nombre de tampons logiques en lecture cohérente Current Nombre de tampons logiques lus en mode "current" Rows Nombre de lignes traitées par la phase d'extraction ou d'exécution 4 - 28 Sortie de la commande tkprof La sortie de la commande tkprof contient également les éléments suivants : • Instructions SQL récursives • Echecs dans le cache "library" • ID utilisateur du demandeur de l'analyse • Plan d'exécution • Mode ou conseil de l'optimiseur • Opération sur le row source ... Misses in library cache during parse: 1 Optimizer mode: ALL_ROWS Parsing user id: 85 Rows Row Source Operation ------- --------------------------------------------------- 5 TABLE ACCESS BY INDEX ROWID EMPLOYEES (cr=4 pr=1 pw=0 time=0 us … 5 INDEX RANGE SCAN EMP_NAME_IX (cr=2 pr=1 pw=0 time=80 us cost=1 … … 4 - 30 Sortie de tkprof sans index : Exemple ... select max(cust_credit_limit) from customers where cust_city ='Paris' call uploads/Sante/ less-04.pdf

  • 48
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager
  • Détails
  • Publié le Aoû 06, 2022
  • Catégorie Health / Santé
  • Langue French
  • Taille du fichier 0.2337MB