2009-08-21 8 views

Répondre

2
  1. Exécutez explain plan for select .... pour voir ce que Oracle fait avec votre requête.
  2. Publiez votre requête ici afin que nous puissions la voir et vous aider.
  3. Consultez le Oracle Performance Tuning FAQ pour obtenir quelques astuces, si vous préférez.
1

Vous pouvez capturer la requête en sélectionnant v $ sql ou v $ sqltext. Si vous ne le connaissez pas, recherchez «Expliquer le plan» dans la documentation Oracle . Il devrait y avoir beaucoup sur le guide d'optimisation des performances . Jetez un oeil à Crapaud Quest Software pour un outil tiers qui aide également dans ce domaine.

K

0

Malheureusement votre question n'est pas clairement exprimée. Les autres réponses ont déjà abordé la question de l'ajustement d'une mauvaise requête connue, mais une autre interprétation est que vous voulez surveiller votre base de données pour trouver des requêtes peu performantes. Si vous ne possédez pas Enterprise Edition avec le pack Diagnostics - et ce n'est pas le cas pour beaucoup d'entre nous -, le mieux est de lancer des snapshots de statspack sur une base régulière. Cela vous donnera beaucoup d'informations sur votre système, y compris les requêtes qui prennent beaucoup de temps à compléter et quelles requêtes consomment beaucoup de ressources de votre système. Vous pouvez en savoir plus sur statspack here.

0

Si vous ne souhaitez pas utiliser l'OEM, vous pouvez effectuer une recherche et une recherche.

  1. Commencez par trouver la requête longue. S'il est en cours d'exécution, vous pouvez rejoindre la session gv $ pour trouver la session en cours depuis longtemps. Ensuite, allez à gv $ sql pour trouver les détails SQL. Vous devez regarder la colonne last_call_et. Si SQL exécuté quelque temps inpast, vous pouvez utiliser les tables dba_hist_snapshot, dba_hist_sqlstat, DBA_HIST_SQLTEXT pour trouver SQL offensant. Une fois que vous obtenez une requête, vous pouvez vérifier quel plan il choisit à partir de la table dba_hist_sql_plan si ce SQL est exécuté dans le passé ou depuis gv $ sql_plan s'il est en cours d'exécution.

  2. Maintenant, vous analysez le plan d'exécution et voyez s'il utilise l'index, la jointure, etc. Si ce n'est pas le cas.

Faites-moi savoir à quelle étape vous avez le problème. Je peux vous aider à y répondre.

Questions connexes