Veritabanında çalıştırılmış sorguların tespiti
Oracle veritabanında çalıştırılmış sorguların tespiti için DBA_HIST_ACTIVE_SESS_HISTORY data dictionary görüntüsü kullanılabilir. Geçmişe yönelik bilgiler bulunmaktadır. Anlık çalışan sorgular için V$ACTIVE_SESSION_HISTORY görüntüsü sorgulanabilir. Gelen kayıtlar Active Session History (ASH) tablolarından gelmektedir. Bu yüzden çok geride çalışmış sorgular , bu görüntüde olmayacaktır.
Örneğin 30 gün öncesindeki çalışmış sorguların tespiti için aşağıdaki gibi bir sorgu kullanılabilir.
SELECT h.sample_time, u.username, h.program, h.module, s.sql_text FROM DBA_HIST_ACTIVE_SESS_HISTORY h, DBA_USERS u, DBA_HIST_SQLTEXT s WHERE sample_time >= SYSDATE - 30 AND h.user_id=u.user_id AND h.sql_id = s.sql_iD ORDER BY h.sample_time
Yukarıdaki sorguda sample_time için belirli bir tarih aralığı da verilebilir.
SELECT h.sample_time, u.username, h.program, h.module, s.sql_text FROM DBA_HIST_ACTIVE_SESS_HISTORY h, DBA_USERS u, DBA_HIST_SQLTEXT s WHERE sample_time between to_date('01/10/2018 00:00:00','DD/MM/YYYY HH24:MI:SS') and to_date('15/10/2018 00:00:00','DD/MM/YYYY HH24:MI:SS') AND h.user_id=u.user_id AND h.sql_id = s.sql_iD ORDER BY h.sample_time