我就是楼主这样做的,先删用户,再导入 有时当前用户正在连接,就要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;
先把原用户删除,然后再重建这个用户,表空间不用删除,最后imp就行了.
然后 imp 就应该可以了啊
看看报的什么错,是外键错吗是外键错的话
就要 alter table employees disable/enable constraint emp_ename_fk
试试看啊
我建议 imp时加ignore=y,是最快的。
有时当前用户正在连接,就要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;