整个模式的Oracle细粒度审核 [英] Oracle Fine Grained Auditing for entire schema

查看:105
本文介绍了整个模式的Oracle细粒度审核的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要记录我拥有的Oracle数据库(非生产型,正在运行Oracle 11g企业版)中运行的所有sql查询.我要这样做的方法是使用Oracle的细粒度审核,因为它会记录确切的查询并在db中进行,这对我来说非常有用.但是,从文档(http://docs.oracle.com/cd/B19306_01/network.102/b14266/cfgaudit.htm#i1011783)看来,您需要指定表名,而没有默认名称.

I need to log all sql queries running in an Oracle database I have (non-production, running Oracle 11g enterprise). How I would like to do this, is to use Oracle's Fine Grained Auditing, since it logs the exact query and does so in the db, which is much more useful for me. However , it seems from the documentation (http://docs.oracle.com/cd/B19306_01/network.102/b14266/cfgaudit.htm#i1011783) that you are required to specify a table name, with no default.

是否可以使用Oracle细粒度审核来审核模式中的所有查询?

Is it possible to use Oracle fine grained auditing to audit all queries on a schema?

推荐答案

禁用审核:

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;
/

这篇关于整个模式的Oracle细粒度审核的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