首页 > 数据库 > Oracle > exp,imp/expdp,impdp
1,数据库模式:导出和导入整个数据库中的所有对象
2,表空间模式:导出和导入一个或多个指定的表空间中的所有对象
3,用户模式:导出和导入一个用户模式中的所有对象
4,表模式:导出和导入一个或多个指定的表或表分区
注意:两个不同版本的oracle之间传输数据客户端版本不能高于服务器版本。
导指定表------exp 'sys/pwd@orcl as sysdba' file=d:\demo.dmp tabless=(scott.t1,scott.t2)
imp 'sys/pwd@orcl as sysdba' file=d:\demo.dmp fromuser=scott
导自己所有对象-----exp scott/pwd@orcl file=d:\scott.dmp owner=scott
imp 'sys/pwd@orcl as sysdba' file=d:\scott.dmp fromuser=scott touser=scott
(也可导入到其他用户)
SYS用户可以exp/imp其他用户的object,是因为SYS含有EXP_FULL_DATABASE和IMP_FULL_DATABASE角色。
sys用户导出的不能用非DBA用户导入。
1)原库和目标库字符集要一致,若不一致可以通过转换环境变量NLS_LANG解决。
2)字符序有大端(big endian)和小端(little endian)之分,
可以通过 SQL> select * from
v$transportable_platform; 查看,如果不一致可以使用rman转换。
3)compatible 10.0.0.或更高
4)迁移的表空间要自包含 (没有索引什么的在别的表空间里)
二, EXPDP/IMPDP
优点:1,比exp、imp速度快1-2个级别;2,重启作业能力;3,并行执行能力;
4,并行运行;5,估算空间需求能力;6,操作网络方式
以sys或system用户完成数据泵导入导出时,可使用缺省的目录data_pump_dir
若设置了环境变量ORACLE_BASE,则data_pump_dir缺省位置是:
$ORACLE_BASE/admin/数据库名/dpdump否则是:$ORACLE_HOME/admin/库名/dpdump
select * from dba_directories;
1)server端先建好一个存放的物理目录
[oracle@prod ~]$mkdir -p /u01/oradata/prod/dir1
2)server端用SYS建立目录对象:
SQL> create directory MY_DIR as '/u01/oradata/prod/dir1';
3)为scott授予目录权限
SQL> grant read,write on directory MY_DIR to scott;
4)导出scott的emp detp的数据,但不导出结构expdp scott/scott directory=MY_DIR dumpfile=expdp_scott1.dmp tables=emp,dept content=data_only reuse_dumpfiles=y
impdp scott/scott directory=MY_DIR dumpfile=expdp_scott1.dmp
5)导出scott用户
expdp scott/scott directory=MY_DIR
dumpfile=expdp1.dmp schemas=scott
//注意与exp的区别,schemas代替了owner的写法,由A用户导入B 用户 REMAP_SCHEMA=A:B
impdp scott/scott directory=MY_DIR dumpfile=expdp1.dmp
6)可传输表空间建directory dir1
C:\Users\Administrator>expdp '/ as sysdba' directory=dir1 dumpfile=tb1.dmp transport_tablespaces=tb1
建directory dir1
[oracle@linux dir1]$ impdp userid=\'/ as sysdba\' DIRECTORY=dir1 DUMPFILE='TB1.DMP' TRANSPORT_DATAFILES='/u01/oradata/prod/MYTB1.DBF'
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/28275505/viewspace-1815732/ ,如需转载,请注明出处,否则将追究法律责任。