前言
上次提了一嘴可以用数据泵技术导出导入,也就是用expdp/impdp做导出导入,马上就用到了,在详细做一些介绍吧 !
为什么
expdp/impdp和exp/imp的区别:
exp和imp是客户端工具程序,它们既可以在客户端使用,也可以在服务端使用。
expdp和impdp是服务端的工具程序,他们只能在Oracle服务端使用,不能在客户端使用。
imp只适用于exp导出的文件;impdp只适用于expdp导出的文件。
对于10g以上的服务器,使用exp通常不能导出0行数据的空表,而此时必须使用expdp导出。
导出时可以加上版本version。
是什么
数据泵技术是Oracle Database 10g 中的新技术,它比原来导入/导出(imp,exp)技术快15-45倍。速度的提高源于使用了并行技术来读写导出转储文件。
怎么用
一,expdp导出
1.登录
// 首先切换到oracle用户
su - oracle
//以sysdba的方式登录
sqlplus / as sysdba
2.DIRECTORY对象
//查询DIRECTORY对象
SELECT * FROM dba_directories;
//如果不存在则创建
CREATE OR REPLACE DIRECTORY dump_dir AS '/home/oracle/app/oracle/admin/orcl';
//指定用户赋予在该目录的操作权限
GRANT read,write ON DIRECTORY data_dir TO user1;
//退出sysdba
exit;
3.执行导出
1:“full=y”,全量导出数据库;
expdp 用户名/密码@实例名 dumpfile=expdp.dmp directory=dump_dir full=y logfile=expdp.log;
2:schemas按用户导出;
expdp 用户名/密码@实例名 schemas=user1 dumpfile=expdp.dmp directory=dump_dir logfile=expdp.log;
3:导出表;
expdp 用户名/密码@实例名 tables=table1,table2 dumpfile=expdp.dmp directory=dump_dir logfile=expdp.log;
二,impdp导入
1.确定之前导出的dmp文件位置,或者选择要导出的dmp文件放到指定位置
2.参照expdp导出步骤,建立逻辑目录
impdp user2/password@orcl directory=dump_dir remap_schema=user1:user2 dumpfile=expdp.dmp logfile=expdp.log;
3.执行导入
1:“full=y”,全量导入数据库;
impdp 用户名/密码@实例名 directory=dump_dir dumpfile=expdp.log full=y;
2:同名用户导入,从用户A导入到用户A;
impdp 用户名/密码@实例名 schemas=用户名 directory=dump_dir dumpfile=expdp.dmp logfile=impdp.log;
3:从A用户中把表table1和table2导入到B用户中;
impdp 用户名/密码@实例名 tables=A.table1,A.table2 remap_schema=A:B directory=dump_dir dumpfile=expdp.dmp logfile=impdp.log;
4:追加数据;
impdp 用户名/密码@实例名 directory=dump_dir dumpfile=expdp.dmp schemas=system table_exists_action=replace logfile=impdp.log;
总结
书到用时方恨少,没做过的工作总是需要去查资料。其实使用expdp/impdp导出主要是想导
出时加上一个version,要考虑版本兼容的问题。学到老活到老,文章中有什么问题欢迎大家指
正,不止是这一篇文章,主要是为了总结一些技巧、方法,方便下次巩固,要不过两天我就忘了,
真实一点都不会Java呀!