在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. Vue教程:简介(一)

    前言 用了这么久的vue了,但是一直没有时间写个系列文章,现在抽一定时间总结下vue的知识点. 首先,Vue 不支持 IE8 及以下版本,因为 Vue 使用了 IE8 无法模拟的 ECMAScript ...

  2. js 事件委托 事件代理

    JavaScript高级程序设计上解释:事件委托就是利用事件冒泡,只指定一个事件处理程序,就可以管理某一类型的所有事件. 通过例子类比: 有三个同事预计会在周一收到快递.为签收快递,有两种办法:一是三 ...

  3. oracle行长度大小和页行数修改

    行长度展示长度: /*查询长度*/ SQL> show linesize;   /*查询行长度大小*/linesize 100SQL> set linesize200;    /*修改行长 ...

  4. element组件dialog关闭时Message消息提示抖动问题

    在页面内容较多,出现滚动条时使用element组件里的dialog组件,当关闭dialog组件的同时弹出Message消息提示时,Message会抖动一下. 在页面有滚动条的情况先打开dialog时, ...

  5. 伪造Http请求IP地址

    注意:伪造Http请求IP地址一般为非推荐使用手段 一般使用:简单投票网站重复投票,黑别人网站 在项目开发中(web项目),我负责的系统(简称PC),需要调其它系统接口,并且该系统需要获取客户端(浏览 ...

  6. CSRF的原理和防范措施

    a)攻击原理: i.用户C访问正常网站A时进行登录,浏览器保存A的cookie ii.用户C再访问攻击网站B,网站B上有某个隐藏的链接或者图片标签会自动请求网站A的URL地址,例如表单提交,传指定的参 ...

  7. C#下载局域网共享文件夹中的文件

    在公司的局域网内部,有个主机,共享了几个文件夹给下面的客户机使用. 想要利用这个文件夹上传最新的winform程序版本,每次运行exe的时候检测局域网的软件版本达到更新exe的目的. 这里有个例子,是 ...

  8. linux系统之-vi编辑器

    在linux系统使用中,掌握熟练的vi编辑器,可以提高linux工作效率.那么vi编辑器的使用方法有哪些呢? vi编辑器可在绝大部分linux发行版中使用. Vi编辑器的作用:创建或修改文件:维护li ...

  9. 【shell脚本学习-4】

    文本处理 #!/bin/bash#----------文本处理---------- #---------------echo----------------- # "-n":处理光 ...

  10. 来自一枚初生牛犊不怕虎的小菜鸟的Mock.js使用,不足之处欢迎读者的指出 谢谢

    本文章写的是基于require的mock.js的几种常用生成随机数据和ajax模拟前后端的交互信息 <script src="./app/libs/require.js"&g ...