Oracle 10G的Data Pump
【IT168 技术文档】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等、Grid)的基础。
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;
注意该目录只有在数据库服务器具有读取权限的时候才可以.