Πώς βρίσκουμε τα queries με την μεγαλύτερη διάρκεια σε βάση δεδομένων της Oracle

Πώς βρίσκουμε τα queries με την μεγαλύτερη διάρκεια σε βάση δεδομένων της Oracle
Πώς βρίσκουμε τα queries με την μεγαλύτερη διάρκεια σε βάση δεδομένων της Oracle

Στις βάσεις δεδομένων της Oracle έχουμε τη δυνατότητα να βρούμε στατιστικά δεδομένα για τα queries κάνοντας χρήση των αναφορών ASH και AWR. Όμως για να ενεργοποιήσουμε αυτή τη δυνατότητα πρέπει να έχουμε Enterprise έκδοση. Στην Standard μπορούμε να κάνουμε εγκατάσταση του πακέτου Statspack που μας παρέχει κάποιες πληροφορίες αλλά εμείς στο άρθρο αυτό θα δούμε πως μπορούμε να αντλήσουμε πληροφορίες για τα sql queries που είναι cached μέσω του dynamic view v$SQL.

Συγκεκριμένα θα δούμε ένα query με το οποίο μπορούμε να αντλήσουμε πληροφορίες για τα cached queries με κριτήρια το πότε έτρεξαν τελευταία φορά, τον χρόνο που έχουν διαρκέσει και τον χρήστη που το εκτέλεσε.

Ποια πληροφορία μπορούμε να βρούμε μέσα από το query στο v$SQL;

Με το query αυτό μπορούμε να δούμε τα παρακάτω:

  • Το SQL Text
  • Την τελευταία φορά που έτρεξε
  • Πόσες φορές έχει τρέξει μέχρι που φορτώθηκε στην cache
  • Ποιος χρήστης το έτρεξε
  • Πόση διάρκεια είχε συνολικά

Ο κώδικας

select 
sql_text,
sql_fulltext,
sql_id,
last_active_time,
executions,
PARSING_SCHEMA_NAME,
round((elapsed_time/1000000),0) Duration_in_Seconds,
round((elapsed_time/1000000/60),0) Duration_in_Minutes
from v$sql
where 1=1
and last_active_time > TO_DATE('2021-10-01 01:00:00', 'YYYY-MM-DD HH-MI-SS')
and elapsed_time/1000000 > 0 --duration in seconds
and upper(service) = (select upper(value) from v$parameter where name like '%service_name%')
and parsing_schema_name not in ('SYS','SYSMAN','AUDSYS')
and executions > 0
--and parsing_schema_name ='STRATOS'
order by elapsed_time desc;

Τα αποτελέσματα που θα επιστρέψει θα είναι όπως βλέπουμε ενδεικτικά στην παρακάτω εικόνα:

long running queries

Πηγές:

Μοιράσου το

Αφήστε μία απάντηση