
数据库删除了数据是一个很棘手的问题,数据的删除首先包括三个层面:
1.删除放入回收站,没有在回收站中清除数据。这种情况是最简单的,进入回收站,找到删除的数据,右击选择恢复。
2.删除后未放入回收站或者删除后清空回收站,尽量先不要往原数据所在盘符下储存内容,刚刚删除的数据只是文件结构被删除,真正的文件数据还没被覆盖。通过数据恢复软件是可以找回来的,专业的软件例如有超级兔子数据恢复软件。
3.如果是删除很久以后才想到数据库数据要恢复,并且磁盘一直在使用,磁盘被填满的话数据就已经被覆盖了,这样的数据是无法找回的。
如何恢复一个被误drop的存储过程--此方法,适用开启归档模式的Oracle数据库
当你DROP掉存储过程时,首先
SQL>dropprocedureselect_data
SQL>altersystemswitchlogfile--切换日志
系统已更改。
查看flash_recovery_area文件下下最新的归档日志
SQL>connsysassysdba--使用sys用户连接
SQL>showparameterutl
NAMETYPEVALUE
-----------------------------------------------------------------------------
create_stored_outlinesstring
utl_file_dirstring
设置utl_file_dir路径
--单实例环境
SQL>altersystemsetutl_file_dir='d:demo'scope=spfile
--RAC环境
SQL>altersystemsetutl_file_dir='d:demo'scope=spfilesid='*'
重启数据库
SQL>Shutdownimmediate
SQL>Startup
建立字典文件(环境为windows)
--dict.ora为文件名d:\demo,为路径名
SQL>executedbms_logmnr_d.build('dict.ora','d:\logmnr',dbms_logmnr_d.store_in_flat_file)
PL/SQL过程已成功完成。
建立日志分析列表
SQL>executedbms_logmnr.add_logfile(logfilename=>'E:\app\ZT\flash_recovery_area\lyz\ARCHIVELOG\2012_11_21\O1_MF_1_29_8BRJ6S2J_.ARC',options=>dbms_logmnr.new)
PL/SQL过程已成功完成。
--继续添加日志
SQL>executedbms_logmnr.add_logfile(logfilename=>'E:\app\ZT\flash_recovery_area\lyz\ARCHIVELOG\2012_11_21\O1_MF_1_30_8BRJSY77_.ARC',options=>dbms_logmnr.addfile)
PL/SQL过程已成功完成。
启动LogMiner
SQL>executedbms_logmnr.start_logmnr(dictfilename=>'D:\logmnr\dict.ora',options=>dbms_logmnr.ddl_dict_tracking)
PL/SQL过程已成功完成。
数据库中的数据被删除后,可以恢复。但至少需要满足两个条件:1、在误删之前,至少有完整备份之前的数据库。
2、数据库的恢复模式(Recoverymode)是“完整(Full)”。
只有满足这两个条件,才可以恢复数据库中误删的数据。
针对这两个前提条件,有三种方式可以恢复数据:
方式一:如果,这两个前提条件都满足,可以通过SQL语句进行数据恢复,而且只需三步即可恢删除的数据,无需第三方工具。
方式二:当不满足第一个条件,而满足第二个条件时,需要借助第三方工具,才能恢复数据。
方式三:如果两个条件都不满足,数据则无法恢复。所以,一定将数据库的恢复模式,调整为“完整(Full)”。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)