Rechercher sur arkzoyd.com

31 juillet 2011

Exemple de Scenario JDBC avec Apache JMeter

Apache JMeter est un outil simple pour écrire des tests fonctionnels et des tests de charge. Dans cet article, vous trouverez un exemple d'utilisation qui met en oeuvre des requêtes JDBC avec une base Oracle. L'objectif est d'illustrer l'utilisation de variables dans ces requêtes ; leurs valeurs peuvent, par exemple, être extraites :
  • d'un fichiers
  • d'un générateur 
  • d'un résultat collecté depuis d'une requête précédente
Bien sur, il ne s'agit pas de présenter Apache JMeter : son site web est le meilleur endroit pour ça ! L'objectif est d'illustrer son utilisation à travers un exemple qui reste simple et qui permette en même temps d'illustrer des enchainements des requêtes paramétrées à l'aide de variables.

30 juillet 2011

Glassfish et JRockit Mission Control

Vous pouvez bien sur utiliser JRockit Mission Control avec Glassfish ! Il faut juste pour cela qu'une des conditions ci-dessous soit validée :
Bref, Installer Glassfish avec JRockit ce qui se fait aussi simplement que n'importe quelle installation :

Weblogic et JRockit Mission Control

JRockit Mission Control permet de diagnostiquer les dysfonctionnements qui apparaissent dans la machine virtuelle d'Oracle. Il est particulièrement bien intégrée à WebLogic. Il inclut une console temps réel mais également des outils tels que l'analyseur des fichiers générés par le l'enregistreur de vol (Flight Recorder) et le détecteur de fuites mémoire (Memory Leak Detector).

Avec JRockit Mission Control, vous pouvez facilement faire le lien entre des temps de réponses, une sur-utilisation des processeurs ou de la mémoire et les composants des applications Java EE, les URL ou le contexte d'exécution (ECID). Voici un exemple de vue extraites d'un enregistrement temps réel de Weblogic :

29 juillet 2011

Accéder à une base de données Oracle en C# via ODP.NET

Oracle Data Provider for .NET (ODP.NET) permet d'accéder à vos bases Oracle depuis vos programmes .NET. Oracle fournit également une extension pour Visual Studio appelée Oracle Developer Tools for Visual Studio. Cette extension permet notamment :
  • de créer, modifier et manipuler vos objets Oracle
  • de créer et déboguer votre code PL/SQL
  • de manipuler la CLR inclue dans Oracle Database pour Windows pour développer vos procédures stockées en .NET
Vous trouverez ci-dessous un exemple simple de programme développé en C# via Visual Studio 2010.

Variables Bind et Protocole ou Traces Oracle Net

Il est possible de retrouver les valeurs de bind dans le protocole Oracle Net ou dans les traces du clients. Dans ce cas les valeurs apparaissent sous la forme d'un code au format hexadécimal XX YY YY YY YY YY où:
  • XX indique la longueur de la valeur passée
  • YY indique la valeur elle-même
Le problème c'est que si décoder ces valeurs pour des champs texte est simple, décoder des champs numériques est plus compliqué a priori. Pour vous aider, Oracle fournit le package

24 juillet 2011

Introduction à Oracle "JVM Diagnostics"

Oracle "JVM Diagnostics", abbrégé JVMD, permet de superviser très finement avec un intervalle d'échantillonnage de l'ordre de la seconde et même bien inférieur, l'utilisation de vos machines virtuelles Java en production. Il est compatible avec la plupart des JVM du marché, y compris celle d'IBM, de HP, de Sun et JRockit ; pour une liste exhaustive de ces JVM, reportez-vous à la note My Oracle Support [ID 1265738.1].

Si vous ne connaissez pas "JVM Diagnostics", il s'agit du successeur d'Application Diagnostic for Java (AD4J) issue du rachat en 2007 de Auptyma et désormais complètement intégré à Enterprise Manager 11g.

