闪回的用途与实战

闪回可以做的操作有如下几种类型:

1、当数据错误删除,并且提交时(flashback table)

2、当错误删除了一张表drop table(flashback drop)

3、通过闪回获取表的历史记录(flashback version query)

4、当错误地执行了一个事务,并且提交了(flashback transaction query)

5、将整个数据库进行恢复。

使用闪回条件:

1、切换到管理员上。

假设开始登录的用户名和密码是MISPS

如果是连接远程的,连接sqlplus的方式是:

sqlplus MISPS/[email protected]:1521/nmcdb.nmc.gov.cn as sysdba;(此时用户名为MISPS,密码为MISPS,nmcdb.nmc.gov.cn为servicename)。

执行下面的命令切换到管理员:

conn / as sysdba;

2、查询undo表空间(undo是一个表空间,这个表空间对应着很多物理上的存储文件,这些文件中记录了所有的操作日志,闪回就是通过undo这个表空间里的日志来做的)

查看表空里的参数

show parameters undo;

结果为:

注意:undo_retention这个参数表示的是闪回的时间限制,其后面的value表示900秒。表示超过2个G的数据,在过了900秒之后不可以回复了。在900秒之内可以恢复!

将900秒改成20分钟的命令: alter system set undo_retention=1200 scope=both;

scope的取值:1、memory(在当前的会话中有效),2.spfile(在配置文件修改,不修改当前会话),3.both(既修改当前会话也修改配置文件)

3闪回表概念:

闪回表,实际上是将表中的数据快速恢复到过去的一个是焦点或者系统改变号SCN上。实际表的闪回,需要使用到与撤销表空间相关的undo信息,通过

show parameter undo命令可以了解这些信息。

用户对表数据的修改操作,都记录在撤销表空间中,这为表的闪回提供了数据恢复的基础。例如,修改某个操作在提交后被记录在撤销表空间,保留时间

为900秒,用户可以在这900秒的时间内对表进行闪回操作,从而将表中的数据恢复到修改之前的状态。

执行表的闪回,需要有flashback any table的权限。

4、授予MISPS用户闪回表的权限

grant flashback any table to MISPS;

这时候MISPS就可以执行闪回表的相关操作了。

5、这时候回到MISPS用下:conn MISPS/MISPS

6、闪回表的语法:

FLASHBACK TABLE [schema.]<table_name>

TO

{[BEFORE DROP
[RENAME TO table]]

[SCN|TIMESTAMP]expr

[ENABLE|DISABLE]TRIGGERS}

schema:模式名,一般为用户名

TO TIMESTAMP:系统邮戳,包含年、月、日、时、分、秒。

TO SCN:系统改变好(system change number,对应修改时的时间)

ENABLE TRIGGERS:表示触发器恢复以后为enable状态,而默认为disable状态。

TO BEFORE DROP:表示恢复到删除之前。

RENAME TO table:表示更换表名。

7、通过时间获取SCN

select timestamp_to_scn(sysdate) from dual;

8、单独创建一张表,来做实验

create table flashback_table

(fid number,

fname varchar(20))

插入3条数据insert into flashback_table values(1,‘tom‘):

查询一下结果:

select * from flashback_table;

10、记录当前的SCN

select timestamp_to_scn(sysdate) from dual;

11、删除一条数据:delete from flashback_table where fid=2;

执行:commit

12、现在的业务是fid=2的数据删除错了,要把它改回来,这时候使用的命令为,这时候就要执行闪回操作。

给出一个错误案例:flashback table flashback_table to scn 8029021

错误原因:

select rowid,fid,fname from flashback_table;

注意:这里的rowid表示的是在硬盘上的位置。错误原因的是Oracle将fid为1和3的数据进行了优化,现在给它的rowid变成连续的了,也就是说在AAASP4AAHAAAAaFAAA和AAASP4AAHAAAAaFAAC之间没有位置了:

默认是不能够移动rowid的,所以出现了上面的错误,所以下面进行配置的修改:开启行移动功能。

语句为:alter table flashback_table enable row movement;

再执行闪回操作:flashback table flashback_table to scn 8029021

select rowid,fid,fname from flashback_table;

这时发现删除的数据再次恢复了。

注意:

1、需要flashback any table的权限

2、开启行移动功能

3、如何获取回退的scn/时间?

4、系统表不能被闪回(管理员的表不能被闪回)

5、数字字典不能被闪回。不能跨越DDL操作。

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

二、闪回删除(drop)

实际上从系统的回收站中的将已删除的对象,回复到删除之前的状态。

系统的回收站只对普通用有用。

---关于Oracle系统回收站。(讲解一个案例)

1、删除一个表

首先查询当前用户下有哪些表

select * from tab;

删除表:

查看系统回收站

show recyclebin;

这时候发现了drop掉的表在recyclebin中发现了。

查看当前是哪个用户:show user;

因为用户MISPS为普通用户所以才有回收站,如果是管理员,就没有回收站:

彻底删除一张表的方式是:drop table T_USER_L purge;purge参数表示彻底删除。

清空回收站的方式:purge recyclebin;

执行闪回删除, flashback table T_USERS_L to before drop;

select * from tab;

发现表恢复了。

方式二:通过回收站中的名字闪回删除。

1、删除表: drop table T_USERS_L;

2、查看回收站的名字:show recyclebin;

通过回收站的名字返回: flashback table "BIN$hIr1xeS0RY2sls0cyMHE3g==$0"
to before drop;

--闪回重名的对象

