今天用户要求查询近一段时间内的特定几个用户的登陆记录。看到这个需求后的第一个反应是数据库需要开启审计才能查。
首先,确认audit_trail参数,值为DB;然后,查询aud$,dba_session_audit等,发现记录数为0;看到结果感觉不对啊,查看数据库版本为12.1.0.2,
赶紧找原因吧?原来是oracle 12c 新特性:Unified Audit。
为节约学习时间,下面整理TeacherWhat博主的系列文章,以作学习笔记,也分享给大家;TeacherWhat博主原创系列文章在文后一一列出,在此表示感谢!!!
一、 统一审计( Unified Auditing )简介
Oracle Database 12c 推出一套全新的审计架构,称为统一审计功能。统一审计主要利用策略和条件在 Oracle 数据库内部有选择地执行有效的审计。新架构将现有审计跟踪统一为单一审计跟踪,从而简化了管理,提高了数据库生成的审计数据的安全性。
关于统一审计的基础知识,大家可以参考以下 Oracle 的官方在线文档,在这里仅作简单的介绍。
Database Security Guide
https://docs.oracle.com/database/121/DBSEG/auditing.htm#DBSEG630
初始安装的 12c 数据库,为了兼容以前的版本默认启用混合模式,即传统审计统一审计同时有效。你可以通过手动移植到完全的统一审计,也可以使统一审计无效,沿用传统审计。 你可以通过以下的 SQL 文,查询统一审计是否有效。 TRUE 表示完全的统一审计有效。 FALSE 表示并非是完全的统一审计。
SQL>SELECT PARAMETER , VALUE FROM V$OPTION WHERE PARAMETER = 'Unified Auditing';
PARAMETER VALUE
---------------- ----------
Unified Auditing TRUE
注意:在 SE 的数据库 12.1.0.1 和 12.1.0.2 版本中,由于 Bug 17466854 的影响,即使完全的统一审计有效的情况下, V$OPTION 的 Unified Auditing 行也表示为 FALSE 。 Bug 17466854 将在未来版本 12.2 中修复。
1. 切换审计模式
你可以通过以下的方法把数据库审计的混合模式切换到完全的统一审计(UNIX为例)。
SQL> conn /as sysdba
SQL> SHUTDOWN IMMEDIATE
SQL> EXIT
$ lsnrctl stop listener_name
$ cd $ORACLE_HOME/rdbms/lib
$ make -f ins_rdbms.mk uniaud_on ioracle ORACLE_HOME=$ORACLE_HOME
$ lsnrctl start listener_name
SQL> conn /as sysdba
SQL> STARTUP
2. 关闭统一审计
你也可以通过以下的方法把数据库统一审计功能关闭掉( UNIX 为例)。
SQL> conn /as sysdba
SQL> SHUTDOWN IMMEDIATE
SQL> EXIT
$ lsnrctl stop listener_name
$ cd $ORACLE_HOME/rdbms/lib
$ make -f ins_rdbms.mk uniaud_off ioracle
$ lsnrctl start listener_name
SQL> conn /as sysdba
SQL> STARTUP
3. 默认有效的审计策略
12c 数据库中预先定义了一些审计策略,并且根据版本不同,默认开启的审计策略也略有不同。
我们可以通过 audit_unified_enabled_policies 视图进行确认默认开启的统一审计的审计策略。
--12.1.0.2 的默认审计策略
SQL> select USER_NAME,POLICY_NAME,ENABLED_OPT,SUCCESS,FAILURE from audit_unified_enabled_policies;
USER_NAME POLICY_NAME ENABLED_OPT SUCCES FAILUR
-------------------- -------------------- ---------------- ------ ------
ALL USERS ORA_SECURECONFIG BY YES YES
ALL USERS ORA_LOGON_FAILURES BY NO YES
--12.1.0.1 的默认审计策略
SQL> select USER_NAME,POLICY_NAME,ENABLED_OPT,SUCCESS,FAILURE from audit_unified_enabled_policies;
USER_NAME POLICY_NAME ENABLED_OPT SUCCES FAILUR
-------------------- -------------------- ---------------- ------ ------
ALL USERS ORA_SECURECONFIG BY YES YES
由上面的输出结果我们可以看到,不做任何配置的情况下, 在 12.1.0.2 数据库的环境中,默认开启了 ORA_SECURECONFIG 和 ORA_LOGONFAILURES 审计策略,数据库会根据这 2 个审计策略,对相应的操作进行审计。 在 12.1.0.1 数据库的环境中,默认开启了 ORA_SECURECONFIG 审计策略,数据库会根据这个审计策略,对相应的操作进行审计。
需要说明的是, ORA_SECURECONFIG 审计策略在 12.1.0.1 和 12.1.0.2 的版本上的定义是不同的。
在 12.1.0.1 数据库的环境中, ORA_SECURECONFIG 审计策略包含了对所有 LOGON 和 LOGOFF 的审计。
而在 12.1.0.2 数据库中,, ORA_SECURECONFIG 审计策略移除了对所有 LOGON 和 LOGOFF 的审计,而增加了一个新的审计策略 ORA_LOGON_FAILURES ,用于仅审计登陆失败的操作。这样更加方管理,也能改善因为大量 LOGON 和 LOGOFF 的审计对表空间的浪费。
ORA_SECURECONFIG 审计策略的详细可以参考以下官方在线文档,
http://docs.oracle.com/database/121/DBSEG/audit_config.htm#CHDIGFHG
ORALOGONFAILURES 审计策略的详细可以参考以下,
http://docs.oracle.com/database/121/DBSEG/audit_config.htm#DBSEG703
二、 使用统一审计
统一审计使用主要分为以下几个步骤:
l 创建一个审计策略
l 使审计策略有效
l 执行相关的操作
l 统一审计的审计结果写到数据文件
l 查询审计
审计策略相关操作例如下:
1. 创建审计策略
创建一个审计策略,审计对表 scott.emp 的 select 操作
SQL> create audit policy up1 actions select on scott.emp;
2. 启用审计策略
使审计策略有效:
SQL> audit policy up1;
确认审计策略已经创建
SQL> set linesize 200
SQL> col POLICY_NAME format a20
SQL> col OBJECT_NAME format a15
SQL> select POLICY_NAME,AUDIT_OPTION_TYPE,OBJECT_NAME,COMMON
from AUDIT_UNIFIED_POLICIES where POLICY_NAME = upper('up1');
POLICY_NAME AUDIT_OPTION_TYPEOBJECT_NAME COMMON
-------------------- ------------------------------------ --------------- ------
UP1 OBJECT ACTIONEMP NO
查询现在有效的审计策略
SQL> col POLICY_NAME format a20
SQL> col USER_NAME format a20
SQL> select USER_NAME,POLICY_NAME,ENABLED_OPT,SUCCESS,FAILURE from AUDIT_UNIFIED_ENABLED_POLICIES;
USER_NAMEPOLICY_NAME ENABLED_OPT SUCCES FAILUR
-------------------- -------------------- ---------------- ------ ------
ALL USERSORA_SECURECONFIG BY YESYES
ALL USERSORA_LOGON_FAILURES BY NO YES
ALL USERSUP1 BY YESYES
3. 禁用审计策略
SQL> NOAUDIT POLICY UP1;
确认现在有效的审计策略, UP1 已经没有了。
SQL> select USER_NAME,POLICY_NAME,ENABLED_OPT,SUCCESS,FAILURE from AUDIT_UNIFIED_ENABLED_POLICIES;
USER_NAMEPOLICY_NAME ENABLED_OPT SUCCES FAILUR
-------------------- -------------------- ---------------- ------ ------
ALL USERSORA_SECURECONFIG BY YESYES
ALL USERSORA_LOGON_FAILURES BY NO YES
4. 删除审计策略
SQL> DROP AUDIT POLICY UP1;
SQL> select POLICY_NAME,AUDIT_OPTION_TYPE,OBJECT_NAME,COMMON from AUDIT_UNIFIED_POLICIES where POLICY_NAME = upper('up1');
注意:在删除某审计策略之前,必须禁用掉该审计策略,否则会报 ORA-46361 错误。
SQL> DROP AUDIT POLICY UP1;
DROP AUDIT POLICY UP1
*
第 1 行出现错误 :
ORA-46361: 当前已启用审计策略 , 因此无法删除此策略。
AUDIT_UNIFIED_POLICIES 用于确认数据库内所有的审计策略的详细
AUDIT_UNIFIED_ENABLED_POLICIES 用于确认现在有效的审计策略
关于统一审计的动态视图和字典表的详细,可以参考以下官方在线文档,
https://docs.oracle.com/database/121/DBSEG/audit_config.htm#DBSEG0635
三、 审计记录结果
以前的审计功能,不同的组件会放在不同的位置存储,例如:
· SYS.AUD$ 会存放数据库的标准审计结果
· SYS.FGA_LOG$ 会存放细粒度审计结果( fine-grained auditing )
· DVSYS.AUDIT_TRAIL$ 会存放 Oracle Database Vault 和 Oracle Label Security 等组件的审计结果,等等。。。
在统一审计功能下,存储和查看更加简单化,所有的审计结果都存放在新追加的 AUDSYS schema 下,并可以通过字典表 UNIFIED_AUDIT_TRAIL ,进行确认。
SQL> col OS_USERNAME format a15
SQL> col SQL_TEXT format a30
SQL> COL AUDIT_TYPE format a10
SQL> col ACTION_NAME format a10
SQL> col UNIFIED_AUDIT_POLICIES format a10
SQL> select AUDIT_TYPE,OS_USERNAME,TERMINAL,ACTION_NAME,
2 SQL_TEXT,UNIFIED_AUDIT_POLICIES
3 from UNIFIED_AUDIT_TRAIL where OBJECT_NAME='EMP';
AUDIT_TYPE OS_USERNAME TERMINAL ACTION_NAM SQL_TEXT UNIFIED_AU
---------- --------------- -------------------------------- ---------- ------------------------------ ----------
Standard XXXX-CN\walt XXXX-CN SELECT SELECT COUNT(*) FROM scott.emp UP1
四、 审计数据存储
<1span "=""> 我们知道,从 12c 开始,统一审计( Unified Auditing )的审计数据都是存放在 AUDSYS schema 下。 首先,我们看一看 AUDSYS schema 下的存储对象都有哪些内容。(以下为 12.1.0.2 环境的出力)
SQL> set pagesize 200
SQL> set linesize 200
SQL> col OWNER format a10
SQL> col SEGMENT_NAME format a25
SQL> col SEGMENT_TYPE format a20
SQL> col PARTITION_NAME format a20
SQL> 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 .0625
AUDSYS CLI_LOB$1182c349$1$1 INDEX PARTITION HIGH_PART .0625
AUDSYS CLI_TIME$1182c349$1$1 INDEX PARTITION HIGH_PART .0625
AUDSYS CLI_SCN$1182c349$1$1 INDEX PARTITION HIGH_PART .0625
AUDSYS CLI_SWP$1182c349$1$1 TABLE PARTITION HIGH_PART .125 ★
已选择 6 行。
SQL> set pages 0
SQL> set longchunksize 3000
SQL> set long 2000000000
SQL> select dbms_metadata.get_ddl('TABLE','CLI_SWP$1182c349$1$1','AUDSYS') from dual;
SQL> select dbms_metadata.get_ddl('INDEX','CLI_TIME$1182c349$1$1','AUDSYS') from dual;
SQL> select dbms_metadata.get_ddl('INDEX','CLI_SCN$1182c349$1$1','AUDSYS') from dual;
SQL> select dbms_metadata.get_ddl('INDEX','CLI_LOB$1182c349$1$1','AUDSYS') from dual;
SQL> select dbms_metadata.get_ddl('INDEX','SYS_IL0000092724C00014$$','AUDSYS') from dual;
SQL> col TABLE_NAME format a30
SQL> col SEGMENT_NAME format a30
SQL> col COLUMN_NAME format a30
SQL> set linesize 200
SQL> 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_PIECE
SQL> col OWNER format a20
SQL> col TABLESPACE_NAME format a10
SQL> col COLUMN_NAME format a10
SQL> 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 定义,我们可以看到以下内容:
· 数据段包括三种类型的对象,分别是分区表,分区索引和大数据段
· 索引对象 CLI TIME$XXXX 是表 CLI SWP$XXXX 的列 ("MIN TIME", "FLUSH SCN", "BUCKET#") 上的索引
· 索引对象 CLI SCN$XXXX 是表 CLI SWP$XXXX 的列 ("MIN SCN", "FLUSH SCN", "BUCKET#") 上的索引
· 索引对象 CLI LOB$XXXX 是表 CLI SWP$XXXX 的列 ("FLUSH SCN", "INST LOB#", "BUCKET#") 上的索引
· 索引对象 SYS ILXXXX 是表 CLI SWP$XXXX 的列 ("FLUSH SCN", "INST LOB#", "BUCKET#") 上的索引
· 大数据对象 SYS LOB 是表 CLI SWP$XXXX 的 LOB 列 LOG_PIECE 的存储,并且是 securefile LOBs 类型。
· 默认所有的数据存储在 SYSAUX 表空间中
由此,我们知道统一审计( Unified Auditing )的审计数据都是存放在 AUDSYS schema 下的表 CLI_SWP$XXXX 中, 并且有一部分数据是存放在 Lob 中的。
例:
1. 删除不需要的审计数据
SQL> exec DBMS_AUDIT_MGMT.FLUSH_UNIFIED_AUDIT_TRAIL;
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> noaudit policy ORA_SECURECONFIG;
Noaudit succeeded.
SQL> noaudit policy ORA_LOGON_FAILURES;
Noaudit succeeded.
另外,审计记录相关的 MOS doc :
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
2. 查询 AUDSYS schema 的统计信息
在 12.1.0.1 的版本中,由于非公开 Bug16767759 的影响,视图 V$SYSAUX_OCCUPANTS 中无法查看到 AUDSYS schema 的统计信息。 12.1.0.2 中已经得到改善
SQL> select distinct schema_name from v$sysaux_occupants;
我们也可以通过查询 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 .000061035
AUDSYS SYS_IL0000092724C00014$$ .000061035
AUDSYS CLI_SWP$1182c349$1$1 .000061035
AUDSYS SYS_LOB0000092724C00014$$ .00012207
AUDSYS CLI_LOB$1182c349$1$1 .000061035
AUDSYS CLI_SCN$1182c349$1$1 .000061035
已选择 6 行。
六、 审计记录写入 AUDSYS 的模式
1. 审计记录写入 AUDSYS 的模式简介
统一审计的审计结果写到数据文件中的方式主要有 2 种,队列写入模式 (Queued-write mode) 和立即写模式 (Immediate-write mode) 。关于这两种写的方式,我们可以参考下面的 2 个图。
立即写模式 (Immediate-write mode) :同步写入方法,统一审计的审计结果生成后,直接写入到 AUDSYS schema 的审计表 CLI_SWP$XXXX 中。
队列写入模式 (Queued-write mode) :异步写入方法,统一审计的审计结果生成后,先把统一审计的审计结果保存在 SGA 中称为 [SGA Queue] 的队列中,然后周期性地从 SGA Queue 写入到 AUDSYS schema 的审计表 CLI_SWP$XXXX 中(关于存储可以参看上一章的内容)。这种方式是数据库默认采用的设置。
Ø 立即写模式 (Immediate-write mode) 介绍
是一种同步写入的方法,这种模式和 12c 以前传统的审计结果写入磁盘方式一样,在生成审计结果的同时立即写入到磁盘中,所以优点是不会因为实例突然崩溃( Instance Crash )等导致审计数据的丢失。但另一方面,因为操作和审计磁盘写同时进行,会对数据库操作的性能产生一定的影响。
l 队列写入模式 (Queued-write mode) 介绍
如上图所示,统一审计的审计结果生成后,保存在 SGA 中称为 [SGA Queue] 的队列中,满足以下的任何一个条件时由后台进程 GEN0 负责写入到磁盘中。
· 达到刷新时间间隔 , 默认值为 3 秒
· 达到 [SGA Queue] 队列的临界值
[SGA Queue] 的队列大小由初始化参数 UNIFIED_AUDIT_SGA_QUEUE_SIZE 来决定 , 默认大小为 1M ,可设置的范围为 1MB ~ 30 MB 。
SQL> show parameter UNIFIED_AUDIT NAME TYPE VALUE ------------------------------- --------- ----------- unified_audit_sga_queue_size integer 1048576
参考: Database Reference UNIFIED_AUDIT_SGA_QUEUE_SIZE
对于统一审计( Unified Auditing )相关的设置参数,我们可以通过以下的方法查看。 例: SQL> col Description format a26 SQL> col Parameter format a30 SQL> select a.ksppinm "Parameter",a.KSPPDESC "Description", 2 b.ksppstvl "Value" 3 from sys.x$ksppi a, sys.x$ksppcv b 4 where a.indx = b.indx and a.ksppinm like '%unified_audit%'; Parameter Description Value ------------------------------ -------------------------- -------- _unified_audit_policy_disabled Disable Default Unified Au FALSE dit Policies on DB Create unified_audit_sga_queue_size Size of Unified audit SGA 1048576 Queue _unified_audit_flush_threshold Unified Audit SGA Queue Fl 85 ★ ush Threshold _unified_audit_flush_interval Unified Audit SGA Queue Fl 3 ★ ush Interval
由以上我们可以看到,
· 后台进程GEN0的SGA Queue刷新间隔是由隐含参数_unified_audit_flush_interval来控制的,默认值为3秒。
· [SGA Queue] 队列的临界值是由隐含参数_unified_audit_flush_threshold来控制的,默认值为[SGA Queue]队列大小的85% 即:UNIFIED_AUDIT_SGA_QUEUE_SIZE * 85% 。
统一审计的审计结果保存在SGA中称为[SGA Queue]的队列中,然后周期性地从SGA Queue写入到AUDSYS schema 的审计表CLI_SWP$XXXX中,所以队列写入模式的优点是可以最大限度地减少由于审计对数据库操作性能的影响,但是由于是异步写入的方式,所以因为实例突然崩溃(Instance Crash)或者SHUTDOWN ABORT等情况下,有可能导致在SGA中的审计数据的丢失。
当然,除了由后台进程自动进行磁盘写入以外,也可以手动地调DBMS_AUDIT_MGMT.FLUSH_UNIFIED_AUDIT_TRAIL 函数,把SGA Queue中的统一审计的审计数据刷新到AUDSYS schema 的审计表CLI_SWP$XXXX中。 例: SQL> audit all; SQL> noaudit all; SQL> EXEC DBMS_AUDIT_MGMT.FLUSH_UNIFIED_AUDIT_TRAIL;
2. 审计记录写入模式的设定
可以通过DBMS_AUDIT_MGMT.SET_AUDIT_TRAIL_PROPERTY函数,对数据库默认的写入模式进行修改。 需要注意的是,该设置仅对当前的CDB或PDB有效。 例: 设定立即写模式 (Immediate-write mode) SQL> BEGIN 2 DBMS_AUDIT_MGMT.SET_AUDIT_TRAIL_PROPERTY( 3 DBMS_AUDIT_MGMT.AUDIT_TRAIL_UNIFIED, 4 DBMS_AUDIT_MGMT.AUDIT_TRAIL_WRITE_MODE, 5 DBMS_AUDIT_MGMT.AUDIT_TRAIL_IMMEDIATE_WRITE); 6 END; 7 / # 确认写入模式 SQL> SELECT PARAMETER_VALUE 2 FROM DBA_AUDIT_MGMT_CONFIG_PARAMS 3 WHERE PARAMETER_NAME = 'AUDIT WRITE MODE'; PARAMETER_VALUE ------------------------------------------------- IMMEDIATE WRITE MODE 设定队列写入模式 (Queued-write mode): SQL> BEGIN 2 DBMS_AUDIT_MGMT.SET_AUDIT_TRAIL_PROPERTY( 3 DBMS_AUDIT_MGMT.AUDIT_TRAIL_UNIFIED, 4 DBMS_AUDIT_MGMT.AUDIT_TRAIL_WRITE_MODE, 5 DBMS_AUDIT_MGMT.AUDIT_TRAIL_QUEUED_WRITE); 6 END; 7 / # 确认写入模式 SQL> SELECT PARAMETER_VALUE 2 FROM DBA_AUDIT_MGMT_CONFIG_PARAMS 3 WHERE PARAMETER_NAME = 'AUDIT WRITE MODE'; PARAMETER_VALUE ------------------------------------------------- QUEUED WRITE MODE
参考: Database Security Guide
Setting the Write Mode for Unified Audit Trail Records
3. 审计数据无法写入时的处理
大家可能已经注意到队列写入模式图的右下角的部分。 这一部分是指当无法向数据库写入统一审计的审计数据时(如:数据库正在关闭或者变成了只读模式等),为了防止审计数据的丢失, Oracle 会把审计数据写入到系统的如下文件中( nn 为随机数值)。
$ORACLE_BASE/audit/$ORACLE_SID/ora_audit_nn.bin
但数据库恢复到正常时,可以通过以下的 Procedure 调用,把这些系统文件再导入到 AUDSYS schema 下的 CLI_SWP$XXXX 统一审计的存储表中。
EXEC DBMS_AUDIT_MGMT.LOAD_UNIFIED_AUDIT_FILES;
当这些系统文件导入到数据库中后,相应的文件会自动地被删除掉。
※另外,这里需要注意的是,当有大量存储文件时,利用 Procedure 向数据库导入统一审计结果,可能会影响到性能。
参考:
1. 【Unified Auditing】Oracle 12c 统一审计基础介绍
https://blog.csdn.net/lukeUnique/article/details/49385853
2. 【Unified Auditing】统一审计的存储架构体系
https://blog.csdn.net/lukeUnique/article/details/49454161
3. 【Unified Auditing】统一审计的进程架构体系
https://blog.csdn.net/lukeUnique/article/details/49531111
4. Database Security Guide--23 Administering the Audit Trail
https://docs.oracle.com/database/121/DBSEG/audit_admin.htm#DBSEG1026
The UNIFIED_AUDIT_TRAIL is Getting Populated even if Unified Auditing was not explicitly enabled in 12c (Doc ID 1624051.1)
Bug 20625589 : NOT DELETE AUDITS CORRECTLY BY DBMS AUDIT MGMT.CREATE PURGE JOB
Bug 19579469 - HANDLE SECUREFILES SPACE CLEANUP IN STANDARD EDITION DATABASE
5. 【Security】传统审计(Traditional Auditing)
https://blog.csdn.net/lukeUnique/article/details/51871507
6. 【Security】数据库审计(AUDIT)功能概述
https://blog.csdn.net/lukeUnique/article/details/51871415
