数据泵导出导入

oracle 10g引入了data pump提供的是一种基于服务器的数据提取和恢复的实用程序,data pump在体系结构和功能上与传统的export和import实用程序相比有了
显著的提升。data pump允许您停止和重启作业,查看运行的作业的状态,及对导入和导出的数据做限制。



注意:数据泵文件与传统的exp/imp数据转储文件是不兼容的。

一、以下是data pump的几个优点介绍:

1.数据泵(datapump)的所有工作都有数据库实例来完成,数据库可以并行来处理这些工作,不仅可以通过建立多个数据泵工作进程来读/写正在被导出/导入的数据,也可以建立并行i/o服务器以更快地读取或插入数据,从而,单进程瓶颈被彻底解决。
2.通过数据泵,以前通过exp/imp主要基于client/server的逻辑备份方式转换为服务器端的快速备份,数据泵主要工作在服务器端,可以通过并行方式快速装入或卸载数据,而且可以在运行过程中调整并行的程度,以加快或减少资源消耗。

二、步骤如下

1. 创建directory

data pump要求为将要创建和读取的数据文件及日志文件创建目录,这个参数是用来定义一个目录,前面已经提到数据泵主要在server端工作,
导出文件需要写出到server端本地目录,这个directory就是对应的server端的目录。将要访问数据泵文件的用户必须要拥有该目录的读/写权限。
注意:在开始操作之前要验证外部目录是否存在,并且下达create directory命令的用户需要拥有create anydirectory的系统权限。
下面给出一个创建名为test的目录并授予system用户访问此目录读/写权限。

创建目录并赋予权限,要在bba 权限下创建,或者直接将数据中已有的目录授权给其他用户
sql> create directory test as 'd:\test';
sql> grant read,write on directory test to system;

查看数据库中已创建的directory的两个视图:
select * from all_directories;
select * from dba_directories;

然后在目标磁盘下手工创建文件夹d:\test


2. 数据泵导出

单个用户方案导出,用得最多的昌此种方式
expdp [用户名]/[密码]@[主机字符窜] schemas=[用户名] directory=test dumpfile=x.dmp logfile=x.log

数据库全库导出
expdp [用户名]/[密码]@[主机字符窜] full=y directory=test dumpfile=x.dmp logfile=x.log

用管理员导入多个用户
expdp [用户名]/[密码]@[主机字符窜] schemas=[用户名],[用户名1],[用户名2]…… directory=test dumpfile=x.dmp logfile=x.log


3. 数据泵导入

按以上导出方式:
单个用户方案导入
impdp [用户名]/[密码]@[主机字符窜] schemas=[用户名] directory=test dumpfile=x.dmp logfile=x.log ignore=y

数据库全库导入
impdp [用户名]/[密码]@[主机字符窜] full=y directory=test dumpfile=x.dmp logfile=x.log ignore=y


注意:directory的位置
drop directory test 删除目录


--查询条件导出
expdp scott/tiger@back directory=dpdata1 dumpfile=expdp.dmp tables=emp query='where deptno=20';


--这个要注意,当导出和导入的dmp 文件不是同一个用户时要注意用户名和表空间名有时候还是涉及到数据文件名
改变表的owner 从scott 用户导入到system 用户下,表空间从 tablespace1 到 tablespace2

impdp system/manager directory=dpdata1 dumpfile=expdp.dmp tables=scott.dept remap_schema=scott:system remap_tablespace=tablespace1:tablespace2;

 

--查询目录
select privilege, directory_name, directory_path from user_tab_privs t, all_directories d
where t.table_name(+) = d.directory_name order by 2, 1;

 

 

 

 

 

 

 


posted on 2015-04-21 17:12  相约future  阅读(788)  评论(0编辑  收藏  举报