精华内容
下载资源
问答
  • oracle恢复删除数据

    万次阅读 2019-03-21 15:44:58
    利用oracle提供的闪回方法,如果在删除数据后还没做大量的操作(只要保证被删除数据的块没被覆写),就可以利用闪回方式直接找回删除的数据 具体步骤为: *确定删除数据的时间(在删除数据之前的时间就行,不过...

    1。select * from znjtresource.t_device_epolice as of timestamp to_timestamp('2019-3-21 15:20:00','yyyy-mm-dd hh24:mi:ss')
    2,。insert into znjtresource.t_device_epolice (select * from znjtresource.t_device_epolice as of timestamp to_timestamp('2019-3-21 15:20:00','yyyy-mm-dd hh24:mi:ss'));

     

    1.delete误删除的解决方法
    原理:

    利用oracle提供的闪回方法,如果在删除数据后还没做大量的操作(只要保证被删除数据的块没被覆写),就可以利用闪回方式直接找回删除的数据
    具体步骤为:

    *确定删除数据的时间(在删除数据之前的时间就行,不过最好是删除数据的时间点)

    *用以下语句找出删除的数据:select * from 表名 as of timestamp to_timestamp('删除时间点','yyyy-mm-dd hh24:mi:ss')

    *把删除的数据重新插入原表:

         insert into 表名 (select * from 表名 as of timestamp to_timestamp('删除时间点','yyyy-mm-dd hh24:mi:ss'));注意要保证主键不重复。

    如果表结构没有发生改变,还可以直接使用闪回整个表的方式来恢复数据。

    具体步骤为:

    表闪回要求用户必须要有flash any table权限

     

     --开启行移动功能 

     ·alter table 表名 enable row movement

     --恢复表数据
     ·flashback table 表名 to timestamp to_timestamp(删除时间点','yyyy-mm-dd hh24:mi:ss')

     --关闭行移动功能 ( 千万别忘记 )

     ·alter table 表名 disable row movement


    2.drop误删除的解决方法

    原理:由于oracle在删除表时,没有直接清空表所占的块,oracle把这些已删除的表的信息放到了一个虚拟容器“回收站”中,而只是对该表的数据块做了可以被覆写的标志,所以在块未被重新使用前还可以恢复。

    具体步骤:

    *查询这个“回收站”或者查询user_table视图来查找已被删除的表:

     · select table_name,dropped from user_tables

     · select object_name,original_name,type,droptime from user_recyclebin

    在以上信息中,表名都是被重命名过的,字段table_name或者object_name就是删除后在回收站中的存放表名

    *如果还能记住表名,则可以用下面语句直接恢复:

      flashback table 原表名 to before drop

     如果记不住了,也可以直接使用回收站的表名进行恢复,然后再重命名,参照以下语句:

      flashback table "回收站中的表名(如:Bin$DSbdfd4rdfdfdfegdfsf==$0)" to before drop rename to 新表名

    oracle的闪回功能除了以上基本功能外,还可以闪回整个数据库:

    使用数据库闪回功能,可以使数据库回到过去某一状态, 语法如下:

    SQL>alter database flashback on
    SQL>flashback database to scn SCNNO;
    SQL>flashback database to timestamp to_timestamp('2007-2-12 12:00:00','yyyy-mm-dd hh24:mi:ss');


    总结:
    oracle提供以上机制保证了安全操作,但同时也代来了另外一个问题,就是空间占用,由于以上机制的运行,使用drop一个表或者delete数据后,空间不会自

    动回收,对于一些确定不使用的表,删除时要同时回收空间,可以有以下2种方式:

      1、采用truncate方式进行截断。(但不能进行数据回恢复了)

      2、在drop时加上purge选项:drop table 表名 purge

         该选项还有以下用途:

      也可以通过删除recyclebin区域来永久性删除表 ,原始删除表drop table emp cascade constraints
       purge table emp;
       删除当前用户的回收站:
        purge recyclebin;
       删除全体用户在回收站的数据:
       purge dba_recyclebin

    展开全文
  • oracle恢复删除数据.txt

    2019-09-27 17:38:07
    oracle数据被误删,并且commit之后,对误删的表记录,只要没有truncate语句,就可以根据事务的提交时间进行选择恢复
  • 恢复ORACLE被误更新或删除数据的办法 原文:点击打开链接 在删除数据的时候不小心,把delete语句执行错了,把别的表给delete,而且还执行了commit!真汗.......数据是相当的重要........废话少说了!赶快找方法吧...

    恢复ORACLE被误更新或删除数据的办法

    原文:点击打开链接

    在删除数据的时候不小心,把delete语句执行错了,把别的表给delete,而且还执行了commit!真汗.......数据是相当的重要........废话少说了!赶快找方法吧:

    第一种:

    1.打开Flash存储的权限

    ALTER TABLE tableName ENABLE row movement ;
    2.把表还原到指定时间点
    flashback table tableName to timestamp to_timestamp(''2011-02-28 10:40:00'',''yyyy-mm-dd hh24:mi:ss'');
    后面的参数为要还原的时间点

    第二种:利用ORacle的快照进行查找某个时间点的数据

    select * from tableName AS OF TIMESTAMP  (SYSTIMESTAMP - INTERVAL '100' MINUTE)
    或
    select * from tableName as of timestamp to_timestamp('2011-05-21 11:40:00','YYYY-MM-DD HH24:MI:SS');

    这样可以查询到指定的时间段的数据,再把查询到的数据复制到原来的表中。

    第三种:其他(在别的地方找到的答案,但还没有试过!)

    删除表后,可以采用如下操作:在 查询表user_recyclebin最近操作过的表名称,然后用闪回(只能用于10G及以上版本)。 

    select * from user_recyclebin;
    FLASH BACK TABLE TABLE_NAME TO BEFORE DROP; 

    如果是删了或修改里面的数据,可以先建立一个快表将删除修改之前状态的数据找回到这个表中:

    CREATE TABLE QUICK_TABLE AS SELECT * FROM TABLE_NAME AS OF TIMESTAMP SYSTEM-1/24 (一小时前的),减去的时间可以自己定。

    第四:通过SCN实现

    SCN(系统改变号),它的英文全拼为:System Change Number ,它是数据库中非常重要的一个数据结构。

    SCN提供了Oracle的内部时钟机制,可被看作逻辑时钟,这对于恢复操作是至关重要的
    注释:Oracle 仅根据 SCN 执行恢复。
    它定义了数据库在某个确切时刻提交的版本。在事物提交时,它被赋予一个唯一的标示事物的SCN 。一些人认为 SCN 是指, System Commit Number ,而通常 SCN 在提交时才变化,所以很多情况下,这两个名词经常被交替使用。
    究竟是哪个词其实对我们来说并不是最重要的,重要的是我们知道 SCN 是 Oracle 内部的时钟机制, Oracle 通过 SCN 来维护数据库的一致性,并通过SCN 实施 Oracle 至关重要的恢复机制。
    1:执行下面语句,将删除时间转换为scn 

    select timestamp_to_scn(to_timestamp('2011-08-03 10:00:00','YYYY-MM-DD HH:MI:SS')) from dual;

    结果:11837812:在将table的scn点取出来。

    select * from moAS OF SCN 11837813;

    最后把查出来得结果insert到原表中

    insert into mo select * from mo AS OF SCN 1183781




    展开全文
  • Oracle恢复删除数据

    2011-04-22 16:48:17
    Oracle恢复删除数据 Oracle恢复删除数据 Oracle恢复删除数据
  • 恢复删除数据一、创建模拟环境 代码如下:SQL> create table hr.xifenfei (id number,name varchar2(20)) tablespace xff;Table created.SQL> insert into hr.xifenfei values(1,’xifenfei’);1 row created.SQL> ...
  • oracle找回删除数据

    2016-08-31 09:23:10
    oracle找回删除数据
  • oracle恢复删除的表数据

    千次阅读 2018-10-09 16:00:25
    一、通过scn恢复删除且已提交的数据  1、获得当前数据库的scn号  select current_scn from v$database; (切换到sys用户或system用户查询)   查询到的scn号为:1499223  2、查询当前scn号之前的scn  ...

    分为两种方法: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、恢复删除且已提交的数据

        flashback table 表名 to scn 1499220;

    二、通过时间恢复删除且已提交的数据

      1、查询当前系统时间

        select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;

      2、查询删除数据的时间点的数据

        select * from 表名 as of timestamp to_timestamp('2018-10-09 15:29:00','yyyy-mm-dd hh24:mi:ss');  (如果不是,则继续缩小范围)

      3、恢复删除且已提交的数据

        flashback table 表名 to timestamp to_timestamp('2018-10-09 15:29:00','yyyy-mm-dd hh24:mi:ss');

        注意:如果在执行上面的语句,出现错误。可以尝试执行 alter table 表名 enable row movement; //开启行移动功能

                  备注:恢复后请关闭行移动功能 //alter table 表名 disable row movement;

    展开全文
  • ORACLE数据库误操作执行了DELETE,该如何恢复数据ORACLE数据库误操作执行了DELETE,该如何恢复数据ORACLE数据库误操作执行了DELETE,该如何恢复数据ORACLE数据库误操作执行了DELETE,该如何恢复数据ORACLE数据库...
  • 您可能感兴趣的文章:Oracle删除数据后的数据恢复详解Oracle7.X 回滚表空间数据文件误删除处理方法Oracle7.X 回滚表空间数据文件误删除处理方法Oracle7.X 回滚表空间数据文件误删除处理方法误删除$ORACLE_HOME/...
  • Oracle删除数据后的恢复详解   测试环境: SYSTEM:IBM AIX 5L Oracle Version:10gR2   1. undo_retention参数的查询与修改 使用show parameter undo命令查看当前的数据库参数undo_retention设置。 显示如下:...
  • 原创Oracle 物理删除数据文件恢复 危机演练
  • --一、误删除表的恢复方法--查询这个“回收站”或者查询user_table视图来查找已被删除的表:select table_name,dropped from user_tablesselect object_name,original_name,type,droptime from user_recyclebin--如果...

    --一、误删除表的恢复方法

    --查询这个“回收站”或者查询user_table视图来查找已被删除的表:

    select table_name,dropped from user_tables

    select object_name,original_name,type,droptime from user_recyclebin

    --如果还能记住表名,则可以用下面语句直接恢复:

    flashback table xq1 to before drop

    -- 如果记不住了,也可以直接使用回收站的表名进行恢复,然后再重命名,参照以下语句:

    flashback table "回收站中的表名(如:Bin$DSbdfd4rdfdfdfegdfsf==$0)" to before drop rename to 新表名

    --oracle的闪回功能除了以上基本功能外,还可以闪回整个数据库:

    --使用数据库闪回功能,可以使数据库回到过去某一状态,语法如下:

    sql>alter database flashback on

    sql>flashback database to scn SCNNO;

    sql>flashback database to timestamp to_timestamp('2017-08-03 12:00:00','yyyy-mm-dd hh24:mi:ss');

    --二、误删除表数据恢复方法

    delete from xq1

    --方法一:

    --1.1获得当前数据库的scn号,如果权限不够,切换到sys或者sysdba

    select current_scn from v$database;

    select * from xq1 as of scn 2229400;

    --1.2开启行移动功能

    alter table xq1 enable row movement

    --1.3恢复删除且已提交的数据

    flashback table xq1 to scn 2229400

    --1.4关闭行移动功能 ( 千万别忘记 ) alter table xq1 disable row movement -- 方法2: --误删除数据 delete from xq1 --2.1查询当前系统时间 select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual; --2.2查询删除数据的时间点的数据 select * from xq1 as of timestamp to_timestamp('2017-08-03 15:41:00','yyyy-mm-dd hh24:mi:ss'); --(如果不是,则继续缩小范围) --2.3恢复删除且已提交的数据 flashback table xq1 to timestamp to_timestamp('2017-08-03 15:41:00','yyyy-mm-dd hh24:mi:ss'); --如果出现ORA-08189: 因为未启用行移动功能,不能闪回表 --2.4开启行移动功能 alter table xq1 enable row movement;--再执行2.3,执行完成记得关闭 --2.5关闭行移动功能 ( 千万别忘记 ) alter table xq1 disable row movement

    总结

    如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。

    本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。

    展开全文
  • 相信大家无论是开发、测试还是运维过程中,都可能会因为误操作、连错数据库、用错用户、语句...当你捶胸顿足或吓得腿软时,肯定希望有办法来恢复这些数据oracle就提供了一些强大的方法或机制,可以帮到有需要的你。
  • oracle删除数据恢复

    2014-01-13 16:38:08
    找回时操作的数据库为oracle 10g , 之前删除方式为delete
  • 最近帮客户维护一个数据库,数据库中的数据被他误删了,下面就为大家分享下我是通过什么方法来实现的
  • 关于Oracle 12.2 如何在PDB级别进行flashback闪回本文主要讨论Oracle 12.2如何给PDB建立恢复点并进行PDB级闪回。   方法步骤(适用Oracle Oracle 12.2.0.1及之后版本) 1. 在PDB级别建立恢复点(restore point)...
  • 我在这里为大家介绍几种误删除数据库中重要数据恢复方法(不考虑全库备份和利用归档日志)第一种数据恢复方法是利用oracle提供的闪回方法进行数据恢复,适用于delete删除(一条记录)方式:首先需要知道是什么时间...
  • 有很多原因导致了数据记录的误删,怎样恢复误删的记录呢?先来看看这个概念: SCN(系统改变号),它的英文全拼为:System Change Number ,它是数据库中非常重要的一个数据结构。 SCN提供了Oracle的内部时钟机制,可...
  • 由于对于truncate命令没有回滚方法来还原,因此就需要对数据库进行恢复操作以将数据恢复回表中。 本文中将给出truncate命令后的恢复思路及步骤: RECOVER DATABASE UNTIL TIME 恢复步骤方案 注意: 在开始使用旧...
  • oracle如何恢复表中删除数据

    千次阅读 2019-05-24 10:03:08
    1.开启表的行移动 sql命令:alter table 表名 enable row movement; 2.查看此表在某一时间点的数据 sql命令:select * from 表名 as of timestamp ...3.恢复数据 sql命令:flashback 表名 to timestamp to_time...
  • oracle数据删除恢复还原

    千次阅读 2018-03-19 19:24:29
    oracle 数据库表数据还原
  • 1、delete误删除的解决方法; 2、drop误删除的解决方法; 3、闪回整个数据库; 4、总结
  • 利用oracle提供的闪回方法,如果在删除数据后还没做大量的操作(只要保证被删除数据的块没被覆写),就可以利用闪回方式直接找回删除的数据。
  • oracle delete删除之后恢复数据

    千次阅读 2018-02-25 11:35:34
    有两种方案解决此问题,具体操作:一:根据时间来恢复:1、查询数据库当前时间(目的是为了检查数据库时间是否与你电脑时间相近...2、查询删除数据时间点之前的数据select * from 表名 as of timestamp to_timestamp...
  • oracle数据删除恢复

    千次阅读 2018-09-11 09:35:20
    select * from 表名 as of timestamp to_timestamp('2014-6-19 1:10:00','yyyy-mm-dd hh24:mi:ss'); alter table 表名 enable row movement; flashback table 表名 ...时间设为删除数据之前的大概时间 亲测有效
  • Oracle必杀技物理删除数据文件恢复,详解了实用的Oracle物理表空间删除修复命令。
  • oracle误删数据和误删表的恢复方法

    千次阅读 2021-01-31 23:19:30
    之前在操作数据的时候,我在思考如何编写SQL,但是不小心按下了F8执行了drop语句,不小心删除了表,不过之后被我恢复了,但是之后我又不小心删错了表数据,虽然很快恢复了,但是我也找了几篇博客对比,虽然都是发生...
  • Oracle从回收站恢复删除的表的数据,以及其他sql优化语句

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 91,893
精华内容 36,757
关键字:

oracle恢复删除的数据