oracle的一个数据表被删除,如何恢复数据,以及查询是谁进行了操作_百度...

发布网友 发布时间:2022-04-23 08:00

我来回答

3个回答

热心网友 时间:2022-04-07 16:46

基于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模式插回到源数据库中

热心网友 时间:2022-04-07 18:04

不知道的oracle数据表是drop 掉是还是其他,如果是drop可以通过如下恢复:
1. select object_name,original_name,partition_name,type,ts_name,createtime,droptime from recyclebin;
2. flashback table TAB_test to before drop;
如果是删除数据的可以通过scn来恢复。

热心网友 时间:2022-04-07 19:39

如果是10G,可以从oracle回收站里恢复。10G以下的只能从备份里恢复了。
你可以从$ORACLE_HOME/network/log/listener.log里可以找到谁登录过数据库。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com