在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_instance_num,

ora_database_name,

ora_dict_obj_name,

ora_dict_obj_type,

ora_dict_obj_owner,

sysdate);

END;

/

这种trigger审计很轻便,但功能有限,只能对DDL做一些记录跟踪,并且记录信息也不全面,如用户执行的完整的语句就不能记录下来,管理上也有诸多不便,如数据清理。在Oracle11g,Oracle不仅加强了审计的功能,同时也对自身的数据库审计(区别于第三方的审计产品)有了很大信心,Oracle官方宣称默认启用的审计日志不会对绝大多数产品数据库的性能带来过大的负面影响,11g默认启用数据库审计选项,AUDIT_TRAIL参数的缺省值为DB,这意为着审计数据将记录在数据库中的AUD$审计字典基表上。

注意,因为在11g中CREATE SESSION将被作为受审计的权限来被记录,因此当SYSTEM表空间因磁盘空间而无法扩展时将导致这部分审计记录无法生成,这将最终导致普通用户的新会话将无法正常创建,普通用户将无法登陆数据库。默认情况下表空间会以AUTOEXTEND ON自动扩展选项创建SYSTEM表空间,因此系统表空间在必要情况下还是会自动增长的,我们所需注意的是磁盘上的剩余空间是否能够满足其增长需求即可,但是数据文件扩展是有上限的,对于普通的8k smallfile表空间而言单个数据文件的最大尺寸是32G。

为了便于管理Oracle审计,袋鼠云提供了集中审计管理功能,其产品设计思路如下:

1、审计的关闭和打开

2、审计数据迁移

3、自动化审计数据清理

4、审计统计分析

一、审计的关闭和打开

袋鼠云前台界面提供了Oracle标准审计的所有功能,如登录审计、语句审计、权限审计、特定对象审计等等。用户可以灵活的选择审计的打开和关闭,审计所针对的对象和权限等。

二、审计数据迁移

考虑到DB,EXTENDED审计数据默认使用SYSTEM表空间,DTOPS提供一键数据迁移功能,底层调用的代码如下:比如将标准审计表迁入USERS表空间

BEGIN

DBMS_AUDIT_MGMT.SET_AUDIT_TRAIL_LOCATION(

AUDIT_TRAIL_TYPE => DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD,

AUDIT_TRAIL_LOCATION_VALUE => 'USERS'

);

END;

/

三、自动化审计数据清理

前文已经说过,数据库的审计信息一般较重,尤其在打开登录审计后,所有session的登录和退出都会在审计表中留有记录,由于表空间或者存储的限制,如果不能写入审计记录,数据库执行需要有审计的操作将被挂起,比如打开了CREATE SESSION审计,由于空间限制普通用户将不能登录数据库。需要有关办法来灵活的管理数据库的审计记录空间。

下面介绍自动清理数据的方法,针对已经分析过的老数据做自动清理,首先要初始化清理策略:

begin

dbms_audit_mgmt.init_cleanup(

audit_trail_type            => dbms_audit_mgmt.audit_trail_db_std,

default_cleanup_interval    => 24 );

end;

/

这个INIT_CLEANUP过程设计到两个参数:

audit_trail_type:指要设置的清理类型,这里是audit_trail_db_std,标准的数据库审计跟踪,即aud$表。

default_cleanup_interval:这个值表示每隔多少时间执行清理任务,24即24小时。

相关审计类型:

Parameter

Description

audit_trail_aud_std

The standard AUD$ audit trail in the database

audit_trail_fga_std

The FGA_LOG$ table, for Fine Grained Auditing

audit_trail_db_std

Both standard and FGA audit trails

audit_trail_os

The OS audit trail

audit_trail_xml

The XML audit trail

audit_trail_files

Both OS and XML audit trails

audit_trail_all

All of the above

设置完初始化清理参数后,实际上在调用清理任务时,会发现并没有达到你的预期,可能数据一条都没有清理掉,我们还需要设置另一个过程参数SET_LAST_ARCHIVE_TIMESTAMP,它的作用是告诉清理进程一个审计归档时间戳,这个过程接收三个参数:

