目 录CONTENT

文章目录

oracle 关闭、清理Audit审计

暮渔木鱼
2024-04-01 / 0 评论 / 0 点赞 / 9 阅读 / 0 字 / 正在检测是否收录...

文章转载自墨天轮:oracle 关闭、清理Audit审计

Audit说明
1.1 审计
审计(Audit)用于监视用户所执行的数据库操作,审计记录可存在数据字典表(称为审计记录:存储在system表空间中的 SYS.AUD$表中,可通过视图dba_audit_trail查看)或操作系统审计记录中(默认位置为 $ORACLE_BASE/admin/$ORACLE_SID/adump/)。
当数据库的审计是使能的,在语句执行阶段产生审计记录。审计记录包含有审计的操作、用户执行的操作、操作的日期和时间等信息。

不管你是否打开数据库的审计功能,以下这些操作系统会强制记录:用管理员权限连接Instance;启动数据库;关闭数据库。

1.2 Oracle审计功能

审计是对选定的用户动作的监控和记录,通常用于:
审查可疑的活动。例如:数据被非授权用户所删除,此时安全管理员可决定对该数据库的所有连接进行审计,以及对数据库的所有表的成功地或不成功地删除进行审计。
监视和收集关于指定数据库活动的数据。例如:DBA可收集哪些被修改、执行了多少次逻辑的I/O等统计数据。

Oracle 11g缺省安装数据库启动了audit功能,导致oracle不断累积sys.aud$表及相关索引数据量增加;
如果导致表空间(SYSTEM)满了,在alert日志中将会报 ORA-1654: unable to extend index SYS....错误。

有时会发现数据库system表空间紧张,一般发现都是AUD$审计表占用大。

查看SYSTEM表空间哪个对象占用较大

SQL> SELECT *
  FROM (SELECT SEGMENT_NAME, SUM(BYTES) / 1024 / 1024 MB
          FROM DBA_SEGMENTS
         WHERE TABLESPACE_NAME = 'SYSTEM'
         GROUP BY SEGMENT_NAME
         ORDER BY 2 DESC)
 WHERE ROWNUM < 10;

如果不用到审计功能,建议关闭审计。

查看审计目录及审计级别,默认audit_trail 为DB

SQL> show parameter audit
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
audit_file_dest                      string      /u01/app/oracle/admin/orcl/adump
audit_sys_operations                 boolean     FALSE
audit_syslog_level                   string
audit_trail                          string      DB

关闭审计功能,设置 audit_trail 为 NONE:

1、取消audit,将初始化参数audit_trail设置为NONE

alter system set audit_trail=none scope=spfile;

2、然后重启数据库.

shutdown immediate;
sqlplus / as sysdba
startup;

SQL> show parameter audi;

NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
audit_file_dest                      string      /u01/app/oracle/admin/orcl/adump
audit_sys_operations                 boolean     FALSE
audit_syslog_level                   string
audit_trail                          string      NONE

audit_trail 值为 NONE**,表示已关闭审计功能。**

清空 SYS.AUD$表

SQL> truncate table SYS.AUD$;

-- 查看
SQL> select count(*) from aud$;
  COUNT(*) 
----------
         0

但数据库目录.aud文件依旧存在,如:oracle路径。

$ ls /u01/app/oracle/admin/orcl/adump|wc -l
406

删除服务器上的.aud文件
执行存储过程

SQL> BEGIN
DBMS_AUDIT_MGMT.CLEAN_AUDIT_TRAIL(
DBMS_AUDIT_MGMT.AUDIT_TRAIL_OS,
FALSE);
END;
/
PL/SQL procedure successfully completed.

再次查看 .aud 文件数,绝大部分的AUDIT记录文件都被清除

$ ls /u01/app/oracle/admin/orcl/adump|wc -l
27

在 oracle dataguard备库下,虽然已关闭审计功能,但有时还可以看到很多.aud 文件。备库执行SQL存储过程删除会提示只读。

增加cron任务删除30天前的审计日志

# 删除30天前审计日志
00 22 * * * find /u01/app/oracle/admin/orcl/adump -name "*.aud" -mtime +31 -exec rm -f {} ;

备注:
如果有很多这样的小文件,比如 100万以上的小文件时,rm删除会非常慢。可以变相用rsync方式删除。如:

rsync --delete-before -a -H --stats /home/oracle/null/ /u01/app/oracle/admin/orcl/adump/

/home/oracle/null/ 为空目录

/u01/app/oracle/admin/orcl/adump/ 为要清空的目录

rsync方式删除 2分钟左右可以清理100万的文件。

0
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin

评论区