oracle数据库正常在用的库,插入了表数据(此数据很重要不能删),后做了错误操作,修改了表结构和视图存储,导致数据库有问题,具体不知道做了什么操作导致,后做了备份。现有一个备份是插入数据之前做的,表结构和视图都没问题。怎么把此数据库修复?且需要保证数据的完整性。(本人小白)

解决方案 »

  1.   

    楼主最好说明一下,是哪种备份。
    如果是rman,现在测试机上做恢复,再通过dblink把数据插过来就行。如果是exp或expdp,直接恢复到另一个schema(用户),再插过来。
      

  2.   

    对啊。恢复的方式取决于你备份的方式。
    如果你是单表备份出来的:
    create table newtable as select * from 你的表 --先备份现在有新数据的表
    drop table 你的表 purge;
    create table 你的表 as select * from 插入之前的备份表;如果是exp或expdp导出备份:
    先备份现有结构及内容 --貌似你有了
    drop table 你的表 purge ;
    imp ..... 
      

  3.   

    备份用的是exp导出。所有的操作都用了同一用户。
      

  4.   

    exp备份的数据,多谢指导。
      

  5.   

    exp备份的数据,多谢指导。在另一台机器上安装同样版本的数据库,然后用你EXP导出的备份文件用IMP导入,然后把原库问题的表删除并重建,数据通过DBLINK插入到原库
      

  6.   


    那就 imp 到另一个用户(最好是新建一个用户)下,再 insert into t select * from new_user.t 
      

  7.   

    把表定义IMP出来,然后修改源库的表定义有什么问题?