JVM Diagnostics fait parti des packages "WebLogic Server Management Pack Enterprise Edition", "Diagnostics Pack for Oracle Middleware" ou "Oracle Management Pack for non-Oracle Middleware". Il est constitué de :
  • Une console qui s'affiche depuis Enterprise Manager 11g et stocke/interroge ses données le référentiel de l'OMS
  • Un composant spécifique appelé JVM Diagnostics Manager sert de relai entre la console et l'agent JVMD ; celui-ci stocke également ses informations dans le référentiel de l'OMS
  • Des agents ; ceux-ci peuvent être déployés en mode standalone, dans la machine virtuelle Java, ou dans un serveur d'applications tel que Weblogic mais également Tomcat, JBoss ou Websphere.
  • Un agent pour les bases de données Oracle sous Unix et Linux qui permet de faire le lien entre des problèmes de performance dans l'application et le SQL de votre base de données préférée
Parmi les caractéristiques notables de JVM Diagnostics, outre le fait qu'il fonctionne dans quasiment toutes les configurations Java, il est significatif de noter que la solution est conçue pour être utilisée en production. Ses caractéristiques sont notamment une empreinte minimum, une activation à chaud, une réelle capacité de monter en charge via plusieurs JVMD Manager. Le résultat est que les administrateurs peuvent identifier rapidement, visuellement et, en revenant dans l'historique d'utilisation les problèmes de performance.

Son intégration dans Enterprise Manager permet en outre de lier ces données aux données issues de RUEI, aka Real User Experience Insight qui trace l'ensemble de l'activité réseau sur les switchs et acquis par Oracle à travers le rachat de Moniforce. JVMD est également intégré à ADP ou Application Dependency and Performance issue du rachat de ClearApp qui permet quand à lui de tracer les interactions cross-JVM et de remonter dans les diagrammes fonctionnels de technologies avancées comme les processus SOA, les composants Java EE (JSF, EJB, services Web) ou les écrans d'Oracle WebCenter...

L'article qui suit présente les éléments simples de mis en oeuvre d'Oracle JVM Diagnostics

17 juillet 2011

DBMS_PROFILER vs DBMS_HPROF

Le profiler hiérarchique d'Oracle 11g permet, comme son grand frère avant lui, d'analyser le temps passé dans les différentes procédures, fonctions, triggers et lignes de code d'un package PL/SQL. Les 2 solutions, la nouvelle comme l'ancienne, ne nécessitent aucune préparation du code et sont facilement utilisables en production. Toutefois la nouvelle améliore énormément votre capacité d'analyse :
  • DBMS_HPROF distingue finement le SQL du PL/SQL,
  • il donne une vision récursive des appels en présentant les temps cumulés ainsi que la profondeur d'exécution
  • des rapports sont générés en HTML à l'aide d'un utilitaire en ligne de commande ce qui facilite la compréhension
Vous trouverez ci-dessous un exemple de code PL/SQL simple et son profilage à l'aide de DBMS_PROFILER puis DBMS_HPROF. Cela vous permettra de comparer les 2 outils et de vous faire une première opinion.

14 juillet 2011

Wrap et Unwrap de code PL/SQL

Wrapper un code PL/SQL (procédure, fonction ou package) contenu dans un fichier nommé greg.sql est simple. Cela nécessite d'utiliser la commande wrap comme décrit dans la documentation et illustré ci-dessous ;
wrap iname=greg.sql oname=greg.pls
Si vous pensez que cette méthode peut contribuer à sécuriser votre application, jetez un oeil sur le site

Rafraichir vos environnements pour Oracle Database Replay

Un des aspects associés à la mise en oeuvre d'Oracle Database Replay est la nécessité de reconstruire l'environnement avant chaque "replay". La plupart des méthodes de rafraichissement supprime le jeu de résultats obtenus lors de l'exécution précédente. Bref, peu importe que vous utilisiez RMAN, Flashback Database ou des Flexclones, n'oubliez pas d'exporter et de réimporter les résultats de vos captures et replay avant chaque exécution pour comparer vos résultats successifs.

