oracle日志挖掘

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日志挖掘的更多相关文章
- Oracle 日志挖掘(LogMiner)使用
Logminer依赖于2个包:DBMS_LOGMNR和DBMS_LOGMNR_D,Oracle 11g默认已安装 Logminer 基本使用步骤 <1>. Specify a LogMin ...
- Oracle安全之Oracle日志挖掘
logminer基于包: [oracle@localhost ~]$ ls /u01/oracle/10g/rdbms/admin/dbmslm.sql -->dbms_logmnr工具 /u0 ...
- oracle (9I/10G/11G)数据库日志挖掘(审计误操作)
文档结构: 资料来自官方网站: https://docs.oracle.com/cd/E11882_01/server.112/e22490/logminer.htm#SUTIL019 来自论坛: h ...
- Oracle重做日志和日志挖掘
重做日志-Redo log 首先给出参考资料: 1.Oracle官网-Managing the Redo Log 为什么需要redo log 内存中数据修改后,不必立即更新到磁盘---效率 由日志完成 ...
- oracle之二日志挖掘log miner
日志挖掘 log miner 6.1 log miner的作用: 数据库恢复中有时会需要对Redo log进行分析, 要会使用log miner,以便确定要恢复的时间点或SCN 6.2 有两种日志挖掘 ...
- 日志挖掘Logmnr
日志挖掘 9.1 日志中数据用途 所有对用户数据以及数据字典的改变全部被保存在联机日志中.当然nologging,insert/*+append+/情况比较特殊除外,因此归档日志可以用来做数据库的恢复 ...
- oracle 日志学习(转载)
一,重做日志概念 重做日志文件(redo log file)对于Oracle数据库至关重要.它们是数据库的事务日志.通常只用于恢复,不过也可以用于以下工作: q 系统崩溃后的实例恢复 q 通过备份恢复 ...
- logminer日志挖掘
参考自:https://blog.csdn.net/yes_is_ok/article/details/79296614 原文转自:http://blog.itpub.net/26736162/vie ...
- MySQL二进制日志挖掘器BinlogMiner 1.0发布了。
MySQL从2014年开始超越SQL Server, 占据DB-Engines数据库流行度排行榜第二名, 是一种非常流行的关系型数据库, 特别是在互联网领域, 是一种应该掌握的数据库系统.最近在学My ...
随机推荐
- Linux防火墙配置—SNAT2
1.实验目标 以实验"Linux防火墙配置-SNAT1"为基础,为网关增加外网IP地址,为eth1创建虚拟接口,使外网测试主机在Wireshark中捕获到的地址为eth1虚拟接口的 ...
- codeforces 528D Fuzzy Search
链接:http://codeforces.com/problemset/problem/528/D 正解:$FFT$. 很多字符串匹配的问题都可以用$FFT$来实现. 这道题是要求在左边和右边$k$个 ...
- [Git]03 如何查看提交历史
在提交了若干更新之后,又或者克隆了某个项目,想回顾下提交历史,可以使用 gitlog 命令查看. 常用命令 1.查看提交历史 $ git log 2.查看某个文件或者某个目录的递交历史 $ gi ...
- (转)html中 cookie设置
box=="checkBox '是否记住用户密码'": window.onload=function init() { var box = getCookie(" ...
- poj3067 Japan 树状数组求逆序对
题目链接:http://poj.org/problem?id=3067 题目就是让我们求连线后交点的个数 很容易想到将左端点从小到大排序,如果左端点相同则右端点从小到大排序 那么答案即为逆序对的个数 ...
- Java学习笔记——设计模式之四.代理模式
To be, or not to be: that is the question. --<哈姆雷特> 代理模式(Proxy),为其他对象提供一种代理以控制对这个对象的访问. 上代码: p ...
- foreach底层机制
简单例子 直接了解foreach底层有些困难,我们需要从更简单的例子着手.下面上一个简单例子: public class Simple { public static void main(String ...
- 仿中关村win8频道(win8.zol.com.cn)下的tab效果
最近觉得中关村win8频道下的那个Tab效果很好看. 一时兴起就自己做了一个.觉得还蛮不错的,特地来给大家分享一下.以下是相关的HTML页面写法: <div class="popula ...
- python课时二
通过上个博客的学习,相信大家已经对Python是什么东西应该有了相对应的了解,这里也包括Python的一些语法(比如Python在写for循环和if判断的时候都是会有缩进的).这张博客大概会对Pyth ...
- wdc网站部署问题
最近公司新买了一个服务器,将项目迁移到新服务器上,按照wdcp安装方法,部署了lnamp环境,具体方法如下: 安装方法1 只安装wdcp面板看看wget http://down.wdlinux.cn/ ...