一. 数据泵结构
基于服务器端的高速导入导出工具,通过dbms_datapump包来调用提供expdp,impdp,以及基于web页面来实现导入导出
提供两种数据导入导出方式:直接路径、外部表
可以定制数据泵作业,可以从作业中分离及重新附加到作业
服务器端的数据泵是直接访问数据文件和sga,不会通过会话进行访问
1. 数据泵进程
对于Unix系统,为expdp和impdp对于win系统,为expdp.exe,impdp.exe
启动一个datapump作业,至少会启动以下两个进程,一个data pump master(DMnn),一个或多个工作进程(DWnn),
主进程控制工作进程。
如果多个datapump作业同时运行,那么每个作业都有自己的DMnn和以及DWnn进程。
2. datapump生成下列三种文件
a.sql文件:描述执行作业所包含对象的若干DDL语句。
b.转储文件:即包含数据和原数据的文件c.日志文件:用于记录导出时的相关信息
3. 目录
用于设置导入导出文件或存放的位置
SQL> create directory dir_dmp as '/home/oracle/dmp';SQL> select * from dba_directories;
SQL> grant write,read on directory dir_dmp to scott;
4.优点
a.为数据和数据对象提供更细微级别的选择性(使用exlude,include,content参数)。b.可以设定数据库版本号(用于兼容老系统的数据库系统)
c.并行执行
d.预付导出磁盘所需要的空间(estimate_only参数)
e.支持分布式环境中通过数据库链接实现导入导出
f.支持导入时重新映射功能(即将对象导入到新的目标数据文件,架构,表空间)
g.支持数据元数据压缩及数据采样
二. 数据泵工具说明
oracle10g引入,作用:
1.实现逻辑备份和逻辑恢复2.在数据库用户之间移动对象
3.在数据库之间移动对象
4.实现表空间搬移
三.datapump与exp、imp的区别
1.exp和imp是客户端工具程序,既可以在客户端使用,又可以在服务端使用
2.expdp和impdp是服务器端程序,只能在oracle服务端使用3.imp只是用exp导出的文件,impdp只适用expdp导出的文件
四. datapump的使用
1. datapump导出模式
a.整个数据库b.架构
c.表
d.表空间
e.传输表空间
2. 导出工具expdp
expdp导出工具将数据库中数据备份压缩成一个二进制系统文件,可以在不同os之间迁移查看帮助:expdp -help,exp -?可以查看帮助并进入交互命令方式
a.基于表模式的导出
[oracle@redhat5 dmp]$ expdp scott/oracle directory=dir_dmp dumpfile=emp.dmp tables=scott.emp;b.基于用户模式导出
[oracle@redhat5 dmp]$ expdp scott/oracle directory=dir_dmp dumpfile=scott.dmp schemas=scott;
c.基于表空间导出
[oracle@redhat5 dmp]$ expdp system/oracle directory=dir_dmp dumpfile=users.dmp tablespaces=users;
d.导出整个数据库(并行)
[oracle@redhat5 dmp]$ expdp system/oracle directory=dir_dmp dumpfile=full.dmp parallel=4 full=y;
3.数据泵的监控
a.directorySQL> select * from dba_directories;
b.查看数据泵作业的运行情况
SQL> select * from dba_datapump_jobs;
查看长时间运行的datapumpJob的具体内容
SQL> select * from v$session_longops;
SQL> select owner_name owr,job_name jbn,operation ope,job_mode jbm,state,degree,attached_sessions atts,datapump_sessions dats from dba_datapump_jobs;
SQL> select sid,serial#,session_type from v$session s,dba_datapump_sessions d where s.saddr=d.saddr;
c.监控数据泵的逻辑备份程度
SQL> select sid,serial#,context,sofar,totalwork,round(sofar/totalwork*100,2) from v$session_longops where opname like '%EXP%' and totalwork<>0 and sofar<>totalwork;
4.导入工具impdp的使用
常用的导入模式a.导入表
b.导入方案
c.导入表空间
d.导入数据库
e.传输表空间模式
5.Impdp使用
a.导入表(导入到不同用户)[oracle@redhat5 dmp]$ impdp system/oracle directory=dir_dmp dumpfile=emp.dmp tables=scott.emp remap_schema=scott:system;
b.导入方案
--导入到相同用户
[oracle@redhat5 dmp]$ impdp system/oracle directory=dir_dmp dumpfile=scott.dmp schemas=scott;
--导入到不同用户
[oracle@redhat5 dmp]$ impdp system/oracle directory=dir_dmp dumpfile=scott.dmp schemas=scott remap_schema=scott:system;
c.导入表空间
[oracle@redhat5 dmp]$ impdp system/oracle directory=dir_dmp dumpfile=users.dmp tablespaces=users;
d.导入整个数据库
[oracle@redhat5 dmp]$ impdp system/oracle directory=dir_dmp dumpfile=full.dmp full=y