Data pump学习笔记
综述
n 是一个基于服务器的工具,用于高速的数据地移动
n 底层结构是基于dbms_datapump
n 提供了新一代的导入和到处工具:expdp,impdp,基于网络的界面
n 是传统导入导出工具的超集
体系结构
n 直接路径API(DPAPI)
n 外部表服务
n 包dbms_metadata
n 包dbms_datapump
n Expdp和impdp
Data dump的导入导出综述
数据泵的导入导出是Oracle10的一个新的工具,虽然和传统的导入导出命令相似,但是两个是独立的产品。
数据泵的导出是一个工具,是将数据导出到一个操作系统文件中,这个操作系统文件被成为导出文件集。导入则是相反的过程
这些工具能够被用于从远端数据库直接导出到一个导出文件集中,或者直接从一个源数据库导入到目标数据库,而不需要任何的其他文件的辅助。这就是所说的网络模式,这个模式在从一个只读源数据库中导出数据非常有用。
在每一个数据泵操作的核心是一个主表(MT),这个表示在用户允许数据泵job的时候在用户的模式下添加的,MT用来维护这个job的所有方面。这个MT在一个基于文件的导出job中被建立,被作为最后一步写入到导出文件集中。可逆而言,在基于文件的导入操作中的第一步就是导入这个MT到当前的用户模式中,然后用于导入时,添加所有对象的顺序。
当数据泵正常结束的时候,这个MT被删除。
数据泵导入导出的好处
数据访问模式
直接路径
外部表
Detachment from and reattachment to long-running jobs
数据泵job的重启
Fine-grained对象和数据的选择
外在数据库版本的规范
并行执行(只能用于企业版)
导出job空间消耗估计
分布式环境的网络模式
在导入时重新定位能力
数据举例和数据压缩
数据泵能够自动决定所使用的数据访问模式:直接路径或者外部表模式
数据泵能够detach或者reattach一个长时间运行的job,而不影响job自身,允许在运行的时候从不同的位置监视job。所有被停止的数据泵job能够不丢失数据的情况下重新启动,
参数exclude,include,connect是被用于精细对象或者数据的选择。
能够通过参数version为所移动的对象指定数据库版本。添加一个导出文件集,这个文件集支持数据泵的前一版本的oracle数据库。这个版本仅被未来的版本保留。
使用参数parallel指定在导出job上操作的活动的执行服务器上的最大线程数目
使用estimate_only参数指定估计导出job消耗的空间
网络模式能够将远端数据库直接导出到一个导出文件集中,这种需要使用数据库链连接到源系统上
在导入中,能够改变目标数据文件的名,schema和表空间
使用参数sample值得在用于Oracle 10g中,从源数据库中导出数据能够指定一定比例的数据作为取样
使用参数compression描述是否在导出文件中数据是否被压缩,这样会占有更少的磁盘,如果压缩了。在导入的时候会自动解压。
一般的用处
客户端进程是调用数据泵API,一个客户端不需要在job运行之后,多客户端可以从一个job上attach,detach,来实现监控的目的
当一个客户端登陆到oracle数据库上的时候,一个影子进程将被添加,这个进程服务需要数据泵的API。在收到dbms_datapump.open的请求的时候,影子进程添加job,主要是添加主表,添加AQ队列用和其他不同的进程于通信,添加主控制进程。等job运行时候,影子进程的主要任务服务于从客户端的get_status请求。如果客户端detach,影子进程也会dies
主控进程MCP,控制数据泵job的执行和顺序。维护job的状态,job的描述,在主表中重启和导出文件信息。一个MCP被命名为DMnn
在受到start_job请求的时候,MCP根据参数parallel添加几个工作进程。这几个工作进程执行的是主MCP请求的任务,被命名为DWnn
如果外部表路径被选择作为导入导出访问的模式,工作进程和一定数目的并行执行服务来配合。
直接路径数据泵:需要考虑的问题
有精细访问控制的表能够在插入和选择模式
Domain index exists for a LOB column
簇表引进
友活动触发器的表被定义
Global index on partitioned tables
with a single-partition load
• BFILE or opaque type columns
• Referential integrity constraint
• VARRAY columns with an embedded opaque type
数据泵文件位置
数据泵文件的三种类型:
导出文件,日志文件,sql文件
绝对路径不被支持
Oracle目录对象必须被用
文件位置的优先顺序
n Per-file目录
n Directory参数
n Data_pump_dir环境变量
n Data_pump_dir缺省目录对象
数据泵文件命名和大小
一个导出文件集可以包含多个文件
Dumpfile定义dump文件的列表
文件被逗号分开列表
%U模板
Dump文件的初始数目依赖于:
Parallel参数
Dumpfile参数
Filesize参数决定每一个dump文件的大小
先前存在地同样名字的文件不会被覆盖
Dumpfile参数指定名字和基于磁盘地dump文件的目录。如果是多文件要是被指定的话,使用逗号隔开,或者使用分开的参数dumpfile指定。如果没有指定则是使用缺省的文件名expdat.dmp。缺省,添加的文件事自动扩展的。
Filesize指定的话,每一个文件是有这个参数来限制,不能扩展。
数据泵工具:界面和模式
数据泵导出导入界面
命令行
参数文件
交互命令行
数据库控制
数据泵导入导出模式
n 全
n 模式
n 表
n 表空间
n 可转移表空间
数据泵和过滤
精细对象选择
-include = object_type[:”name_expr”]
-exclude = object_type[:”name_expr”]
EXCLUDE = VIEW EXCLUDE = PACKAGE EXCLUDE = INDEX:”like ‘EMP%’” |
数据选择
-CONTENT = ALL|METADATA_ONLY|DATA_ONLY
-QUERY =[schema.][table_name:]”query_clause”
QUERY=hr.employees:"WHERE department_id in (10,20) and salary < 1600 ORDER BY department_id" |
数据泵导入的转换
Remap:
使用REMAP_DATAFILE数据文件
使用REMAP_DATAFILE的表空间
使用REMAP_SCHEMA的模式
数据泵导入传送
使用transform,能够不包含下面的表和索引
Storage 和 tablespace子句
Storage子句
重新添加抽象数据类型的对象标识
改变扩展分配和文件大小
TRANSFORM =
SEGMENT_ATTRIBUTES|STORAGE|OID|PCTSPACE:{y|n|v}[:object type
数据泵job监视视图
V$session_longops
Dba_datapump_jobs
Dba_datapump_sessions
Export: Release 10.2.0.1.0 - Production on 星期五, 23 6月, 2006 14:32:17 Copyright (c) 2003, 2005, Oracle. All rights reserved. 数据泵导出实用程序提供了一种用于在 Oracle 数据库之间传输 数据对象的机制。该实用程序可以使用以下命令进行调用: 示例: expdp scott/tiger DIRECTORY=dmpdir DUMPFILE=scott.dmp 您可以控制导出的运行方式。具体方法是: 在 'expdp' 命令后输入 各种参数。要指定各参数, 请使用关键字: 格式: expdp KEYWORD=value 或 KEYWORD=(value1,value2,...,valueN) 示例: expdp scott/tiger DUMPFILE=scott.dmp DIRECTORY=dmpdir SCHEMAS=scott 或 TABLES=(T1:P1,T1:P2), 如果 T1 是分区表 USERID 必须是命令行中的第一个参数。 关键字 说明 (默认) ------------------------------------------------------------------------------ ATTACH 连接到现有作业, 例如 ATTACH [=作业名]。 COMPRESSION 减小有效的转储文件内容的大小 关键字值为: (METADATA_ONLY) 和 NONE。 CONTENT 指定要卸载的数据, 其中有效关键字为: (ALL), DATA_ONLY 和 METADATA_ONLY。 DIRECTORY 供转储文件和日志文件使用的目录对象。 DUMPFILE 目标转储文件 (expdat.dmp) 的列表, 例如 DUMPFILE=scott1.dmp, scott2.dmp, dmpdir:scott3.dmp。 ENCRYPTION_PASSWORD 用于创建加密列数据的口令关键字。 ESTIMATE 计算作业估计值, 其中有效关键字为: (BLOCKS) 和 STATISTICS。 ESTIMATE_ONLY 在不执行导出的情况下计算作业估计值。 EXCLUDE 排除特定的对象类型, 例如 EXCLUDE=TABLE:EMP。 FILESIZE 以字节为单位指定每个转储文件的大小。 FLASHBACK_SCN 用于将会话快照设置回以前状态的 SCN。 FLASHBACK_TIME 用于获取最接近指定时间的 SCN 的时间。 FULL 导出整个数据库 (N)。 HELP 显示帮助消息 (N)。 INCLUDE 包括特定的对象类型, 例如 INCLUDE=TABLE_DATA。 JOB_NAME 要创建的导出作业的名称。 LOGFILE 日志文件名 (export.log)。 NETWORK_LINK 链接到源系统的远程数据库的名称。 NOLOGFILE 不写入日志文件 (N)。 PARALLEL 更改当前作业的活动 worker 的数目。 PARFILE 指定参数文件。 QUERY 用于导出表的子集的谓词子句。 SAMPLE 要导出的数据的百分比; SCHEMAS 要导出的方案的列表 (登录方案)。 STATUS 在默认值 (0) 将显示可用时的新状态的情况下, 要监视的频率 (以秒计) 作业状态。 TABLES 标识要导出的表的列表 - 只有一个方案。 TABLESPACES 标识要导出的表空间的列表。 TRANSPORT_FULL_CHECK 验证所有表的存储段 (N)。 TRANSPORT_TABLESPACES 要从中卸载元数据的表空间的列表。 VERSION 要导出的对象的版本, 其中有效关键字为: (COMPATIBLE), LATEST 或任何有效的数据库版本。 下列命令在交互模式下有效。 注: 允许使用缩写 命令 说明 ------------------------------------------------------------------------------ ADD_FILE 向转储文件集中添加转储文件。 CONTINUE_CLIENT 返回到记录模式。如果处于空闲状态, 将重新启动作业。 EXIT_CLIENT 退出客户机会话并使作业处于运行状态。 FILESIZE 后续 ADD_FILE 命令的默认文件大小 (字节)。 HELP 总结交互命令。 KILL_JOB 分离和删除作业。 PARALLEL 更改当前作业的活动 worker 的数目。 PARALLEL=的数目>。 START_JOB 启动/恢复当前作业。 STATUS 在默认值 (0) 将显示可用时的新状态的情况下, 要监视的频率 (以秒计) 作业状态。 STATUS[=interval] STOP_JOB 顺序关闭执行的作业并退出客户机。 STOP_JOB=IMMEDIATE 将立即关闭 数据泵作业。 |
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/222350/viewspace-908019/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/222350/viewspace-908019/