Oracle 10G的Data Pump (Part I)

oracle

Oracle 10G的Data Pump (Part I)

作者: Fenng
出处: Http://www.DBAnotes.net

Oracle 10G的Data Pump技术能够在不同数据库间高速的移动数据库和元数据. 这个技术的基础是两个数据移动工
具:Data Pump Export和Data Pump Import.

Oracle的Data Pump是通过一个PL/SQL包来实现的:DBMS_DataPump(也叫Data Pump API).Data Pump使用
直接路径装载和外部表机制进行数据的移动. Data Pump使用DBMS_METADATA PL/Sql包进行包括ETL过程在内的
所有的数据库对象操作.

Data Pump 是Oracle一些其它关键特性(如基于流的复制、逻辑Standby等)的基础。

Data Pump特性是集成到Oracle数据库10G中的,但是标准版本10G并行度只有1.

关键概念

Master Table
Master Table(MT)是Data Pump技术的核心.Master Table 用来保存整个过程中的细节信息(也可以说是一些
元数据信息).有了MT,导出或者导入的重启动才变为可能.这些细节信息包括:
产生Job状态的报告 重新启动Job 定位在Dump文件中的所有的对象.
主表在进行当前导出或者导入的操作的用户模式中被创建.该用户必须要有足够空间. 主表的名字和创建它的Job名字相
同.这也就是说,你不能显式的指定一个和现有的表或者视图重名的Data Pump Job.

导出的时候,主表被创建,并在完成的时候写到Dump文件中.在启动导入的时候,主表从Dump文件集中载入到数据库中,
并用来控制操作的顺序.主表也可以用一些参数来进行初始化操作.要注意的是主表不能跨文件存储.所以,指定的Dump
文件的大小至少要能够容纳得下MT.

主表依如下情况或被保留或者删除:
Job成功完成,MT被删除. 如果Job是使用STOP_JOB交互命令停掉的,MT将被保留以用来重启动Job. 如果Job是使用KILL_JOB交互命令Kill掉的,MT将被删除,并且Job不能重新启动. 如果Job意外中止,MT总是被保留.
Master Process 主进程
每一个导出或者导入的Job都会产生一个主进程. 主进程控制整个Job,包括和客户端通信,创建并控制worker 进程,
并进行日志操作.

Worker Process
Worker Process 是并行化进行实际的卸载与装载元数据和表数据的进程.进程的数量和PARALLEL指定的数值相等
.在整个Job过程中,该数量可以进行调整.我们在前面已经提及,标准版下并行度为1.

网络导出和导入
当你通过网络运行Import操作,源是另一个系统,不是一个Dump的文件集.

基于服务器的处理方式
和原来的Export/Import方式不同的是,Data Pump的导出和导入基本是在服务器.这意味着:
因为文件的读和写大部分都是在服务器端,所以路径的规范和数据库目录对象的解析都是针对服务器而不是客户
端 因为对文件的访问是在操作系统模式下,可能会存在数据安全问题. 如果使用默认的目录信息,可能会产生文件冲突问题.
Dump、Log和SQL文件的默认位置
Dump、Log和SQL文件的默认位置基于服务器的。在你运行Data Pump Export或者Data Pump Import的时候 ,
必须由DBA或者是有 CREATE ANY DIRECTORY 权限的用户创建一个目录对象.在该对象创建之后,你需要对其他用户
授权 READ/WRITE对象操作权限.

GRANT READ ON DIRECTORY data_pump_dir TO foo;

注意该目录只有在数据库服务器具有读取权限的时候才可以.

Data Pump根据如下的顺序决定文件的位置:

1. 对该文件指定的目录对象;
2. 如果对一个文件没有指定目录对象,那么将默认使用初始化参数中的DIRECTORY指定的对象.

特权用户和非特权用户
Data Pump识别两类的用户:特权(Privileged)用户和非特权(Nonprivileged)的用户.
Privileged用户具有EXP_FULL_DATABASE 和IMP_FULL_DATABASE权限. 非特权用户不具备这些权限.

特权用户可以作如下工作:
导出导入其他用户拥有的数据库对象. 导出导入非基于模式的对象(比如表空间和模式定义等内容). 对其他用户启动的Job进行一些操作.

Data Pump如何访问数据?

直接路径(Direct Path ,DP)和外部表(External Tables ,ET).ET模式下使用ORACLE_DATAPUMP驱动并使用直接
路径API内部数据流格式.Oracle称Data Pump会自动选择最快的方法.

文件分配

Data Pump Job管理三种类型的文件:
Dump文件 Log文件 记录一个操作的相关信息 SQL文件 记录一个SQL_FILE操作输出的记录

指定文件和额外的附件文件
对于导出操作,你可以指定 Dump文件,随着操作的进行你发现文件空间有些不够,你可以使用交互模式下的 ADD_FILE
命令添加额外的文件.对于导入的操作.所有的dump文件必须在Job定义的时候指定. Log文件和SQL文件将覆盖存在的
文件.Dump文件从不覆盖已经存在的文件.

