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

  日志挖掘时基于redo日志和归档日志的基础之上来进行日志加载并进行恢复,挖掘,挖掘,挖的就是你的redo日志和归档日志,当数据库运行过程中,你的所有数据更改操作会被记录在redo日志中,而oracle redo日志记录着undo日志,所以可以使用记录在redo日志中undo日志来对你所做的操作进行回退。我们只需要确定你所做的操作被记录在哪个时间范围内,然后通过时间或者scn号将这个时间范围内的操作加载到 v$logmnr_contents这个视图中,然后找到对应的undo记录,执行undo记录的sql语句,就可以将你的数据恢复至更改前的状态。

  可能说的有点难理解,我们来做一个简单的实验。

  首先确定数据库运行在归档模式下,否则日志一旦被覆盖,那肯定是没办法恢复的,当然,可以通过其他方式,如闪回方式等,但是今天仅仅只针对日志挖掘来进行描述。

1、archive log list --查看系统是否运行在归档模式

我的库是在归档模式,如果没有归档,在mount下开启归档。

2、alter database add supplemental log data; --启动最小日志,这一步是为了日志更加详细,完整。

3、更新一条数据,将new york 更改为test。

4、这个数据更新的时间范围大约是在17点10分之20分。

5、将这个时间段的日志加载到v$logmnr_contents这个视图中。加载方式有很多种,我们使用在线字典自动加载,这种方式支持以时间范围方式加载日志。调用相应的存储过程,除了时间其他的都是固定参数。

6、到此,我们将17点10分到17点20分的redo日志加载到v$logmnr_contents视图中,查看v$logmnr_contents视图的undo记录,。

注解:seg_name 是更改的表明,seg_owner是表所属的用户,sql_redo是redo日志记录的sql信息,刚才是做了一个update操作,所以使用like查询有update字段的字段。过滤条件可以自己定义,只要能确定是哪条数据就可以。查出来的sql_undo 就是你的回退sql 用这条sql就可以将数据恢复到更改前的状态。

7、执行undo字段中的sql。

至此,数据成功恢复,但是在生产环境中需要恢复的数据往往有很多,可能几千甚至几万条,可以写一个循环来对数据进行插入,如下。

注解:利用for循环中的隐式游标存储sql_undo字段中的数据,然后一次执行需要sql进行数据恢复。

oracle日志挖掘的更多相关文章

  1. Oracle 日志挖掘(LogMiner)使用

    Logminer依赖于2个包:DBMS_LOGMNR和DBMS_LOGMNR_D,Oracle 11g默认已安装 Logminer 基本使用步骤 <1>. Specify a LogMin ...

  2. Oracle安全之Oracle日志挖掘

    logminer基于包: [oracle@localhost ~]$ ls /u01/oracle/10g/rdbms/admin/dbmslm.sql -->dbms_logmnr工具 /u0 ...

  3. oracle (9I/10G/11G)数据库日志挖掘(审计误操作)

    文档结构: 资料来自官方网站: https://docs.oracle.com/cd/E11882_01/server.112/e22490/logminer.htm#SUTIL019 来自论坛: h ...

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

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

  5. oracle之二日志挖掘log miner

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

  6. 日志挖掘Logmnr

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

  7. oracle 日志学习(转载)

    一,重做日志概念 重做日志文件(redo log file)对于Oracle数据库至关重要.它们是数据库的事务日志.通常只用于恢复,不过也可以用于以下工作: q 系统崩溃后的实例恢复 q 通过备份恢复 ...

  8. logminer日志挖掘

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

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

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

随机推荐

  1. VueJS实现一个货币结算自定义控件

    Vue.component('currency-input', { template: '\ <div>\ <label v-if="label">{{ l ...

  2. JAVA控制台版斗地主

    一.核心思路: 1.首先分析流程: A>B>C>A>B>C>A>B>C 等于  while(true){ A>B>C } 然后完善细节 发牌 ...

  3. poj3320尺取法

    Jessica's a very lovely girl wooed by lots of boys. Recently she has a problem. The final exam is co ...

  4. 如果非的让我引起大家的狂拍,那我说一句PHP是世界上最好的语言?

    如果你进来了,那就达到了我的目的. 不知不觉.net已经用了3年之久,从最初的的小白到现在的大白,总有一种要骂娘的冲动,.net这一路走来现在越走越迷茫,不知道微软的重心在哪里,一直发现不了他的亮点所 ...

  5. idea 查看tomcat源码

    一.源码下载 SVN :http://svn.apache.org/repos/asf/tomcat/ GIT :https://github.com/apache 二.添加pom.xml文件 1. ...

  6. 深入浅出理解yield

    索引 转载部分内容来自:http://www.jianshu.com/p/d09778f4e055 [彻底理解yield] http://blog.csdn.net/haskei/article/de ...

  7. 学习MVC之租房网站(十)-预约和跟单

    在上一篇<学习MVC之租房网站(九)-房源显示和搜索>完成了房源的显示.检索,然后是用户的预约看房,以及后台操作员对预约看房的跟单操作. 预约看房仅有将预约信息保存到对应表的操作,预约表有 ...

  8. Linux 下安装RabbitMQ 3.6.1

    1.安装erlang 依赖 yum install -y gcc gcc-c++ unixODBC-devel openssl-devel ncurses-devel 2.安装erlang ### 设 ...

  9. Github SSH 的key 生成步骤下

    Git是分布式的代码管理工具,远程的代码管理是基于SSH的,所以要使用远程的Git则需要SSH的配置. github的SSH配置如下: 一 . 设置Git的user name和email: $ git ...

  10. PHP导出生成CSV文件

    composer 用起来是非常方便的 所以我是依赖composer来做的包管理 1.先安装composer 自行百度一下composer安装以及使用 2.用composer下载安装office包即可 ...