2012-01-27 12 views
1

私は、テーブルへの変更をキャプチャしてログまたはジャーナル・テーブルに保存するOracleパッケージを探しています。例えば、適切なテーブルにこれらのアクションをキャプチャなるようOracleの行レベルのリビジョン管理?

insert into foo(x,y) values (12,34); 

としてSQL文を実行し、何かのように:これに基づいてSQL文を生成するための施設があった場合

timestamp   who  operation column value 
---------   ---  --------- ------ ----- 
12-JAN-2012 13:22 MH  insert  x   12 
12-JAN-2012 13:22 MH  insert  y   13 

それは素晴らしいことです情報

答えて

2

これは、ファイングレイン監査を使用して行うことができます:あなたはまた、問題のテーブル用のフラッシュバック・アーカイブをオンにすることができ、代替として

http://docs.oracle.com/cd/E11882_01/network.112/e16543/auditing.htm#DBSEG525

。その後、過去の任意の時点でテーブルの内容を照会することができます。あなたにはが表示されません。に変更が加えられました。

1

これは、挿入時に発生するターゲットテーブル上の単純なtriggerによって実行できます。

CREATE OR REPLACE TRIGGER foo_audit 
AFTER INSERT OR DELETE OR UPDATE ON foo 
FOR EACH ROW 
BEGIN 
    IF INSERTING THEN 
     ... 
    ELSIF UPDATING THEN 
     ... 
    ELSIF DELETING THEN 
     ... 
    END IF; 

END; 
/

この種のトリガーのフォーマットは、実際にプログラムで生成できるほど簡単です。

関連する問題