使用闪回查询备份数据

简介: 今天在生产环境中,开发人员提交了一个脚本,是做update操作的,但是update操作的时候过滤条件有些大,本来预计修改的数据只有5000条,结果这个语句运行下来更改了500万条数据。
今天在生产环境中,开发人员提交了一个脚本,是做update操作的,但是update操作的时候过滤条件有些大,本来预计修改的数据只有5000条,结果这个语句运行下来更改了500万条数据。对生产系统来说算是一个数据灾难,赶紧和开发确认了问题发生的时间,结果说是在半夜11点多,刚好在后半夜才开始做数据备份,这样这个变更也同时影响了备份,就算做紧急的数据恢复也是没有任何效果的。目前采用的备份都是全量的按天备份,备份收到影响,恢复还是比较困难的。
这个问题就在紧急的讨论中分为了两个步骤,我来尝试恢复昨天备份前的数据,提供的时间戳是23:48:48 ,而且经过确认这个表中的数据变化很小。如果能够恢复出表中的数据在那个时间点之前,就能把问题降低到最低。
开发从业务的角度看能不能同时提供一些修复。
我查看了undo的空间使用,还是比较充足的,早上已经是10点左右了,所以就是尽快的做数据的恢复,使用闪回查询来做。这个操作也不是百分百好使,毕竟还是依赖一些缓存空间和系统的负载,在反复确认时间后,写了如下的语句。把时间戳提前了3秒。
create table tmp_xxxxx as select * from owner_account.xxxxx as of timestamp to_timestamp('20140723234845','yyyymmddHH24miss');

为了保证不会有其他潜在的因素影响,所以保守起见,没启并行,没加hint
然后就是通过脚本来监控表空间的使用率。看着空间消耗开始一点点增加,最终恢复了昨晚的数据。有了这些数据,就算暂时不会用到,心里也踏实了。
后来开发确认,有一个字段a,这个字段在表里存放的数据就是null,结果开发的update语句相当于又修改了一次,经过反复确认,算是虚惊一场,不过也需要总结不少的经验。
1.在脚本提交之前,如果是dml语句,最好能够评估修改的影响范围,
2.如果脚本比较大,有性能方面的潜在因素,需要让dba来把把关,看看能不能做点什么。
3.充分的测试也很重要,保证数据的安全和高可用是很重要的。
目录
相关文章
|
5月前
|
存储 SQL 关系型数据库
数据库的备份与恢复
数据库的备份与恢复
158 0
|
5月前
|
存储 关系型数据库 MySQL
数据库数据恢复—MySQL数据库误删除表数据的数据恢复案例
数据库数据恢复环境: 一台本地windows sever操作系统服务器,服务器上部署mysql数据库单实例,引擎类型为innodb,表内数据存储所使用表空间类型为独立表空间。无数据库备份,未开启binlog。 数据库故障&分析: 工作人员在执行Delete命令删除数据时未添加where子句进行筛选,导致全表数据被删除,删除后未对该表进行其他操作。
数据库数据恢复—MySQL数据库误删除表数据的数据恢复案例
|
6月前
|
数据库 Windows
数据库数据恢复—SqlServer数据库分区损坏的数据恢复案例
SqlServer数据库数据恢复环境: 一台服务器,windows操作系统+NTFS文件系统,运行了12个sqlserver数据库。 SqlServer数据库故障: 根据用户描述,故障情况是工作人员误操作导致服务器硬盘上sqlserver数据库所在分区损坏。经过北亚企安数据恢复工程师对故障服务器硬盘的初步检测,确认sqlserver数据库所在分区损坏,sqlserver数据库数据丢失。
数据库数据恢复—SqlServer数据库分区损坏的数据恢复案例
|
7月前
|
SQL 数据挖掘 数据库
数据库数据恢复-SQL SERVER数据库文件误还原备份的数据恢复方案
SQL SERVER数据库故障类型: 1、SQL SERVER数据库文件被删除。 2、SQL SERVER数据库所在分区格式化。 3、SQL SERVER数据库文件大小变为“0”。 4、使用备份还原数据库时覆盖原数据库。
|
Oracle 关系型数据库 索引
oracle学习26-误删表数据和误删表回滚
oracle学习26-误删表数据和误删表回滚
80 0
|
SQL 关系型数据库 MySQL
从全备中恢复单库或单表,小心有坑!
MySQL 逻辑备份工具最常用的就是 mysqldump 了,一般我们都是备份整个实例或部分业务库。不清楚你有没有做过恢复,恢复场景可能就比较多了,比如我想恢复某个库或某个表等。那么如何从全备中恢复单库或单表,这其中又有哪些隐藏的坑呢?这篇文章我们一起来看下。
130 0
|
Oracle 关系型数据库
oracle 数据回滚,恢复误删的数据,闪回表功能的使用
oracle 数据回滚,恢复误删的数据,闪回表功能的使用
485 0
oracle 数据回滚,恢复误删的数据,闪回表功能的使用
|
SQL Oracle 关系型数据库
|
关系型数据库 MySQL
使用Xtrabackup完整备份中恢复单表
MySQL目前采取的备份策略都是xtrabackup全备+binlog备份,如果当某天某张表意外的删除,那么如何快速从xtrabackup全备中恢复单表呢?从MySQL 5.6版本开始,支持可传输表空间(Transportable Tablespace),那么利用这个功能就可以实现单表的恢复,同样利用这个功能还可以把innodb表移动到另外一台服务器上。
4425 0