对用户所执行的数据库活动的跟踪记录,便于事后监督、检查。
审计记录信息,存储在system表空间中的SYS.AUD$数据字典表;
或操作系统默认位置$ORACLE_BASE/admin/$ORACLE_SID/adump/;
参数值取值列表:
(1).DB/TRUE ---- 启用审计,并且把审计结果存放在数据库的SYS.AUD$表中
(2).OS ---- 启用审计,并把审计结果存放在操作系统的审计信息中
(3).DB_EXTENDED ---- 启用审计,把审计结果存放在数据库SYS.AUD$表中,并在CLOB列的SQLBIND和SQLTEXT字段记录额外的信息;
(4).XML ---- 启用审计,以XML格式写所有审计记录;
(5).EXTENDED ---- 启用审计,在审计跟踪中记录所有列,包括SQLTEXT和SQLBIND值
(6).NONE/FALSE ---- 禁用审计
(1).修改审计参数AUDIT_TRAIL:
Alter system set AUDIT_TRAIL=DB scope=spfile;
(2).初始化数据库审计功能:
以connect /as sysdba执行脚本cataudit.sql,脚本位置D:\app\Administrator\product\11.2.0\dbhome_1\RDBMS\ADMIN;
(3).重启数据库:
由于参数AUDIT_TRAIL不是动态的,需要关闭数据库重启生效。
--语法
AUDIT sql_statement_clause [BY user_name] | [BY [SESSION | ACCESS]
WHENEVER [NOT] SUCCESSFUL]
参数说明:
sql_statement_clause ---- SQL语句或选项;
BY ACCESS ---- 存取方式,每条语句被执行一次都要审计,不管语句是否相同;
BY SESSION ---- 会话方式,相同的语句只被审计一次,这也是系统默认方式;
WHENEVER SUCCESSFUL ---- 表示只对成功语句进行审计;
WHENEVER NOT SUCCESSFUL ---- 表示只对不成功语句进行审计。
--举例:
--(1).审计用户对对象的操作:
Audit table by scott;
--(2).审计用户执行的SQL语句:
Audit create table by scott;
Audit insert table by u0007; ---- 审计insert into表或视图;
Audit delete table by u0007; ---- 审计删除表或视图中的行;
--(3).指定审计方式:
Audit delete table by u0007 by access; ---- 存取方式,每条语句执行一次都要审计;
--(4).审计成功与不成功的会话:
Audit session by u007 whenever not successful; ---- 只对不成功语句进行审计;
--(5).了解哪些用户进行了审计,可查询数据字典视图DBA_STMT_AUDIT_OPTS
select * from dba_stmt_audit_opts where user_name=‘U007‘;
--(6).停止语句审计:
Noaudit alter table by U007;
--语法:
AUDIT privilege [BY user_name] | [BY [SESSION | ACCESS]
WHENEVER [NOT] SUCCESSFUL]
--语法:
AUDIT schema_object_clause ON schema
[BY user_name] | [BY [SESSION | ACCESS]
WHENEVER [NOT] SUCCESSFUL]
Audit select,insert,delete on scott.dept by access;
是由DBMS_FGA的PL/SQL程序实现的
原文:http://www.cnblogs.com/jionjionyou/p/5507066.html