Oracle SQL Ιστορικό

Συγγραφέας: Roger Morrison
Ημερομηνία Δημιουργίας: 26 Σεπτέμβριος 2021
Ημερομηνία Ενημέρωσης: 1 Ενδέχεται 2024
Anonim
Argentina - England 2-1, World cup 1986
Βίντεο: Argentina - England 2-1, World cup 1986

Περιεχόμενο

Επειδή η Oracle συλλέγει δείγματα και γράφει όλες τις ενεργές περιόδους σύνδεσης στη βάση δεδομένων, ένα απλό ερώτημα σάς επιτρέπει να ανακτήσετε το ιστορικό εντολών SQL για μια δεδομένη χρονική περίοδο.


Η Oracle γράφει ιστορικές πληροφορίες SQL σε v $ active_session_history (φορητό υπολογιστή με βάση δεδομένων σε εικόνα 15,4 "ευρείας οθόνης από .shock από Fotolia.com)

Σημασία

Η Oracle συλλέγει αυτόματα δείγματα όλων των περιόδων λειτουργίας που εκτελούνται στη βάση δεδομένων κάθε δευτερόλεπτο και αποθηκεύει πληροφορίες από το ιστορικό SQL στην προβολή λεξικού δεδομένων v $ active_session_history. Αυτό είναι ένα κυκλικό buffer, οπότε όταν γεμίσει, η Oracle αποθηκεύει αυτόματα τις πληροφορίες της στην αναλυτική λίστα δεδομένων dba_hist_active_sess_history πριν την αντικαταστήσει.

Λειτουργία

Μπορείτε να πάρετε ένα ιστορικό των δηλώσεων SQL που εκτελούνται σε μια χρονική περίοδο στη βάση δεδομένων, ζητώντας αυτές τις δύο προβολές. Για παράδειγμα, το ακόλουθο ερώτημα επιστρέφει τη λίστα των πρώτων 4000 χαρακτήρων των δηλώσεων SQL που εκτελούνται μεταξύ 9:00 π.μ. και 9:05 π.μ. στις 30 Σεπτεμβρίου 2010:


επιλέξτε a.sql_id, dbms_lob.substr (b.sql_text, 4000,1) από dba_hist_active_sess_history α, dba_hist_sqltext b

όπου sample_time μεταξύ to_date ('20100930: 09: 00', 'yyyymmdd: hh24: mi')

και to_date ('20100930: 09: 01', 'yyyymmdd: hh24: mi') και b.sql_id = a.sql_id

ένωση όλων

επιλέξτε a.sql_id, dbms_lob.substr (b.sql_text, 4000,1) από το v $ active_session_history a, v $ sqlarea b

όπου sample_time μεταξύ to_date ('20100930: 09: 00', 'yyyymmdd: hh24: mi') και

to_date ('20100930: 09: 01', 'yyyymmdd: hh24: mi') και b.sql_id = a.sql_id

Σκέψεις

Επιπλέον, η Oracle παράγει στατιστικά στοιχεία ωριαίας εκτέλεσης για τις δηλώσεις SQL στο Automatic Storage Repository. Μπορείτε να δείτε ποιες εντολές SQL απαιτούν περισσότερους πόρους σε μια δεδομένη στιγμή, ζητώντας τις προβολές λεξικών δεδομένων dba_hist_sqlstat και dba_hist_snapshot.

Εφέ

Για παράδειγμα, το ακόλουθο ερώτημα επιστρέφει μια λίστα δηλώσεων SQL που εκτελούνται μεταξύ 9 π.μ. και 10 π.μ., επιπλέον του χρόνου CPU, του χρόνου που παρέμενε, του χρόνου io_wait και του αριθμού των προσπελάσεων στο δίσκο. Η έξοδος ταξινομείται σύμφωνα με την ώρα της CPU.


επιλέξτε a.sql_id, dbms_lob.substr (b.sql_text, 1000,1), cpu_time_delta, elapsed_time_delta, iowait_delta, disk_reads_delta από dba_hist_sqlstat a, dba_hist_sqltext b όπου a.sql_id = b.sql_id και snap_id = (επιλέξτε ξεχωριστό snap_id από dba_hist_snapshot όπου to_Char (begin_interval_time, 'yyyymmdd: hh24: mi') = '20100930: 09: 00' και to_char (end_interval_time, 'yyyymmdd: hh24: mi') = '20100930: 10: 00' από cpu_time

/