日期:2014-05-16  浏览次数:20542 次

Oracle数据库短时间磁盘空间占用超过88%问题分析

1.问题描述
维护人员向中心报故障称数据库/dev/fslv00_使用率超过88%。

2.问题分析过程
经排查,发现数据库所在小型机/oracle/admin/sid/adump/目录下产生大量*.aud文件。

aud文件为Oracle数据库审计文件,在数据库审计功能关闭的情况下,只有通过sys用户(包括sysdba,sysoper权限用户)远程连接数据库时才会产生该文件。

经查,有个其他部门的新应用使用sys用户对数据库进行监控。


3.问题解决方案
临时解决方案:提供脚本定期删除*.aud文件
最终解决方案:将sys用户改为system用户即可


4.相关命令说明

查看哪个目录增长最快
du -ks * | sort -n

通过以下语句可以查看数据库审计功能是否开启(audit_trail 为 NONE,audit_sys_operations 为 FALSE 表示未开启):
SQL> show parameter audit
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
audit_file_dest                      string      /oracle/admin/sid/adump
audit_sys_operations                 boolean     FALSE
audit_syslog_level                   string
audit_trail                          string      NONE

Audit_sys_operations:
默认为false,当设置为true时,所有sys用户(包括以sysdba,sysoper身份登录的用户)的操作都会被记录,audit trail不会写在aud$表中,这个很好理解,如果数据库还未启动aud$不可用,那么像conn /as sysdba这样的连接信息,只能记录在其它地方。如果是windows平台,audti trail会记录在windows的事件管理中,如果是linux/unix平台则会记录在audit_file_dest参数指定的文件中。

Audit_trail:
None:是默认值,不做审计;
DB:将audit trail 记录在数据库的审计相关表中,如aud$,审计的结果只有连接信息;
DB,Extended:这样审计结果里面除了连接信息还包含了当时执行的具体语句;
OS:将audit trail 记录在操作系统文件中,文件名由audit_file_dest参数指定;
XML:10g里新增的。

5.sys和system以及sysdba和sysoper区别
参考http://www.cnblogs.com/afant/archive/2009/01/07/1371041.html