Tartalom
Mivel az Oracle a mintákat összegyűjti és az összes aktív munkamenetet írja az adatbázisba, az egyszerű lekérdezés lehetővé teszi az SQL utasítástörténet lekérését egy adott időszakra.
Az Oracle történelmi SQL-adatokat ír be a v $ active_session_history könyvtárba (laptop adatbázis adatbázissal 15,4 "széles képernyős képpel .shock-tól a Fotolia.com-tól)
fontosság
Az Oracle automatikusan összegyűjti az adatbázisban futó összes munkamenet mintáját másodpercenként, és adatokat tárol az SQL történetéből a v $ active_session_history adatszótár nézetben. Ez egy körkörös puffer, így amikor az teljessé válik, az Oracle automatikusan eltárolja az adatait a dba_hist_active_sess_history adat szótárban.
függvény
A két nézet lekérdezésével az adatbázis egy bizonyos idő alatt végrehajtott SQL utasításainak történetét kaphatja meg. A következő lekérdezés például a 2010. szeptember 30-án 9: 00-tól 9: 05-ig végrehajtott SQL utasítások első 4000 karakterének listáját adja vissza:
válassza a a.sql_id, dbms_lob.substr (b.sql_text, 4000,1) parancsot a dba_hist_active_sess_history a, dba_hist_sqltext b címen
ahol minta_idő a to_date ('20100930: 09: 00', 'yyyymmdd: hh24: mi') között
és to_date ('20100930: 09: 01', 'yyyymmdd: hh24: mi') és b.sql_id = a.sql_id
unió minden
válassza a a.sql_id, dbms_lob.substr (b.sql_text, 4000,1) elemet a v $ active_session_history a, v $ sqlarea b
ahol minta_idő a to_date között ('20100930: 09: 00', 'yyyymmdd: hh24: mi') és
to_date ('20100930: 09: 01', 'yyyymmdd: hh24: mi') és b.sql_id = a.sql_id
megfontolások
Ezen túlmenően az Oracle óránkénti végrehajtási statisztikákat állít elő az SQL utasításokhoz az automatikus munkaterhelés-tárolójában. Láthatjuk, hogy mely SQL utasítások igényelnek több erőforrást egy adott időpontban a dba_hist_sqlstat és a dba_hist_snapshot adatszótár nézetek lekérdezésével.
hatások
Például a következő lekérdezés a CPU idő, az eltelt idő, az io_wait idő és a lemez elérések száma mellett 9 és 10 óra között végrehajtott SQL utasítások listáját adja vissza. A kimenet CPU-idő szerint van rendezve.
válassza a a.sql_id, dbms_lob.substr (b.sql_text, 1000,1), cpu_time_delta, eltelt_idő_delta, iowait_delta, disk_reads_delta fájlt a dba_hist_sqlstat a, dba_hist_sqltext b, ahol a.sql_id = b.sql_id és snap_id = (válasszon külön snap_id-t a dba_hist_snapshot-ről, ahová_Char (Beg_interval_time, 'yyyymmdd: hh24: mi') = '20100930: 09: 00' és to_char (end_interval_time, 'yyyymmdd: hh24: mi') = '20100930: 10: 00' rendelés cpu_time
/