oracle使用数据泵导出和导入
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
使用数据泵导出和导入
几乎所有DBA都熟悉oracle的导出和导入实用程序,它们将数据装载进或卸载出数据库,在oracle database 10g和11g中,你必须使用更通用更强大的数据泵导出和导入(Data Pump Export and Import)实用程序导出和导入数据。
以前的导出和导入实用程序在oracle database 11g中仍然可以使用,但是Oracle强烈建议使用数据泵(Data Pump)技术,因为它提供了更多的高级特性。例如,你可以中断导出/导入作业,然后恢复它们;可以重新启动已失败的导出和导入作业;可以重映射对象属性以修改对象;可以容易地从另一个会话中监控数据泵的作业,甚至可以在作业过程中修改其属性;使用并行技术很容易快速移动大量的数据;因为oracle提供了针对数据泵技术的API,所以可以容易地在PL/SQL 程序中包含导出/导入作业;可以使用更强大的可移植表空间特性来快速移植大量的数据,甚至可在不同操作系统平台之间移动。
与旧的导出和导入实用程序不同,数据泵程序有一组可以在命令行中使用的参数以及一组只能以交互方式使用的特殊命令,你可以通过在命令行中输入expdp help = y 或者impdp help = y快速获取所有数据泵参数及命令的概述。
一.数据泵技术的优点
原有的导出和导入技术基于客户机,而数据泵技术基于服务器。默认所有的转储,日志和其他文件都建立在服务器上。以下是数据泵技术的主要优点:
1.改进了性能
2.重新启动作业的能力
3.并行执行的能力
4.关联运行作业的能力
5.估算空间需求的能力
6.操作的网格方式
7.细粒度数据导入功能
8.重映射能力
二.数据泵导出和导入的用途
1.将数据从开发环境转到测试环境或产品环境
2.在不同的操作系统平台上的oracle数据库直接的传递数据
3.在修改重要表之前进行备份
4.备份数据库
5.把数据库对象从一个表空间移动到另一个表空间
6.在数据库直接移植表空间
7.提取表或其他对象的DDL
注意:数据库不建立完备的备份,因为在导出文件中没有灾难发生时的最新数据。但是对于较小的数据库和个别的表空间的导出,数据导出仍然是一个可行的备份工具。
三.数据泵的组成部分
数据泵技术主要有三个以下部件组成
a.DBMS_DATAPUMP程序包。这是驱动数据字段元数据装载和卸载的主要
引擎。DBMS_DATAPUMP程序包包括数据泵技术的核心部分,此核心部分
以过程的形式出现,实际驱动数据装载和卸载。
b.DBMS_METADATA。为了提取并修改元数据,Oracle提供了
DBMS_METADATA程序包。
c.命令行客户机。两个实用程序-------expdp和impdp进行导出和导入工作。
四.数据泵文件
对于数据泵操作,可以使用三种类型的文件:
a.转储文件:此文件存储表数据已经被装载或卸载的原数据
b.日志文件:记录数据泵操作的消息和结果
c.SQL文件:数据泵使用一种特殊的参数sqlfile,把导入作业中要执行的所
有DDL语句写入一个文件中。数据泵并不实际执行SQL,它仅仅是将DDL
语句写入由SQLFILE参数制定的文件中。
1.使用目录对象
数据泵作业在服务器上(而不是启动左右的客户机上)创建其所有的转储文件。Oracle后台进程代表Oracle的拥有者,负责为所有转储文件设置I/O。
这意味着从安全角度讲,你不能让用户在服务器上指定绝对路径,除此之外还存在安全措施等问题。为了避免这些类型的问题,数据泵使用目录对象。
目录对象(directory object)被称为是数据泵映射到一个特定操作系统目录的对象,例如,一个目录对象dump_dir可以指向服务器上
/u01/app/oracle/admin/export目录。然后通过简单的dump_dir目录对象名,访问该目录。Oracle会创建一个默认的目录对象DATA_PUMP_DIR。改默认的对象目录由oracle在以下位置自动创建:
a)ORACLE_BASE/admin/sid
b)ORACLE_HOME/admin/sid
如果未建立自己的目录对象,oracle将使用默认的目录对象DATA_PUMP_DIR,并将转储文件,日志文件,SQL文件写到里面。要想了解默认的DATA_PUMP_DIR,可以使用基于DBA_DIRECTORIES视图查询。
SELECT * FROM DBA_DIRECTORIES
只有拥有SYS和SYSTEM权限的用户才能够使用默认目录对象DATA_PUMP_DIR。因此,SYSTEM用户可以启动数据泵作业,而不用提供目录名。
其他,未授权的用户能够使用数据泵导出或导入前,DBA(或者有CREATE ANY DIRECTORY权限的用户)必须创建一个目录对象并授予相应的权限。
CREATE OR REPLACE DIRECTORY directoy_name as ‘/u/test/oradata’
授予权限:
GRANT READ, WRITE ON DIRECTORY directoy_name TO user_name
之后所有的数据泵导出或导入作业均可使用DIRECTORY参数指定目录如:DIRECTORY = directoy_name, 如果用户视图使用expdp或impdp没有指定目录对象将报错。
在实际的作业中,可以通过以下方式指定目录对象:
a)DIRECTORY参数:在一个数据泵导出作业中,可以使用DIRECOTY参数指
定对象名;
$ expdp hr/hr DIRECOTY=dump_dir……
b)DIRECOTY:FILE表示法:为替代使用DIRECTORY参数,可以讲目录对象包
含在一个特定的数据泵文件中(转储,日志,SQLFILE)。使用冒号(:)
隔开文件说明中的目录和个别文件名;
$ expdp hr/hr LOGFILE=dump_dir:test.log……
c)DATA_PUMP_DIR环境变量:可以使用环境变量DATA_PUMP_DIR指向服
务器的目录对象。使用export命令,
$ EXPORT DATA_PUMP_DIR= dump_dir
指定之后,就不需要在作业中再指定DIRECTORY参数了。
2.文件位置的优先次序
由于存在几种指定目录的方法,则究竟使用哪种,有一定的优先次序
a)Oracle首先检查是否将目录包含在一个与文件有关的参数内
b)第二个检查是否存在DIRECTORY参数
c)第三个检查是否使用环境变量
d)最后检查默认的DATA_PUMP_DIR目录对象
五.数据泵的权限
所有的oracle用户都可以在默认情况下使用数据泵实用程序,若使用某些高级任务,还必须拥有以下的权限
EXP_FULL_DATABASE,IMP_FULL_DATABASE
六.数据泵的作业结构
数据泵导出和导入实用程序使用几个进程来执行其作业,其中包括关键的主进程和工进程,以及客户机进程和影子进程,下面我们具体来看看各个进程:
a)主进程
主进程,更精确地说,MCP(Master Control Process),有一个进程名为DMnn,全主进程名用
主进程控制整个数据泵作业的执行和顺序。具体来说,主进程执行一下
任务:
1.创建并控制左右
2.创建并管理工进程(worker process)
3.监控作业并记录进程
4.维护作业状态并重新启动主表中的信息
5.管理必要的文件,包括转储文件集
主进程使用一个特殊的表,即主表。记录导出转储文件中的各数据对象
的位置。主表很像oracle的其他表,它位于每个数据泵导出和导入作业
的中心。主进程维护作业状态并启动主表中的信息。Oracle在每个导出
任务作业开始的时候,在正在运行数据泵作业的用户模式中创建主表。
主表包括了关于当前作业的各类信息,如导出/导入作业中的对象状态,
转储文件集的位置,作业的参数以及所有工进程的状态,主表与导出左
右的名字相同。
主进程只对导出过程使用主表,在导出结束时,在导出作业的最后一步,