数据库dmp文件的导入导出
数据泵的使用
–sqlplus下执行
Create directory TEST as ‘d:\test’;
Grant read,write on directory TEST to test01;–cmd命令
expdp test01/1@orcl directory=TEST dumpfile=X.dmp schemas=test01 logfile=Xbak.log;
impdp test01/1@orcl directory=TEST dumpfile=X.dmp schemas=test01 logfile=Xbak.log full=y ignore=y;
impdp test01/1@orcl directory= TEST dumpfile=X.dmp schemas=test01 TABLE_EXISTS_ACTION数据库的导入:
导入数据前要保证该用户下不存在,任何表结构、数据、函数、包等。
如果存在,可以先清空。(采用直接删除用户或表空间见下面附录1)
以用户名密码登录后,在执行sql窗口中(例如:PLSQL Developer的Sql窗口)执行以下sql:
BEGIN
FOR rec IN
(SELECT object_name,object_type from user_objects
WHERE object_type=’PROCEDURE’
OR object_type=’TABLE’
OR object_type=’VIEW’
OR object_type=’FUNCTION’
OR object_type=’PACKAGE’
OR object_type=’SEQUENCE’
)
LOOP
IF rec.object_type=’TABLE’ THEN
EXECUTE IMMEDIATE ‘DROP ‘||rec.object_type||’ ‘||rec.object_NAME||’ CASCADE CONSTRAINTS’;
ELSE
EXECUTE IMMEDIATE ‘DROP ‘||rec.object_type||’ ‘||rec.object_NAME;
END IF;
END LOOP;
END;
然后执行导入语句:
1)用Sytem完全导入数据库(所有数据库的默认账号:system;密码:manager)
imp system/manager@TEST file=”E:\DATABASE_BAK\orcl.dmp” full=y ignore=y;
2)导入特定用户下的数据库
imp 用户名/密码@数据库 file=导入的文件路径 fromuser=需要导入的那个文件是属于哪个用户的 touser=要导入的用户名 ignore=y;
例如:imp username/password@orcl file=”E:\DATABASE_BAK\orcl.dmp” log=”E:\DATABASE_BAK\orclLog.log” fromuser=username touser=musername ignore=y;
注:两个数据库同名则fromuser=username touser=musername 可省略。(添加ignore=y参数,防止已存在数据,不能覆盖导入,会报错,相当于直接跳过该错误继续导入;建议再导入前先清空数据库)数据库的导出:
exp test01/1@orcl file=X.dmp full=y