audit_trail_type:要清理的审计类型,如audit_trail_aud_std

last_archive_time:最后一次归档时间,可以手工设置

rac_instance_number:RAC的话可以指定实例号

具体示例如下:

begin

dbms_audit_mgmt.set_last_archive_timestamp(

audit_trail_type  => dbms_audit_mgmt.audit_trail_aud_std,

last_archive_time =>

to_timestamp('2016-03-30 10:00:00','YYYY-MM-DD HH24:MI:SS'),

rac_instance_number  => null

);

end;

/

执行上段程序后,你可以在DBA_AUDIT_MGMT_LAST_ARCH_TS视图中查到相关信息。

有了归档时间后,就可以执行真正的清理程序了。

begin

dbms_audit_mgmt.clean_audit_trail(

audit_trail_type        =>  dbms_audit_mgmt.audit_trail_aud_std,

use_last_arch_timestamp => TRUE

);

end;

/

同样,audit_trail_type表示清理的审计类型,use_last_arch_timestamp => TRUE,表示用最后的归档时间,如果为false,将会清理掉audit_trail_aud_std类型的所有审计信息。上面是手工清理的方法,设置了清理时间点后运行清理过程。下一步看自动清理怎么做:

将采用数据库的自动任务来实现,第一个任务,自动产生清理时间点:

BEGIN

DBMS_SCHEDULER.CREATE_JOB (

job_name   => '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-10); END;',

start_date => sysdate,

repeat_interval => 'FREQ=HOURLY;INTERVAL=24',

enabled    =>  TRUE,

comments   => 'Create an archive timestamp'

);

END;

/

第二个任务,根据时间点自动清理:

BEGIN

