zoukankan      html  css  js  c++  java
  • [20170207]11G审计日志清除.txt

     

     
    lfreeali 2017-02-07 10:10:27 浏览558
     

    [20170207]11G审计日志清除.txt

    --//11G缺省打开了许多审计,比如登录审计(我个人建议仅仅审计不成功的登录,特别对登录密集的系统),如果系统上线时没有关闭或者取 
    --//消一些审计,sys.aud$在system表空间,会导致空间异常增加,而且占用system表空间不是很合理.必须建立良好的监测清理机制.

    1.环境:

    SCOTT@book> @ &r/ver1 
    PORT_STRING                    VERSION        BANNER 
    ------------------------------ -------------- -------------------------------------------------------------------------------- 
    x86_64/Linux 2.4.xx            11.2.0.4.0     Oracle Database 11g Enterprise Edition Release 11.2.0.4.0 - 64bit Production

    SYS@book> show parameter audit 
    NAME                  TYPE     VALUE 
    --------------------- -------- -------------------------------- 
    audit_file_dest       string   /u01/app/oracle/admin/book/adump 
    audit_sys_operations  boolean  FALSE 
    audit_syslog_level    string 
    audit_trail           string   DB, EXTENDED 
    --//这是安装完成后缺省设置.

    SYS@book> select count(*) from sys.aud$; 
      COUNT(*) 
    ---------- 
          1049 
    --//我的测试环境,已经关闭登录审计,仅仅审计不成功的登录.

    2.移动SYS.AUD$ ,SYS.FGA_LOG$到别的表空间: 
    SYS@book> SELECT OWNER, SEGMENT_NAME, TABLESPACE_NAME FROM   DBA_SEGMENTS WHERE  SEGMENT_NAME IN ('AUD$', 'FGA_LOG$');

    OWNER  SEGMENT_NAME         TABLESPACE_NAME 
    ------ -------------------- ------------------------------ 
    SYS    FGA_LOG$             SYSTEM 
    SYS    AUD$                 SYSTEM

    --以sys用户执行: 
    BEGIN 
      DBMS_AUDIT_MGMT.set_audit_trail_location( 
        audit_trail_type           => DBMS_AUDIT_MGMT.AUDIT_TRAIL_DB_STD, 
        audit_trail_location_value => 'users'); 
    END; 
    /

    --//注意如果aud$占用空间很大,执行上述命令很慢.可以先在执行前做一些清理工作. 
    --//我这里是测试环境,仅仅移动到users,个人建议建立单独的表空间来保持这些审计信息.

    ALTER USER SYS QUOTA UNLIMITED ON users;

    --说明: 
    The AUDIT_TRAIL_TYPE parameter is specified using one of three constants. 
    DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD: Standard audit trail (AUD$). 
    DBMS_AUDIT_MGMT.AUDIT_TRAIL_FGA_STD: Fine-grained audit trail (FGA_LOG$). 
    DBMS_AUDIT_MGMT.AUDIT_TRAIL_DB_STD: Both standard and fine-grained audit trails. 
    ----------

    SYS@book> SELECT OWNER, SEGMENT_NAME, TABLESPACE_NAME FROM   DBA_SEGMENTS WHERE  SEGMENT_NAME IN ('AUD$', 'FGA_LOG$'); 
    OWNER  SEGMENT_NAME         TABLESPACE_NAME 
    ------ -------------------- ------------------------------ 
    SYS    FGA_LOG$             USERS 
    SYS    AUD$                 USERS

    3.设置清理的初始化工作: 
    --//任由日志文件增加不是很合理,必须建立合理的清除机制,而oracle缺省并没有做清理的初始化工作: 
    SET SERVEROUTPUT ON 
    BEGIN 
      IF sys.DBMS_AUDIT_MGMT.is_cleanup_initialized(sys.DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD) THEN 
        DBMS_OUTPUT.put_line('YES'); 
      ELSE 
        DBMS_OUTPUT.put_line('NO'); 
      END IF; 
    END; 

    NO 
    PL/SQL procedure successfully completed.

    --//返回NO,说明没有做清理的初始化工作.

    SYS@book> SELECT *  FROM DBA_AUDIT_MGMT_CONFIG_PARAMS; 
    PARAMETER_NAME                 PARAMETER_VALUE      AUDIT_TRAIL 
    ------------------------------ -------------------- ---------------------------- 
    DB AUDIT TABLESPACE            USERS                STANDARD AUDIT TRAIL 
    DB AUDIT TABLESPACE            USERS                FGA AUDIT TRAIL 
    AUDIT FILE MAX SIZE            10000                OS AUDIT TRAIL 
    AUDIT FILE MAX SIZE            10000                XML AUDIT TRAIL 
    AUDIT FILE MAX AGE             5                    OS AUDIT TRAIL 
    AUDIT FILE MAX AGE             5                    XML AUDIT TRAIL 
    DB AUDIT CLEAN BATCH SIZE      10000                STANDARD AUDIT TRAIL 
    DB AUDIT CLEAN BATCH SIZE      10000                FGA AUDIT TRAIL 
    OS FILE CLEAN BATCH SIZE       1000                 OS AUDIT TRAIL 
    OS FILE CLEAN BATCH SIZE       1000                 XML AUDIT TRAIL 
    10 rows selected.

    --//定义24小时执行1次清理. 
    BEGIN 
      SYS.dbms_audit_mgmt.init_cleanup( 
        audit_trail_type         => SYS.DBMS_AUDIT_MGMT.AUDIT_TRAIL_DB_STD, 
        default_cleanup_interval => 24 /* hours */); -- PARAMETER NOT USED ON 11GR2 (FUTURE USE) 
    END; 
    /

    SET SERVEROUTPUT ON 
    BEGIN 
      IF sys.DBMS_AUDIT_MGMT.is_cleanup_initialized(sys.DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD) THEN 
        DBMS_OUTPUT.put_line('YES'); 
      ELSE 
        DBMS_OUTPUT.put_line('NO'); 
      END IF; 
    END; 
    /

    YES 
    PL/SQL procedure successfully completed.

    --//返回YES,说明已经做清理的初始化工作.

    SYS@book> SELECT *  FROM DBA_AUDIT_MGMT_CONFIG_PARAMS; 
    PARAMETER_NAME                 PARAMETER_VALUE      AUDIT_TRAIL 
    ------------------------------ -------------------- ---------------------------- 
    DB AUDIT TABLESPACE            USERS                STANDARD AUDIT TRAIL 
    DB AUDIT TABLESPACE            USERS                FGA AUDIT TRAIL 
    AUDIT FILE MAX SIZE            10000                OS AUDIT TRAIL 
    AUDIT FILE MAX SIZE            10000                XML AUDIT TRAIL 
    AUDIT FILE MAX AGE             5                    OS AUDIT TRAIL 
    AUDIT FILE MAX AGE             5                    XML AUDIT TRAIL 
    DB AUDIT CLEAN BATCH SIZE      10000                STANDARD AUDIT TRAIL 
    DB AUDIT CLEAN BATCH SIZE      10000                FGA AUDIT TRAIL 
    OS FILE CLEAN BATCH SIZE       1000                 OS AUDIT TRAIL 
    OS FILE CLEAN BATCH SIZE       1000                 XML AUDIT TRAIL 
    DEFAULT CLEAN UP INTERVAL      24                   STANDARD AUDIT TRAIL 
    DEFAULT CLEAN UP INTERVAL      24                   FGA AUDIT TRAIL 
    12 rows selected. 
    --//看最后2行DEFAULT CLEAN UP INTERVAL,DEFAULT CLEAN UP INTERVAL.已经定义了清理间隔时间.

    4.建立schedule,清理日志: 
    --//oracle处理这些问题的机制有点繁琐,首先是标记那些需要clean,然后交由清除程序处理.

    BEGIN 
      DBMS_SCHEDULER.CREATE_JOB ( 
        job_name   => 'SYS.DAILY_AUDIT_ARCHIVE_TIMESTAMP', 
        job_type   => 'PLSQL_BLOCK', 
        job_action => 'BEGIN DBMS_AUDIT_MGMT.SET_LAST_ARCHIVE_TIMESTAMP(AUDIT_TRAIL_TYPE => DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD,LAST_ARCHIVE_TIME => SYSDATE-30); END;', 
        start_date => sysdate, 
        repeat_interval => 'FREQ=HOURLY;INTERVAL=24', 
        enabled    =>  TRUE, 
        comments   => 'Create an archive timestamp' 
      ); 
    END; 

    --//每个小时检查1次,标记30天前的日志.一些参数可以根据需要自己调整.我自己的测试保留30天.建议生产系统保留100天或者半年.

    $ cd /u01/app/oracle/admin/book/adump 
    $ ls -ltr 
    total 388 
    -rw-r----- 1 oracle oinstall  795 2016-12-09 09:03:07 book_s000_64359_20161209090307799573143795.aud 
    -rw-r----- 1 oracle oinstall  795 2016-12-16 09:06:47 book_s000_49594_20161216090647626121143795.aud 
    -rw-r----- 1 oracle oinstall  795 2017-01-09 09:11:32 book_s000_57001_20170109091132668817143795.aud 
    -rw-r----- 1 oracle oinstall  784 2017-01-18 16:11:12 book1_ora_40227_20170118161112745444143795.aud 
    -rw-r----- 1 oracle oinstall  778 2017-01-18 16:11:12 book1_ora_40185_20170118161112689635143795.aud 
    -rw-r----- 1 oracle oinstall  981 2017-01-18 16:12:04 book1_ora_40237_20170118161156064475143795.aud 
    ...

    --//检查schedule是否启动. 
    SYS@book> @ &r/pt2 'SELECT OWNER,JOB_NAME,JOB_STYLE,JOB_CREATOR,JOB_TYPE,JOB_ACTION,START_DATE,REPEAT_INTERVAL,ENABLED,STATE,SYSTEM,NLS_ENV,COMMENTS FROM dba_scheduler_jobs WHERE job_name LIKE ''%AUDIT%''' 
    old   6:     from table(xmlsequence(cursor( &1 ))) 
    new   6:     from table(xmlsequence(cursor( SELECT OWNER,JOB_NAME,JOB_STYLE,JOB_CREATOR,JOB_TYPE,JOB_ACTION,START_DATE,REPEAT_INTERVAL,ENABLED,STATE,SYSTEM,NLS_ENV,COMMENTS FROM dba_scheduler_jobs WHERE job_name LIKE '%AUDIT%' ))) 
    ROW_NUM    COL_NUM COL_NAME        COL_VALUE 
    ------- ---------- --------------- ---------------------------------------------------------------------------------------------------- 
          1          1 OWNER           SYS 
                     2 JOB_NAME        DAILY_AUDIT_ARCHIVE_TIMESTAMP 
                     3 JOB_STYLE       REGULAR 
                     4 JOB_CREATOR     SYS 
                     5 JOB_TYPE        PLSQL_BLOCK 
                     6 JOB_ACTION      BEGIN DBMS_AUDIT_MGMT.SET_LAST_ARCHIVE_TIMESTAMP(AUDIT_TRAIL_TYPE => DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD 
                     7 START_DATE      2017-02-07 10:06:40.000000 +08:00 
                     8 REPEAT_INTERVAL FREQ=HOURLY;INTERVAL=24 
                     9 ENABLED         TRUE 
                    10 STATE           SCHEDULED 
                    11 SYSTEM          TRUE 
                    12 NLS_ENV         NLS_LANGUAGE='AMERICAN' NLS_TERRITORY='AMERICA' NLS_CURRENCY='$' NLS_ISO_CURRENCY='AMERICA' NLS_NUME 
                    13 COMMENTS        Create an archive timestamp 
    13 rows selected.)

    --//建立清理程序: 
    BEGIN 
      SYS.DBMS_AUDIT_MGMT.CREATE_PURGE_JOB( 
        AUDIT_TRAIL_TYPE           => SYS.DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD, 
        AUDIT_TRAIL_PURGE_INTERVAL => 24 /* hours */, 
        AUDIT_TRAIL_PURGE_NAME     => 'Daily_Audit_Purge_Job', 
        USE_LAST_ARCH_TIMESTAMP    => TRUE 
      ); 
    END; 
    /

    --//检查schedule是否建立. 
    SYS@book> SELECT JOB_NAME,JOB_STATUS,AUDIT_TRAIL,JOB_FREQUENCY FROM DBA_AUDIT_MGMT_CLEANUP_JOBS; 
    JOB_NAME              JOB_STAT AUDIT_TRAIL           JOB_FREQUENCY 
    --------------------- -------- --------------------- ------------------------ 
    DAILY_AUDIT_PURGE_JOB ENABLED  STANDARD AUDIT TRAIL  FREQ=HOURLY;INTERVAL=24

    SYS@book> @ &r/pt2 'SELECT OWNER,JOB_NAME,JOB_STYLE,JOB_CREATOR,JOB_TYPE,JOB_ACTION,START_DATE,REPEAT_INTERVAL,ENABLED,STATE,SYSTEM,NLS_ENV,COMMENTS FROM dba_scheduler_jobs WHERE job_name LIKE ''%AUDIT%''' 
    old   6:     from table(xmlsequence(cursor( &1 ))) 
    new   6:     from table(xmlsequence(cursor( SELECT OWNER,JOB_NAME,JOB_STYLE,JOB_CREATOR,JOB_TYPE,JOB_ACTION,START_DATE,REPEAT_INTERVAL,ENABLED,STATE,SYSTEM,NLS_ENV,COMMENTS FROM dba_scheduler_jobs WHERE job_name LIKE '%AUDIT%' ))) 
    ROW_NUM    COL_NUM COL_NAME        COL_VALUE 
    ------- ---------- --------------- ---------------------------------------------------------------------------------------------------- 
          1          1 OWNER           SYS 
                     2 JOB_NAME        DAILY_AUDIT_ARCHIVE_TIMESTAMP 
                     3 JOB_STYLE       REGULAR 
                     4 JOB_CREATOR     SYS 
                     5 JOB_TYPE        PLSQL_BLOCK 
                     6 JOB_ACTION      BEGIN DBMS_AUDIT_MGMT.SET_LAST_ARCHIVE_TIMESTAMP(AUDIT_TRAIL_TYPE => DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD 
                     7 START_DATE      2017-02-07 10:06:40.000000 +08:00 
                     8 REPEAT_INTERVAL FREQ=HOURLY;INTERVAL=24 
                     9 ENABLED         TRUE 
                    10 STATE           SCHEDULED 
                    11 SYSTEM          TRUE 
                    12 NLS_ENV         NLS_LANGUAGE='AMERICAN' NLS_TERRITORY='AMERICA' NLS_CURRENCY='$' NLS_ISO_CURRENCY='AMERICA' NLS_NUME 
                    13 COMMENTS        Create an archive timestamp 
          2          1 OWNER           SYS 
                     2 JOB_NAME        DAILY_AUDIT_PURGE_JOB 
                     3 JOB_STYLE       REGULAR 
                     4 JOB_CREATOR     SYS 
                     5 JOB_TYPE        PLSQL_BLOCK 
                     6 JOB_ACTION      BEGIN DBMS_AUDIT_MGMT.CLEAN_AUDIT_TRAIL(1, TRUE);  END; 
                     7 START_DATE      2017-02-07 10:10:39.837281 +08:00 
                     8 REPEAT_INTERVAL FREQ=HOURLY;INTERVAL=24 
                     9 ENABLED         TRUE 
                    10 STATE           SCHEDULED 
                    11 SYSTEM          TRUE 
                    12 NLS_ENV         NLS_LANGUAGE='AMERICAN' NLS_TERRITORY='AMERICA' NLS_CURRENCY='$' NLS_ISO_CURRENCY='AMERICA' NLS_NUME 
                    13 COMMENTS        Audit clean job = 'Daily_Audit_Purge_Job' 
    26 rows selected.)

    --//这样就不必要困惑aud$异常增加,以及审计目录下存在许多文件.

    SYS@book> select count(*) from sys.aud$; 
      COUNT(*) 
    ---------- 
           513 
    --//现在已经删除了一部分数据.

    5.补充关闭登录登录的命令:

    NOAUDIT CREATE SESSION WHENEVER SUCCESSFUL;

  • 相关阅读:
    Java实验--基于Swing的简单的歌曲信息管理系统(三)
    Java实验--基于Swing的简单的歌曲信息管理系统(二)
    Java实验--基于Swing的简单的歌曲信息管理系统(一)
    《下厨房》移动应用开发需求分析(第二版)
    《下厨房》移动应用开发需求分析
    结对编程之黄金点游戏
    常用JS正则
    JS正则表达式
    transition-
    DOM与BOM区别js
  • 原文地址:https://www.cnblogs.com/yaoyangding/p/12259499.html
Copyright © 2011-2022 走看看