我需要记录在我拥有的Oracle数据库(运行Oracle 11g企业版的非生产环境)中运行的所有sql查询。我想如何做到这一点,是使用Oracle的细粒度审计,因为它记录准确的查询,并在数据库中执行,这对我更有用。但是,从文档(http://docs.oracle.com/cd/B19306_01/network.102/b14266/cfgaudit.htm#i1011783)中可以看出,您需要指定一个表名称,而不使用默认值。
是否可以使用Oracle细粒度审计来审计模式上的所有查询?
发布于 2012-11-07 03:13:45
禁用审核:
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;
/https://stackoverflow.com/questions/13257086
复制相似问题