步骤 1 - 确定 ASM 审计目录

有三个目录可能包含审计文件。
必须管理这三者以控制过度增长。

两个默认位置基于 ASM 实例启动时的环境变量设置。
要确定系统的默认位置,请以 Grid Infrastructure 软件所有者(通常是 oracle 或者 grid)的身份登录,设置环境以便可以连接到 ASM 实例,然后运行下面提供的“echo”命令。
在此示例中,两个默认审计目录是 /u01/app/11.2.0/grid/rdbms/audit 和 /u01/app/oracle/admin/+ASM1/adump。

$ . /usr/local/bin/oraenv
ORACLE_SID = [+ASM1] ? +ASM1
The Oracle base for ORACLE_HOME=/u01/app/11.2.0/grid is /u01/app/oracle
$ echo $ORACLE_HOME/rdbms/audit
/u01/app/11.2.0/grid/rdbms/audit
$ echo $ORACLE_BASE/admin/$ORACLE_SID/adump
/u01/app/oracle/admin/+ASM1/adump

通过使用 SQL*Plus 登录 ASM 实例并运行以下语句,可以找到第三个 ASM 审计目录:

$ sqlplus '/ as sysasm'
SQL> select value from v$parameter where name = 'audit_file_dest';
VALUE
-------------------------------------------------------------------------------
/u01/app/11.2.0/grid/rdbms/audit

所有三个 ASM 审计目录都将使用 cron 进行管理。

步骤 2 - 授予 Grid Infrastructure 软件所有者使用 cron 的权限

审计文件归 Grid Infrastructure 软件所有者所有,通常是 oracle 或者 grid。
移动或者删除审计文件的命令必须以 Grid Infrastructure 软件所有者的身份运行。
以 root 身份将 Grid Infrastructure 软件所有者添加到 /etc/cron.allow 文件。
下面的示例使用用户 oracle。

# echo oracle >> /etc/cron.allow
如何使用 cron 管理 Oracle 数据库审计文件目录增长(仅限 ASM 实例)

如果不定期维护,ASM 实例的审计文件目标目录可能会增长到包含大量文件。
拥有大量文件可能会导致文件系统耗尽可用磁盘空间或者 inode,或者可能导致 Oracle 由于文件系统目录缩放限制而运行非常缓慢,这可能会导致 ASM 实例挂起启动。

这篇文章解释了如何使用 Linux cron 实用程序来管理审计文件目标目录中的文件数量。
必须为每个数据库服务器上的 ASM 实例执行这些步骤。
本文档仅说明如何管理 ASM 实例的审计文件目标目录。

on  it road.com

第 3 步 - 将命令添加到 crontab 以每周管理审计文件

作为 Grid Infrastructure 软件所有者,向 crontab 文件添加一个条目。
以下命令将启动 vi(P) 命令编辑会话以编辑现有的 crontab 文件或者创建一个新的 crontab 文件(如果尚不存在)。

$ crontab -e

将以下内容作为一行添加到此文件中:

0 2 * * sun /usr/bin/find /u01/app/11.2.0/grid/rdbms/audit /u01/app/11.2.0/grid/rdbms/audit /u01/app/oracle/admin/+ASM1/adump -maxdepth 1 -name '*.aud' -mtime +30 -delete

这个 crontab 条目在每周日凌晨 2 点执行 find 命令。
find 命令删除三个 ASM 审计目录中超过 30 天的所有审计文件。

如果我们希望将审计文件保留更长的时间,而不是使用 find(1) 命令删除审计文件,我们可以使用如下所示的 crontab 条目将审计文件存档到不同的目录或者存储设备:

0 2 * * sun /usr/bin/find /u01/app/11.2.0/grid/rdbms/audit /u01/app/11.2.0/grid/rdbms/audit /u01/app/oracle/admin/+ASM1/adump -maxdepth 1 -name '*.aud' -mtime +30 -execdir /bin/mv {} /archived_audit_dir \;

这个 crontab 条目在每周日凌晨 2 点执行 find 命令。
find 命令将三个 ASM 审计目录中超过 30 天的所有审计文件移动到 /archived_audit_dir。
使用 vi 命令 ([ESC] :wq) 保存并退出 crontab 文件,然后验证 crontab 内容。

$ crontab -l
0 2 * * sun /usr/bin/find /u01/app/11.2.0/grid/rdbms/audit /u01/app/11.2.0/grid/rdbms/audit /u01/app/oracle/admin/+ASM1/adump -maxdepth 1 -name '*.aud' -mtime +30 -delete

故障排除

如果未删除旧审计文件,请执行以下步骤:

  1. 要监控 cron 是否按计划执行 find 命令并作为正确的 Grid Infrastructure 软件所有者,请以 root 用户身份查看 /var/log/cron 文件,查看如下条目:
Nov 20 02:00:01 dm01db01 crond[6936]: (oracle) CMD (/usr/bin/find /u01/app/11.2.0/grid/rdbms/audit /u01/app/11.2.0/grid/rdbms/audit /u01/app/oracle/admin/+ASM1/adump -maxdepth 1 -name '*.aud' -mtime +60 -delete)
  1. 以拥有 crontab 条目的用户身份(即 Grid Infrastructure 软件所有者)登录。
    手动运行 find 命令以验证命令语法的正确性以及没有报告错误。
日期:2020-09-17 00:10:55 来源:oir作者:oir