1 标准审计
标准审计必须是数据库级别的,设置好后必须重启数据库。(1)alter system set audit_trail =XXXXX scope=spfile|both;
(2)其中autdit_trail取值有以下几种情况:
DB/TRUE:启动审计功能,并把审计结果放在数据库中的sys.aud$中
OS:启动审计功能,并把审计结果存放在操作系统的审计信息中
DB_EXTENDED:具有DB/TRUE的功能,另外写aud$中的sqlbind和sqltext字段
NONE/FALSE:关闭审计
(3)查看审计相关表是否安装:
sys.aud$、dba_audit_trail,如果没有安装,则找到$ORACLE_HOME/rdbms/admin/cataudit.sql,审计表安装在system表空间,如果空间不够,可以移动审计到自建的表空间中。
(4)设置所需要的审计信息
sql>connect system/manage;
sql>grant audit system to scott;
sql>connect scott/tiger;
sql>audit session;
通常设置了标准审计都是通过 Audit语句开启审计。使用noaudit收回,如下:
对表SC的修改或者数据修改进行审计语句如下:
audit alter,update on sc;
取消审计使用下列语句:
noaudit all on sc;
--1 所有的审计日志都写在sys.aud$(也可以通过视图dba_audit_trail找)
select * from sys.aud$ a where a.action#=12;
--2 审计的所有类型 例如:创建表、删除表等
select * from sys.audit_actions;
--3 数据库设置了哪些可以审计
select * from dba_stmt_audit_opts
2 细粒度审计(FGA)
使用包DBMS_FGA.ADD_POLICY、DBMS_FGA.DROP_POLICY2.1 增加
begindbms_fga.add_policy(object_schema => '',object_name => '',policy_name => '',audit_column => '',statement_types => '');
end;
object_schema:数据库用户名
object_name:表名
policy_name:审计的名称(这个自己随便定义,不同审计不同名称)
audit_column:需要审计的字段(全部审计不需要该参数)
statement_types:delete,update(只审计delete和update,中间用逗号分隔,也可以审计select,例如:select,update,delete)