执行闪回删除,这时候恢复的是最后删除的那个次表

flashback table test to before drop;

如果在此执行闪回表,这时候将出现错误,这时候要对删除的表进行重命名:

查看返回的表:select * from tab;

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

闪回版本查询(侧重点查询)

《未完待续》

闪回的用途与实战

时间: 2024-10-11 01:14:24

闪回的用途与实战的相关文章

oracle闪回表详解

--- 说明闪回数据库 --- 使用闪回表将表内容还原到过去的特定时间点 --- 从删除表中进行恢复 --- 使用闪回查询查看截止到任一时间点的数据库内容 --- 使用闪回版本查询查看某一行在一段时间内的各个版本 --- 使用闪回事务查询查看事务处理历史记录或行 会还原表及其关联对象(如索引.约束条件.触发器等)中的数据. 所谓闪回表,就是将表里的数据回退到历史的某个时间点,比如回退到用户误删除数据之前的时间点,从而将误删除的数据恢复回来,在这个操作过程中,数据库仍然可用而且不需要额外的空间.

MySQL--------基于binlog实现闪回最佳实战

1. 背景 * 为了数据安全,搭建了主从.实时主从备份只能防止硬件问题,比如主库的硬盘损坏.但对于误操作,则无能为力.比如在主库误删一张表,或者一个update语句没有指定where条件,导致全表被更新.当操作被同步到从库上后,则主从都"回天无力". * 闪回用于快速恢复由于误操作丢失的数据.在DBA误操作时,可以把数据库恢复到以前某个时间点(或者说某个binlog的某个pos).比如忘了带where条件的update.delete操作,传统的恢复方式是利用全备+二进制日志前滚进行恢复

oracle flashback——oracle数据闪回实战,及恢复数据到指定的时间戳——timestamp

Microsoft Windows [版本 6.1.7601] 版权所有 (c) 2009 Microsoft Corporation.保留所有权利. C:\Users\ckz>sqlplus zzjd/[email protected]/orcl as sysdba; SQL*Plus: Release 11.2.0.1.0 Production on 星期三 5月 13 17:00:46 2015 Copyright (c) 1982, 2010, Oracle. All rights re

binlog2sql闪回恢复数据

用途: 1.数据快速回滚 2.从binlog生成标准sql 使用限制: 1.必须设置binlog_format=ROW 2.binlog_row_image=full,该参数默认为FULL 3.恢复用户拥有的最小权限集合为:select, super/replication client, replication slave 建议授权 GRANT SELECT, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 权限说明 select:需要读取ser

binlog2sql之MySQL数据闪回

DBA或开发人员,有时会误删或者误更新数据,如果是线上环境并且影响较大,就需要能快速回滚.传统恢复方法是利用备份重搭实例,再应用去除错误sql后的binlog来恢复数据.此法费时费力,甚至需要停机维护,并不适合快速回滚.也有团队利用LVM快照来缩短恢复时间,但快照的缺点是会影响mysql的性能.现在有不少好用而且效率又高的开源闪回工具如binlog2sql.mysqlbinlog_flashback,这些工具在工作中给DBA减轻了不少痛苦,以下针对binlog2sql的使用进行实践演练. bin

Mysql数据闪回的奇技淫巧(binlog2sql)

一.概述 binlog2sql是一个开源项目,应用于大众点评线上环境.类似于ORACLE中的闪回功能,binlog2sql可以基于时间点或者位置偏移量进行数据恢复.从MySQL binlog解析出你要的SQL.根据不同选项,你可以得到原始SQL.回滚SQL.去除主键的INSERT SQL等.也就是对于insert操作会生成对应的delete语句,反之delete操作会生出对应的insert语句,update操作会生成相反的语句. 关于binlog2sql的闪回详细介绍可参考闪回原理与实战.我也是

MySQL Flashback 闪回功能详解

阅读目录 1. 简介 2. 闪回原理 3. flashback安装 4. 使用简介 5. Flashback工具使用注意点 回到顶部 1. 简介 mysqlbinlog flashback(闪回)用于快速恢复由于误操作丢失的数据.在DBA误操作时,可以把数据库恢复到以前某个时间点(或者说某个binlog的某个pos).比如忘了带where条件的update.delete操作,传统的恢复方式是利用全备+二进制日志前滚进行恢复,相比于传统的全备+增备,flashback显然更为快速.简单. 目前My

binlog2sql快速闪回

一.说明: DML(data manipulation language):       它们是SELECT.UPDATE.INSERT.DELETE,就象它的名字一样,这4条命令是用来对数据库里的数据进行操作的语言DDL(data definition language):       DDL比DML要多,主要的命令有CREATE.ALTER.DROP等,DDL主要是用在定义或改变表(TABLE)的结构,数据类型,表之间的链接和约束等初始化工作上,他们大多在建立表时使用DCL(Data Con

Mysql闪回工具之binlog2sql的原理及其使用

生产上误删数据.误改数据的现象也是时常发生的现象,作为运维这时候就需要出来补锅了,最开始的做法是恢复备份,然后从中找到需要的数据再进行修复,但是这个时间太长了,对于大表少数数据的修复来讲,动作太大,成本也大. 当然还有其他的一些操作方法,我们今天有主角. MySQL 闪回工具 --   binlog2sql 用途 数据回滚 主从切换后数据不一致的修复 从 binlog 生成标准 SQL,带来的衍生功能 闪回原理简析 开始之前,先说说闪回.我们都知道 MySQL binlog 以 event 为单