2016-10-21 13 views
-1

Webアプリケーションがあり、一部のレコードが手動で削除されていると思われます。お問い合わせには誰も間違いを認めていません。どのようにそれらのレコードが削除されたのか調べるには?削除クエリの履歴を取得することは可能ですか?Oracle DBで最新のクエリを取得する方法

+1

あなたがに興味があるDELETE文を見つけるために、アーカイブ・ログを通過するログマイナーを使用するとよいでしょう。あなたがたときにわからない場合は非常に時間がかかることができます削除が発生しました。それらはまだv $ sqlにキャッシュされている可能性がありますが、それは確実ではありません。クエリがリテラルを使用しないかぎり、クエリが実行されたときに使用されたバインド値はわかりません。 –

答えて

3

v $ viewにアクセスできる場合は、次のクエリを使用して取得できます。 FIRST_LOAD_TIME列として時間が含まれています。

select * 
from v$sql v 
where upper(sql_text) like '%DELETE%'; 
1

フラッシュバック問合せは(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 
関連する問題