千家信息网

学习Oracle的审计(Auditing)

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,审计(Audit)用于监视用户所执行的数据库操作,审计记录可存在数据字典表(称为审计记录:存储在system表空间中的 SYS.AUD$ 表中,可通过视图dba_audit_trail查看)或操作系统
千家信息网最后更新 2026年10月31日学习Oracle的审计(Auditing)

审计(Audit)用于监视用户所执行的数据库操作,审计记录可存在数据字典表(称为审计记录:存储在system表空间中的 SYS.AUD$ 表中,可通过视图dba_audit_trail查看)或操作系统审计记录中(audit_file_dest参数决定)。默认情况下审计是没有开启的。

1、审计的类型有四种:

  • Statement Auditing(语句审计):在语句级别进行审计,如审计执行SELECT TABLE的语句,而不针对某一单独的对象。

  • Privilege Auditing(权限审计):审计某一系统权限的使用情况,如果审计在创建表时用到的CREATE ANY TABLE权限。

  • Schema Object Auditing(对象审计):审计对指定对象上的操作,如审计对表scott.emp的INSERT操作。

  • Fine-Grained Auditing(细粒度审计):用于指定更细粒度的审计,用DBMS_FGA包来实现。

2、相关参数:

AUDIT_TRAIL参数

这参数决定数据库审计的开启和关闭。可以被赋与如下值

  • DB,启用数据库审计,并把审计记录记录到数据库中的SYS.AUD$

  • XML,启用数据库审计,并把审计记录在文件系统以XML文件的开始存放

  • DB,EXTENDED,具有与DB一样的功能,并在必要时在SYS.AUD$中记录SQL bind and SQL text CLOB-type columns。

  • XML,EXTENDED,具有与XML一样的功能,并在可用时在XML文件中记录SQL bind and SQL text CLOB-type columns。

  • OS,启用数据库审计,并把审计记录记录到操作系统的文件中。

  • NONE,不启用数据库审计,默认值。

AUDIT_FILE_DEST参数

如果AUDIT_TRAIL=OS,则审计记录的文件,存放在AUDIT_FILE_DEST指定的目录中。

AUDIT_SYS_OPERATIONS参数

指定是否启用对SYS用户的审计。默认为FALSE,启用设置为TRUE。记录不存放在AUD$中,而是记录在其它地方。如果是windows平台,audti trail会记录在windows的事件管理中,如果是linux/unix平台则会记录在audit_file_dest参数指定的文件中。

3、启用和停用数据库审计

使用ALTER SYSTEM语句设置AUDIT_TRAIL参数,这个参数不可在线修改,修改后需重库数据库实例生效。例句如下:

ALTER SYSTEM SET AUDIT_TRAIL=DB,EXTENDED SCOPE=SPFILE;

停用数据库审计使用如下语句,重启数据库生效

ALTER SYSTEM SET AUDIT_TRAIL=NONE SCOPE=SPFILE;

4、启用和停止审计功能的语法:

1)启用审计使用AUDIT语句

2)停止审计功能

要停用审计功能把上面的AUDIT改为NOAUDIT。

在启用审计功能前,必须先设置AUDIT_TRAIL参数为非NONE,否则数据库不会进行审计。

5、使用审计功能的示例

启用数据库审计

sys@TEST>alter system set audit_trail=DB scope=spfile;System altered.

1)Statement Auditing(语句审计)

审计由SCOTT用户发出的所有SELECT TABLE

sys@TEST>audit select table by scott;Audit succeeded.sys@TEST>select * from dba_stmt_audit_opts;USER_NAME                      PROXY_NAME                  AUDIT_OPTION                     SUCCESS                       FAILURE------------------------------ ------------------------------ ------------------------------ ------------------------------ ------------------------------SCOTT                                                         SELECT TABLE                BY SESSION                  BY SESSIONscott@TEST>select count(*) from emp;  COUNT(*)----------        14        sys@TEST>select timestamp,sql_text from dba_audit_trail;TIMESTAMP           SQL_TEXT------------------- --------------------------------------------------------------------------------2017-04-24 23:07:47 select count(*) from emp

