利用Oracle数据泵完成数据导入和导出

原创 2007年10月09日 10:01:00
在Oracle 10g中, exp 和 imp 被重新设计为Oracle Data Pump(虽然Oracle 仍然装载了exp 和imp,并完全地支持它们)。如果你以前使用过exp 和 imp,那么Data Pump 的命令行程序的语法对你来说就不陌生了。
  
  Data Pump 是运行在数据库内部的, 而不是像一个独立的客户端应用程序一样存在。这就意味着这部分的工作在一定程度上独立于发起执行导入或者导出任务的进程 。 在一台机器上 (例如一个定期任务) 可以开始执行导出的任务,而另一台机器上 (例如 DBA 的 手提电脑) 可以对任务的运行状态进行监控。 也正因为任务是运行在数据库内部的,所以如果你要将数据导出到一个文件中,那么你首先要做的事情就是为输出路径建立一个数据库的DIRECTORY 对象,然后给将要进行数据导入和导出的用户授权访问,命令如下:
  
  create or replace directory dumpdir as 'c:';
  
  grant read,write on directory dumpdir to scott;
  
  一旦该路经被授权后,就可以通过以下的命令参数导出用户的对象,这些命令与 exp 和 imp 中的命令非常相似:
  
  expdp scott/tiger directory=dumpdir dumpfile=scott.dmp
  
  当导出工作开始执行以后,可以通过按下[Ctrl]C (或者是客户端中具有相同功能的按键) 来“中止”导出任务。这样就不会再有数据发送到你的客户端了,但是该任务在数据库中仍然还在运行。你的客户端会进入交互模式(出现Export>提示符)。 在提示符后输入status就可以查看到当前有哪些任务正在运行。如果在客户端输入expdp attach=<任务名>,你就可以连接到一个正在运行的任务上。
  
  Data Pump 并不是一定要写入到文件中。现在可以通过选项设置就可以将数据库对象通过SQL*Net直接导到一个远程数据库中。你所要做的就仅仅是指定remote 选项,然后加上与远程数据库连接的连接字符串。 这就有点类似于对数据库的一次性复制过程。
  
  Data Pump 执行起来要比原来的exp 和 imp 客户端命令快得多。Data Pump 运行得更快是因为它有一个新特性――“parallel”选项。选定这个选项后,Data Pump 将会以四个不同的线程同时压送数据。下面举个例子,我先执行下面的任务,然后按 [Ctrl]C,接着察看后台任务的状态:
  
  expdp scott/tiger directory=dumpdir dumpfile=scott2.dmp parallel=4
  job_name=scott2
  
  Export: Release 10.1.0.2.0 - Production on Friday, 31 December, 2004 14:54
  
  Copyright (c) 2003, Oracle. All rights reserved.
  
  Connected to: Oracle Database 10g Enterprise Edition Release 10.1.0.2.0 -
  Production
  With the Partitioning, OLAP and Data Mining options
  FLASHBACK automatically enabled to preserve database integrity.
  Starting "SCOTT"."SCOTT2": scott/******** directory=dumpdir
  dumpfile=scott2.dmp parallel=4 job_name=scott2
  Estimate in progress using BLOCKS method...
  
  Export> status
  
  Job: SCOTT2
  Operation: EXPORT
  Mode: SCHEMA
  State: EXECUTING
  Bytes Processed: 0
  Current Parallelism: 4
  Job Error Count: 0
  Dump File: C:SCOTT2.DMP
  bytes written: 4,096
  
  Worker 1 Status:
  State: EXECUTING
  
  Worker 2 Status:
  State: WORK WAITING
  
  Worker 3 Status:
  State: WORK WAITING
  
  Worker 4 Status:
  State: WORK WAITING
  
  其实不仅仅只有Data Pump 是在数据库内部运行的,事实上大部分的命令行性质的命令都是在数据库内部运行的,只不过是通过一个PL/SQL API―― DBMS_DATAPUMP显示出来。例如,可以通过以下的PL/SQL代码来实现通过PL/SQL 包启动导出任务:
  
  declare
  handle number;
  begin
  handle := dbms_datapump.open('EXPORT','SCHEMA');
  dbms_datapump.add_file(handle,'SCOTT3.DMP','DUMPDIR');
  dbms_datapump.metadata_filter(handle,'SCHEMA_EXPR','= ''SCOTT''');
  dbms_datapump.set_parallel(handle,4);
  dbms_datapump.start_job(handle);
  dbms_datapump.detach(handle);
  end; /
  
  仔细研究 Data Pump ,你可以了解到 Data Pump 其他更多的新特性。例如,Data Pump 可以对数据文件重命名,可以将对象移动到不同的表空间中,还可以通过使用通配符结构或者是语句来查找图表对象或是图表。Data Pump 还可以用作外部表的接口 (例如,可以将一个表与存储在一个数据泵导出文件中的数据关联起来,这就像Oracle 9i 以及更高版本中的Oracle Loader 接口一样)。 

oracle 数据泵导入导出

使用expdp和impdp时应该注重的事项:1、exp和imp是客户端工具程序,它们既可以在客户端使用,也可以在服务端使用。 2、expdp和impdp是服务端的工具程序,他们只能在oracle服务...
  • tmtongming
  • tmtongming
  • 2017年06月05日 11:32
  • 298

ORACLE使用EXPDP和IMPDP数据泵进行导出导入的方法

ORACLE使用EXPDP和IMPDP数据泵进行导出导入的方法 使用expdp和impdp时应该注重的事项: 1、exp和imp是客户端工具程序,它们既可以在客户端使用,也可以在服务端使用。 2...
  • haiross
  • haiross
  • 2014年05月29日 22:14
  • 98286

Oracle11g数据泵导入导出

1、建立directory mkdir /oradump chmod -R 777 /oradump  chown -R oracle.oinstall /oradump 2、建立对象...
  • hzjhxy2015
  • hzjhxy2015
  • 2015年08月12日 08:48
  • 763

oracle11g 使用数据泵导出导入数据

oracle11g 使用数据泵导出导入数据 终于搞定了 快写个笔记 记录下。 删除用户的时候提示已经登录了不能删除,这个需要把登录的session结束掉。   select user...
  • L905128009
  • L905128009
  • 2017年09月22日 11:55
  • 206

oracle 11g 数据泵导入导出方法

oracle 数据库的强大功能使得它在企业中的应用非常广阔,导入导出是oracle 11g日常操作中不可缺少一部分,下面由小编来分享 一下如何利用数据泵导入导出。 百度经验:jingyan.b...
  • bear_79
  • bear_79
  • 2015年11月24日 12:50
  • 1365

oracle.dmp文件导入以及数据泵(Data Dump)技术的介绍

关于要用imp命令导入,还是用impdp命令导入,你最好问问是传统的exp生成的dmp文件还是datapump生成的dmp文件,前者要用imp导入,后者用impdp导入。 二 、数据泵的特点与传统导...
  • haolyj98
  • haolyj98
  • 2016年10月25日 18:34
  • 728

oracle使用数据泵导入导出数据

在cmd 环境中 1.使用系统用户连接数据库 sqlplus system/123456 2.删除已存在的用户 drop user zcgldb_0624 cascade; 3.创...
  • alexsong123
  • alexsong123
  • 2016年06月30日 17:30
  • 264

利用Oracle数据泵完成数据导入和导出

在Oracle 10g中, eXP 和 imp 被重新设计为Oracle Data Pump(虽然Oracle 仍然装载了exp 和imp,并完全地支持它们)。假如你以前使用过exp 和 imp,...
  • long12310225
  • long12310225
  • 2017年08月26日 17:27
  • 101

数据泵使用的注意事项之远程导入导出

要求:将A库中的sehcme=user1中的所有对象迁移到B库; 说明:表空间DB只有一个scheme=user1,所以直接将表空间DB导入B。 步骤     1. 首先在A将表空间DB设置...
  • haiross
  • haiross
  • 2014年07月08日 16:23
  • 3936

Oracle 数据泵使用——导入、导出

今天重新整理了下数据泵的使用,用数据泵完成数据的导出、导入,真的很方便,现将操作及语句记录下来。 第一步:导出数据          用数据泵导出原库的数据,这个不需要进行其他的操作,直接在导...
  • Loadrunn
  • Loadrunn
  • 2013年01月15日 16:14
  • 26755
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:利用Oracle数据泵完成数据导入和导出
举报原因:
原因补充:

(最多只允许输入30个字)