当前位置:文档之家› oracle使用数据泵导出和导入

oracle使用数据泵导出和导入

使用数据泵导出和导入几乎所有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/sidb)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,全主进程名用<instance>_DMnn_<pid>格式,每个作业只有一个主进程。

主进程控制整个数据泵作业的执行和顺序。

具体来说,主进程执行一下任务:1.创建并控制左右2.创建并管理工进程(worker process)3.监控作业并记录进程4.维护作业状态并重新启动主表中的信息5.管理必要的文件,包括转储文件集主进程使用一个特殊的表,即主表。

记录导出转储文件中的各数据对象的位置。

主表很像oracle的其他表,它位于每个数据泵导出和导入作业的中心。

主进程维护作业状态并启动主表中的信息。

Oracle在每个导出任务作业开始的时候,在正在运行数据泵作业的用户模式中创建主表。

主表包括了关于当前作业的各类信息,如导出/导入作业中的对象状态,转储文件集的位置,作业的参数以及所有工进程的状态,主表与导出左右的名字相同。

主进程只对导出过程使用主表,在导出结束时,在导出作业的最后一步,主进程将主表的内容写入导出转储文件并自动从数据库中删除主表。

主要导出作业成功完成或者发布了KILL_JOB的命令主表都讲自动删除,但是如果使用STOP_JOB命令停止作业,或者导出作业由于某种原因失败,主表不会被删除,表中包含了要重新启动中断作业的全部必要信息。

b)工进程工进程名为<instance>_DWnn_<pid>。

它是实际执行繁重的装载和卸载数据工作的进程。

主进程创建工进程,并行度决定主进程将创建几个工进程,工进程维护主表的行,在导出和导入各种对象时,他们根据作业状态信息更新主表,完成,未决或失败c)影子进程当客户机登陆Oracle服务器时,数据库创建了一个Oracle进程为数据泵API的请求服务。

此影子进程(shadow process)创建由主表和主进程组成的作业,一旦客户机崩溃,影子进程自动消失d)客户机进程客户机进程调用数据泵API。

可使用两个客户机expdp和impdp,执行导出和导入。

七.数据泵的导出i.数据泵的导出方法1.使用命令行,如:$ expdp system/manager DIRECTORY=dump_dir DUMPFILE =expda1.dmp2.使用参数文件除了在命令行直接指定导出参数外,还可以将他们放入参数文件中,从而在实际的导出作业中调用该参数文件,如:mytext.txtSCHEMA=hrDIRECTORY=dump_dirDUMPFILE=expda1.dmp创建参数文件后,为了导出HR模式,所需要做的就是用PARFILE参数调用:$ expdp PARFILE=mytext.txtii.数据泵导出的方式可以使用下列几种方式执行导出作业1.全导出方式(full export mode)。

当你想要在一个导出回话中导出整个数据库时,使用FULL参数,但是要有EXPORT_FULL_DATABASE的权限。

2.模式方式(schema mode)。

如果只想导出一个单独用户的数据或对象,必须使用SCHEMA参数3.表空间方式(tablespace mode)。

使用表空间方式可以导出一个或多个表空间中的全部表。

如果使用TRANSPORT_TABLESPACE参数,则只导出包含在一个或多个表空间中的对象的元数据,你能够通过先导出元数据,在讲表空间的文件复制到目标服务器,然后再将元数据导入目标服务器。

4.表方式(table mode)。

用TABLES参数,可以导出一个或多个表。

模式方式是数据泵导出作业的默认方式,如果按以下命令执行,则数据泵将自动执行导出SYSTEM的对象$ expdp system/123456iii.数据泵的导出参数数据泵导出实用程序的使用主要是一些参数,为了方便讨论,将参数分成以下几类:1.与文件目录有关的参数2.与导出方式有关的参数3.导出过滤的参数4.与加密有关的参数5.估算参数6.网络链接参数7.交互方式参数8.与作业有关的参数下面分别讨论A.与文件目录有关的参数可以在数据泵的导出参数中指定几个与文件和目录有关的参数,这些参数包括,DIRECTORY, DUMPFILE, FILESIZE, PARFILE, LOGFILE,NOLOGFILE和COMPRESSION参数a.DIRECTORYDirectory参数指向为转储文件和日志文件使用的目录对象,见4.1。

相关主题