数据泵的导入导出:
这里我使用的是impdp/expdp。后面我会总结这两种与exp/imp的区别。
一、区别
1、exp和imp是客户端工具程序,它们既可以在客户端使用,也可以在服务端使用。
2、expdp和impdp是服务端的工具程序,他们只能在Oracle服务端使用,不能在客户端使用。
3、imp只适用于exp导出的文件,不适用于expdp导出文件;impdp只适用于expdp导出的文件,而不适用于exp导出文件。
4、对于10g以上的服务器,使用exp通常不能导出0行数据的空表,而此时必须使用expdp导出。
5、expdp 的速度比exp的速度要快。
二、操作过程
1、在虚拟机上创建真实的目录;(注意:第三步创建逻辑目录的命令不会在OS上创建真正的目录,所以要先在服务器上创建真实的目录)。并将你的文件xxx.dmp(以.DMP结尾的) 用xftp之类文件上传到虚拟机。
例如:我上传到
2、登录oracle,验证密码,并以管理员权限登录oracle
2.1切换到oracle 并输入密码 su – oracle
2.2启动监听者 lsnrctl start
2.3以管理员权限登录 cd /u01/app/oracle/oradata/orcl
sqlplus / as sysdba
2.4启动oracle startup
3、创建表用户、赋予权限
–删除临时表空间
drop tablespace balance _temp including contents and datafiles;
–删除表空间
drop tablespace balance _data including contents and datafiles;
–创建临时表空间
create temporary tablespace balance_temp tempfile ‘/u01/app/oracle/oradata/orcl/balance_temp.dbf’ size 200M;
–创建数据表空间
create tablespace balance datafile ‘/u01/app/oracle/oradata/orcl/balance.dbf’ size 200M autoextend on next 200M maxsize 10G;
–创建用户并指定表空间
create user zjkbalance identified by zjkbalance default tablespace balance ;
–赋予读写权限给ast
grant read,write on directory dump_dir to zjkbalance;
–导入
impdp zjkbalance/zjkbalance@orcl directory=dump_dir dumpfile=BALANCE20181124.DMP full=y;
--备注:如果使用别人的导出dmp文件出现了问题 (ZGY是给我dmp文件的人的命名的用户 balance是我自己创建的用户,所以导入别人的文件,最好和别人的用户名和密码保持一致)
–****—用户转换
impdp ZG/ast@orcl directory=DUMP_DIR dumpfile=ZGY20181124.DMP table_exists_action=replace remap_schema=ZGY:balance;
4、导入命令总结
(1)用expdp导出dmp,有五种导出方式:
第一种:“full=y”,全量导出数据库;
expdp user/passwd@orcl dumpfile=expdp.dmp directory=data_dir full=y logfile=expdp.log;
第二种:schemas按用户导出;
expdp user/passwd@orcl schemas=user dumpfile=expdp.dmp directory=data_dir logfile=expdp.log;
第三种:按表空间导出;
expdp zjk_uat/zjk_uat@orcl tablespaces=ZGDATA dumpfile=expdp.dmp directory=data_dmp logfile=expdp.log;
第四种:导出表;
expdp user/passwd@orcl tables=table1,table2 dumpfile=expdp.dmp directory=data_dir logfile=expdp.log;
第五种:按查询条件导;
expdp user/passwd@orcl tables=table1=‘where number=1234’ dumpfile=expdp.dmp directory=data_dir logfile=expdp.log;
五、impdp导入步骤
(1)如果不是同一台服务器,需要先将上面的dmp文件下载到目标服务器上,具体命令参照:http://www.cnblogs.com/promise-x/p/7452972.html
(2)参照“expdp导出步骤”里的前三步,建立逻辑目录;
(3)用impdp命令导入,对应五种方式:
第一种:“full=y”,全量导入数据库;
impdp user/passwd directory=data_dir dumpfile=expdp.dmp full=y;
第二种:同名用户导入,从用户A导入到用户A;
impdp A/passwd schemas=A directory=data_dir dumpfile=expdp.dmp logfile=impdp.log;
第三种:①从A用户中把表table1和table2导入到B用户中;
impdp B/passwdtables=A.table1,A.table2 remap_schema=A:B directory=data_dir dumpfile=expdp.dmp logfile=impdp.log;
②将表空间TBS01、TBS02、TBS03导入到表空间A_TBS,将用户B的数据导入到A,并生成新的oid防止冲突;
impdp A/passwdremap_tablespace=TBS01:A_TBS,TBS02:A_TBS,TBS03:A_TBS remap_schema=B:A FULL=Y transform=oid:n
directory=data_dir dumpfile=expdp.dmp logfile=impdp.log
第四种:导入表空间;
impdp sys/passwd tablespaces=tbs1 directory=data_dir dumpfile=expdp.dmp logfile=impdp.log;
第五种:追加数据;
impdp sys/passwd directory=data_dir dumpfile=expdp.dmp schemas=system table_exists_action=replace logfile=impdp.log;
–table_exists_action:导入对象已存在时执行的操作。有效关键字:SKIP,APPEND,REPLACE和TRUNCATE