J'aime obtenir les dernières instructions exécutées dans ma base de données, ainsi que des indicateurs de performance.
En tant que tel, j'aime savoir quelles instructions SQL étaient les plus gourmandes en ressources CPU / DISK.
oracle
monitoring
Sebastian Roth
la source
la source
Réponses:
Voici le SQL pour faire le travail. Ouvert pour procès.
Étape 1: Déterminez les ID d'installation et les ID utilisateur.
Étape 2:
Plusieurs ID et ID d'instance peuvent être renvoyés. Il appartient donc aux utilisateurs de choisir comment utiliser ces données dans une interface Web, etc.
la source
in
opérateur avec des tuples, donc de l'exemple ci... AND (s.inst_id, s.sid) in ( (:id1, :sid1), (:id2, :sid2), ... )
La console Oracles Enterprise Monitor affiche une multitude d'informations sur les requêtes SQL qui prennent le maximum de CPU, les goulots d'étranglement, l'activité principale dans la base de données, le blocage de SQL et al.
Pour une approche historique, vous pouvez utiliser les rapports AWR d'Oracle pour identifier les zones vous concernant.
la source
Vous pouvez également utiliser
V$SQL
, il existe plusieurs colonnes intéressantes,RUNTIME_MEM, EXECUTIONS, DISK_READS, SORTS, ELAPSED_TIME, SQL_FULLTEXT
etc.Cela vous donnerait les 10 premières déclarations par lecture de disque (remarque - ceci est cumulatif pour toutes les exécutions):
Si l'instruction est toujours présente,
V$SQL_PLAN
vous pouvez obtenir un plan d'explication réel pour la requête:J'aime aussi l'utiliser
V$SQL_PLAN
car il contient de bonnes informations. Sistatistics_level=ALL
vous pouvez l'utiliserV$SQL_PLAN_STATISTICS
.la source
Pour SQL récent:
Pour l'histoire:
la source