我用
imp system/orcl@orcl full=y  file=L:\DBBackUp\ExpBackUp\20080306.dmp log=L:\DBBackUp\ExpBackUp\20080306.log  ignore=y 
语句还原数据库,但是还原之后表中的数据由一条变为两条。貌似是主键失去作用。
请问 在Oracle中如何像 SqlServer中还原数据库的时候能够完全覆盖以前的数据。而不是仅仅的插入新的数据

解决方案 »

  1.   

    参数:IGNORE  忽略创建错误  (N)   可是你把它设置为Y,忽略错误;你不设置这个参考,有主键约束后就不能导进来了;
      

  2.   


    最近我做过的还原操作是在目标库上先把对应的用户删除再做的imp操作
    sql>delete user cascade
    但是这样做里面的涉及到dictinary的内容没有了,
    要重新定义,最后是用建库脚本把comment重新定义才完全恢复的
      

  3.   

    imp导入时不会删除数据,通常的作法是把用户删除,这样其中的数据也跟着删除了,然后重建用户,将数据导入到新的用户中.还有一个办法是自己写一个删除数据表和所有对象的脚本,将用户中的数据清空,然后开始导入.下面是我自己写的一个删除数据的脚本,供参考
    alter session set recyclebin=off;SET PAGESIZE 0
    spool c:\dropobj.sql
    SELECT 'DROP ' || object_type || ' ' || object_name || ';'
      FROM user_objects
     WHERE object_type IN ('PROCEDURE', 'FUNCTION', 'SEQUENCE', 'VIEW', 'PACKAGE', 'SYNONYM');
    spool offspool c:\droptab.sql
    SELECT 'DROP TABLE "' || object_name || '" CASCADE CONSTRAINTS PURGE;'
      FROM user_objects
     WHERE object_type = 'TABLE';
    spool off
      

  4.   

    先drop user xxx cascade,重建用户。
      

  5.   

    先drop user xxx cascade,重建用户。