1

私が持っている Oracle データベース (非運用、Oracle 11g エンタープライズを実行) で実行されているすべての SQL クエリをログに記録する必要があります。これを行う方法は、Oracle の細粒度監査を使用することです。これは、正確なクエリをログに記録し、データベースに記録するためです。これは私にとってはるかに便利です。ただし、ドキュメント (http://docs.oracle.com/cd/B19306_01/network.102/b14266/cfgaudit.htm#i1011783) から、テーブル名を指定する必要があり、デフォルトはないようです。

Oracle のきめ細かい監査を使用して、スキーマのすべてのクエリを監査することはできますか?

4

1 に答える 1

3

監査を無効にする:

begin
    for c1 in (select * from dba_audit_policies) loop
        dbms_fga.drop_policy (
            object_schema => c1.object_schema,
            object_name   => c1.object_name,
            policy_name   => c1.policy_name);
    end loop;
end;
/

スキーマ全体の監査を有効にします。

begin
    for c1 in (select * from all_tables where owner = '&schema') loop
        dbms_fga.add_policy (
            object_schema   => c1.owner,
            object_name     => c1.table_name,
            statement_types => 'SELECT,UPDATE,DELETE,INSERT',
            policy_name     => c1.table_name
        );
    end loop;
end;
/
于 2012-11-06T19:13:45.320 に答える