运维组的老大打电话说,他们发现有几万笔业务被重新推送了一遍,而且是第三次了,问题还是挺严重的,想要追踪是谁做的误操作,他们有时间段和涉及的表,问有没有办法追踪到。

Oracle数据库版本为10.2.0.4。首先想到的是审计功能,但是无奈数据库没有开审计。再次想到的是日志挖掘(LogMiner),但是不确定能不能找到对应操作的用户和主机。在QQ群里提出了这个问题,得到的答案是可以找到,同时也在官方文档中找到了v$logmnr_contents中对就的SESSION_INFO字段:

从上面给出的信息可以看出,可以跟踪到执行sql时对应的用户和主机信息。

从上面的查询可以看出可以从日志中挖掘出用户和主机信息。

如果遇到USERNAME和SESSION_INFO为NULL或UNKNOWN参考如下:

Column USERNAME And SESSION_INFO Are UNKNOWN Or NULL In V$LOGMNR_CONTENTS (文档 ID 110301.1)

CAUSE

If supplemental logging was not active at the time when the redo records were created, then LogMiner won't be able to obtain all the required information. The Oracle Database Utilities manual mentions:

By default, Oracle Database does not provide any supplemental logging, which means that by default LogMiner is not usable. Therefore, you must enable at least minimal supplemental logging prior to generating log files which will be analyzed by LogMiner.

So, we have to enable supplemental logging by using a SQL statement similar to the following:

SQL> CONNECT / AS SYSDBA

SQL> ALTER DATABASE ADD SUPPLEMENTAL LOG DATA;

Then the information necessary to populate the USERNAME and SESSION_INFO columns will be stored in the redo stream.

The redo stream does not contain the USERNAME and SESSION_INFO data for every transaction. This information is only stored for the first transaction executed in the user's session. So in order to be able to see this information in V$LOGMNR_CONTENTS, all the redo generated during the entire session must be added to the mining session. Should this not be done, then the USERNAME and SESSION_INFO columns will remain empty.

LogMiner was first available in Oracle8i. If the COMPATIBLE instance parameter is set to a value lower than 8.1.0 you will not have access to its full functionality.

In Oracle9i and lower releases of Oracle, the TRANSACTION_AUDITING instance parameter is set to TRUE by default. This causes the generation of a redo record containing the user logon name, username, session ID, and some operating system and client information. For each successive transaction in the session, Oracle will store only the session ID. These session IDs are linked back to the first record to retrieve user and session information.

When TRANSACTION_AUDITING is set to FALSE, this redo record is not written and the user information is not available to LogMiner.

SOLUTION

This can result from your database parameter settings and also from the method you are using to mine redo logs using LogMiner.

Ensure that database was in minimum supplemental logging at the time that the redo information was created:

SQL> SELECT name, supplemental_log_data_min FROM v$database;

NAME                           SUPPLEME

------------------------------ --------

M10202WA                       YES

Ensure that all archive redo logs containing the necessary redo information have been added to the LogMiner session.

Ensure that the COMPATIBLE initialization parameter is set to 8.1.0 or higher.

SQL> show parameter compatible

NAME                                 TYPE        VALUE

------------------------------------ ----------- ----------

compatible                           string      10.2.0.2.0

For Oracle8i and Oracle9i only: ensure that the TRANSACTION_AUDITING instance parameter is set to TRUE (default).

SQL> show parameter transaction_auditing

NAME                                 TYPE        VALUE

------------------------------------ ----------- ----------

transaction_auditing                 boolean     TRUE

