Base de données

Moniteur Oracle DB

Versions supportées

NeoLoad supporte la plupart des versions de serveur de base de données Oracle: 8i, 9i,10g et 11g.

Paramètres de connexion

Le moniteur Oracle permet à l'utilisateur de surveiller les performances d'un serveur de base de données Oracle. Les compteurs sont classés par catégories comme la mémoire, les vitesses d'appels, les ratios d'utilisation des caches, ...

Le moniteur exécute des requêtes SQL sur les différentes Vues de la base Oracle qui sont dédiées à l'analyse des performances: V$SYSSTAT, V$SYSTEM_EVENT, V$SGA_STAT, V$SESSION , V$LIBRARYCACHE, V$LATCH, V$WAITSTAT, V$SQLAREA, V$VERSION

[Avertissement]Avertissement

NeoLoad requiert un compte de login autorisé à se connecter à la base et à lire les informations de toutes ces vues pour effectuer la surveillance.

NeoLoad se connecte au serveur Oracle en utilisant le protocole JDBC. Le pilote JDBC est inclus dans NeoLoad et ne nécessite aucune installation ou réglage particulier. Le port de connexion par défaut est 1521 (port standard JDBC).

Utilisation d'une connexion JDBC personnalisée. Une URL de connexion JDBC peut être définie dans le mode d'édition avancé. Cela permet de donner des paramètres de connexion supplémentaires au pilote JDBC comme des timeouts, la gestion de clusters, ...

Exemple 7.1. URL JDBC Oracle:

