oracle aud清理

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 评论

留下您的评论.