`

误删除数据后怎么立即恢复(不考虑全库备份和利用归档日志)

阅读更多

要达到删除数据,有以下几种方式都可以:
1、delete
2、drop一个表
3、truncate一个表

重要的不是怎么删除一个表,而是误删除数据后怎么立即恢复(不考虑全库备份和利用归档日志)。
对于delete方法,可以利用oracle提供的闪回方法,如果在删除数据后还没做大量的操作(只要保证被删除数据的块没被覆写),就可以利用闪回方式直接找回删除的数据:
   A、确定删除数据的时间(在删除数据之前的时间就行,不过最好是删除数据的时间点)
   B、用以下语句找出删除的数据:select * from 表名 as of timestamp to_timestamp('删除时间点','yyyy-mm-dd hh24:mi:ss')
   C、把删除的数据重新插入原表:
     insert into 表名 (select * from 表名 as of timestamp to_timestamp('删除时间点','yyyy-mm-dd hh24:mi:ss'));注意要保证主键不重复。
   以上方式也可以给where条件来。
对于delete方式的误删除。还可以直接使用闪回整个表的方式来恢复数据。(此种方式除要保证上面的闪回前提条件外,还要在删除数据后表结构没有发生改变)
   表闪回要求用户必须要有flash any table权限,首先,必须对表进行下以下操作:
   alter table 表名 enable row movement;
   执行以下语句:flashback table 表名 to timestamp to_timestamp(删除时间点','yyyy-mm-dd hh24:mi:ss');
对于误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提供以上机制保证了安全操作,但同时也代来了另外一个问题,就是空间占用,由于以上机制的运行,使用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的闪回功能除了以上基本功能外,还可以闪回整个数据库:
使用数据库闪回功能,可以使数据库回到过去某一状态, 语法如下:
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');

分享到:
评论

相关推荐

    归档模式恢复数据文件

    这一步骤会利用归档日志中的信息来恢复数据文件,使其回到最后一次备份时的状态。 4. **打开数据库**: - 在数据文件成功恢复后,使用`alter database open`命令打开数据库。此时,数据库应该能够正常工作,并且...

    Centos7.6下Oracle开启归档日志和Rman恢复.docx

    在CentOS 7.6环境下,管理和维护Oracle数据库是关键任务之一,这涉及到对数据库的备份和恢复策略。...通过定期备份和监控归档日志,可以确保在面临数据丢失风险时能够迅速恢复,从而最小化业务中断。

    误删除数据库用rman备份恢复文档

    4. **备份归档日志文件**:观察当前的日志文件,切换多个日志文件并备份,以确保所有事务都得到保存。 接下来,进入测试阶段,模拟误删除数据库并进行恢复: 1. **删除数据库**:在测试环境中,使用Oracle的drop ...

    Oracle11g备份恢复笔记文档

    - **手工备份与恢复**:即用户管理的备份(UMAN),通过操作系统命令完成数据文件的备份与恢复,之后使用归档日志进行恢复。 - **自动备份与恢复**:利用 RMAN(Recovery Manager)实现自动化备份和恢复流程,支持...

    rman备份与恢复(教程与案例)

    RMAN备份的优势在于其自动化程度高,可以灵活地配置备份策略,并且能够充分利用Oracle的闪回技术和归档日志实现高效的恢复。 1. 完整数据库备份:RMAN可以创建整个数据库的备份,包括数据文件、控制文件、重做日志...

    oracle误删除表数据后的恢复详解.doc

    本文将详细讲解 Oracle 误删除表数据后的恢复策略,主要涉及 Undo Retention 参数的查询与修改,以及两种快速恢复数据的方法。 1. **Undo Retention 参数** - **查询 Undo Retention**:在 Oracle 中,`undo_...

    Oracle误删的重要数据恢复指导

    当数据被误删除后,我们可以借助这些工具来尝试恢复。 1. **闪回查询(Flashback Query)**:如果数据库开启了闪回功能,可以通过闪回查询回溯到删除操作之前的状态,查看并恢复数据。`FLASHBACK TABLE table_name ...

    DM8数据库误操作恢复详细步骤

    【DM8 数据库误操作恢复】是数据库管理中的一项重要任务,目的是在出现错误或意外删除后恢复数据到正确状态。以下是对DM8数据库误操作恢复的详细步骤: 1. **开启归档模式**:归档模式对于实现精确的数据恢复至关...

    oracle中truncate table后的数据恢复

    这需要一个一致性的备份和一系列归档日志,以及可能的辅助实例。 - **逻辑恢复**:如果在`TRUNCATE`之前有表的逻辑备份(如导出导入、脚本等),可以通过重新导入数据来恢复。 - **第三方工具**:有些商业或开源的...

    无废话DB2备份和恢复-基础篇

    - **定义**:利用对象备份或归档日志来恢复部分数据库对象。 ##### 5.5 灾难恢复 - **定义**:利用复制、存储镜像等高级技术手段来恢复数据库。 #### 六、备份与恢复命令 DB2提供了多种命令来支持备份和恢复操作...

    Oracle数据备份与容灾方案.pptx

    恢复到想要恢复的时间点,因此必须开启归档模式,让数据库的在线重做日志保存到归档日志目录里,这样才能利用基点备份 + 归档日志重演数据库到指定时间。 查看归档是否开启: 使用 sys 或 system 用户用 sqlplus ...

    Oracle备份与恢复

    Oracle提供了一套全面的备份和恢复策略,包括物理备份、逻辑备份、RMAN( Recovery Manager)备份以及闪回技术等,旨在确保在系统故障、硬件损坏或数据错误时能够快速有效地恢复数据。 一、Oracle物理备份 物理备份...

    Oracle 10g 备份和恢复

    这种恢复方式通常用于处理误删除或者部分数据损坏的情况,可以通过导出/导入工具或者SQL语句实现。 在实际操作中,备份和恢复的策略应该根据业务需求和风险承受能力来制定。例如,对于高可用性要求的系统,可能需要...

    oracle备份与恢复

    - 在发生介质故障(如硬盘损坏)时,使用物理备份恢复数据文件和控制文件。 - 当出现逻辑错误时,可以通过逻辑备份进行恢复,或者使用`FLASHBACK DATABASE`命令。 - 遇到系统崩溃,可以使用RMAN的`RESTORE ...

    ORACLE RMAN备份恢复指南

    它不仅能够实现数据库文件、归档日志和控制文件的备份与恢复,还能执行完全或不完全的数据库恢复操作。相比于传统的备份工具,RMAN具有以下显著优势: 1. **创建控制文件二进制备份**:支持创建控制文件的二进制...

    Oracle RMAN异机不完全恢复

    具体而言,需要将主机A上的全库备份文件及参数文件传输到主机B上,并在此基础上恢复被误删除的`test`表,使其回到某个特定的时间点或系统更改编号(SCN)的状态。 #### 实验准备 - 在主机A上创建测试表`test`并插入...

    ORACLE9I_备份与恢复.doc

    - 媒体恢复:在物理文件丢失或损坏时,利用归档重做日志和联机重做日志进行恢复,包括修复丢失的文件并使其与其他文件同步。 4. 物理备份的类型: - 冷备份:在数据库关闭状态下进行,通常包括数据文件、控制文件...

    Oralcle数据库备份恢复运维实践.pdf

    此外,RMAN还提供了检查点、重做日志文件和归档日志文件的概念,这些在恢复过程中起着关键作用。 数据泵是Oracle的高性能数据传输机制,用于数据迁移、备份和恢复。它包括EXPDP(导出)和IMPDP(导入)两个组件,能快速...

    表空间文件被误删除 怎么办

    6. **数据库的归档日志模式**:在归档日志模式下,数据库可以进行更全面的恢复,包括在数据文件丢失后恢复到特定时间点。确保归档日志可用是关键。 7. **联系专业支持**:如果没有足够的知识和经验来处理这种情况,...

Global site tag (gtag.js) - Google Analytics