作用:

针对用户的误操作,比如更改数据错误,误删除表等,可以用日志挖掘的方式,跟踪哪个用户什么时候做的操作,并进行数据还原。

一。前期准备:

1.添加最小补充日志,能够记录到更详细的信息,为日志挖掘分析做准备:

SQL> alter database add supplemental log data;

Database altered.

SQL> select supplemental_log_data_min from v$database;

SUPPLEME
--------
YES

2.查看归档模式:

SQL> archive log list;
Database log mode              Archive Mode
Automatic archival             Enabled
Archive destination            /u01/app/oracle/FRA
Oldest online log sequence     8
Next log sequence to archive   10
Current log sequence           10

3.开启归档模式,并设置归档日志的位置:
设置归档日志的位置:
[oracle@edbjr2p1 ~]$ mkdir arch
[oracle@edbjr2p1 ~]$ pwd
/home/oracle
[oracle@edbjr2p1 ~]$ cd arch
[oracle@edbjr2p1 arch]$ pwd
/home/oracle/arch
4.数据库更改参数:SQL> show parameter archive;
SQL> alter system set log_archive_dest_1='location=/home/oracle/arch';
System altered.
SQL> show parameter format;

SQL> alter system set log_archive_format='%t_%s_%r.arc' scope=spfile;
System altered.
SQL> startup force
SQL> show parameter log_archive_format
NAME                                 TYPE        VALUE
------------------------------------ ----------- ------------------------------
log_archive_format                   string      %t_%s_%r.arc
SQL> alter system switch logfile;
System altered.
SQL> select name from v$archived_log;
NAME
--------------------------------------------------------------------------------
/home/oracle/arch/1_10_860888149.dbf
/home/oracle/arch/1_11_860888149.arc
/home/oracle/arch/1_12_860888149.arc

二。模拟用户scott的dml业务操作

5.解锁并更改scott用户密码:
SQL> alter user scott account unlock identified by tiger;
User altered.
查看scott用户7369号员工的工资
SCOTT@PROD1>select empno,sal from emp where empno=7369;
     EMPNO        SAL
       ---------- ----------
      7369        800

误修改数据将7369号员工的工资改成了8000:
SCOTT@PROD1>update emp set sal=8000 where empno=7369;
1 row updated.
SCOTT@PROD1>commit;
Commit complete.
SCOTT@PROD1>select empno,sal from emp where empno=7369;
     EMPNO        SAL
       ---------- ----------
      7369       8000

查看当前归档日志为第1组:
SCOTT@PROD1>conn / as sysdba
Connected.
SYS@PROD1>select group#,members,status from v$log;
    GROUP#    MEMBERS STATUS
---------- ---------- ------------
         1          1 CURRENT
         2          1 INACTIVE
         3          1 INACTIVE
将当前的归档日志组归档:
SYS@PROD1> alter system archive log current;
System altered.
(alter system switch logfile;)
再查看1组日志归档,当前归档日志组切换为了2组:
SYS@PROD1>select group#,members,status,archived from v$log;
 GROUP#    MEMBERS STATUS       ARC
----------      ----------------   ------------        --------
         1                     1       ACTIVE             YES
         2                     1       CURRENT        NO
         3                     1        INACTIVE        YES
查看当前组日志对应的日志文件:
SYS@PROD1>col member for a50;
SYS@PROD1>select group#,member from v$logfile;
    GROUP# MEMBER
---------- --------------------------------------------------
         3 /u01/app/oracle/oradata/PROD1/redo03.log
         2 /u01/app/oracle/oradata/PROD1/redo02.log
         1 /u01/app/oracle/oradata/PROD1/redo01.log
查看当前归档日志信息:
SYS@PROD1>col name for a50
SYS@PROD1>select name from v$archived_log;

NAME
--------------------------------------------------
。。。。。。。
/home/oracle/arc/arc_7c1c5413_0001_0860888149_0000
000016.log

三。开始分析步骤

添加要分析的日志文件和归档日志:注:此时添加的日志文件是归档之前的日志文件,归档日志文件是最新产生的归档日志文件
SYS@PROD1>execute dbms_logmnr.add_logfile(logfilename=>'/u01/app/oracle/oradata/PROD1/redo01.log',options=>dbms_logmnr.new);
PL/SQL procedure successfully completed.
SYS@PROD1>execute dbms_logmnr.add_logfile(logfilename=>'/home/oracle/arc/arc_7c1c5413_0001_0860888149_0000000022.log',options=>dbms_logmnr.addfile);
PL/SQL procedure successfully completed.

开始挖掘:

开始挖掘:
SYS@PROD1>execute dbms_logmnr.start_logmnr(options=>dbms_logmnr.dict_from_online_catalog);
PL/SQL procedure successfully completed.

查询挖掘的结果:
SYS@PROD1>alter session set nls_date_format='yyyy-mm-dd hh24:mi:ss';
Session altered.
SYS@PROD1>col username for a15
SYS@PROD1>col sql_redo for a50
SYS@PROD1>select username,scn,timestamp,sql_redo from v$logmnr_contents where seg_name='EMP';
USERNAME               SCN TIMESTAMP           SQL_REDO
--------------- ---------- ------------------- --------------------------------------------------
SCOTT       1007829 2017-04-19 18:11:07 update "SCOTT"."EMP" set "SAL" = '8000' where "SAL" = '800' and ROWID = 'AAASYzAAEAAAACXAAA';