Cet article reprend l'exemple présenté dans Comparer Capture et Replay de Real Application Testing avec quelques variations pour illustrer les opérations d'export/import nécessaires. Vous noterez notamment que :
  • les opérations de capture et replay sont effectuées sur la même base de données WHITE 11.2.0.2 ce qui permet de capturer les SQL Tuning Set
  • Les rafraichissements sont réalisés avec Flashback Database et, évidemment, vous utiliserez la méthode de votre choix !

Flashback On... line

Si on se refère à cette section de la documentation d'Oracle 11.2, on ne peut pas activer ni désactiver le mode Flashback database en ligne :
Use this clause to put the database in or take the database out of FLASHBACK mode. You can specify this clause only if the database is in ARCHIVELOG mode and you have already prepared a fast recovery area for the database.You can specify this clause when the database is mounted but not open.
Seulement voilà... Déjà en 10.2, vous pouvez désactiver ce mode sans arrêter la base de données, ce que confirme la note "How To Disable Flashback Database Without A Bounce [ID 833584.1]". Et bien, le savez-vous ?

09 juillet 2011

Comment visualiser sont les ordres qui divergent des originaux dans DB Replay ?

Après avoir rejoué une charge avec DB Replay, il est probable que certaines requêtes divergent. Il se peut que ce soit à cause d'une erreur, ou dans le cas le plus probable, parce que le résultat d'une requête est différent entre la capture et le replay ; par exemple la requête ci-dessous ne ramènera jamais le même résultat :
select sid, serial# 
  from gv$session
 where username is not null 
   and username != 'SYS'
Est-ce grave ? Pas forcément mais encore faut-il être capable d'étudier ces cas...

08 juillet 2011

Comparer Capture et Replay de Real Application Testing

Replongeons-nous, encore une fois, dans Oracle Database Replay et illustrons notamment la nouvelle possibilité offerte à partir de la version 11.2.0.2 de générer des SQL Tuning Set (STS) puis de les comparer... J'ai écrit les 2 premiers articles d'introduction à Real Application Testing de ce blog, il y a 4 ans déjà !. L'objectif était d'expliquer le B.A-BA à travers un exemple simple ; si vous n'avez jamais utilisé cette option d'Oracle, c'est toujours, un bon moyen de démarrer.

Il manquait, sans doute, un exemple plus riche... C'est l'objectif de ce nouvel article qui illustre notamment :
  • L'utilisation du référentiel AWR en simultané à DB Replay
  • Un cas simple de divergence entre la capture et le replay et la vue associée pour plus de détail
  • La constitution des rapports de comparaisons entre les tirs
  • La mise en oeuvre et la comparaison de plusieurs replays à partir de la même capture
  • La génération de SQL Tuning Set et leur comparaison entre les replays

Vous l'aurez compris, cet article s'adresse plutôt à des utilisateurs de niveau intermédiaire. Et de fait, ça donne un exemple assez long et sans doute moins facile à décrypter que si tout était expliqué pas à pas. Cela étant, pas besoin d'être un expert non plus ! Vous ferez facilement le lien avec la documentation. Le travail n'est pas mâché, c'est tout ;-). Et puis, si avec Enterprise Manager, utiliser Real Application Testing se résume à 40 ou 50 clics, utiliser l'API PL/SQL à ses avantages : l'ubiquité, une meilleure compréhension des mécanismes sous-jascents, la stabilité.

Enfin voilà, avant de vous laisser dépouiller l'exemple, le critiquer s'il manque encore des choses et éventuellement trouver une ou 2 typo, voici une dernière remarque. Real Application Testing, et notamment DB Replay, est un incroyable outil pour appréhender les mises à jour de l'infrastructure et toute une gamme d'évolutions techniques en quelques jours et avec une précision redoutable. Pourtant, au delà de l'outil, il vous faut de la méthode. Comprenez ses limites et utilisez d'autres raccourcis. Evaluez la représentativité de vos tests. Estimez les zones non-couvertes autrement. Quantifiez les améliorations avec précision. Gérez les risques de manière intelligente. Communiquez avec clarté pour ne pas créer des attentes trop grandes. Utilisez des dispositifs complémentaires ! avec méthode.