flashback table

小心误删除了某个表中的部分数据,需要恢复回来,下面利用 oracle flashback 闪回误删除的表数据

注意: flashback table 需要下面几个条件

<!--[if !supportLists]-->1.       <!--[endif]-->需要有 flashback any table 的系统权限或者是 flashback 这个表的对象权限 ;

<!--[if !supportLists]-->2.       <!--[endif]-->需要有对这个表的基本的 dml alter 操作权限 ;

<!--[if !supportLists]-->3.       <!--[endif]-->必须保证该表 row movement( 这主要是让 flashback 记住表的 rowid)

具体的操作为:

SQL> flashback table code_lkyj to timestamp to_timestamp('2010-03-30 10:00:00','yyyy-mm-dd hh24:mi:ss');

 

flashback table code_lkyj to timestamp to_timestamp(' 2010-03-30 10:00:00 ','yyyy-mm-dd hh24:mi:ss')

 

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

但是抛出了 8189 错误,原因就是因为表没有 row movement, 改变下表的属性:

SQL> alter table code_lkyj enable row movement;

 

Table altered

然后再执行上面的闪回操作

SQL> flashback table code_lkyj  to timestamp to_timestamp(' 2010-03-30 10:00:00 ,'yyyy-mm-dd hh24:mi:ss');

 

Done

查询原来的表误删除的数据闪回回来了 .

 

alter table ta_car_dept disable row movement;

你可能感兴趣的:(oracle,sql)