jdbc:oracle:thin:@(description=(address_list=(address=(protocol=TCP)(port=1521)(host=magnum))(source_route=yes)(connect_data=(INSTANCE_NAME=PETSTORE)))


Créer un moniteur Oracle

Il est possible de créer un nouveau moniteur en suivant l'assistant de création d'une nouvelle machine monitorée ou bien à partir d'une machine monitorée déjà existante.

Compteurs disponibles

  • Sessions. 

    • Active. Le nombre de sessions exécutant actuellement du SQL sur la base de données. Les sessions Systèmes sont exclues de ce nombre.

    • % Active. Le pourcentage de sessions exécutant actuellement du SQL sur la base de données par rapport à la totalité des sessions. Les sessions Systèmes sont exclues de ce calcul.

    • Inactive. Le nombre de sessions connectées à la base de données mais qui n'exécutent pas de SQL actuellement. Les sessions Systèmes sont exclues de ce nombre.

    • System. Le nombre de sessions utilisées par le Système pour la gestion de la base de données.

    • Idle. Le nombre de sessions qui n'ont pas exécuté du SQL depuis la dernière fois que le compteur de performance a surveillé la base.

  • Call Rates. 

    • Parse. Le nombre d'appels par seconde pour l'analyse (Parse hard and soft). Un soft parse est un test sur un objet déjà dans le pool partagé afin de vérifier que les permissions sur cet objet n'ont pas changé. Un hard parse est une opération très coûteuse en terme d'utilisation mémoire car elle demande à Oracle d'allouer une pile de travail et d'autres structures de mémoire, puis de fabriquer un arbre d'analyse.

    • Execute. Le nombre d'appels par seconde pour exécuter des requêtes SQL (récursives et utilisateurs).

    • Commit. Le nombre d'appels par seconde pour effectuer un commit. Lorsque un utilisateur effectue un commit de sa transaction, ce qui reflète les changements à effectuer sur la base (appelé redo) doit être écrit sur le disque. Le nombre de commits par seconde représente souvent la valeur la plus proche du nombre de transactions par seconde effectuées par les utilisateurs.

    • Rollback. Le nombre d'appels par seconde pour effectuer un rollback. Les rollbacks ont lieu lorsque les utilisateurs exécutent manuellement une requête SQL de type ROLLBACK ou si une erreur apparaît pendant une transaction d'un utilisateur.

  • Miss Rates. 

    • Buffer Cache. Le pourcentage d'accès ratés au buffer cache. Ce ratio mesure la proportion de requêtes basées sur des données qui ne sont pas déjà dans le buffer cache. Les petits ratios traduisent de meilleures performances car les accès aux données en mémoire sont plus rapides que les accès sur disque.

      [Astuce]Astuce

      Le fait d'augmenter ce cache peut parfois causer des pertes de performances car ce buffer fait partie de la mémoire SGA (System Global Area), et il peut être plus important d'utiliser la mémoire SGA pour d'autres parties de cette SGA. Il est recommandé de faire en sorte que l'ensemble de la mémoire SGA tienne dans la mémoire physique du système et non pas dans la mémoire virtuelle ou paginée qui ont des performances bien moins bonnes.

      [Note]Note

      Les performances sont optimales quand cette valeur est basse.

      [Note]Note

      Les paramètres Oracle qui peuvent être modifiés pour améliorer cette statistique sont: DB_BLOCK_BUFFER.

    • SQL Area. Le pourcentage d'accès ratés au cache SQL. Les rechargements du pool de SQL partagé arrivent lorsque Oracle doit implicitement analyser à nouveau le SQL ou le PL/SQL lorsqu'il essaie de l'exécuter.

      [Astuce]Astuce

      Un pool de partage de SQL plus large réduira le nombre de fois que le code doit être rechargé. Il faut donc s'assurer d'utiliser dans son application des "morceaux" de SQL écrits à l'identique afin d'utiliser le taux de partage de ce SQL. Pour utiliser efficacement de la mémoire additionnelle allouée au SQL partagé, il peut être nécessaire d'augmenter le nombre de curseurs qu'une session peut ouvrir.

      [Note]Note

      Les performances sont optimales quand cette valeur est basse.

      [Note]Note

      Les paramètres Oracle qui peuvent être modifiés pour améliorer cette statistique sont: SHARED_POOL_SIZE, OPEN_CURSORS.

    • Latch. Le pourcentage de latch (loquets) obtenus après une attente. Les latches sont des mécanismes simples de bas niveau permettant de protéger les accès concurrents aux données partagées de la mémoire SGA. Lorsque Oracle essaie d'obtenir un latch, le processus peut avoir à attendre car les données sont déjà en cours d'utilisation et donc devoir essayer à nouveau plus tard.

      [Note]Note

      Les performances sont optimales quand cette valeur est basse.

  • Indexed Queries. 

    • Percentage. Le pourcentage de requêtes SQL utilisant des indexes.

      [Note]Note

      Une valeur de 90% ou plus élevée est recommandée. Une valeur plus basse peut être acceptable dans certains systèmes ou des scans complets de tables sont fréquemment utilisés. Ces scans complets sont parfois plus efficaces que le maintien d'index à jour sur certaines tables.

  • Logical IO. 

    • Block Changes. Le nombre de blocs par seconde de Block Changes. Cette statistique compte le nombre total de changements qui ont été une partie d'opérations de mise à jour ou d'effacement. De tels changements peuvent générer des entrées dans le redo log ou devenir des changements permanents si la transaction reçoit un commit.

    • Current Reads. Le nombre de blocs par seconde de Current Reads. Cela compte le nombre de fois par seconde où le bloc CURRENT a été accédé.

    • Consistent Reads. Le nombre de blocs par seconde de Consistent Reads. L'état des données que voit une transaction est appelé consistent read si la transaction lit le même enregistrement deux fois avec la même valeur.

  • Physical IO. 

    • Datafile Reads. Le nombre de blocs de données lus à partir du disque par seconde Ce nombre est égal au nombre de lectures directes à partir du disque plus les lectures à partir des buffers de cache des disques.

      [Note]Note

      Dans les cas de grands débits ou d'opérations à accès intensifs comme les requêtes parallèles, les lectures des blocs sur disque évitent les caches pour maximiser les taux de transferts et prévenir de cacher des données trop vieilles dans le cache.

    • Datafile Writes. Le nombre de blocs de données écrits sur le disque par seconde. Ce nombre est égal au nombre d'écritures directes sur le disque plus les écritures dans les buffers de cache des disques.

    • Redo Writes. Le nombre de blocs redo écrits par seconde par le LGWR (Log writer process d'Oracle) sur les fichiers du redo log.

  • Event Waits. Ces compteurs comptent le nombre de secondes attendues par seconde sur un travail particulier. Les attentes peuvent être effectuées dans des processus en parallèle ce qui explique que ce nombre peut être plus grand que 1 seconde.

    • Control File IO. 

    • DB File IO. 

    • Direct Path read. 

    • Log File write. 

    • SQL*Net. 

    • Buffer busy. 

  • SGA Memory. Ces compteurs comptent la taille en kilo-octets de la mémoire SGA allouées au différents pools et buffers.

    • Fixed SGA. 

    • Buffer Cache. 

    • Log Buffer. 

    • Shared Pool. Mémoire libre allouée au shared pool.

    • Large Pool. Mémoire libre allouée au large pool.

    • Java Pool. Mémoire libre allouée au java pool.

  • Miscellaneous. 

    • Direct Reads Ratio. Le pourcentage de lectures physiques directes comparées à toutes les lectures directes. Les lectures directes sont effectuées par les scans parallèles et les lectures à partir d'espaces de tables temporaires. Les blocs sont lus directement dans des buffers privés de la PGA (Program Global Area) plutôt que dans les cache de buffer de la base dans la SGA (System Global Area). Cela n'entraîne pas de requête au cache puisque les blocs ne sont pas recherchés dans le cache avant d'être lus. Ces blocs lus ne sont pas non plus mis à leur tour dans le cache, donc de nouvelles lectures n'entraîneront pas non plus de requêtes au cache.

    • Library Cache Get Hit Ratio. Le pourcentage de requêtes pour obtenir un verrou (lock) sur un objet dont le pointeur est déjà en mémoire.

      [Note]Note

      Les performances sont optimales quand cette valeur est grande.

      [Note]Note

      Les paramètres Oracle qui peuvent être modifiés pour améliorer cette statistique sont: SHARED_POOL_SIZE, OPEN_CURSORS.

    • Library Cache Pin Hit Ratio. Le pourcentage de requêtes pour obtenir un verrou (lock) sur un objet dont toutes ses parties sont déjà en mémoire.

      [Note]Note

      Les performances sont optimales quand cette valeur est grande.

      [Note]Note

      Les paramètres Oracle qui peuvent être modifiés pour améliorer cette statistique sont: SHARED_POOL_SIZE, OPEN_CURSORS.

    • Recursive Calls Ratio. Un pourcentage élevé d'appels récursifs par rapport à tous les appels peut être causé par:

      • une extension dynamique des tables entraînée par une mauvaise taille

      • des agrandissements et des réductions des segments rollbacks

      • des grandes quantités de données triées sur le disque entraînant la création ou l'effacement de segments temporaires.

      • des données manquantes dans le dictionnaire

      • des triggers, contraintes d'intégrité, procédures, ou fonctions complexes

      [Note]Note

      Les performances sont optimales quand cette valeur est basse.

    • CPU Parse Overhead. Le pourcentage de temps CPU passé à analyser (parser) les requêtes SQL ou PL/SQL. Des valeurs élevées indiquent soit qu'un grand volume de code qui n'est utilisé qu'une fois (et donc non mis en cache en sql area) ou que la taille du cache sql area est trop petite.

      [Note]Note

      Les performances sont optimales quand cette valeur est basse.

      [Note]Note

      Les paramètres Oracle qui peuvent être modifiés pour améliorer cette statistique sont: SORT_AREA_SIZE.

    • Free List Contention. Ce pourcentage augmente lorsque plusieurs processus essaient d'insérer des données dans une même table. La structure de la table maintient une ou plusieurs listes de blocs avec des espaces libres utilisés pour l'insertion. Si il y a plus de processus qui tentent une insertion que ce qu'il y a de listes avec des espaces libres, certains peuvent avoir à attendre pour accéder à ces listes.

      [Note]Note

      Les performances sont optimales quand cette valeur est très basse.

    • Chained Fetch Ratio. Le pourcentage de toutes les lignes récupérées qui ont été chaînées. Ce chaînage signifie que la ligne est répartie sur 2 blocs ce qui peut arriver pour 2 principales raisons:

      • Row Migration. Cela arrive lorsqu'une modification d'une ligne ne peut pas tenir dans le bloc courant. Dans ce cas, les données de la ligne sont déplacées sur un nouveau bloc en laissant un pointeur vers le nouveau bloc dans le bloc original.

      • Row Chaining. Cela arrive lorsqu'une ligne ne peut tenir dans un seul bloc, par exemple à cause d'un ou de plusieurs champs très gros. Dans ce cas, la ligne est répartie sur au moins 2 blocs.

      [Note]Note

      Les performances sont optimales quand cette valeur est très basse.

    • Cursor Authentications. Nombre de vérifications privilégiées pendant l'exécution d'une opération

    • Opened Cursors. Nombre total de curseurs ouverts à un moment donné.

  • Top SQL Statements. Les 3 requêtes SQL qui consomment le plus d'une ressource donnée pendant le test en charge. Ces compteurs sont uniquement disponibles à la fin du test, et pas en temps réel durant l'exécution du test. Les requêtes faites par le système (basées sur les schémas SYS et SYSTEM) sont exclues.

    • CPU. Les requêtes SQL causant la plus grande consommation de CPU.

    • Physical Reads. Les requêtes SQL causant le plus grand nombre de lectures sur le disque.

    • Logical Reads. Les requêtes SQL faisant le plus d'accès au buffer.

    • Rows Processed. Les requêtes SQL traitant le plus grand nombre de lignes.

    • Sorts. Les requêtes SQL causant le plus grand nombre de tris qui ont été faits sur tous les curseurs fils.

    • Parse Calls. Les requêtes SQL causant le plus grand nombre des traitements de parsing de tous les curseurs fils.

    • Executed. Les requêtes SQL causant le plus grand nombre d'exécutions totalisées sur tous les curseurs fils.

    • CPU per Execution. Les requêtes SQL ayant la plus grande moyenne de consommation de CPU par exécution.

    • Physical Realds per Execution. Les requêtes SQL ayant la plus grande moyenne de nombre de lectures sur le disque par exécution.

    • Logical Reads per Execution. Les requêtes SQL utilisant le plus de cache en moyenne par exécution.

    • Rows Processed per Execution. Les requêtes SQL traitant en moyenne le plus grand nombre de lignes, par exécution.

    • Sorts per Execution. Les requêtes SQL causant, en moyenne par exécution, le plus grand nombre de tris effectués sur tous les curseurs fils.

    • Parse Calls per Execution. Les requêtes SQL causant, en moyenne par exécution, le plus grand nombre de traitements de parsing effectués sur tous les curseurs fils.

  • Description. Description textuelle du serveur.

    • Database Components version. La version de la base de donnée Oracle.