2)Privilege Auditing(权限审计)

审计所有系统权限

sys@TEST>audit all privileges;Audit succeeded.sys@TEST>select * from dba_priv_audit_opts;USER_NAME                      PROXY_NAME                  PRIVILEGE                   SUCCESS                       FAILURE------------------------------ ------------------------------ ------------------------------ ------------------------------ ------------------------------                                                              FLASHBACK ARCHIVE ADMINISTER   BY ACCESS                          BY ACCESS                                                              CREATE SESSION                 BY ACCESS                         BY ACCESS......[oracle@rhel6 ~]$ sqlplus scott/tiger......sys@TEST>select username,timestamp,priv_used from dba_audit_trail where priv_used is not null;USERNAME                       TIMESTAMP        PRIV_USED------------------------------ ------------------- ------------------------------------------------------------------------------------------------------------------------SCOTT                          2017-04-24 23:18:02 CREATE SESSION

3)Schema Object Auditing(对象审计)

审计对SCOTT.EMP表的select操作

sys@TEST>audit select on scott.emp;Audit succeeded.sys@TEST>select * from dba_obj_audit_opts;OWNER      OBJECT_NAM OBJECT_TYPE                ALT   AUD   COM   DEL   GRA   IND         INS   LOC   REN   SEL         UPD   REF   EXE   CRE         REA   WRI   FBK---------- ---------- ------------------------------ ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- -----SCOTT      EMP         TABLE                            -/-   -/-   -/-   -/-   -/-   -/-         -/-   -/-   -/-   S/S         -/-   -/-   -/-   -/-         -/-   -/-   -/-scott@TEST>select ename from emp;ENAME------------------------------SMITHALLEN......sys@TEST>select timestamp,sql_text from dba_audit_trail;TIMESTAMP           SQL_TEXT------------------- --------------------------------------------------------------------------------2017-04-24 23:24:28 select ename from emp

AUD$位于SYSTEM表空间,基于Oracle的稳定性及性能考虑,可以将审计相关的表移动到其他表空间。

alter table audit$ move tablespace ;
alter index i_audit rebuild online tablespace ;
alter table audit_actions move tablespace ;
alter index i_audit_actions rebuild online tablespace ;


官方文档:http://docs.oracle.com/cd/B19306_01/network.102/b14266/auditing.htm#CHDJBDHJ

http://docs.oracle.com/cd/B19306_01/network.102/b14266/cfgaudit.htm#BABCFIHB

http://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_4007.htm#i2059073

参考:http://blog.itpub.net/9399028/viewspace-712457/

审计 数据 数据库 参数 功能 语句 文件 权限 系统 对象 用户 空间 操作系统 平台 情况 粒度 必要 事件 例句 地方 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网是第几次科技革命的成果 上海卓越科技互联网 中关村互联网科技集团 互联网是不是新科技 北京互联网科技 南京欣网互联网科技 西安互联网科技公司 互联网科技小额贷款 镁科技互联网资讯平台 天速互联网络科技有限公司 互联网时代科技改变生活 厦门千工互联网科技有限公司 苏州五指互联网络科技有限 中国互联网十大科技股排名 畅思互联网科技 乌鲁木齐新华智原互联网科技学校 有人说阿里系是互联网科技企业 广西科技产业互联网是什么 三亚科技创新互联网基地 东风日产互联网科技公司叫什么 北京华百购互联网科技有限公司 恒生互联网科技指数跳水 用友工业互联网科技发展 中科明德北京互联网科技 容联科技互联网电商 美国五大互联网科技公司市值多少 科技互联网专业工作会议发言稿 互联网科技大佬云集 互联网科技创业有什么好项目 科技发展第三阶段互联网时代
0