1

我需要记录在我拥有的 Oracle 数据库中运行的所有 sql 查询(非生产,运行 Oracle 11g 企业版)。我想这样做是使用 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 回答