![]() 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 原文出处: http://www.dbanotes.net/oracle/10g-data-pump-parti.htm |
喜欢本文,那就收藏到: |