一、数据泵介绍
1、数据泵优点:
①改进性能(较传统的exp/imp速度提高1-2个数量级)
②重启作业能力
③并行执行能力
④关联运行作业能力
⑤估算空间需求能力
⑥操作网络方式
2、数据泵组成部分:
①数据泵核心部分程序包:DBMS_DATAPUMP
②提供元数据的程序包:DBMS_MATADATA
③命令行客户机(实用程序):EXPDP,IMPDP
3、数据泵文件:
①转储文件:此文件包含对象数据
②日志文件:记录操作信息和结果
③SQL文件:将导入作业中的DDL语句写入SQLFILE指定的参数文件中
4、数据泵的目录及文件位置
以sys或system用户完成数据泵的导入导出时,可以使用缺省的目录 DATA_PUMP_DIR通过dba_directories表可以查看;DATA_PUMP_DIR缺省目录位置是:$ORACLE_HOME/admin/database_name/dpdump
二、数据泵导入导出
数据泵的对象可以是表、表空间和用户
1、数据泵导出
1)按表导出
①全表导出
②按查询条件导出表
2)按表空间导出
3)按用户导出
4)导出全库
2、数据泵导入
1)导入表
①导入表,不改变schema
②导入表,改变schema
2)导入表空间
3)导入到具体用户
①导入用户,不改变schema
②导入用户,改变schema
4)导入全库
三、数据泵测试
源端
环境:
Oracle 11.2.0.1
源数据库: vbox88
目标数据库:vbox99
查看数据泵目录:
1)select * from dba_directories;
DATA_PUMP_DIR是默认的,也可以自己创建一个新的目录
2)创建一个目录
create directory data_pump as '/u01/data_pump';
其中/u01/data_pump这个目录要在linux系统中存在,没有的话先创建这个目录。
(删除目录为:drop directory DATA_PUMP;)
3)将目录DATA_PUMP的读写权限赋予scott用户
grant read,write on directory DATA_PUMP to scott;
1、按表导出
导出表时应查看下表的大小
1)全表导出
expdp scott/tiger directory=DATA_PUMP dumpfile=emp1.dmp tables=emp1,dept1;
2)按查询条件导出表
将emp1表deptno为10的数据导出
expdp scott/tiger directory=DATA_PUMP dumpfile=condition.dmp logfile=condition.log tables=emp1 query=\' WHERE deptno\=\10\'
2、按表空间导出
导出前查看下表空间对应数据文件的大小
1)expdp \' / as sysdba \' directory=DATA_PUMP dumpfile=soe_tbs.dmp tablespaces=soe;
3、按用户导出
在导出用户时应查看用户所在的表空间以及表空间的大小
1)expdp \' / as sysdba \' directory=DATA_PUMP dumpfile=scott.dmp schemas=scott;
4、全库导出
导整个数据库
expdp system/manager@orcl directory=dump_dir dumpfile=full.dmp full=y;
目标端
1)将源端的数据拷贝到目标端的目录下
①select * from dba_directories;
② scp 192.168.3.88:/u01/data_pump/* /u01/oracle/dir
1、按表导入
①导入表,不改变schema
impdp scott/tiger directory=DIR pumpfile=emp1.dmp
②导入表,改变schema
impdp \'/ as sysdba \' directory=DIR dumpfile=emp1.dmp remap_schema=scott:wr
2、按表空间导入
在源端查看有哪些表在使用soe表空间以及其所属用户,如果表所在的用户在目标端没有则应创建相应用户,否则在导入的时候会报错。
1)impdp \' / as sysdba \' directory=DIR dumpfile=soe_tbs.dmp tablespaces=soe
3、按用户导入
①导入用户,不改变schema
impdp \' / as sysdba \' directory=DIR dumpfile=scott.dmp
②导入用户,改变schema
impdp \' / as sysdba \' directory=DIR dumpfile=scott.dmp remap_schema=scott:wr
四、目标库远程连接源库导入
①create directory data_pump as '/u01/data_pump';
②grant read,write on directory DATA_PUMP to zyz;
③配置tnsnames
ORCL =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = xxbora)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = orcl)
)
)
④创建dblink
create public database link orcl18 connect to zyz identified by zyz using 'ORCL18';
select count(*) from zyz.userinfo@orcl18;
⑤导入数据
impdp zyz/zyz directory=data_pump network_link=orcl18 schemas=zyz logfile=zyz.log remap_tablespace=JCTABLESPACE:ZYZTABLESPACE exclude=statistics
⑥收集统计数据
exec dbms_stats.gather_schema_stats(ownname=>'ZYZ',estimate_percent=>10,degree=>8,cascade=>true,granularity=>'ALL');