DBMS_AUDIT_MGMT.CREATE_PURGE_JOB(

AUDIT_TRAIL_TYPE           => 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;

/

完成以上两步后,可以在DBA_AUDIT_MGMT_CLEANUP_JOBS数据字典视图中查看到这两个任务的相关信息。

到此数据库审计自动清理就可以实现了,但是从数据库的性能考虑,如果您的数据库很大,几个T或者几十T,您的审计数据也很庞大,一天的数据量上G,我们就得考虑数据的审计清理的性能,因为以上的审计清理时delete操作,不是truncate操作,oracle11g也提供了一个很好的解决方法,设置清理批处理时commit行数。如下:

begin

dbms_audit_mgmt.set_audit_trail_property(

audit_trail_type            => dbms_audit_mgmt.audit_trail_aud_std,

audit_trail_property        => dbms_audit_mgmt.db_delete_batch_size,

audit_trail_property_value  => 100000);

end;

/

三个参数,一看就懂,audit_trail_type清理类型,audit_trail_property设置删除批处理,audit_trail_property_value表示每次commit行数100000。

这篇文档主要介绍了Oracle11g审计跟踪管理相关的知识点,如审计表迁移,Oracle审计不同的类型,审计的定时自动清理等。这里仅仅介绍袋鼠云相关审计功能实现原理,至于针对审计数据的集中收集,展现方法已不属于审计跟踪管理的范畴。袋鼠云目前主要支持的数据库有MySQL、Oracle,比如对基于阿里云上或云下Oracle数据库提供一系列解决方案,如数据库自动部署、备份管理、容灾管理、恢复管理、容灾切换管理、性能监控等等。

Oracle 11g 审计跟踪管理的更多相关文章

  1. oracle 11g审计关闭,及删除日志

    转自https://blog.csdn.net/louwzh/article/details/51274955 环境:Linux redhat6.3 下安装的oracle11g oracle 11g推 ...

  2. Oracle 11g DG配置简明版

    环境: 主库A机:在线生产环境,RHEL 6.4 + Oracle 11.2.0.3 备库B机:新增备机,RHEL 6.4 需求: 对生产环境最小影响前提下配置DG备库. 目录: 一.B机安装相同版本 ...

  3. Oracle 11g R2 常用配置与日志的文件位置

    假设.bash_profile中oracle相关环境变量如下: $ORACLE_HOME=/u01/app/oracle/product/11.2.0/db_1 $ORACLE_BASE=/u01/a ...

  4. 针对Oracle的审计方案

    主题:针对Oracle的审计方案 数据库环境:Oracle 11g 数据库审计需求: 1.需要对连接数据库的行为进行审计 2.需要对核心表的DML操作进行审计 3.需要迁移审计数据到指定表空间 4.需 ...

  5. Oracle Audit 审计功能的认识与使用

    1.Audit的概念 Audit是监视和记录用户对数据库进行的操作,以供DBA进行问题分析.利用Audit功能,可以完成以下任务: 监视和收集特定数据库活动的数据.例如管理员能够审计哪些表被更新,在某 ...

  6. 由Oracle 11g SYSAUX 和 SYSTEM 表空间回收引发的联想

    0x00--目的 整理一下以前一个SYSTEM表空间和SYSAUX表空间使用率达到99%上限的处理思路和相关知识点,好记性不如烂笔头 0x01--表空间使用率现状 通过查询可得知目前表空间使用情况如下 ...

  7. Oracle 11g必须开启的服务及服务详细介绍

    转自:http://www.educity.cn/shujuku/404120.html 成功安装Oracle  11g数据库后,你会发现自己电脑运行速度会变慢,配置较低的电脑甚至出现非常卡的状况,通 ...

  8. 【Oracle 集群】Oracle 11G RAC教程之集群安装(七)

    Oracle 11G RAC集群安装(七) 概述:写下本文档的初衷和动力,来源于上篇的<oracle基本操作手册>.oracle基本操作手册是作者研一假期对oracle基础知识学习的汇总. ...

  9. Linux平台oracle 11g单实例 安装部署配置 快速参考

    1.重建主机的Oracle用户 组 统一规范 uid gid 以保证共享存储挂接或其他需求的权限规范 userdel -r oracle groupadd -g 7 oinstall groupadd ...

随机推荐

  1. <body> 中的 JavaScript 函数

    <!DOCTYPE html><html><head><meta http-equiv="Content-Type" content=&q ...

  2. C#添加二维码带加密带logo

    #region 生成QR码,加密与logo在此处修改 public static void CreateQr(string strQrContent, DataTable myTable) { Qr ...

  3. C#提取html中的汉字

    using System.Text.RegularExpressions; private string StripHT(string strHtml) //从html中提取纯文本 { Regex r ...

  4. js实现图片点击弹出放大效果

    点击图片,显示蒙板,放大图片的简单案例 HTML代码: <div> <img height=" src="https://img-blog.csdn.net/20 ...

  5. 『ACM C++』 PTA 天梯赛练习集L1 | 016-017

    今天开了两个大会,时间都给占掉了,就刷了两道题~ 明天加油!!! ------------------------------------------------L1-016------------- ...

  6. 【前行】◇第3站◇ 国庆训练营·OI制模拟赛

    [第3站] 国庆训练营·OI制模拟赛Ⅰ 怀着冲刺提高组400的愿望来到这个very small but very interesting 的训练营QwQ 在北大dalao的带领下开始了第一场OI模拟赛 ...

  7. ABAP术语-Business Object Type

    Business Object Type 原文:http://www.cnblogs.com/qiangsheng/archive/2008/01/10/1033480.html Generic de ...

  8. Ajax在表单中的应用

    ajax在注册用户表单中的使用 1.验证用户名是否被使用 2.获取手机短信验证码 3.点击表单中的图片刷新,可实现刷新图片验证码 <!DOCTYPE html> <html> ...

  9. Array-快餐管饱

    一.如何获得一个数组? rsp: 1. []  2.new Array() 3.str.split() ps:new Array()可以不加括号,其传一个参数代表数组长度,两个及以上就是初始化数组. ...

  10. 介绍几个PHP 自带的加密解密函数

    PHP 自带的加密解密函数 目前经常使用的加密函数有:md5(), sha1(), crypt(), base64_encode(), urlencode() . 其中 md5(), sha1(), ...