欢迎投稿

今日深度:

Oracle数据表被drop后的恢复,oracle数据表drop

Oracle数据表被drop后的恢复,oracle数据表drop


对于被drop的表和索引,都会存放在回收站中(所以对于生产的数据库必须设置好回收站功能)

 

因为本次生成环境在drop掉已有的表后,重新创建了许多的表,所有直接还原的话会提示原有对象存在,表名重复。其中解决方法是:先重命名已经存在的表名,让后还原删除的表,最后进行数据合并

 

重命名已经存在的表

 

spool bak.txt

select 'alter table '||t.original_name||' rename to '||t.original_name||'_bak;',' select count(*) from '||t.original_name||'_bak;' from user_recyclebin t;

spool off

 

那么会把修改表名的语句存放在bak.txt中,我们可以稍微调整一下直接运行这个脚本或者是拷贝的sqlplus中执行也可以

 

因为考虑到数据的合并,对于 count*)大于的数据需要进行数据的合并,否则可以不用管它

 

使用还原数据库的命令进行数据还原

spool bak2.txt

select ' flashback table  '||t.original_name|| ' to before drop'  from user_recyclebin t;

spool off

 

执行这个bak2.txt中保存的脚本,可以进行数据的还原

 

 

进行数据库中表数据的合并()

 

需要注意的有的数据是直接insert to 就可以,但是有的本来是计时器的功能,只需要对数量进行累加就可以,还有的数据时因为没有重建了一份一样的数据,对于这样的数据就不需要管他

 

重建索引 


oracle 怎恢复drop掉的表空间?

首先考虑用flash back,如果flash back不行,时间比较短,数据库没有更改那么就用rman基于时间点恢复,如果数据库已经更改,那么需要在其他地方重新把生产数据库备份过去,对新的数据库基于时间点恢复,然后把drop掉的表exp到生产库中。上面说的是方法,没有具体操作。如果需要具体操作,可以回复我给你几个文档。
 

Oracle 11g:恢复drop的表空间

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

www.htsjk.Com true http://www.htsjk.com/shujukunews/3901.html NewsArticle Oracle数据表被drop后的恢复,oracle数据表drop 对于被 drop 的表和索引,都会存放在回收站中 ( 所以对于生产的数据库必须设置好回收站功能 ) 因为本次生成环境在 drop 掉已有的表后,重新...
相关文章
    暂无相关文章
评论暂时关闭