- 締切済み
テーブルのデータ変更者を特定するには
だれかがOracle10gのあるテーブルの金額データをAccessなどの編集ツールで変更してしまい、問題になっているのですが誰が変更したのか突き止める方法はあるのでしょうか? また、今回はわからないとしても今後、このようなことがないように変更した人を特定するようにしたいのですがどのようにするのがよいでしょうか?
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- uresiiwa
- ベストアンサー率45% (49/107)
今後はデータベース監査証跡を使って当該テーブルのUPDATEの記録を残すと良いですね。 DBAユーザで、 AUDIT UPDATE ON テーブル名; という感じで監査を有効にし、 監査記録はDBA_AUDIT_TRAILテーブルで確認します。 たまりすぎないように古いレコードを掃除するなどの配慮も必要です。 詳しくは、Oracleドキュメントのセキュリティ・ガイドをごらんください。
- noah7150
- ベストアンサー率46% (116/251)
自社開発で無い限りDBの変更は難しいかも プログラム修正が不可能ならトリガーでログ出力させる方法も検討されては? こちらならプログラムは一切修正しませんし出力テーブルも検索のため2次キーは付けるけど主キー無しの追加オンリーとしてやると容量オーバーしかこける要素がなくなりますし。 まぁ、バッチ等で大量更新される場合はトリガーを停止させるなど設定を工夫する必要はありますが
お礼
回答ありがとうございます。 そうですね、トリガーがよさそうですね。 早速、検討してみます。 ありがとうございました。
- noah7150
- ベストアンサー率46% (116/251)
基本的には自分でログを取るしかありません。 変更者、変更日時等のカラムを取り毎回Updateするか 変更履歴テーブルを取り出力するなどの手法が確実かと Access等のテーブルビューで自由に変更できるのは問題です。 操作ミスで変更、削除等の問題がありますので AccessやExcel等で読み込む必要があるなら読込権限のみの別ユーザーを取り このユーザーで行うのがベターでしょうね Access等のテーブルビューで名称変更程度はかまわないでしょうが 追加、削除等はそれなりのチェックが必要でしょうからプログラム化するほうがよろしいのでは
お礼
回答ありがとうございます。 おっしゃられるとおりなのですが、色々しがらみがあり、テーブル追加や変更、プログラム変更などはできないの現状です。 権限については検討してみます。 ありがとうございました。
お礼
回答ありがとうございます。 初めて聞く用語なので調べて検討してみます。 ありがとうございました。