delete误删数据使用SCN恢复

今天闲来无事,测试一下之前误删数据使用SCN恢复的经过。
本人不喜欢理论那一大套长篇概论,直接开始试验:
首先查看当前SCN值,如果删之后没有查scn值。可以根据scn当前值往前调试,只要保证。你delete删除之后中间没有其他操作。

SELECT dbms_flashback.get_system_change_number FROM dual;

SELECT CURRENT_SCN FROM V$DATABASE;



知道当前SCN号了。SCN一直在增长,这个没啥,然后查看某一个表数据:

select * from zjw.AA;


然后删除这个表并且commit:

delete from zjw.AA


再来查查这个表: select * from zjw.AA

没有数据了。然后根据SCN查看当时SCN值对应的这个表的数据

select * from ZJW.AA as of scn 12637719;


有数据,说明可以,然后来使用insert插入。吧这个数据插入到当前AA表内:

insert into zjw.AA select * from zjw.AA as of scn 12637719;


然后在查看这个表数据:

select * from zjw.AA


ok
成功恢复。
这里说明一下。我前两次差的SCN和最后使用的SCN值不一样,这个没关系。这个SCN值他一直再涨,所以只要是我delete之前的SCN值都可以。从我操作到delete之间的SCN任意一个都可以使用,
比如:我现在在根据SCN随便插两个也可以,我就用最先查到的SCN吧
如:

select from ZJW.AA as of scn 12637321;
select
from ZJW.AA as of scn 12637366;


看到没有,结果一样。

原文地址:http://blog.51cto.com/zjwbk/2061175

时间: 2024-10-08 18:25:53

delete误删数据使用SCN恢复的相关文章

MySQL误删数据救命指南

预防误操作导致文件/数据丢失的建议: 1.欲删除文件时,将rm命令改成mv,可在系统层面将rm命令做个alias(或参考Windows / Mac OSX做法,删除文件时先进回收站).2.删除数据库.表时,不要用drop命令,而是rename到一个专用归档库里:3.删除表中数据时,不要直接用delete或truncate命令,尤其是truncate命令,目前不支持事务,无法回滚.4.用delete命令删除数据时,应当先显式开启事务,这样误操作时,还有机会进行回滚.5.要大批量删除数据时,可以将这

oracle 误删数据的恢复

误删数据的恢复 oracle恢复删除的数据 分为两种方法:scn和时间戳两种方法恢复. 一.通过scn恢复删除且已提交的数据 1.获得当前数据库的scn号 select current_scn from v$database; (切换到sys用户或system用户查询) 查询到的scn号为:1499223 2.查询当前scn号之前的scn select * from 表名 as of scn 1499220; (确定删除的数据是否存在,如果存在,则恢复数据:如果不是,则继续缩小scn号) 3.恢

Oracle闪回查询恢复delete删除数据

Flashback query(闪回查询)原理 Oracle根据undo信息,利用undo数据,类似一致性读取方法,可以把表置于一个删除前的时间点(或SCN),从而将数据找回. Flashback query(闪回查询)前提: SQL> show parameter undo; NAME                                TYPE       VALUE ------------------------------------ ----------- --------

恢复ECS误删数据的最佳实践

1.1 背景知识 Linux删除说明 在 Linux 系统下,通过命令 rm -rf 可以将任何数据直接从硬盘删除,并且没有任何提示,同时 Linux 下也没有与 Windows 下回收站类似的功能,也就意味着,数据在删除后通过常规的手段是无法恢复的,因此使用这个命令要非常慎重.在使用 rm 命令的时候,比较稳妥的方法是: 1)把命令参数放到后面,这样有一个提醒的作用. 2)将要删除的东西通过 mv 命令移动到系统下的 /tmp 目录下,然后写个脚本定期执行清除操作 如上做法可以在一定程度上降低

Oracle误删数据的恢复

Oracle误删数据的恢复,分为两种方法:SCN和时间戳两种方法恢复. 一.通过SCN恢复删除且已提交的数据 1.获得当前数据库的SCN号 select current_scn from v$database; (切换到sys用户或system用户查询) 查询到的SCN号为:1499223 2.查询当前SCN号之前的SCN select * from 表名 as of scn 1499220; (确定删除的数据是否存在,如果存在,则恢复数据:如果不是,则继续缩小scn号) 3.恢复删除且已提交的

【oracle】摸拟故障 - 数据文件丢失恢复,SCN的作用。

模拟数据文件丢失恢复,redolog.archivelog.controlfile文件未丢失的情况恢复. 1.  创建一个表空间.用户.分配权限.建表. a)   createtablespace HXW_WEN datafile'D:\ORACLE\ORADATA\HXW168\HXW_WEN_D01.DBF' size5M autoextendonnext1M maxsize20M; b)createuser wen identifiedby zerostudy defaulttablesp

【Oracle】使用bbed恢复delete的数据

表中的数据被delete之后并不会真正删除数据,而是打了一个删除标记,仅仅要还没有被覆盖就能够恢复回来. 实验步骤例如以下: [email protected]>create table bbed_test(x varchar2(20)); Table created. [email protected]>insert into bbed_test values('BADLY9'); 1 row created. [email protected]>insert into bbed_te

使用BBED恢复DELETE的数据

测试环境请参见 使用BBED手工提交事务 尝试恢复delete的数据: BBED> modify /x 2c offset 5064 File: /data/orcl/orcl/users01.dbf (4) Block: 68               Offsets: 5064 to 5071           Dba:0x01000044 ------------------------------------------------------------------------ 2

关于对SSD误删数据的恢复方法介绍

固态硬盘使用体验好,速度快,但硬盘最基本的的功能是存储,这就面临一个问题,用固态硬盘存储的数据如果被格式化或者误删了,能恢复吗? 固态硬盘用的是闪存,闪存有个特点,不像磁盘那样(磁盘数据可以被覆盖),在使用时不允许覆盖,只能先擦除在写入,也就是说只能在"空闲"的闪存空间进行写入. 如果像机械硬盘那样,只是简单标记一下的话,删除的数据其实还在,那这些闪存空间是不能被写入的,如果到用的时候再擦除,一是影响响应,造成固态硬盘的速度变慢,另一个可能会造成反复擦写某一地址,造成闪存的损坏,进而影