如何恢复一个被误drop的存储过程

如何恢复一个被误drop的存储过程,第1张

如何恢复一个被误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过程已成功完成。

基于oracle数据文件和控制文件的恢复,只要数据文件还在 就可以利用PRM FOR Oracle工具从中抽取出有用数据。

PRM可以再无备份的情况下恢复被truncated掉的表,也可以恢复无法打开的Oracle数据库(Alter database open失败)中的数据。 PRM是图形化增强版的Oracle DUL工具,同时具备很多Oracle DUL不具备的特性。

而且PRM无需学任何新命令。

对于误 *** 作DROP TABLE的数据恢复

D公司的应用开发人员在ASM存储环境下,在没有任何备份的情况下DROP了系统中一张核心应用表,此时第一时间采用PRM可以恢复该DROP掉数据表的绝大部分数据。10g以后提供了 recyclebin回收站特性,可以首先通过查询DBA_RECYCLEBINS视图来确定被DROP掉的表是否在回收站中,如果在则优先通过回收站flashback to before drop,如果回收站中也没有了,则第一时间使用PRM恢复。

恢复简要流程如下:

首先将被DROP掉的数据表所在的表空间OFFLINE

通过查询数据字典或者LOGMINER找到被DROP掉数据表的DATA_OBJECT_ID,如果此步骤中得不到这个DATA_OBJECT_ID,则需要在NON-DICT非字典模式下

启动PRM,进入NON-DICT非字典模式,并加入被DROP掉数据表所在的表空间的所有数据文件,之后SCAN DATABASE+SCAN TABLE from Extent MAP

通过DATA_OBJECT_ID定位到展开对象树形图中对应的数据表,采用DataBridge模式插回到源数据库中

是oracle数据库吗,删除多长时间了?

恢复两个小时之前的数据,注意使用管理员登录系统:

select

*

from

表名

as

of

timestamp

sysdate-1/12

//查询两个小时前的某表数据!既然两小时以前的数据都得到了,继续怎么做,知道了吧。

如果drop了表,怎么办?可以闪回:

drop

table

表名

数据库误删除表之后恢复,不过要记得删除了哪些表名。

flashback

table

表名

to

before

drop

注意:数据库版本是10g,不过大部分9i的也适用,闪回9i就没有.


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9769850.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存