Oracle使用回闪找回删除的数据

如果不小心删除了oracle表中不应该删除的数据,这时候又想找回来,该怎么做呢?其实oracle提供了一个强大的回闪功能。
在sql窗口中使用
Begin
dbms_flashback.enable_at_time(to_date('2009-4-23 11:50:03','yyyy-mm-dd hh24:mi:ss'));
End;
这里要注意的是只有system用户才有使用包dbms_flashback权限,如果想其他用户也能使用dbms_flashback,那么必须用system给特定用户授权使用这个包的权限!!
可使用grant execute on dbms_flashback to XXX。
这时候我们再查询表里的数据,数据就是参数中所设时间以前的数据。但启动回闪以后只能进行select操作,而不能做dml操作,那我们又想恢复表里的数据到所设的时间点该怎么做呢?
其实很简单,通过写一段很简单的代码就可以实现啦!!
如:
Declare
Cursor c1 Is
Select *
From cux.cux_tes_temp;
Type tbl_type Is Table Of c1%Rowtype;
l_tbl tbl_type;
Begin
--先用一个游标TYPE存储回闪后的数据
Open c1;
Fetch c1 Bulk Collect
Into l_tbl;
Close c1;
dbms_flashback.disable;--关闭回闪模式,就可以进行DML操作了
For i In 1 .. l_tbl.Count
Loop
Insert Into cux.cux_tes_temp
Values l_tbl
(i);
End Loop;
Commit;
End;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值