我想知道是否有办法(在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;
答案 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;