【Unified Auditing】统一审计的存储架构体系

来源:互联网 发布:sql select count 编辑:程序博客网 时间:2024/06/08 14:45

Unified Auditing的架构体系之—存储

我们知道,从12c开始,统一审计(Unified Auditing)的审计数据都是存放在AUDSYS schema 下。
首先,我们看一看AUDSYS schema下的存储对象都有哪些内容。(以下为12.1.0.2环境的出力)

SQL> set pagesize 200SQL> set linesize 200SQL> col OWNER format a10SQL> col SEGMENT_NAME format a25SQL> col SEGMENT_TYPE format a20SQL> col PARTITION_NAME format a20SQL>  select OWNER,SEGMENT_NAME,SEGMENT_TYPE,PARTITION_NAME,bytes/1024/1024 "sizeMB"  2   from DBA_SEGMENTS  3   where OWNER='AUDSYS';OWNER      SEGMENT_NAME              SEGMENT_TYPE         PARTITION_NAME  sizeMB---------- ------------------------- -------------------- -------------- -------AUDSYS     SYS_LOB0000092724C00014$$ LOB PARTITION        SYS_LOB_P201     1.125    AUDSYS     SYS_IL0000092724C00014$$  INDEX PARTITION      SYS_IL_P202      .0625AUDSYS     CLI_LOB$1182c349$1$1      INDEX PARTITION      HIGH_PART        .0625AUDSYS     CLI_TIME$1182c349$1$1     INDEX PARTITION      HIGH_PART        .0625AUDSYS     CLI_SCN$1182c349$1$1      INDEX PARTITION      HIGH_PART        .0625AUDSYS     CLI_SWP$1182c349$1$1      TABLE PARTITION      HIGH_PART         .125★已选择 6 行。

我们可以看到一共有6个存储数据段,那么这些数据段都是什么呢?

让我们查看各个数据段的DDL定义,并且通过定义来推测其意义和作用。

