【发布时间】:2013-01-27 15:51:10
【问题描述】:
在服务器上执行了更新SQL查询,导致后来出现很多问题。
如何获取最近 2 个月执行的更新查询列表,以便准确跟踪有问题的 SQL 查询?
【问题讨论】:
标签: oracle sql-update database-administration
在服务器上执行了更新SQL查询,导致后来出现很多问题。
如何获取最近 2 个月执行的更新查询列表,以便准确跟踪有问题的 SQL 查询?
【问题讨论】:
标签: oracle sql-update database-administration
您可以使用此 sql 语句来获取任何日期的历史记录:
SELECT * FROM V$SQL V where to_date(v.FIRST_LOAD_TIME,'YYYY-MM-DD hh24:mi:ss') > sysdate - 60
【讨论】:
对于最近的 SQL:
select * from v$sql
历史记录:
select * from dba_hist_sqltext
【讨论】:
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个月前的记录。
【讨论】:
v$sql 没有及时回溯。但是,有一个名为dba_hist_sqlstat 的视图可能包含您需要的信息。您需要加入 snap_id 到 dba_hist_snapshot 才能获得日期。