主题:针对Oracle的审计方案

数据库环境:Oracle 11g

数据库审计需求:

1.需要对连接数据库的行为进行审计

需要对连接数据库的行为进行审计,其中包含例如审计那些错误密码登录等失败的登录行为。
主要关注查询的表就是`aud$`。
比如查询最近一天使用错误密码登录的行为;

--aud$
select sessionid, userid, userhost, comment$text, spare1, ntimestamp#
from aud$
where returncode = 1017
and ntimestamp# > sysdate - 1; --dba_audit_trail
select *
from dba_audit_trail
where returncode = 1017
and timestamp > sysdate - 1;

更多关于aud$的介绍可参考之前我总结过的文章:

2.需要对核心表的DML操作进行审计

需要对核心表的DML操作进行审计,首先强调下这是不推荐进行审计的,原因是这类审计极少客户会用,它不但会使得核心表的操作性能本身受到一定影响,还有可能触发相关bug。
假如jingyu用户下的T1表非常重要,需要对DML操作进行审计:

SYS@jyzhao1 >AUDIT DELETE,UPDATE,INSERT ON JINGYU.T1;

Audit succeeded.

查询审计结果(列较多,建议图形化工具查看):

SQL> select * from dba_audit_trail order by timestamp;

可以从结果看到所有DML操作都会对应一条action_name为“SESSION REC”的值。

3.需要迁移审计数据到指定表空间

创建新的表空间,比如TBS_AUDIT,然后迁移审计数据从默认的SYSTEM到TBS_AUDIT表空间;
核心步骤如下:

--查看当前AUD$对象所在的表空间
SELECT OWNER, TABLE_NAME, TABLESPACE_NAME
FROM DBA_TABLES
WHERE TABLE_NAME = 'AUD$'
AND OWNER = 'SYS'; --更改AUD$表的表空间为其他表空间
BEGIN
DBMS_AUDIT_MGMT.SET_AUDIT_TRAIL_LOCATION(
AUDIT_TRAIL_TYPE => DBMS_AUDIT_MGMT.AUDIT_TRAIL_AUD_STD,
AUDIT_TRAIL_LOCATION_VALUE => '&AUD_TBS_NAME');
END;
/

更多细节可参考之前我总结过的一则案例:

4.需要清理历史审计数据的方案

需要清理历史审计数据的方案:

--截断占用空间最大的AUD$表(需要和DBA确认后操作)
truncate table AUD$;

截断之前可以考虑备份一下审计数据:

Oracle导出sys用户下的系统表aud$:

exp system/oracle file=aud.dmp log=aud.log tables=sys.aud$

实际这个exp导出在测试环境遇到问题,不过最终解决了,具体细节可以参考:

针对Oracle的审计方案的更多相关文章

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

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

  2. Oracle 11g 审计跟踪管理

    在Oracle11g之前,oracle数据库自带的审计功能是关闭的,考虑到性能和审计管理的复杂性,用户一般不打开审计功能.如果有审计要求,DBA会采用trigger来实现对DDL审计的方法来折中.例如 ...

  3. oracle修改审计功能

    oracle修改审计功能 如果没有关闭审计功能,审计日志文件默认保存在位置为$ORACLE_BASE/admin/$ORACLE_SID/adump/ 关闭审计:alter system set au ...

  4. 基于beego orm 针对oracle定制

    目前golang的ORM对oracle支持都没有mysql那样完整,一个orm要同时兼容mysql和oracle由于在sql语法上区别,会使整orm变的非常臃肿. 本项目是在beego orm上修改, ...

  5. Oracle数据库同步方案

    Oracle数据库同步方案 1. 利用数据泵导出每表前2000行数据 expdp tvpay2/tvpay directory=dmp dumpfile=20170508.dmp include=ta ...

  6. ORACLE定时备份方案

    ORACLE定时备份方案 采用ORACLE的EXP工具,实现ORACLE的备份:采用LINUX的服务crond实现定时功能. 1 编辑SH,实现备份功能 #vi oracle_backup.sh,输入 ...

  7. Oracle备份审计表SYS.AUD$和SYS.FGA_LOG$

    ORACLE的审计表不可以使用expdp和impdp导出和导入,如果使用,会报如下错误: 需要使用exp和imp进行导出和导出 导出语句: exp " '/ as sysdba' " ...

  8. 针对Oracle数据库中SCOTT方案的多表查询一个例子

    查询出每个员工的姓名.职位.月薪.所属部门名.月薪等级及其领导的姓名.职位.所属部门名.月薪等级.select e.ename 员工姓名,e.job 员工职位,e.sal 员工月薪,d.dname 员 ...

  9. 针对Oracle数据库中SCOTT方案的多表查询的一个例子

    查询出每个员工的姓名.职位.月薪.所属部门名.月薪等级及其领导的姓名.职位.所属部门名.月薪等级.select e.ename 员工姓名,e.job 员工职位,e.sal 员工月薪,d.dname 员 ...