设定并行度
对于导出和导入 ,并行度的设定(通过 PARALLEL 参数指定)应该低于或者等于Dump文件的个数.如果文件个数不足,性
能可能会降低(多线程同时访问一个Dump文件).前面已经提及,标准版本10G并行度只有1,所以,这个参数实际上对企业
版的10G才是有效的.

使用替代变量
在导出和导入操作中,可以使用%U替代变量来匹配文件名字,这样在一定情况下便捷了许多.

Data Pump中的Export和Import的新的特性

相对于旧有的exp/imp,Data Pump中的Export和Import有很多新的特性,包括:

1 Data Pump Job执行到一半的时候指定最大线程数的能力.
2 Data Pump job是完全能重新启动的.
3 从长时间运行的Job分离或者是重新附加上去而不会对Job本身有影响.
4 支持通过网络的导出导入操作.
5 Remap_datafile.
6 支持完美粒度对象选择.
7 支持对Job的交互命令行模式监控和交互.
8 对待导入的对象的空间评估.
9 具备指定数据库版本对象移动能力.

未完待续

附MT结构描述

 

SQL> desc SYS_EXPORT_SCHEMA_01
名称 是否为空? 类型
----------------------------------------- -------- -------------------

PROCESS_ORDER NUMBER
DUPLICATE NUMBER
DUMP_FILEID NUMBER
DUMP_POSITION NUMBER
DUMP_LENGTH NUMBER
DUMP_ALLOCATION NUMBER
COMPLETED_ROWS NUMBER
ERROR_COUNT NUMBER
ELAPSED_TIME NUMBER
OBJECT_TYPE_PATH VARCHAR2(200)
OBJECT_PATH_SEQNO NUMBER
OBJECT_TYPE VARCHAR2(30)
IN_PROGRESS CHAR(1)
OBJECT_NAME VARCHAR2(500)
OBJECT_SCHEMA VARCHAR2(30)
PARTITION_NAME VARCHAR2(30)
FLAGS NUMBER
COMPLETION_TIME DATE
OBJECT_TABLESPACE VARCHAR2(30)
SIZE_ESTIMATE NUMBER
OBJECT_ROW NUMBER
PROCESSING_STATE CHAR(1)
PROCESSING_STATUS CHAR(1)
BASE_OBJECT_TYPE VARCHAR2(30)
BASE_OBJECT_NAME VARCHAR2(30)
BASE_OBJECT_SCHEMA VARCHAR2(30)
PARALLELIZATION NUMBER
UNLOAD_METHOD NUMBER
GRANULES NUMBER
SCN NUMBER
DOMAIN_INDEX VARCHAR2(30)
DOMAIN_INDEX_SCHEMA VARCHAR2(30)
GRANTOR VARCHAR2(30)
NAME VARCHAR2(30)
VALUE_T VARCHAR2(4000)
VALUE_N NUMBER
IS_DEFAULT NUMBER
FILE_TYPE NUMBER
USER_DIRECTORY VARCHAR2(4000)
USER_FILE_NAME VARCHAR2(4000)
FILE_NAME VARCHAR2(4000)
EXTEND_SIZE NUMBER
FILE_MAX_SIZE NUMBER
EXTEND_ACTIVE NUMBER
OVERFLOW_TO NUMBER
PROCESS_NAME VARCHAR2(30)
LAST_UPDATE DATE
WORK_ITEM VARCHAR2(30)
NON_TRANSACTIONAL CHAR(1)
OBJECT_NUMBER NUMBER
COMPLETED_BYTES NUMBER
TOTAL_BYTES NUMBER
METADATA_IO NUMBER
DATA_IO NUMBER
CUMULATIVE_TIME NUMBER
OLD_VALUE VARCHAR2(4000)
SEED NUMBER
LAST_FILE NUMBER
USER_NAME VARCHAR2(30)
OPERATION VARCHAR2(30)
JOB_MODE VARCHAR2(30)
VERSION NUMBER
DB_VERSION VARCHAR2(30)
STATE VARCHAR2(30)
PHASE NUMBER
GUID RAW(16)
START_TIME DATE
BLOCK_SIZE NUMBER
METADATA_BUFFER_SIZE NUMBER
DATA_BUFFER_SIZE NUMBER
DEGREE NUMBER
LANGUAGE VARCHAR2(30)
PLATFORM VARCHAR2(100)
ABORT_STEP NUMBER
INSTANCE VARCHAR2(16)

参考文档

1.Oracle10i Database Utilities

2.Data Pump in Oracle Database 10g From OTN

 

原文出处:
<a href="http://www.dbanotes.net/Oracle/10G-Data-Pump-PartI.htm">http://www.dbanotes.net/Oracle/10G-Data-Pump-PartI.htm</a>

时间: 2024-10-26 05:52:57