oracle开审计记录变动的表,Oracle未开启审计情况下追踪表变更记录相关推荐

  1. mysql不用left join_MySQL在右表数据不唯一的情况下使用left join的方法_MySQL - join

    一.Join语法概述join 用于多表中字段之间的联系,语法如下:... FROM table1 INNER|LEFT|RIGHT JOIN table2 ON conditionatable1:左表 ...

  2. mysql大表不停机加字段_mysql大表在不停机的情况下增加字段该怎么处理

    MySQL中给一张千万甚至更大量级的表添加字段一直是比较头疼的问题,遇到此情况通常该如果处理?本文通过常见的三种场景进行案例说明. 1. 环境准备 数据库版本: 5.7.25-28(Percona 分 ...

  3. mysql锁表查询_Mysql数据库锁情况下开启备份导致数据库无法访问处理分享

    [背景简介] MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),因为其速度.可靠性和适应性而备受关注.大多数人都认为在不需要事务化处理的情况下,MySQL是管理内容最好的选择.mysql ...

  4. 使用哈希函数:H(k)=3k MOD 11,并采用链地址法处理冲突。试对关键字序列(22,41,53,46,30,13,01,67)构造哈希表,求等概率情况下查找成功的查找长度,并设计构造哈希表

    使用哈希函数:H(k)=3k MOD 11 ,并采用链地址法处理冲突. 试对关键字序列(22,41,53,46,30,13,01,67)构造哈希表, 求等概率情况下查找成功的查找长度,并设计构造哈希表 ...

  5. 清空MySQL单库下所有表数据 || 删除MySQL单库下所有表

    一.清空MySQL单库下所有表数据 -- 清空MySQL单库下所有表数据 SELECT CONCAT('truncate table ',TABLE_NAME,';') AS PLEASE_EXEC_ ...

  6. 设有6个有序表A、B、C、D、E、F,分别含有10、35、40、50、60和200个数据元素,各表中元素按升序排列。要求通过5次两两合并,将6个表最终合并成1个升序表,并在最坏情况下比较的总次数达到最

    设有6个有序表A.B.C.D.E.F,分别含有10.35.40.50.60和200个数据元素,各表中元素按升序排列.要求通过5次两两合并,将6个表最终合并成1个升序表,并在最坏情况下比较的总次数达到最 ...

  7. Oracle备份时发现空间不够,存储空间比较紧张的情况下,如何提升Oracle备份的去重率?...

    nbu配置Oracle备份,有两种方式: 传统脚本方式, 就是创建1个备份脚本,policy调用这个脚本来备份 智能策略: 先从java console注册Oracle实例,在创建策略的时候直接通过注 ...

  8. 订单表的字段类型 mysql_Mysql数据库下订单表如何设计?

    Mysql数据库下订单表如何设计 商品表和订单表 . 通过一个表来关联. 那删除了商品,相关联的订单表如何显示出这个已经删除的商品 订单表需要冗余商品名.商品编号.价格等基本信息. 不能只保存一个商品 ...

  9. 系统vt已经开了夜神模拟器还是提醒未开启怎么解决?

    一.检测系统信息中的虚拟化安全性是否已启用 如果这个启用了,VT-x就会被检测未打开 二.打开设备安全性-->内核隔离详细详细信息-->内存完整性-关 直接在系统左下角搜索[设备安全性]打 ...

最新文章

  1. 什么是Singleton?
  2. cobaltstrike安装_Cobalt Strike发送钓鱼邮件
  3. leetcode C++ 6. Z 字形变换 将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。
  4. Redis-学习笔记06【Redis案例】
  5. 怪兽充电宝 共享充电宝源码
  6. 非常不错的一些前端动态效果【收集】
  7. 【C/C++】知识点
  8. Hibernate框架ORM的实现原理-不是技术的技术
  9. Java Web基础回顾 —HTTP
  10. C++转Java快速入门
  11. 通信中的“交织”技术
  12. 手机 机器人 谢超_大咖云集 长三角智造峰会演讲嘉宾名单曝光
  13. 微信小程序vtabs
  14. 公式推导 圆面积公式 圆周长公式
  15. 乔治城大学计算机科学硕士2019,[2019世界大学排名]2019乔治城大学排名
  16. iMX6ul开发指导
  17. 如何合理选择 PLC
  18. 王者nba服务器维护,王者NBA新手常用问题FAQ大全
  19. armel、armhf和arm64
  20. C语言整数转字符串-递归算法

热门文章

  1. 手把手教你Homestead安装,并填坑!!
  2. vue中将md转成html,Vue/Vue中Html和Markdown互相转换/README.md · 倚栏听风/LearningNotes - Gitee.com...
  3. mysql5.6数据库位置_MYSQL5.6数据库存放位置
  4. php扩展调试,5分钟学会PHP扩展开发与断点调试
  5. python读取字典元素笔记_python学习笔记:字典的使用示例详解
  6. pb mysql odbc_PB 连接Mysql ODBC/JDBC
  7. linux 替换文件中的内容/查找、替换、全部替换
  8. jQuery的AJAX
  9. python斐波那契数列前20项_Python每日一练之实现斐波那契数列
  10. R语言多层桑基图_桑基图的绘制核心微生物组分类学及丰度展示