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

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

--//以前写的链接:http://blog.itpub.net/267265/viewspace-2133145/
--//我当时写存在许多问题,仅仅清除sys.aud$内容,参数audit_file_dest目录的文件不清除,而这里参数大量的aud文件,重新测试看看.

1.环境:
SYS@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

2.清理工作:
http://www.oracle-base.com/articles/11g/AuditingEnchancements_11gR2.php
======================================================
-- Constants  注意重叠问题.
-- Audit Trail types
--
AUDIT_TRAIL_AUD_STD           CONSTANT NUMBER := 1;
AUDIT_TRAIL_FGA_STD           CONSTANT NUMBER := 2;
--
-- Both AUDIT_TRAIL_AUD_STD and AUDIT_TRAIL_FGA_STD
AUDIT_TRAIL_DB_STD            CONSTANT NUMBER := 3;
--
AUDIT_TRAIL_OS                CONSTANT NUMBER := 4;
AUDIT_TRAIL_XML               CONSTANT NUMBER := 8;
--
-- Both AUDIT_TRAIL_OS and AUDIT_TRAIL_XML
AUDIT_TRAIL_FILES             CONSTANT NUMBER := 12;
--
-- All above audit trail types
AUDIT_TRAIL_ALL               CONSTANT NUMBER := 15;
======================================================

--//注:我当时选择AUDIT_TRAIL_AUD_STD,现在选择全部(AUDIT_TRAIL_ALL).直接使用数字15应该也可以.
--//首先清除前面的设置

exec DBMS_AUDIT_MGMT.DEINIT_CLEANUP(AUDIT_TRAIL_TYPE=>SYS.DBMS_AUDIT_MGMT.AUDIT_TRAIL_DB_STD);
exec dbms_scheduler.drop_job( job_name =>  'SYS.DAILY_AUDIT_ARCHIVE_TIMESTAMP' , force => TRUE);
exec SYS.DBMS_AUDIT_MGMT.DROP_PURGE_JOB( AUDIT_TRAIL_PURGE_NAME =>   'Daily_Audit_Purge_Job');

--//这些参考链接http://blog.itpub.net/267265/viewspace-2133145/,感叹一下看文档不认真.
--//这些步骤都是前面没有配置好,大家可以不看这些内容.我仅仅做一个记录.

3.初始化工作:

BEGIN
  DBMS_AUDIT_MGMT.init_cleanup(
    audit_trail_type         => DBMS_AUDIT_MGMT.AUDIT_TRAIL_ALL,
    default_cleanup_interval => 24 /* hours */);
END;
/

SET SERVEROUTPUT ON
BEGIN
  IF sys.DBMS_AUDIT_MGMT.is_cleanup_initialized(sys.DBMS_AUDIT_MGMT.AUDIT_TRAIL_ALL) THEN
    DBMS_OUTPUT.put_line('YES');
  ELSE
    DBMS_OUTPUT.put_line('NO');
  END IF;
END;
/
YES
PL/SQL procedure successfully completed.

--//返回YES,说明已经做清理的初始化工作.
--//这样设计对全部audit才有效.

SYS@xxxxx> column PARAMETER_VALUE format a30
SYS@xxxxx> column PARAMETER_name format a30
SYS@xxxxx> SELECT *  FROM DBA_AUDIT_MGMT_CONFIG_PARAMS;
PARAMETER_NAME                 PARAMETER_VALUE AUDIT_TRAIL
------------------------------ --------------- ----------------------------
DB AUDIT TABLESPACE            TSP_AUDIT       STANDARD AUDIT TRAIL
DB AUDIT TABLESPACE            TSP_AUDIT       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              FGA AUDIT TRAIL
DEFAULT CLEAN UP INTERVAL      24              OS AUDIT TRAIL
DEFAULT CLEAN UP INTERVAL      24              STANDARD AUDIT TRAIL
DEFAULT CLEAN UP INTERVAL      24              XML AUDIT TRAIL
14 rows selected.

