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

xiaoxiao2026-04-16  2

如果不小心删除了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;
转载请注明原文地址: https://www.6miu.com/read-5047468.html

最新回复(0)