说起这个Oracle恢复表数据呀,真是让人头大。就像人搞不清楚怎么把家里的锅给弄掉了,结果一着急锅没了,锅里的饭也没了。咋办呢?不过放心,这技术就像咱人捡了锅不小心打破的那样,还是能找回来,只要你方法对了,能捡起来。
要是你不小心把表里的数据删了,别慌,Oracle有些办法能帮你找回来。说白了就是:你删的东西,咱有办法看回去,像是回头捡起掉在地上的东西一样。
一、确认啥时候删的
你得知道自己删的是什么时候的事。要不然就跟咱们老家找人一样,找了半天也不知道啥时候的事,找不着人。要是你知道删除的时间,那就简单了。比如说你知道自己是2018年9月28号上午11点30分到11点34分这几分钟内删除的,那就能精确地找回来。
不过嘞,要是你不记得准确时间,那就只能找个大概的时间了。反正你记得大致的时间,就当做删除的时间点去操作。不过要提醒你的是,要是删了数据之后又做了其他操作,恢复的数据就可能不全,跟你找丢了的东西一样,找回来的可能不齐全。
二、使用Oracle的闪回技术
你删了数据,但不怕,Oracle有个神奇的“闪回”功能,这就像是回到过去,能够把你删掉的东西恢复过来。闪回技术就是通过在特定时间点查找数据,回到你删数据之前的状态。
简单点说,Oracle就是用这种“闪回查询”功能,通过时间戳去恢复删除前的数据。举个例子,就像是你把家里洗碗的那水倒掉了,闪回功能就是回到倒水之前,重新捞起来。
比如,你删除数据的时间是2018年9月28日11点30分,你就可以用如下命令:
select from AT_PP_WORKINSTRUCTION as of timestamp to_timestamp('2018-09-28 11:30:00', 'yyyy-mm-dd hh24:mi:ss') where Inst_Name_s like 'GL6%';
这个命令就能让你恢复到删除之前的状态。只要你操作的是在“闪回”范围内的数据,都能找回来。
三、闪回表恢复(Flashback Table)
有的时候,咱不是单纯想查找数据,而是想恢复整个表的内容,那就可以使用“闪回表恢复”。这个就像是把丢失的碗重新找回来,一点不差。
比如,你的表丢了,你只需要输入下面这段命令,告诉Oracle把丢失的表恢复回来:
flashback table tablename_has_deleted to before drop;
这样,Oracle就会把你删掉的表给恢复回来,跟没删一样。
四、恢复误操作的其他方法
要是你不是删表,也不是删数据,而是清空了表的内容,比如用“truncate”命令把数据清空了,那该怎么恢复呢?其实也是可以恢复的,但得看你平时有没有开启相关的日志。
在Oracle里,如果你不小心清空了表,通常可以通过回滚段恢复数据。只要你不是在自动提交模式下操作,Oracle会记录所有的变更,你就能通过回滚命令恢复回去。
不过,最稳妥的办法还是有备份。就像咱做饭时,锅破了还可以找回来,但如果锅本身没了,那就麻烦了。所以平时最好定期备份数据库,防止发生突发状况。
五、总结一下
恢复Oracle数据库某张表的数据并不难,只要你有一些基础操作。得知道删除数据的时间;可以通过“闪回查询”来找回数据;如果整张表被删了,使用“闪回表”恢复;要是数据被清空了,可以用回滚段恢复;但最重要的还是定期备份,避免无备恢复难。
你看,恢复数据其实就像咱老百姓捡掉的东西一样,能找回来的总是能找回,只要方法对了,操作得当。希望大家以后操作Oracle数据库时,记得小心点,数据可不能随便删了。
Tags:[oracle,数据恢复,删除数据恢复,闪回查询,闪回表恢复,数据库恢复]