oracle 恢复误删除的表和误更新的表

   根据ORACLE10G的特性,当我执行Drop Table或delete all时,Oracle都会把被删除的表或数据记录放到数据库回收站(Database Recyclebin)里。这样我们就可以用flashback table命令恢复被删除的表,语法:

  Flashback table 表名 to before drop;

  table test003 to before drop;

  Flashback complete.

  * from test003;

  NAME STATE PERSON

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

  A 1

  A 2

  A 1

  A 1

  B 2

  B 2

  6 rows selected.

  update的表

  table a to timestamp to_timestamp('2009-11-09 11:00:00','yyyy-mm-dd hh24:mi:ss');

  一般会报错:

  ERROR at line 1:

  ORA-08189: cannot flashback the table because row movement is not enabled

  只需要:

  table a enable row movement;

  Table altered.

  就OK了

  table a to timestamp to_timestamp('2009-11-09 11:00:00','yyyy-mm-dd hh24:mi:ss');

  Flashback complete.

  * from a;

  NAME NUM

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

  jim 90

  tom 100

  kate 220

  lily 330

  [SYS@ora10gr1#2009-11-04/08:42:53] SQL>show parameter db_flashback_retention_target

  NAME TYPE VALUE

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

  db_flashback_retention_target integer 1440

  默认情况下,oracle会对提交的数据做 1440 分钟,也就是一天的“缓存”,因此一天之内的数据是有办法找回的。

时间: 2024-09-19 14:47:15

oracle 恢复误删除的表和误更新的表的相关文章

Oracle基于用户管理的不完全恢复(二)恢复过去某个时间点误操作的表

案例1--恢复过去某个时间点误操作的table 1.基于时间点 SQL> select username,scn,timestamp,sql_redo from v$logmnr_contents where seg_name='TB01'; USERNAME               SCN TIMESTAMP           SQL_REDO --------------- ---------- ------------------- -------------------------

数据库索引问题,我的表是一直更新的表,我怎么才能查到数据(调度?)

问题描述 1.如果是调度的话,我应该怎么设置,2.有没有一种办法可以实时更新 解决方案 解决方案二:比如说,我是一张新闻表,每天都会更新的,但有一个搜索新闻的功能,用了索引后,第二天就不会搜索到新添加的新闻

Oracle基于用户管理的不完全恢复(三)恢复过去某个时间点误操

案例2--恢复过去某个时间点误操作的表(DML) 1.基于change (scn) SQL> conn scott/tiger Connected. SQL> select * from tb01; ID ---------- 1 2 3 SQL> drop table tb01 purge; Table dropped. SQL> create table tb01(id int) tablespace test; Table created. SQL> insert in

oracle清理日常备份数据及恢复误删除表

  一.清理日常备份的数据表 1.背景:系统表空间占用率已经超过90%.于是做了一个相关的垃圾数据进行清理的工作. 2.查询需清理表清单:因为日常在数据库操作的时候,经常会进行一些表的备份.咨询前任系统管理员,他们在备份表的时候一般是在原表上加日期或者使用bak进行标识.于是使用 SELECT owner, num_rows * avg_row_len,table_name FROM DBA_TABLES WHERE TABLE_NAME LIKE '%BAK%' AND REGEXP_LIKE

ORACLE中如何批量更新关联表

在SQL SERVER中,关联表的批量更新,可以参看这里: http://www.cnblogs.com/downmoon/archive/2007/12/29/1019832.html Oracle下没找到好的语法,临时用这个: update employee set hrdeptname= (select d.DEPTNAME from DEPARTMENT d where ROWNUM=1 and d.deptID=employee.hrdeptID ) 对应的SQL Server语法:

想用c#做一个小程序。要把oracle数据库里的某个表的昨日更新内容导出到xml中

问题描述 想用c#做一个小程序.要把oracle数据库里的某个表的昨日更新内容导出到xml中,现在还没点头绪,求大神指点 解决方案 解决方案二:数据库中的表增加两个字段"最后更新时间""最后更新人",然后就行了啊解决方案三:引用1楼xxoo2007的回复: 数据库中的表增加两个字段"最后更新时间""最后更新人",然后就行了啊 重要的不是数据库里面的操作.我是想用c#做个小程序,吧数据库里的表自动导成xml文件解决方案四:其实就

Oracle恢复实验一:使用添加数据文件之前的控制文件

oracle|恢复|控制|数据 --------------------------------------------- 实验平台:windows + Oracle 10.1.0.2.0 Author:NinGoo  2005-03-26 --------------------------------------------   在备份控制文件之后,在数据库中又添加了数据文件,然后当前控制文件损坏,需要使用之前的备份控制文件来做恢复.   1.备份控制文件   SQL> alter data

Oracle Database 10g:最佳新特性(第三周:表空间管理)

oracle 第三周:表空间管理 名字中包含了什么?:改善的表空间管理 表空间管理得到了重大的改进,这可以归因于一个 sparser SYSTEM.为用户定义一个默认表空间的支持.新的 SYSAUX.甚至重命名 您曾经多少次因用户在 SYSTEM 表空间中创建了非 SYS 和 SYSTEM 的段而伤透脑筋? 在 Oracle9i Database 之前,如果在创建用户时没有指定默认表空间,那么它将默认为 SYSTEM 表空间.如果用户在创建一个段时没有显式地指定一个表空间,那么这个段将在 SYS

Oracle恢复管理器(RMAN)的功能

Oracle 恢复管理( RMAN )有很多可以用来帮助备份和恢复进程的功能,该工具具有命令行和 GUI 两种版本.通常, RMAN 执行并标准化备份和恢复进程,并且通过其操作,减少 DBA 在此过程中犯的错误. RMAN 的主要功能如下所示: 备份数据库.表空间.数据文件.控制文件和归档日志 RMAN 工具能以很多种方法备份 Oracle 数据库,给备份和恢复方法提供了很大的灵活性. 通过确定哪些块已经修改,并且仅备份修改过的块来压缩备份 RMAN 提高备份性能的方法之一就是压缩备份. RMA