在数据库通过用户user1进行exp后,得到了一个1.dmp文件,但我要把他再导入回到user1的话会报错。我看到有人说要先把原用户的所有对象删除掉才行。否则加ignore=y,但是会一行一行的校验,速度太慢。请问我该怎么取舍?难道我要导回原用户即user1还得把user1删掉才行?

解决方案 »

  1.   


    先把原用户删除,然后再重建这个用户,表空间不用删除,最后imp就行了.
      

  2.   

    直接truncate table  tablename 
    然后 imp  就应该可以了啊
    看看报的什么错,是外键错吗是外键错的话
    就要 alter table employees disable/enable constraint emp_ename_fk
    试试看啊  
      

  3.   

    先把原用户删除,然后再重建这个用户,表空间不用删除,最后imp就行了.这样最好!
      

  4.   

    问题也没有那么负责呀!
    我建议 imp时加ignore=y,是最快的。
      

  5.   

    把用户删除还不如导入到一个新的用户里面,然后用sql语句来处理约束性问题
      

  6.   

    我就是楼主这样做的,先删用户,再导入
    有时当前用户正在连接,就要kill sessionsession很多,又不能停机的话,一个个kill就要让人抓狂了,于是写了下面的存储过程,用来删除正在连接的用户,
    楼主可能用得上,拿出来share了CREATE OR REPLACE PROCEDURE KILL_USR_SESSION(USRNAME IN VARCHAR2) AUTHID current_user IS
        SQL_STAT VARCHAR2(100);
        CURSOR CUR_SESSION IS 
            SELECT SID, SERIAL#, USERNAME, STATE FROM V$SESSION WHERE USERNAME = USRNAME AND STATE <> 'KILLED';
    BEGIN
        FOR Recd IN CUR_SESSION LOOP
            SQL_STAT := 'ALTER SYSTEM KILL SESSION '||''''||Recd.SID||','||Recd.SERIAL#||'''';
            EXECUTE IMMEDIATE SQL_STAT;
        END LOOP;
    END;