Omdat Oracle samples en registreert elke actieve sessie draait op de database , een eenvoudige query maakt het mogelijk om de geschiedenis van SQL-statements te verkrijgen binnen een bepaald tijdsbestek . Betekenis Oracle automatisch monsters elke sessie draait op de database elke seconde , en registreert SQL geschiedenis informatie in de v $ active_session_history data dictionary view . v $ active_session_history is een circulaire buffer , dus wanneer deze vol is , Oracle archiveert automatisch de informatie van v $ active_session_history om dba_hist_active_sess_history data dictionary oog , voor het overschrijven van gegevens in v $ active_session_history uitzicht . Functie < br > Door het bevragen van deze twee standpunten , geschiedenis van SQL statements uitgevoerd tijdens een bepaald venster van de tijd in de database kan worden verkregen . Bijvoorbeeld , de volgende query geeft de lijst van de eerste 4000 tekens van SQL statements uitgevoerd 9:00-09:05 op 30 september 2010 : select a.sql_id , dbms_lob.substr ( b. sql_text , 4000,1 ) uit dba_hist_active_sess_history a , b dba_hist_sqltext waar sample_time tussen to_date ( '20100930 : 09:00 ' , ' yyyymmdd : HH24 : mi ' ) op Twitter en to_date ( '20100930 : 09:01 ' , ' yyyymmdd : HH24 : mi ' ) en b.sql_id = a.sql_id unie alle select a.sql_id , dbms_lob.substr ( b.sql_text , 4000 , 1 ) van v active_session_history $ a , v $ sqlarea b waar sample_time tussen to_date ( '20100930 : 09:00 ' , ' yyyymmdd : HH24 : mi ' ) en to_date ( ' 20100930:09:01 ' , ' yyyymmdd : HH24 : mi ' ) en b.sql_id = a.sql_id overwegingen Bovendien , Oracle vat hourly uitvoering statistieken van SQL-statements in zijn Automatic Workload Repository . Je zou kunnen vinden van de meest resource-intensieve SQL statements uitgevoerd tijdens een bepaald venster van de tijd door het bevragen dba_hist_sqlstat data dictionary te bekijken , samen met dba_hist_snapshot data dictionary uitzicht . Effecten bijvoorbeeld , de volgende query geeft de lijst van SQL statements uitgevoerd 9:00-10:00 samen met hun CPU-tijd , verstreken tijd , io_wait tijd en het aantal diskreads . De output van deze query wordt gesorteerd door CPU-tijd . Selecteren uit dba_hist_sqlstat a , dba_hist_sqltext b waarin a.sql_id = b.sql_id en snap_id = ( select distinct snap_id van dba_hist_snapshot waar TO_CHAR ( begin_interval_time , ' yyyymmdd : HH24 : mi ' ) = '20100930 : 09:00 ' en to_char ( end_interval_time , ' yyyymmdd : HH24 : mi ' ) = '20100930 : 10:00 ' ) bestellen door cpu_time /
|