找出SQL查询的历史记录

sum*_*edi 46 oracle database-administration sql-update

在服务器上执行了更新SQL查询,这在以后引起了许多问题.

如何获取最近2个月内执行的更新查询列表,以便我可以跟踪确切的有问题的SQL查询?

bon*_*svr 63

    select v.SQL_TEXT,
           v.PARSING_SCHEMA_NAME,
           v.FIRST_LOAD_TIME,
           v.DISK_READS,
           v.ROWS_PROCESSED,
           v.ELAPSED_TIME,
           v.service
      from v$sql v
where to_date(v.FIRST_LOAD_TIME,'YYYY-MM-DD hh24:mi:ss')>ADD_MONTHS(trunc(sysdate,'MM'),-2)
Run Code Online (Sandbox Code Playgroud)

where子句是可选的.您可以根据FIRST_LOAD_TIME对结果进行排序,并查找最多2个月前的记录.

  • 许多查询将在shared_pool中老化.V $ SQL可能没有过去2个月的所有查询. (2认同)

gro*_*ter 36

对于最近的SQL:

select * from v$sql
Run Code Online (Sandbox Code Playgroud)

历史:

select * from dba_hist_sqltext
Run Code Online (Sandbox Code Playgroud)


小智 9

您可以使用此sql语句获取任何日期的历史记录:

SELECT * FROM V$SQL V where  to_date(v.FIRST_LOAD_TIME,'YYYY-MM-DD hh24:mi:ss') > sysdate - 60
Run Code Online (Sandbox Code Playgroud)