Oracle AUD清理
Oracle中的AUD是其内置审计功能,可以记录数据库中所有的操作和事件。由于Oracle数据库极其复杂,AUD所产生的审计记录也相当庞大。如果没有进行及时的清理,会大量占用磁盘空间,甚至导致数据库崩溃。因此,AUD的清理是数据库维护和性能优化的必要手段之一。
AUD的清理通常包括以下步骤:
1. 确定清理策略
即确定哪些日志需要保留,哪些需要清理。这取决于数据库的大小、审计记录量、保留周期等因素。
2. 停止审计
在执行清理之前,建议先停止审计。这可以减轻数据库的负担,避免清理过程中新产生的审计记录。
3. 清理AUD
根据清理策略,使用Oracle提供的工具或自行编写脚本,定期清理AUD。
下面以Oracle 12c个人版为例,介绍清理AUD的具体步骤。
1. 确定清理策略
Oracle 12c的AUD将审计日志存储在数据库中的sys.aud$表中。此表的结构如下:
SQL> desc sys.aud$ Name Null? Type ----------------------------------------- -------- ---------------------------- AUDIT_ID NOT NULL NUMBER SESSION_ID NOT NULL NUMBER ENTRY_ID NOT NULL NUMBER STATEMENT_ID VARCHAR2(40) USERID NOT NULL VARCHAR2(30) AUTH$PRIVILEGES VARCHAR2(40) TIMESTAMP# NOT NULL TIMESTAMP(6) COMMENT$TEXT CLOB CLIENT_ID NOT NULL VARCHAR2(64) ...
根据实际情况,我们可以选取几个关键字段作为清理依据:
- AUDIT_ID:审计ID,递增的唯一标识符。
- TIMESTAMP#:审计记录时间。
- COMMENT$TEXT:审计记录内容。
根据这些字段,可以设定清理策略,例如:仅保留过去7天的审计记录,删除其余的AUD。
2. 停止审计
在Oracle 12c中,停止审计可以使用以下语句:
SQL> noaudit all;
也可以使用以下语句,停止指定用户的审计:
SQL> noaudit select on hr.employees by scott;
3. 清理AUD
清理AUD可以使用Oracle提供的audctl工具。在Linux系统中,该工具位于$ORACLE_HOME/rdbms/audit目录下。进入该目录,可以查看当前的AUD文件列表:
$ cd $ORACLE_HOME/rdbms/audit $ ls -ltr -rw-r-----. 1 oracle oinstall 15244 May 21 2021 adump -rw-r-----. 1 oracle oinstall 15246 May 22 2021 adump_1 -rw-r-----. 1 oracle oinstall 15281 May 23 2021 adump_2
其中,adump是当前使用的AUD文件,adump_1和adump_2是备份文件。在清理之前,需要备份或归档AUD文件,以防止清理错误。
清理AUD可以使用如下命令:
$ audctl -clean
这个命令将清理所有过期的AUD文件。过期是根据清理策略中的“保留周期”来确定的。如果保留周期是7天,则超过7天的AUD文件将被清理。清理后的AUD文件列表如下:
$ ls -ltr -rw-r-----. 1 oracle oinstall 0 May 28 09:01 adump -rw-r-----. 1 oracle oinstall 15244 May 21 2021 adump.0 -rw-r-----. 1 oracle oinstall 238 May 28 09:02 adump_3 -rw-r-----. 1 oracle oinstall 15244 May 28 09:02 adump_4
可以看到,现在的AUD文件是adump,adump_3和adump_4,其中adump是新生成的空文件。其它的AUD文件已经被清理了。
总结
AUD的清理是数据库维护中十分重要的一个环节。通过制定清理策略、停止审计和使用工具进行清理,可以保证数据库的健康运行。注意,在清理AUD之前,一定要先备份或归档原有的AUD文件,避免意外导致的数据损失。
本文链接:https://my.lmcjl.com/post/12999.html
展开阅读全文
4 评论