2017-04-30 2 views
1

DBには約500個のテーブルがあります。その表に対して実行されたDML操作がある場合、トリガーを起動してこれらのdmlアクティビティを取得し、監査表にロードする必要があります。私は500個のトリガーを書いてはいけません。これを達成するための簡単な方法はありますか?任意のテーブルで実行されるDML操作のplsqlトリガーを作成します。

+0

何を監査しますか?どの程度細かい情報が必要ですか? – APC

答えて

0

トリガーは、データベース全体ではなくテーブルのみで使用されます。さまざまなデータ型、データの使用、さまざまなテーブルのコンテキストとその使用方法を維持するという複雑さを無視して、探しているものは非常に複雑で、RDBMSはデータベースレベルで対処していないものです。

このリンクでのトリガにいくつかの情報があります:

https://docs.oracle.com/cd/A57673_01/DOC/server/doc/SCN73/ch15.htm

あなたは同じプロシージャを呼び出します...が、その後、すべてその複雑さが戦場に出た各テーブルにトリガを置くことができます。すべてのテーブルのDML文のすべての高レベルの監査を切り替えるには

+1

"トリガーはデータベース全体ではなくテーブルのみで使用されます。"ある程度まで。システムレベルのトリガーを定義して、さまざまなデータベースイベントを発生させることができます。 – APC

2

AUDIT INSERT TABLE, UPDATE TABLE, DELETE TABLE; 

我々が管理することができますどのようなオブジェクトには、我々が持っているものの権限に依存します。 Find out more

AUDITは監査証跡に基本情報を書き込みます。宛先はthe AUDIT_TRAIL parameterの値に依存します。パラメータがdbに設定されている場合、出力はデータベーステーブルに書き込まれます。USER_AUDIT_TRAILまたは(特権を持っていれば)DBA_AUDIT_TRAILのすべてを確認できます。

監査証跡は高レベルです。つまり、ユーザFOXEMPテーブルを更新したことを記録していますが、実際の変更内容や記録はわかりません。ファイングレイン監査ポリシーを作成することで、細かい監査を実装できます。これには、私たちのすべてのテーブルでそれを有効にしないことを決定するかもしれないので、私たちの面でもっと多くの作業が必要です。 Find out more

関連する問題