四。结束日志挖掘:
SYS@PROD1> execute dbms_logmnr.end_logmnr;
PL/SQL procedure successfully completed.

日志挖掘针对DML语句的更多相关文章

  1. 非IMU模式下DML语句产生的REDO日志内容格式解读

    实验内容:非IMU模式下DML语句产生的REDO日志内容格式解读 最详细的解读是UPDATE的. 实验环境准备 11G中默认是开启IMU特性的,做此实验需要关闭此特性. alter system se ...

  2. oracle之二日志挖掘log miner

    日志挖掘 log miner 6.1 log miner的作用: 数据库恢复中有时会需要对Redo log进行分析, 要会使用log miner,以便确定要恢复的时间点或SCN 6.2 有两种日志挖掘 ...

  3. 日志挖掘Logmnr

    日志挖掘 9.1 日志中数据用途 所有对用户数据以及数据字典的改变全部被保存在联机日志中.当然nologging,insert/*+append+/情况比较特殊除外,因此归档日志可以用来做数据库的恢复 ...

  4. oracle日志挖掘

    oracle日志挖掘是一种十分强大的数据恢复技术,只要你保障你的归档日志和重做日志是完整的,那么就可以将你的数据恢复到任何时刻.简单叙述一下日志挖掘的基本原理,然后进行一个简单的小实验. 日志挖掘时基 ...

  5. logminer日志挖掘

    参考自:https://blog.csdn.net/yes_is_ok/article/details/79296614 原文转自:http://blog.itpub.net/26736162/vie ...

  6. 日志挖掘(logminer)

    转. 如何使用logminer分析Oracle   联机日志         笔者在工作中经常遇到这样的情况:为了追踪数据的变化,需要知道某个表或者表中的某行数据是什么时候被修改的,以及修改前的内容. ...

  7. MySQL二进制日志挖掘器BinlogMiner 1.0发布了。

    MySQL从2014年开始超越SQL Server, 占据DB-Engines数据库流行度排行榜第二名, 是一种非常流行的关系型数据库, 特别是在互联网领域, 是一种应该掌握的数据库系统.最近在学My ...

  8. 日志分析方法概述 & Web日志挖掘分析的方法

    日志在计算机系统中是一个非常广泛的概念,任何程序都有可能输出日志:操作系统内核.各种应用服务器等等.日志的内容.规模和用途也各不相同,很难一概而论. 本文讨论的日志处理方法中的日志,仅指Web日志.其 ...

  9. Oracle重做日志和日志挖掘

    重做日志-Redo log 首先给出参考资料: 1.Oracle官网-Managing the Redo Log 为什么需要redo log 内存中数据修改后,不必立即更新到磁盘---效率 由日志完成 ...

随机推荐

  1. 腾讯暑期 前后七面 + hr(已拿offer面经)

    以下是时间线 魔方 魔术师工作室 3.19 一面(120mins) c++ struct和union区别? 指针和引用的区别? 左值和右值? 字节对齐的作用? 什么情况下需要自定义new? mallo ...

  2. JVM垃圾回收器总结

    常见七种垃圾回收器以及使用的垃圾回收算法总结:

  3. 04.06 UCF Local Programming Contest 2017

    A.Electric Bill 题意:简单计算题,超过1000部分额外算 1 #include<stdio.h> 2 int main(){ 3 int money1,money2; 4 ...

  4. log日志重复输出问题(没弄明白原因)

    在别的模块调用定义好的函数 输出的日志出现第一次输出输出一条,第二次输出输出两条...的情况 最后在定义函数处remove了句柄 引用了https://blog.csdn.net/huilan_sam ...

  5. java集合-链表LinkedList

    1.简介 LinkedList 底层使用的是 双向链表的数据结构 2.类图(JDK 1.8) 下图是LinkedList实现的接口和继承的类关系图: public class LinkedList&l ...

  6. .NET平台系列9 .NET Core 3.0 / .NET Core 3.1 详解

    系列目录     [已更新最新开发文章,点击查看详细] .NET Core 3.0 于 2019年9月23日发布,重点是增加对同时支持使用 Windwos Forms.WPF 和 Entity Frm ...

  7. 在 Linux 中,最直观、最可见的部分就是 文件系统(file system)

    在 Linux 中,最直观.最可见的部分就是 文件系统(file system).下面我们就来一起探讨一下关于 Linux 中国的文件系统,系统调用以及文件系统实现背后的原理和思想.这些思想中有一些来 ...

  8. 马哥Linux--elasticsearch

    ELK stack: Lucene: 文档:document 包含了一个或多个域的容器 field:value 域: 有很多选项 索引选项,存储选项,域向量使用选项 索引选项用于通过倒排索引来控制文本 ...

  9. 云计算OpenStack---创建实例(11)

    创建实例时,需要先创建网络及实例类型等其它配置: 一.创建虚拟网络(Self-service network) 网络概述图: 网络连接图: 1.创建self-service网络 (1)加载系统变量: ...

  10. Linux 仿真终端:SecureCRT 常用配置

    SecureCRT 有两类配置选项,分别是会话选项和全局选项. 会话选项:修改配置只针对当前会话有效 全局选项:修改配置对所有会话有效 一般会先选择全局选项修改全局配置,然后选择会话选项单独修改个别会 ...