我的问题如下:
1、有一台服务器S,操作系统是windows,数据服务器是oracle9i,服务器从不停止运行,但是要每天分析数据库(datab)里面方案wd的数据。
2、为了安全,每天使用exp命令将方案wd里面的数据(表,索引,函数等等)全部备份出来,用imp命令恢复到另一台机器A上分析。3、但是每次恢复之前,由于机器A里面的数据是过时的,我必须将机器A里面数据库datab中方案wd的表,索引函数等等全部删除(删除需要很长的时间),然后用imp命令把备份的dmp文件恢复回去再进行分析。有没有什么办法可以让我在3上面花的时间少一些,最好是不要每次都删除机器A里面方案wd的数据。
或者有没有更好的恢复dmp数据文件的方法。

解决方案 »

  1.   

    我第一个念头是:
    drop user wd cascade;然后再重建用户wd,最后再导入把这个过程做成脚本或批处理文件执行。
    各位继续补充....
      

  2.   

    补充一下,服务器S和分析用的机器A的操作系统以及数据库是一样的。能不能把服务器\oracle\oradata里面的数据库文件夹全拷出来覆盖到另一台机器上。
    不过数据库文件实在是太大了。
      

  3.   

    把你要的数据放到一个表空间,导出整个表空间,
    在另一台机器上删除整个表空间,重建,导入.我目前就这么干.DELETE 数据会慢死人的.
      

  4.   


    如果是这样,为何不用standby?
    不是正合适吗?
      

  5.   


    在OPEN状态下不行,除非SHUTDOWN,
    COPY 数据文件,控制文件和REDO文件可以,相当于冷备,恢复.
      

  6.   

    imp 命令有追加功能,修改功能,但不能删除。
    老库里的有的记录,当新库里没有的时候导入后新库里依旧出现。
    imp 只能在新库的基础上增加新数据、修改已经存在的数据。
      

  7.   

    楼主现在的实现方式应该是先Drop   User   cascade,然后create user  最后 imp  是吗?如果是这样:那就建立两个用户交替使用,但得在应用程序里做相应的判断。如:
    第一次导serverA:
    create user [user1] ....
    imp [datab]第二次导serverA:
    create user [user2] ....
    imp [datab]
    导入同时或置后执行 drop user  [user1] cascade第三次导serverA:
    create user [user1] ....
    imp [datab]
    导入同时或置后执行 drop user  [user2] cascade这样就节省了你删用户的时间,user1和user2交替使用,
    导1删2,导2删1 ....
      

  8.   

    另附 :
    oracle imp/exp 帮助
    http://www.vcmy.com/article/2006-3-15/127-1.htm应该实现不了,那位能用imp直接实现了别忘了交流一下哈~~~~~
      

  9.   

    yangh44的方法对我来说也不行啊,因为我创建用户后有很多的设置(我都是在Enterprise Manager Console里面设置的,不会用sql语句),加入一个用户以后要在Enterprise Manager Console里面设置一些东西之后才能用,所以我每次不是Drop  User  cascade,而是进入Enterprise Manager Console里面,进入方案wd去删除所有的表等信息。
    另外我对oracle不太熟悉。
      

  10.   

    -------------------------------------------------------------
    所有的设置都能用Sql来实现的!
    表空间的创建一般是用Enterprise Manager Console来实现比较方便,特别是要配置表空间的容量、增量、数据文件等等。但表空间的设置你可以只设置依次,只要不删除表空间即可。
    你可以把两个用户user1和user2执行已经设置好的表空间即可。
    Drop User user1 cascade;
    create user user2 identified by [password] default tablespace [tableSpaceName];
    grant dba to user2;
    $imp user2/[password]@[connStr] file=c:\XXX.dmp fromuser=[oldUserName] touser=user2 ;
    以次类推即可。
      

  11.   

    上面是 导2删1的sql例子,仅供参考 哈~~~