审计就是对用户行为的检查,即监控用户行为,保证数据安全,记录用户的操作。一般对于数据库来说oracle会对用户登入,退出会话,用sys用户打开和关闭数据库都会建立审计,这种审计一般叫强制性审计。
Oracle 强制审计
不管你是否打开数据库的审计功能,以下这些操作系统会强制记录:用管理员权限连接Instance;启动数据库;关闭数据库。
强制审计变态的功能:
(1)用SYSDBA或者SYSOPER权限登录数据库(conn / as sysdba)
(2)敢startup数据库
(3)敢shutdown数据库
oracle就给你在$ORACLE_BASE/admin/$ORACLE_SID/adump 目录中记.aud的文件,所以,
开了DB功能,会同时将审计日志记在AUD$表中和操作系统aud文件中。设置为NONE,仍然会而且毫无其他办法的将记录在操作系统aud文件中。
*数据库的表为:sys.aud$
*操作系统目录为:$ORACLE_BASE/admin/实例名/adump/
可以查看强制审计产生的日志里面存放的内容,记录的是对sys用户登入进行的审计,强制审计是不对普通用户进行审计的。
可通过SQL>show parameter audit 查询到)
SQL> show parameter audit; --adump存放着强制审计日志的位置
NAME TYPE
------------------------------------ ----------------------
VALUE
------------------------------
audit_file_dest string
/u01/app/oracle/admin/oradb/ad
ump
audit_sys_operations boolean
FALSE
audit_syslog_level string
audit_trail string
DB, EXTENDED
[root@Database1 adump]# cd /u01/app/oracle/admin/oradb/adump/
[root@Database1 adump]# du -sh * --每个.adu文件4K大小
4.0K oradb_ora_7292_20180524091140445489143795.aud
4.0K oradb_ora_7329_20180524091848245869143795.aud
[root@Database1 adump]# cat oradb_ora_7292_20180524091140445489143795.aud
Audit file /u01/app/oracle/admin/oradb/adump/oradb_ora_7292_20180524091140445489143795.aud
Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
ORACLE_HOME = /u01/app/oracle/product/11.2.0/db_1
System name: Linux
Node name: Database1
Release: 2.6.39-400.17.1.el6uek.x86_64
Version: #1 SMP Fri Feb 22 18:16:18 PST 2013
Machine: x86_64
VM name: VMWare Version: 6
Instance name: oradb
Redo thread mounted by this instance: 1
Oracle process number: 31
Unix process pid: 7292, image: oracle@Database1 (TNS V1-V3)
Thu May 24 09:11:40 2018 +08:00
LENGTH : '160'
ACTION :[7] 'CONNECT'
DATABASE USER:[1] '/'
PRIVILEGE :[6] 'SYSDBA'
CLIENT USER:[6] 'oracle'
CLIENT TERMINAL:[5] 'pts/1'
STATUS:[1] '0'
DBID:[10] '2725871604'
是不是很变态?所以这个目录长期不清理的话,会积压大量*.aud文件长期大量不删除的话,会影响到操作系统inodes,所以,小伙伴们:如果为DB,记得定期清空aud$表和adump下面的.aud文件。
SQL>truncate table sys.aud$;
如果你不想用DB功能,可以设置关闭
SQL>alter system set audit_trail=none scope=spfile;
注意,需要重启数据库
SQL>shutdown immediate;
SQL>startup;
如果为NONE,记得清空aud文件或者配置crontab定时任务定时清空aud文件。
注意:不要直接删除adump目录,否则,你会sqlplus不了数据库。
手动清理:
--进入审计日志目录:
cd $ORACLE_BASE/admin/$ORACLE_SID/adump
删除3个月前的审计文件:find ./ -type f -name "*.aud" -mtime +91|xargs rm -f
一次清空所有审计文件:find ./ -type f -name "*.aud"|xargs rm-f