Vsebina
Ker Oracle zbira vzorce in zapiše vse aktivne seje v bazo podatkov, preprosta poizvedba omogoča pridobitev zgodovine stavkov SQL za dano časovno obdobje.
Oracle zapiše zgodovinske informacije SQL v v $ active_session_history (prenosni računalnik s podatkovno zbirko na 15,4-palčni široki zaslonski sliki .shock iz Fotolia.com)
Pomen
Oracle samodejno zbira vzorce vseh sej, ki se izvajajo v bazi podatkov vsako sekundo, in shrani informacije iz zgodovine SQL v pogled v slovar podatkov v $ active_session_history. To je krožni vmesni pomnilnik, tako da ko postane poln, Oracle samodejno shrani svoje podatke v pogled slovar podatkov dba_hist_active_sess_history, preden ga prepiše.
Funkcija
Zgodovino stavkov SQL, ki se izvajajo v določenem časovnem obdobju v bazi podatkov, lahko dobite s poizvedovanjem v teh dveh pogledih. Naslednja poizvedba vrne na primer seznam prvih 4000 znakov stavkov SQL, izvedenih med 9.00 in 9.05 uro 30. septembra 2010:
izberite a.sql_id, dbms_lob.substr (b.sql_text, 4000,1) iz dba_hist_active_sess_history a, dba_hist_sqltext b
kjer je sample_time med to_date ('20100930: 09: 00', 'yyyymmdd: hh24: mi')
in do_date ('20100930: 09: 01', 'yyyymmdd: hh24: mi') in b.sql_id = a.sql_id
sindikata
izberite a.sql_id, dbms_lob.substr (b.sql_text, 4000,1) iz v $ active_session_history a, v $ sqlarea b
kjer je sample_time med to_date ('20100930: 09: 00', 'yyyymmdd: hh24: mi') in
to_date ('20100930: 09: 01', 'yyyymmdd: hh24: mi') in b.sql_id = a.sql_id
Premisleki
Poleg tega Oracle generira urne statistične podatke za izvajanje stavkov SQL v samodejnem repozitoriju obremenitve. Vidite lahko, kateri stavki SQL zahtevajo več sredstev v določenem času s poizvedovanjem pogledov podatkovnega slovarja dba_hist_sqlstat in dba_hist_snapshot.
Učinki
Naslednja poizvedba na primer vrne seznam stavkov SQL, ki se izvajajo med 9. in 10. uro, poleg časa CPU, pretečenega časa, časa io_wait in števila dostopov do diska. Izhod je urejen po CPU času.
izberite a.sql_id, dbms_lob.substr (b.sql_text, 1000,1), cpu_time_delta, elapsed_time_delta, iowait_delta, disk_reads_delta iz dba_hist_sqlstat a, dba_hist_sqltext b kjer je a.sql_id = b.sql_id in snap_id = (izberite ločeno snap_id od dba_hist_snapshot kjer do_Char (begin_interval_time, 'yyyymmdd: hh24: mi') = '20100930: 09: 00' in to_char (end_interval_time, 'yyyymmdd: hh24: mi') = '20100930: 10: 00' naročilo po cpu_time
/