Oracle 10G的Data Pump (Part I)的相关文章

使用隐含Trace参数诊断Oracle Data Pump(expdp)故障

使用隐含Trace参数诊断Oracle Data Pump(expdp)故障  Data Pump数据泵是Oracle从10g开始推出的,用于取代传统exp/imp工具的数据备份还原组件.经过若干版本的演进和修改,Data Pump已经非常成熟,逐渐被越来越多的DBA和运维人员接受.   相对于传统的exp/imp,Data Pump有很多优势,也变得更加复杂.数据泵一个最显著的特点就是Server-Side运行.Exp/Imp是运行在客户端上面的小工具,虽然使用方便,但是需要处理数据源端和目标

用Oracle 10g Data Pump重组表空间

Oracle 10g版本对数据输入与输出的操作功能进行重新设计,在输入或输出工作中增加断开和连接的功能.对这些功能做微小改动,就可利于DBA表空间的操作. 作为整体单元输出表空间 过去的输出和输入功能有3种模式:依赖于对象输出,如索引的单个表格:输出某个用户所有的对象:输出整个数据库.但是表空间是一个难于处理的问题.不同用户的对象存储在给定的表空间中,但是某些对象可能存储在其它表空间. 因此,唯一的解决方法则是使用查询数据字典查找列表及其从属主,然后使用"table-mode export&qu

Oracle Data Pump详解(1) 总览

从10g开始,Oracle提供更高效的Data Pump(即expdp/impdp)来进行数据的导入和导出,老的 exp/imp还可以用,但已经不建议使用.注意:expdp/impdp和exp/imp之间互不兼容,也就是说exp导出 的文件只能用imp导入,expdp导出的文件只能用impdp导入. Data Pump的组成部分 Data Pump有以下三个部分组成: 客户端工具:expdp/impdp Data Pump API (即DBMS_DATAPUMP) Metadata API(即

oracle data pump步骤

oracle oracle data pump步骤          2004/08/27这两天在试ora10g的data pump,将执行的步骤贴出来大家看看由于我的试验的数据库数据不是很多,所以data pump的速度上的优势并不明显,但是备份的文件大小可比exp出来的大不少. -----LisaLan 20040825 oracle data pump----创建目录$ mkdir /home/oracle/backup/data/expdp ----用system登陆为用户赋权限SQL>

Oracle Data Pump详解(5) 命令交互模式

当我们起了一个datapump job之后,可以通过v$session_longops查看当前进度. USERNAME - job owner OPNAME - job name TARGET_DESC - job operation SOFAR - megabytes transferred thus far during the job TOTALWORK - estimated number of megabytes in the job UNITS - megabytes (MB) ME

Oracle Data Pump详解(4) network_link

expdp的network_link 我们知道,expdp默认是导出本地数据库,network_link的作用是导出远程数据库到本地服务器上, 其步骤如下: 术语说明: 源数据库:远程数据库 目标数据库:本地数据库(即expdp客户端所在的服务器) 1. 在目标数据库端添加源数据库的连接字符串至tnsnames.ora: source_db = (DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.

oracle 10g 11g 透明数据加密(Transparent Data Encryption)

Oracle TDE的全称是Transparent Data Encryption 透明数据加密,从10gr2开始支持基于列的加密,从11g开始支持基于表空间的加密.它的优点是对应用透明,管理简便,无需应用设置,但它也有如下限制: – 只能使用B-Tree索引 – 加密的列无法对索引进行rang scan操作. – 外部对象 – 可传输表空间 – exp/imp操作 TDE - 基于列的加密 由于有了Oracle的TDE-基于列的加密,你所要做的只是定义需要加密的列,Oracle将为包含加密列的

如何在Oracle 10g中通过网络连接导入数据

历史上,Oracle的导入及导出功能曾采用磁盘文件作为卸载和再装载数据库的存储中介.对于较大的数据库这样"交换文件"的方式是个大问题.因为过大文件将会超过操作系统对文件大小的限制,使得导出不能实现. 一些有创新精神的数据管理员使用文件压缩功能,例如UNIX中的压缩功能,以获得交换文件的最大容量.后来版本中的导入及导出功能允许使用多种交换文件以减少限制. 在Oracle 10g中,Data Pump版的导入功能能从其他数据库实例中直接导入,从而完全删除交换文件. 第一步是定义一个数据库链

Oracle 10G First Release的新特性简介(下)

oracle Oracle 10G First Release的新特性简介(下) By Fenng 2003-07-10 注:近日Oracle已经正式宣布该版本的Oracle命名为10G,其中的G为Grid之意.特此更正. 高可用性的加强 1.缩短应用和数据库升级的宕机时间 通过使用standby数据库.允许在不同版本的standby和产品数据库间切换.现有的联机重定义功能能够支持一步克隆所有相关的数据库对象. 2.回闪(Flashback)任何错误 该版本的Oracle也扩展了Flashbac