--//看最后4行DEFAULT CLEAN UP INTERVAL,DEFAULT CLEAN UP INTERVAL,DEFAULT CLEAN UP INTERVAL,DEFAULT CLEAN UP INTERVAL
--//已经定义了清理间隔时间.

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

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);
                       DBMS_AUDIT_MGMT.SET_LAST_ARCHIVE_TIMESTAMP(AUDIT_TRAIL_TYPE => DBMS_AUDIT_MGMT.AUDIT_TRAIL_OS,LAST_ARCHIVE_TIME => SYSDATE-30);
                   END;',
    start_date => sysdate,
    repeat_interval => 'FREQ=HOURLY;INTERVAL=24',
    enabled    =>  TRUE,
    comments   => 'Create an archive timestamp'
  );
END;
/

--//注:这里AUDIT_TRAIL_TYPE 不能使用 DBMS_AUDIT_MGMT.AUDIT_TRAIL_ALL,必须1个1个写.
SYS@xxxxx> BEGIN DBMS_AUDIT_MGMT.SET_LAST_ARCHIVE_TIMESTAMP(AUDIT_TRAIL_TYPE => DBMS_AUDIT_MGMT.AUDIT_TRAIL_ALL,LAST_ARCHIVE_TIME => SYSDATE-1); END;
  2  /
BEGIN DBMS_AUDIT_MGMT.SET_LAST_ARCHIVE_TIMESTAMP(AUDIT_TRAIL_TYPE => DBMS_AUDIT_MGMT.AUDIT_TRAIL_ALL,LAST_ARCHIVE_TIME => SYSDATE-1); END;
*
ERROR at line 1:
ORA-46250: Invalid value for argument 'AUDIT_TRAIL_TYPE'
ORA-06512: at "SYS.DBMS_AUDIT_MGMT", line 61
ORA-06512: at "SYS.DBMS_AUDIT_MGMT", line 2233
ORA-06512: at line 1

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

BEGIN
  SYS.DBMS_AUDIT_MGMT.CREATE_PURGE_JOB(
    AUDIT_TRAIL_TYPE           => SYS.DBMS_AUDIT_MGMT.AUDIT_TRAIL_ALL,
    AUDIT_TRAIL_PURGE_INTERVAL => 24 /* hours */,
    AUDIT_TRAIL_PURGE_NAME     => 'Daily_Audit_Purge_Job',
    USE_LAST_ARCH_TIMESTAMP    => TRUE
  );
END;
/

4.相关视图查询:
SYS@xxxxx> select * from DBA_AUDIT_MGMT_CLEANUP_JOBS;
JOB_NAME                       JOB_STAT AUDIT_TRAIL                  JOB_FREQUENCY
------------------------------ -------- ---------------------------- -----------------------
DAILY_AUDIT_PURGE_JOB          ENABLED  ALL AUDIT TRAILS             FREQ=HOURLY;INTERVAL=24

SYS@xxxxx> select * from DBA_AUDIT_MGMT_LAST_ARCH_TS;
AUDIT_TRAIL          RAC_INSTANCE LAST_ARCHIVE_TS
-------------------- ------------ ---------------------------------------------------------------------------
STANDARD AUDIT TRAIL            0 2017-04-18 15:25:37.000000 +00:00
OS AUDIT TRAIL                  1 2017-04-18 15:25:37.000000 +08:00

SYS@xxxxx> select * from DBA_AUDIT_MGMT_CLEAN_EVENTS;
AUDIT_TRAIL          RAC_INSTANCE CLEANUP_TIME                      DELETE_COUNT WAS
-------------------- ------------ --------------------------------- ------------ ---
STANDARD AUDIT TRAIL            0 2017-05-17 00:52:47.741345 +00:00           87 NO
STANDARD AUDIT TRAIL            0 2017-05-18 00:52:47.701398 +00:00            1 NO
OS AUDIT TRAIL                  1 2017-05-18 07:25:13.354238 +00:00          285 NO

