1

最近、私たちのサイトの1つから非常に奇妙なシナリオが報告されました。私たちのフィールドに基づいて、そのシナリオで発生したはずのある種の削除があるはずであることがわかりました

アプリケーションコードでは、そのテーブル自体の削除はありません。そこで、gv $ sqlarea(RACを使用しているため)テーブルをチェックインして、このテーブルにdeletesqlがあるかどうかを確認しました。何も見つかりませんでした。

次に、PL/SQL開発者を介して同じ種類の削除を実行しようとしました。gv$sqlareaまたはgv$sessionを介してすべての削除を追跡できます。しかし、以下のクエリ、ロック、編集、およびコミットをplsql開発者で使用する場合、トレースはありません。

select t.*, t.rowid 
  from <table>

私たちが見つけることができるものは、sys.mon_mods$に削除の数があります。ただし、長期間保存されないため、タイムスタンプで追跡できます

誰かがこれを追跡するのを手伝ってくれますか

Oracleバージョン:11.1.0.7.0

タイプ:RAC(5インスタンス)

4

1 に答える 1

2

gv$sqlarea共有プールにある SQL ステートメントのみを示します。ステートメントが 1 回だけ実行される場合、共有プールの大きさと実行される個別の SQL ステートメントの数によっては、ステートメントが共有プールに長く留まらない可能性があります。私は確かに、1 回限りのステートメントが、数時間後も適度にアクティブなシステムの共有プールに残っているとは思っていません。

監査を有効にしておらず、削除を記録するトリガーがない場合、システムはARCHIVELOGモードになっていますか? 行が削除された時点からアーカイブされたログはありますか? その場合、 LogMinerを使用してアーカイブされたログを調べ、問題のステートメントを見つけることができる可能性があります。

于 2013-02-08T07:27:38.337 に答える