随机推荐

  1. IDEA 初始配置教程

    IDEA 初始配置教程 如果你是第一次使用 IDEA,或者对 IDEA 常用配置仍然不熟悉,那么本文就特别适合你. 本文只是根据我自己的使用经验来进行配置,不一定适合所有的情况,但是对你肯定会有帮助. ...

  2. 比最差的API(ETW)更差的API(LTTng)是如何炼成的, 谈如何写一个好的接口

    最近这几天在帮柠檬看她的APM系统要如何收集.Net运行时的各种事件, 这些事件包括线程开始, JIT执行, GC触发等等. .Net在windows上(NetFramework, CoreCLR)通 ...

  3. CentOS 7 学习(三)配置Tomcat集群

    所谓集群,就是把多台服务器集合起来,对外提供一个接口访问,对用户来说完全透明,常用的办法就是前端放一个服务器,将用户请求分发到不同的服务器,大致有以下几种方案 1)采取DNS轮询:将用户的连接解析到不 ...

  4. 解决win7中防火墙的0x6D9问题的方法

    问题: 打开windows防火墙管理单元时出错:代码0x6d9" 解决方法: 下一步-->下一步-->完成.

  5. Struts2学习---result结果集

    这一章节主要介绍如何配置结果集,分为以下几个知识点: 结果集类型(result type) 全局结果集(global types) 动态结果集(dynamic type) 带有参数的结果集(type ...

  6. iOS js oc相互调用JavaScriptCore(一)

    原址:http://blog.csdn.net/lwjok2007/article/details/47058101 1.普通调用 从iOS7开始 苹果公布了JavaScriptCore.framew ...

  7. ElasticSearch 学习记录之如任何设计可扩容的索引结构

    扩容设计 扩容的单元 一个分片即一个 Lucene 索引 ,一个 Elasticsearch 索引即一系列分片的集合 一个分片即为 扩容的单元 . 一个最小的索引拥有一个分片. 一个只有一个分片的索引 ...

  8. LAMP第二部分apache配置

    课程大纲:1. 下载discuz! mkdir /data/wwwcd /data/wwwwget  http://download.comsenz.com/DiscuzX/3.2/Discuz_X3 ...

  9. [解决方案]WebAPI+SwaggerUI部署服务器后,访问一直报错的问题

    项目的背景:制作一批接口用来给前台app或者网站提供服务,因为WebApi是最近几年来比较流行和新颖的开发接口的方式,而且又属于轻型应用,所以选用它 部署的过程:建立了WebAPI项目并使用Swagg ...

  10. C# 给枚举类型增加一个描述特性

    前言 相信很多人对枚举并不陌生,枚举可以很方便和直观的管理一组特定值.如果我们在页面上直接输出我们希望匹配的汉语意思或则其他满足我们需求的语句就更好了,当然,通常小伙伴们都会再页面上if(enum== ...