Welcome 微信登录

首页 / 数据库 / MySQL / Oracle数据表被drop后的恢复

Oracle数据表对于被drop的表和索引,都会存放在回收站中(所以对于生产的数据库必须设置好回收站功能)因为本次生成环境在drop掉已有的表后,重新创建了许多的表,所有直接还原的话会提示原有对象存在,表名重复。其中解决方法是:先重命名已经存在的表名,让后还原删除的表,最后进行数据合并1 重命名已经存在的表spool bak.txtselect "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(*)大于0 的数据需要进行数据的合并,否则可以不用管它2 使用还原数据库的命令进行数据还原spool bak2.txtselect " flashback table  "||t.original_name|| " to before drop"  from user_recyclebin t;spool off执行这个bak2.txt中保存的脚本,可以进行数据的还原3 进行数据库中表数据的合并()需要注意的有的数据是直接insert to 就可以,但是有的本来是计时器的功能,只需要对数量进行累加就可以,还有的数据时因为没有重建了一份一样的数据,对于这样的数据就不需要管他4 重建索引Oracle 11g 在RedHat Linux 5.8_x64平台的安装手册 http://www.linuxidc.com/Linux/2014-07/104745.htmLinux-6-64下安装Oracle 12C笔记 http://www.linuxidc.com/Linux/2013-07/86805.htm在CentOS 6.4下安装Oracle 11gR2(x64) http://www.linuxidc.com/Linux/2014-02/97374.htmOracle 11gR2 在VMWare虚拟机中安装步骤 http://www.linuxidc.com/Linux/2013-09/89579p2.htmDebian 下 安装 Oracle 11g XE R2 http://www.linuxidc.com/Linux/2014-03/98881.htm更多Oracle相关信息见Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12本文永久更新链接地址