Oracle Data Pump

本文详细介绍了Oracle DataPump在Oracle10g中的应用,包括其命令行程序的语法、内部运行机制、数据导出方式、新特性和优势。DataPump相较于传统的exp和imp命令,提供了更快的执行速度、更灵活的数据导出路径和并行操作功能。
 在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 接口一样)。
<think>我们正在讨论OracleDataPumpExport的安装和配置。根据引用内容,OracleDataPumpOracle数据库的一个内置工具,因此它不需要单独安装。但是,需要正确配置数据库以使用它。关键点:1.OracleDataPump工具(expdp和impdp)是Oracle数据库服务器软件的一部分,因此在安装Oracle数据库服务器时就已经安装了。2.要使用DataPump,需要配置目录对象(DirectoryObject)来指定导出文件的位置,因为DataPump在服务器端操作,所以目录对象必须指向数据库服务器上的一个目录。配置步骤:1.创建操作系统目录:在数据库服务器上创建一个目录,用于存放导出文件(例如:/u01/app/oracle/dp_dump)。2.使用具有足够权限的数据库用户(如SYS或SYSTEM)登录数据库。3.创建目录对象:将操作系统目录映射到数据库中的一个目录对象。CREATEDIRECTORYdpump_dirAS'/u01/app/oracle/dp_dump';4.授予用户对该目录的读写权限:例如,要授权给用户SCOTT:GRANTREAD,WRITEONDIRECTORYdpump_dirTOSCOTT;5.确保Oracle数据库实例的进程可以访问该操作系统目录(即Oracle软件所有者(通常是oracle用户)对该目录有读写权限)。使用expdp导出数据:示例命令(在操作系统命令行中执行):expdpscott/tiger@db10gDIRECTORY=dpump_dirDUMPFILE=scott.dmpLOGFILE=scott.log注意:expdp和impdp是服务器端的工具,必须在数据库服务器上运行,或者通过OracleNet连接到数据库服务器。如果从客户端机器运行,则必须安装Oracle客户端软件,并且能够连接到数据库服务器。但是,导出的文件将存储在服务器上的目录对象指定的位置。引用中提到的一些要点:-DataPump使用DBMS_DATAPUMP和DBMS_METADATA包(引用[1][2][3])。-目录对象在DataPump命令中指定(引用[4])。-可以通过数据库链接进行远程操作(引用[5])。因此,安装OracleDataPumpExport实际上就是安装Oracle数据库服务器(或客户端),然后进行上述配置。相关问题:1.如何创建和使用Oracle目录对象?2.如何解决DataPump导出过程中遇到的权限问题?3.如何从远程客户端使用expdp命令?</think>### Oracle Data Pump Export 安装与配置指南 Oracle Data Pump Export (`expdp`) 是 Oracle 数据库的内置工具,**不需要单独安装**。它随 Oracle 数据库服务器软件自动部署,但需完成以下配置步骤: --- ### 核心配置步骤 1. **创建操作系统目录** 在数据库服务器创建物理目录(需 Oracle 用户有读写权限): ```bash mkdir -p /u01/app/oracle/dp_dump chown oracle:oinstall /u01/app/oracle/dp_dump ``` 2. **创建数据库目录对象** 用管理员账户(如 `SYS`)执行: ```sql CREATE DIRECTORY dpump_dir AS '/u01/app/oracle/dp_dump'; GRANT READ, WRITE ON DIRECTORY dpump_dir TO scott; -- 授权给操作用户 ``` 3. **验证目录对象** ```sql SELECT * FROM dba_directories WHERE directory_name='DPUMP_DIR'; ``` 4. **执行导出操作** 使用 `expdp` 命令导出数据(示例): ```bash expdp scott/tiger@orcl DIRECTORY=dpump_dir DUMPFILE=scott_export.dmp LOGFILE=expdp_scott.log TABLES=emp,dept ``` --- ### 关键注意事项 1. **权限要求** - 操作者需具备 `EXP_FULL_DATABASE` 角色(全库导出)或对象级权限 - 目录对象的 `READ/WRITE` 权限必须显式授予(参考步骤2) 2. **网络配置** - 本地操作:直接在数据库服务器运行 `expdp` - 远程操作:需安装 Oracle Client 并配置 TNS 连接串(引用[5]) 3. **性能优化** - 使用 `PARALLEL` 参数加速导出(如 `PARALLEL=4`) - 通过 `COMPRESSION=ALL` 减少输出文件大小 --- ### 常见问题排查 - **目录权限错误** ```ORA-39002: invalid operation``` 解决方案:确认操作系统目录权限及数据库目录对象映射关系(引用[1]) - **空间不足** ```ORA-39000: dump file specification error``` 解决方案:检查目标目录空间或使用 `FILESIZE` 分卷导出 - **网络连接失败** ```ORA-12154: TNS could not resolve the connect identifier``` 解决方案:验证 TNS 配置或使用完整连接描述符(引用[5]) > **技术原理**:Data Pump 通过 `DBMS_DATAPUMP` 包驱动导出进程,结合直接路径访问(Direct Path API)实现高效数据提取(引用[1][2])。 --- ### 高级配置 - **加密导出** ```bash expdp ... ENCRYPTION_PASSWORD=secret ENCRYPTION=ALL ``` - **跨网络导出** 使用数据库链接直接导出到远程服务器(引用[5]): ```sql CREATE DATABASE LINK remote_db CONNECT TO ... USING 'remote_tns'; expdp ... NETWORK_LINK=remote_db ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值