に更新されてしまった列のリストを取得すると言う候補者(NOT DBA):Oracleの監査証跡は、スキーマの下の表(学生)を考慮して、最後のトランザクション
学生
{RollNumber:VARCHAR2(10 )、
名:VARCHAR2(100)、
クラス:VARCHAR2(5)、
...
...
...
}
テーブルにはすでに有効なデータが含まれているものとします。
私は私ので、いくつかの他のフィールド
UPDATE STUDENT SET Math_marks = 100 ,PHY_marks , CLASS = 'XYZ'
WHERE ROLLNUMBER = 'AQ1212'
を更新していた他の更新クエリが続く
UPDATE STUDENT SET Name = 'ASHWIN' , CLASS = 'XYZ'
WHERE ROLLNUMBER = 'AQ1212'
Studentテーブルの名前とクラスを変更する更新クエリを実行します2つの異なるクエリで異なる列を修正しました。最後のトランザクションで更新された列の特定のリストを取得する必要があります。私は、OracleがDBAからアクセス可能ないくつかのテーブル・ログでこれを維持していなければならないと確信しています。しかし、私はDBAアクセス権を持っていません。
私に必要なのは、私はDBA権
を持っていませんスキーマの下で最後のトランザクションに候補を更新してしまった列のリストである私にいくつかの方法を提案してください。
:ここでは簡単な表を示しました。しかし実際には私は8-10のテーブルを持っています。この監査では、ROLLNUMBERが他のすべてのテーブルに対して外部キーを実行するという重要な要素があるとします。トリガを記述することは、すべてのテーブルで複雑になります。だから、同じものを取り出すための他の方法がある場合は、私を助けてください。
あなたが本当に意味するか、 『トランザクションを』または」 「最後のトランザクション」とは何ですか?現在のセッションの最後のトランザクションですか?現在のセッションの最後のトランザクションですか?また、現在のトランザクションの最後のトランザクションですか?実際にはすべてのセッションに行き渡っていますか?これは何らかの監査が有効になっているように思えます。このようなトランザクションログをスキャンする必要はありません。おそらく、以前のバージョンの行がトリガーによって書き込まれる履歴テーブル。 –
"ROWDEPENDENCIES"でテーブルを作成した場合は、更新された行を追跡することができます。 ROWDEPENDENCIESを使用してテーブルを作成すると、新しいrowscn疑似カラムが表示されます。 ora_rowscnは、読み取られたときに表の各行に関連付けられたシステム変更番号(SCN)を提供します。列は、最後のDMLが表のブロックまたは行レベルで実行されたときにSCN(システム変更番号)を提供します。 SCNシステム変更番号は、機能SCN_TO_TIMESTAMPを使用してタイムスタンプとして簡単に変換できます。 – XING
@Raj_Te - 行が更新されたときにおおまかなことがわかります(それに問題がありますが、ほとんどの目的には十分近いでしょう)。それは、どの列が更新されたかをこの質問がすべてであることを伝えるものではありません。 –