审核模式中的所有表

时间:2014-04-30 20:32:26

标签: sql oracle plsql

我想知道是否有办法(在Oracle(11g)中)审计给定模式中的所有表。我有很多需要审计的表,并且不希望手动审计每个表。在这种情况下光标是否合适?任何建议将不胜感激。干杯!

这是我认为可能有效的简单光标..

cursor table_names is
SELECT owner, table_name
  FROM all_tables
  where owner like 'MYSCHEMA%';
  begin 

  for x in table_names
  loop 
  audit_all := 'audit all on table_name';

  end loop;

  end;

1 个答案:

答案 0 :(得分:3)

您可以使用动态SQL生成和执行审计语句

DECLARE
  l_sql_stmt varchar2(1000);
BEGIN
  FOR t IN (SELECT owner, table_name
              FROM all_tables
             WHERE owner like 'MYSCHEMA%')
  LOOP
    l_sql_stmt := 'AUDIT ALL ON ' || t.owner || '.' || t.table_name;
    EXECUTE IMMEDIATE l_sql_stmt;
  END LOOP;
END;