找出SQL查询的历史记录

问题描述 投票:0回答:4

在服务器上执行了更新SQL查询,导致后来出现很多问题。

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

oracle sql-update database-administration
4个回答
88
投票
    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)

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


51
投票

对于最近的 SQL:

select * from v$sql

历史:

select * from dba_hist_sqltext

14
投票

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

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

0
投票

Oracle 23c 更新

引入了新视图

V$SQL_HISTORY
- 来自 文档

V$SQL_HISTORY 显示 SQL 历史监控跟踪的 SQL 语句。 仅当 SQL_HISTORY 初始化参数设置为 true 时才会填充此视图。

SQL 历史监控是一项尽力而为的功能,因此不会有所执行语句的完整图片,但绝对比普通的

V$SQL
更清楚。

© www.soinside.com 2019 - 2024. All rights reserved.