SYS@xxxxx> @ &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%'''
   ROW_NUM    COL_NUM COL_NAME         COL_VALUE
---------- ---------- ---------------- ----------------------------------------------------------------------------------------------------
         1          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(15, TRUE);  END;
                    7 START_DATE       2017-05-18 12:03:39.838620 +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'
         2          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_AUD

                    7 START_DATE       2017-05-18 15:21: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
26 rows selected.

时间: 2024-09-20 16:56:12

[20170518]11G审计日志清除3.txt的相关文章

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

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

[20170302]正常关闭数据库日志丢失3.txt

[20170302]正常关闭数据库日志丢失3.txt --//上午写了一篇[20170302]什么是fuzzy.txt ,链接 http://blog.itpub.net/267265/viewspace-2134551/ --//到最后恢复结束时fuzzy=NO,这时scn=13276966782.也就是将只有恢复到结束,oracle才会认为数据文件一致的. --//我本来想删除日志文件看看是否能open resetlogs的,结果报错. --//下午重新探究看看: 1.环境: SYS@boo

[20170307]dg环境下在线日志损坏12.txt

[20170307]dg环境下在线日志损坏12.txt http://blog.itpub.net/267265/viewspace-2134665/ http://blog.itpub.net/267265/viewspace-2134481/ --//前面的链接我测试了如果日志实时传输与应用的情况下,主库的崩溃并且在线日志删除的情况下(包括主机的备用日志)情况下, --//利用备库接收日志来恢复主库的情况.做一点点总结: 1.将备用日志拷贝过来,必须执行如下命令,加入最后应用的scn号. r

[20170303]dg环境下在线日志损坏8.txt

[20170303]dg环境下在线日志损坏8.txt --前面的测试,链接http://blog.itpub.net/267265/viewspace-2134481/ --前面的测试必须使用recover database using backup controlfile until change 13276911099; 才能恢复到结尾. --但是由于主备库scn相差1,在open resetlog时备库的数据文件头scn号减1,采用应用日志. --前面学习了解文件头fuzzy特性以及具体位

windows2000的日志清除器怎么练成

  Windows2000的日志文件通常有应用程序日志,安全日志.系统日志.DNS服务器日志. FTP日志.WWW日志等等,可能会根据服务器所开启的服务不同. 一般步骤如下: 1.清除IIs的日志. 可不要小看IIS的日志功能,它可以详细的记录下你的入侵全过程,如 如你用unicode入侵时ie里打的命令,和对80端口扫描时留下的痕迹.你可能就因为对 其不注意,而被网管盯上,说不定还会.......呵呵 那我们就可手动清除吧 1.日志的默认位置:%systemroot%system32logfi

行为、审计日志 (实时索引/实时搜索) - 最佳实践

标签 PostgreSQL , ES , 搜索引擎 , 全文检索 , 日志分析 , 倒排索引 , 优化 , 分区 , 分片 , 审计日志 , 行为日志 背景 在很多系统中会记录用户的行为日志,行为日志包括浏览行为.社交行为.操作行为等. 典型的应用例如:数据库的SQL审计.企业内部的堡垒机(行为审计)等. 行为.审计日志的量与业务量或者操作量有关,为了满足企业实时查询的需求,通常需要构建搜索引擎,比如使用ES或者使用PostgreSQL的全文检索功能来实现. 如果使用PostgreSQL来构建,

Oracle 11g 审计跟踪管理

在Oracle11g之前,oracle数据库自带的审计功能是关闭的,考虑到性能和审计管理的复杂性,用户一般不打开审计功能.如果有审计要求,DBA会采用trigger来实现对DDL审计的方法来折中.例如类似下面代码实现: create or replace trigger sys.ddl_trigger after DDL on database BEGIN insert into event_table values (ora_sysevent, ora_login_user, ora_inst

行为、审计日志 (实时索引/实时搜索)建模 - 最佳实践 2

标签 PostgreSQL , ES , 搜索引擎 , 全文检索 , 日志分析 , 倒排索引 , 优化 , 分区 , 分片 , 审计日志 , 行为日志 , schemaless 背景 在很多系统中会记录用户的行为日志,行为日志包括浏览行为.社交行为.操作行为等. 典型的应用例如:数据库的SQL审计.企业内部的堡垒机(行为审计)等. 前面写了一篇最佳实践,通过PostgreSQL来存储审计日志,同时对审计日志需要检索的字段建立全文索引. SSD机器可以达到7万/s的写入(换算成全文索引条目,约28

[20170428]延迟块清除测试.txt

[20170428]延迟块清除测试.txt --//做一个延迟块清除测试,前面的测试太乱了,思路非常不清楚. 1.环境: SCOTT@book> @ &r/ver1 PORT_STRING                    VERSION        BANNER ------------------------------ -------------- ------------------------------------------------------------------