Chinaunix首页 | 论坛 | 博客
  • 博客访问: 8350717
  • 博文数量: 444
  • 博客积分: 10593
  • 博客等级: 上将
  • 技术积分: 3852
  • 用 户 组: 普通用户
  • 注册时间: 2006-05-09 15:26
文章分类

全部博文(444)

文章存档

2014年(1)

2013年(10)

2012年(18)

2011年(35)

2010年(125)

2009年(108)

2008年(52)

2007年(72)

2006年(23)

分类: Oracle

2009-03-31 19:19:51

一、关于数据泵的概述

 

      在Oracle 10g中,数据泵(Data Pump)的所有工作都有数据库实例来完成,数据库可以并行来处理这些工作,不仅可以通过建立多个数据泵工作进程来读/写正在被导出/导入的数据,也可以建立并行I/O服务器以更快地读取或插入数据,从而,单进程瓶颈被彻底解决。

 

      通过数据泵,以前通过EXP/IMP主要基于Client/Server的逻辑备份方式转换为服务器端的快速备份数据泵主要工作在服务器端,可以通过并行方式快速装入或卸载数据,而且可以在运行过程中调整并行的程度,以加快或减少资源消耗。

 

      数据泵通过新的API来建立和管理,这些新的工作主要由DBMS_DATAPUMP来完成。新的导入/导出工具完全成为了一个客户端应用,通过IMPDP/EXPDP执行的命令实际上都是在调用Server端的API在执行操作,所以一旦一个任务被调度或执行,客户端就可以推出连接,任务会在server端继续执行,随后通过客户端实用程序从任何地方检查任务的状态和进行修改

 

二、数据泵的使用

 

示例: expdp scott/tiger DIRECTORY=dmpdir DUMPFILE=scott.dmp

 

注意到与EXP不同,EXPDP增加了一个主要的参数:DIRECTORY

 

这个参数是用来定义一个路径,前面已经提到,数据泵主要在Server端工作,导出文件需要写出到Server端本地目录,这个DIRECTORY就是对应的Server端的路径

 

如:

//创建目录

create or replace directory  expdir as 'd:\';

//查找目录

SQL> select * from dba_directories;
 

//给test赋予目录的读写权限

grant read,write on directory expdir to test;

 

//导出数据

C:\>expdp   dumpfile=test.dmp directory=expdir

 

 

三、EXPDP/IMPDP的停止与重启动

 

EXPDP和IMPDP的本质在于,通过API调用,把传统的EXP/IMP类交付式模式的操作,转变成数据库内部的job任务,从而实现了任务的可终止与重启动。

 

c:\expdp directory=dpdata dumpfile=full.dmp full=y job_name=expfull

 

在执行过程中,可以拿下Ctrl+C组合键,退出当前交互模式,退出之后,导出操作不会停止,这不同于Oracle以前的EXP。以前的EXP,如果退出交互式模式,就会出错终止导出任务

 

在Oracle 10中,由于EXPDP是数据库内部定义的任务,已经与客户端无关。退出交互之后,会进入export的命令行模式,此时支持status等查看命令:

 

Export> status

 

如果想停止改任务,可以发出stop_job命令

 

Export> stop_job

如果有命令行提示

是否确实要停止此作业([Y]/N):

Are you sure you wish to stop this job ([yes]/no):

回答应是yes或者no

 

接下来可以通过命令行再次连接到这个任务

 

c:\expdp attach=expfull

 

通过start_job命令重新启动导出

 

Export> start_job

 

4、EXPDP排出部分对象的导出

 

在EXPDP的帮助文件中,可以看到存在EXCLUDE和INCLUDE参数

这个两个参数文档中介绍的命令格式存在问题,这个两个参数的正确用法是:

 

EXCLUDE=OBJECT_TYPE[:name_clause][,...]

INCLUDE=OBJECT_TYPE[:name_clause][,...]

 

示例:

expdp  schema=scott exclude=sequence,table:"in('EMP','DEPT')"

impdp  schema=scott include=function,package,procedure,table:"='EMP'"

 

有了这些还不够,由于命令中包含了多个特殊字符,在不同的操作系统下需要通过转义字符才能使上面的命令顺利执行

如:EXCLUDE=TABLE:\"IN('BIGTALE')\"

阅读(766) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~