SQL> set pages 0SQL> set longchunksize 3000SQL> set long 2000000000SQL> select dbms_metadata.get_ddl('TABLE','CLI_SWP$1182c349$1$1','AUDSYS') from dual;  CREATE TABLE "AUDSYS"."CLI_SWP$1182c349$1$1"   ("INST#" NUMBER,    "BUCKET#" NUMBER,    "INST_LOB#" NUMBER,    "MAX_SEQ#" NUMBER,    "FLUSH_SCN" NUMBER,    "FLUSH_TIME" DATE,    "MIN_SCN" NUMBER,    "MAX_SCN" NUMBER,    "MIN_TIME" DATE,    "MAX_TIME" DATE,    "SID#" NUMBER,    "SERIAL#" NUMBER,    "STATUS" NUMBER,    "LOG_PIECE" BLOB ★   ) PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255  STORAGE(  BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)  TABLESPACE "SYSAUX" LOB ("LOG_PIECE") STORE AS SECUREFILE (  TABLESPACE "SYSAUX" ENABLE STORAGE IN ROW CHUNK 8192  CACHE LOGGING  NOCOMPRESS  KEEP_DUPLICATES  STORAGE(  BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT))  PARTITION BY RANGE ("FLUSH_SCN") (PARTITION "HIGH_PART"  VALUES LESS THAN (MAXVALUE) SEGMENT CREATION IMMEDIATE  PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1  BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)  TABLESPACE "SYSAUX" LOB ("LOG_PIECE") STORE AS SECUREFILE (  TABLESPACE "SYSAUX" ENABLE STORAGE IN ROW CHUNK 8192  CACHE LOGGING  NOCOMPRESS  KEEP_DUPLICATES  STORAGE(INITIAL 106496 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645  PCTINCREASE 0  BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)) )SQL> select dbms_metadata.get_ddl('INDEX','CLI_TIME$1182c349$1$1','AUDSYS') from dual;DBMS_METADATA.GET_DDL('INDEX','CLI_TIME$1182C349$1$1','AUDSYS')------------------------------------------------------------------------------------------------------------------------------  CREATE INDEX "AUDSYS"."CLI_TIME$1182c349$1$1" ON "AUDSYS"."CLI_SWP$1182c349$1$1" ("MIN_TIME", "FLUSH_SCN", "BUCKET#")★  PCTFREE 10 INITRANS 2 MAXTRANS 255  STORAGE(  BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) LOCAL (PARTITION "HIGH_PART"  PCTFREE 10 INITRANS 2 MAXTRANS 255 LOGGING  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1  BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)  TABLESPACE "SYSAUX" )SQL> select dbms_metadata.get_ddl('INDEX','CLI_SCN$1182c349$1$1','AUDSYS') from dual;DBMS_METADATA.GET_DDL('INDEX','CLI_SCN$1182C349$1$1','AUDSYS')------------------------------------------------------------------------------------------------------------------------------  CREATE INDEX "AUDSYS"."CLI_SCN$1182c349$1$1" ON "AUDSYS"."CLI_SWP$1182c349$1$1" ("MIN_SCN", "FLUSH_SCN", "BUCKET#")★  PCTFREE 10 INITRANS 2 MAXTRANS 255  STORAGE(  BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) LOCAL (PARTITION "HIGH_PART"  PCTFREE 10 INITRANS 2 MAXTRANS 255 LOGGING  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1  BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)  TABLESPACE "SYSAUX" )SQL> select dbms_metadata.get_ddl('INDEX','CLI_LOB$1182c349$1$1','AUDSYS') from dual;DBMS_METADATA.GET_DDL('INDEX','CLI_LOB$1182C349$1$1','AUDSYS')------------------------------------------------------------------------------------------------------------------------------  CREATE INDEX "AUDSYS"."CLI_LOB$1182c349$1$1" ON "AUDSYS"."CLI_SWP$1182c349$1$1" ("FLUSH_SCN", "INST_LOB#", "BUCKET#")★  PCTFREE 10 INITRANS 2 MAXTRANS 255  STORAGE(  BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT) LOCAL (PARTITION "HIGH_PART"  PCTFREE 10 INITRANS 2 MAXTRANS 255 LOGGING  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1  BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)  TABLESPACE "SYSAUX" )SQL> select dbms_metadata.get_ddl('INDEX','SYS_IL0000092724C00014$$','AUDSYS') from dual;DBMS_METADATA.GET_DDL('INDEX','SYS_IL0000092724C00014$$','AUDSYS')------------------------------------------------------------------------------------------------------------------------------  CREATE UNIQUE INDEX "AUDSYS"."SYS_IL0000092724C00014$$" ON "AUDSYS"."CLI_SWP$1182c349$1$1" (★  PCTFREE 10 INITRANS 1 MAXTRANS 255  STORAGE(  BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)  TABLESPACE "SYSAUX"  LOCAL (PARTITION "SYS_IL_P202"  PCTFREE 10 INITRANS 2 MAXTRANS 255 LOGGING  STORAGE(INITIAL 65536 NEXT 1048576 MINEXTENTS 1 MAXEXTENTS 2147483645  PCTINCREASE 0 FREELISTS 1 FREELIST GROUPS 1  BUFFER_POOL DEFAULT FLASH_CACHE DEFAULT CELL_FLASH_CACHE DEFAULT)  TABLESPACE "SYSAUX" )  PARALLEL (DEGREE 0 INSTANCES 0)SQL> col TABLE_NAME format a30SQL> col SEGMENT_NAME format a30SQL> col COLUMN_NAME format a30SQL> set linesize 200SQL>  select OWNER,TABLE_NAME,SEGMENT_NAME,COLUMN_NAME  2   from DBA_LOBS  3   where SEGMENT_NAME='SYS_LOB0000092724C00014$$';OWNER  TABLE_NAME SEGMENT_NAME   COLUMN_NAME---------- ------------------------------ ------------------------------ --------------AUDSYS CLI_SWP$1182c349$1$1   SYS_LOB0000092724C00014$$  LOG_PIECESQL> col OWNER format a20SQL> col TABLESPACE_NAME format a10SQL> col COLUMN_NAME format a10SQL> select owner, table_name, column_name, tablespace_name,  2  segment_name,securefile, partitioned from  3  dba_lobs where table_name = 'CLI_SWP$1182c349$1$1';OWNER  TABLE_NAME   COLUMN_NAM TABLESPACE SEGMENT_NAME SECURE PARTIT------ -------------------- ---------- ---------- ------------------------ ------  ---AUDSYS CLI_SWP$1182c349$1$1 LOG_PIECE  SYSAUX SYS_LOB0000092724C00014$$ YESYES

根据以上各个数据段的DDL定义,我们可以看到以下内容:

  1. 数据段包括三种类型的对象,分别是分区表,分区索引和大数据段
  2. 索引对象CLI_TIMEXXXXCLISWPXXXX的列(“MIN_TIME”, “FLUSH_SCN”, “BUCKET#”)上的索引
  3. 索引对象CLI_SCNXXXXCLISWPXXXX的列(“MIN_SCN”, “FLUSH_SCN”, “BUCKET#”)上的索引
  4. 索引对象CLI_LOBXXXXCLISWPXXXX的列(“FLUSH_SCN”, “INST_LOB#”, “BUCKET#”)上的索引
  5. 索引对象SYS_ILXXXX是表CLI_SWP$XXXX的列(“FLUSH_SCN”, “INST_LOB#”, “BUCKET#”)上的索引
  6. 大数据对象SYS_LOB是表CLI_SWP$XXXX的LOB列LOG_PIECE的存储,并且是securefile LOBs类型。
  7. 默认所有的数据存储在SYSAUX表空间中

由此,我们知道统一审计(Unified Auditing)的审计数据都是存放在AUDSYS schema 下的表CLI_SWP$XXXX中,
并且有一部分数据是存放在Lob中的。

在用户的咨询案例中,有一些是由于统一审计的影响使SYSAUX的快速增长和消耗大量空间的,下面进行一下说明总结和探讨。

1.新的统一审计(Unified Auditing)功能推出后,有一些用户问:

Q:为什么没有设置任何统一审计,在UNIFIED_AUDIT_TRAIL视图中,还是看到有一些数据,并且数据量在增长?

A:其实这个很好解释,正如我们前面所提到的,在12c数据库默认开启混合模式审计,而由于默认开启的ORA_SECURECONFIG 和 ORA_LOGON_FAILURES(12.1.0.2)审计策略导致审计数据的增长,从而显示在UNIFIED_AUDIT_TRAIL视图里。
解决方法也和简单,你可以删除不需要的审计数据,如果以后也不想这些数据继续产生,你还可以把这些审计策略无效。

例:

SQL>--删除不需要的审计数据SQL> exec DBMS_AUDIT_MGMT.FLUSH_UNIFIED_AUDIT_TRAIL;PL/SQL 过程已成功完成。SQL> BEGIN  2 DBMS_AUDIT_MGMT.CLEAN_AUDIT_TRAIL(  3   AUDIT_TRAIL_TYPE   =>  DBMS_AUDIT_MGMT.AUDIT_TRAIL_UNIFIED,  4   USE_LAST_ARCH_TIMESTAMP=>  FALSE,  5   CONTAINER  => dbms_audit_mgmt.container_current);  6  END;  7  /PL/SQL 过程已成功完成。SQL>--无效掉审计策略SQL> noaudit policy ORA_SECURECONFIG;Noaudit succeeded.SQL> noaudit policy ORA_LOGON_FAILURES;Noaudit succeeded.

2.当然还有一些比较复杂的问题,例如在12.1.0.1 标准版数据库(SE)中,由于对分区表和SECUREFILES Lobs的使用限制问题,一旦保存统一审计(Unified Auditing)审计数据的LOB使用大小变大,并且就算是通过DBMS_AUDIT_MGMT包删除所有的审计数据,也不会缩小段的大小和释放空间,所以会导致SYSAUX表空间的浪费和空余空间紧张。

这个问题在以后的版本中会得到改善,但是在12.1.0.1 SE的版本中,由于各种限制,将是无法解决的问题。

所以建议在12.1.0.1 SE的版本中,如果不想使用统一审计,在使用前无效掉所有的统一审计策略。
或者使用统一审计时,要在LOB使用大小变大前,定期进行删除。

建议参考(MOS文档):

DBMS_AUDIT_MGMT does not release the space occupied by LOB segment (Doc ID 1935169.1)>In Oracle Database 12c Standard Edition,audit trail clean up does not release the LOB segment space.Bug 18109788  - CLEANUP OF UNIFIED AUDIT TRAIL DOES NOT RELEASE LOB SEGMENT SPACE>Base Bug 20077418

3.在12.1.0.1的版本中,由于非公开Bug16767759的影响,视图V$SYSAUX_OCCUPANTS中无法查看到AUDSYS schema的统计信息。

SQL> 12.1.0.1中查询结果SQL> select distinct schema_name from v$sysaux_occupants;SCHEMA_NAME----------------------------------------------------------------WKSYSMDSYSWK_TESTTSMSYSOLAPSYSCTXSYSSYSTEMEXFSYSORDSYSORDPLUGINSSYSMANDBSNMPXDBORDDATASYSPERFSTATWMSYSSI_INFORMTN_SCHEMA18 rows selected.

我们可以看到在12.1.0.2 中可以查询到AUDSYS schema 的相关数据,情况已经得到改善。

SQL> 12.1.0.2中已经得到改善SQL> select distinct schema_name from v$sysaux_occupants;SCHEMA_NAME--------------------WKSYSMDSYSWK_TESTTSMSYSOLAPSYSCTXSYSSYSTEMAUDSYS    ★EXFSYSORDSYSORDPLUGINSSYSMANDBSNMPXDBORDDATASYSPERFSTATWMSYSSI_INFORMTN_SCHEMA已选择 19 行。

所以在版本12.1.0.1中,在解决SYSAUX表空间的浪费和空余空间紧张问题时,我们也要考虑到这点。
作为暂时的解决方法,我们也可以通过查询DBA_SEGMENTS来确认相关数据的大小。

SQL>   select owner, segment_name, sum(bytes/1024/1024/1024) "sizeGB"  2  from dba_segments  3 where tablespace_name='SYSAUX' and owner='AUDSYS'  4 group by owner, segment_name;OWNERSEGMENT_NAME   sizeGB-------------------- ------------------------------ ----------AUDSYS   CLI_TIME$1182c349$1$1  .000061035AUDSYS   SYS_IL0000092724C00014$$   .000061035    AUDSYS   CLI_SWP$1182c349$1$1   .000061035    AUDSYS   SYS_LOB0000092724C00014$$   .00012207AUDSYS   CLI_LOB$1182c349$1$1   .000061035AUDSYS   CLI_SCN$1182c349$1$1   .000061035已选择 6 行。

版权声明:本文为博主原创文章,转载请注明出处,谢谢。http://blog.csdn.net/lukeunique

0 0
原创粉丝点击