我有一个网络应用程序,我怀疑其他人手动删除了一些记录。经询问,没有人承认错误。如何找出这些记录被删除的时间?是否可以获取删除查询的历史记录?
答案 0 :(得分:4)
如果您有权访问v $ view,则可以使用以下查询来获取它。它包含FIRST_LOAD_TIME列的时间。
select *
from v$sql v
where upper(sql_text) like '%DELETE%';
答案 1 :(得分:2)
如果为您的数据库启用了闪回查询(使用select * from table as of timestamp sysdate - 1
尝试),则可以确定删除记录的确切时间。使用as of timestamp
子句并根据需要调整时间戳,以缩小到记录仍然存在且不再存在的窗口。
例如
select *
from table
as of timestamp to_date('21102016 09:00:00', 'DDMMYYYY HH24:MI:SS')
where id = XXX; -- indicates record still exists
select *
from table
as of timestamp to_date('21102016 09:00:10', 'DDMMYYYY HH24:MI:SS')
where id = XXX; -- indicates record does not exist
-- conclusion: record was deleted in this 10 second window