数据泵导入

数据泵导入

本章介绍了Oracle Data Pump导入实用程序。讨论了以下主题:

什么是数据泵导入?

注意:

扫描二维码关注公众号,回复: 11842557 查看本文章
尽管数据泵导入(impdp)功能类似于原始导入实用程序(imp)的功能,但它们是完全独立的实用程序,并且它们的文件不兼容。有关原始导入实用程序的说明,请参见第20章“原始导出和导入”

数据泵导入(为便于阅读,以下称为导入)是用于将导出转储文件集加载到目标系统的实用程序。转储文件集由一个或多个磁盘文件组成,这些文件包含表数据,数据库对象元数据和控制信息。这些文件以专有的二进制格式写入。在导入操作期间,“数据泵导入”实用程序将使用这些文件在转储文件集中找到每个数据库对象。

导入还可以用于直接从源数据库加载目标数据库,而无需插入转储文件。这称为网络导入。

通过数据泵导入,您可以指定作业是应该从转储文件集还是从源数据库移动数据和元数据的子集(对于网络导入),具体取决于导入模式。这是使用数据过滤器完成的和元数据过滤器,它们是通过导入命令实现的。请参阅导入操作期间的过滤

要查看使用导入的各种方式的一些示例,请参阅使用数据泵导入的示例

调用数据泵导入

使用impdp命令调用“数据泵导入”实用程序。导入操作的特征由您指定的导入参数确定。这些参数可以在命令行或参数文件中指定。

注意:

不调用导入因为SYSDBA,除了在甲骨文的技术支持请求。SYSDBA内部使用并具有特殊功能;它的行为与普通用户不同。

注意:

请注意,如果您正在执行将数据泵导入到NOLOGGING启用了该子句的表或表空间中的操作,则可能仍会生成重做日志文件。在这种情况下生成的重做通常用于维护主表或与基础递归空间事务,数据字典更改以及需要记录的表上索引的索引维护有关。

以下各节包含有关调用导入的更多信息:

注意:

如果当前在Oracle RAC环境中的其他实例上正在运行数据泵作业,则无法在Oracle Real Application Clusters(RAC)环境中的一个实例上启动或重新启动数据泵作业。

数据泵导入接口

你可以互动 通过使用命令行,参数文件或交互式命令模式使用Data Pump Import。

  • 命令行界面:使您可以直接在命令行上指定导入参数。有关命令行界面中可用参数的完整说明,请参见Import的命令行模式中可用的参数

  • 参数文件界面:使您可以在参数文件中指定命令行参数。唯一的例外是PARFILE参数,因为参数文件无法嵌套。如果您使用的参数值需要用引号引起来,则建议使用参数文件。请参见在数据泵命令行上使用引号

  • 交互式命令界面:停止登录到终端并显示“导入”提示,从中可以输入各种命令,其中一些命令特定于交互式命令模式。在通过命令行界面或参数文件界面启动的导入操作过程中,通过按Ctrl + C组合键可以启用此模式。当您附加到正在执行或已停止的作业时,也会启用交互式命令模式。

    有关交互式命令模式下可用命令的完整说明,请参见Import的交互式命令模式下可用的命令

数据泵导入模式

导入操作的最重要特征之一是其模式,因为该模式在很大程度上决定了要导入的内容。指定的模式适用于操作源,即转储文件集或其他数据库(如果NETWORK_LINK指定了该参数)。

当导入操作的源是转储文件集时,指定模式是可选的。如果未指定任何模式,则“导入”将尝试以运行导出操作的模式加载整个转储文件集。

使用适当的参数在命令行上指定模式。可用模式如下:

注意:

当您导入由全模式导出创建的转储文件时,导入操作将尝试SYS从源数据库复制该帐户的密码。有时这会失败(例如,如果密码在共享密码文件中)。如果确实失败,则在导入完成后,必须将SYS目标数据库上的帐户密码设置为您选择的密码。

注意:

作业(由Oracle数据库作业计划程序创建)始终被导入到导入用户的模式中。导入后,如果查询DBA_JOBS视图,则将看到LOG_USERPRIV_USER设置为导入用户的值,而不管它们在导出平台上的设置如何。

要解决此问题,您必须同时作为作业所有者执行导出和导入。

完全导入模式

完整导入使用FULL参数指定。在完全导入模式下,源(转储文件集或另一个数据库)的全部内容都加载到目标数据库中。这是基于文件的导入的默认设置。IMP_FULL_DATABASE如果源是另一个数据库,则必须具有该角色。

跨架构引用不会为非特权用户导入。例如,不会导入在导入用户的架构内的表上定义但驻留在另一个用户的架构中的触发器。

IMP_FULL_DATABASE角色是必需的目标数据库和EXP_FULL_DATABASE角色需要在源数据库上,如果NETWORK_LINK参数用于完全导入。

也可以看看:

充分

模式模式

模式导入使用SCHEMAS参数指定。在架构导入中,仅加载指定架构拥有的对象。源可以是完整的,表,表空间或模式输出导出转储文件集或另一个数据库。如果您具有该IMP_FULL_DATABASE角色,则可以指定模式列表,并在数据库中创建模式本身(包括系统特权授予),以及这些模式中包含的对象。

除非未将其他架构重新映射到当前架构,否则不会为非特权用户导入跨架构引用。例如,不会导入在导入用户的架构内的表上定义但驻留在另一个用户的架构中的触发器。

也可以看看:

模式

表格模式

表格模式导入使用TABLES参数指定。在表模式下,仅加载指定的表,分区及其从属对象集。源可以是完整的,模式,表空间或表模式导出转储文件集或另一个数据库。您必须具有IMP_FULL_DATABASE指定不在自己的架构中的表的角色。

通过将TRANPORTABLE=ALWAYS参数与TABLES参数一起指定,可以在表模式导入期间使用transportable选项。请注意,这也需要使用NETWORK_LINK参数。

表空间模式

表空间模式导入使用TABLESPACES参数指定。在表空间模式下,将加载指定表空间集中包含的所有对象以及相关对象。源可以是完整的,模式,表空间或表模式导出转储文件集或另一个数据库。对于非特权用户,将不会处理未重新映射到当前架构的对象。

也可以看看:

餐桌空间

可移动表空间模式

可移植表空间导入使用TRANSPORT_TABLESPACES参数指定。在可传输表空间模式下,将从可传输表空间导出转储文件集中或从另一个数据库加载元数据。由TRANSPORT_DATAFILES参数指定的数据文件必须从源系统中可用,以供在目标数据库中使用,通常是将它们复制到目标系统中。

在可传输表空间模式下不支持加密列。

此模式需要IMP_FULL_DATABASE角色。

注意:

您不能导出可移动表空间,然后将它们导入较低版本级别的数据库中。目标数据库必须与源数据库处于相同或更高的发行级别。

网络注意事项

调用“数据泵导入”实用程序时,可以在连接字符串中指定连接标识符。该标识符可以指定与由当前Oracle系统ID(SID)标识的当前实例不同的数据库实例。连接标识符可以是Oracle * Net连接描述符,也可以是映射到连接描述符的名称。这需要lsnrctl start可以使用连接描述符定位的活动侦听器(要启动侦听器,请输入)。

以下示例hr使用名为的连接描述符为用户调用Import inst1

> impdp hr DIRECTORY = dpump_dir1 DUMPFILE = hr.dmp TABLES =员工
导入:11.1.0.6.0版-于2007年8月27日星期一生产12:25:57
 
版权所有(c)2003、2007,Oracle。版权所有。
 
密码:密码@ inst1
 
连接到:Oracle Database 11g企业版11.1.0.6.0版-生产
带有分区,数据挖掘和实际应用程序测试选项

本地Import客户端连接到连接描述符inst1(通常是在tnsnames.ora文件中定义的简单网络服务名称)所标识的数据库实例,以将数据从转储文件集中导入到该数据库。

不要将使用连接标识符的Import实用程序与指定了ImportNETWORK_LINK命令行参数的导入操作相混淆,后者使用数据库链接启动导入。在这种情况下,本地Import客户端连接到命令行连接字符串标识的数据库实例,从数据库链接标识的数据库实例中检索要导入的数据,并将数据写入连接的数据库实例。没有涉及的转储文件集。

导入操作期间的过滤

数据泵导入提供了比原始导入实用程序更大的数据和元数据过滤功能。

资料筛选器

特定于数据的过滤是通过QUERYSAMPLE参数实现的,该参数指定对要导入的表行的限制。数据过滤也可以作为元数据过滤的结果而间接发生,该数据可以包括或排除表对象以及任何关联的行数据。

每个表只能指定一个数据过滤器,每个作业只能指定一次。如果将使用相同名称的不同过滤器应用于特定表和整个作业,则为该特定表提供的过滤器参数将优先。

元数据过滤器

数据泵导入提供了比原始导入实用程序更大的元数据筛选功能。元数据过滤是通过EXCLUDEINCLUDE参数实现的。在EXCLUDEINCLUDE参数是互斥的。

元数据过滤器标识一组要包含在数据泵操作中或从数据泵操作中排除的对象。例如,您可以请求完全导入,但没有“包装规格”或“包装实体”。

要正确使用过滤器并获得期望的结果,请记住,已识别对象的依赖对象与已识别对象一起被处理。例如,如果过滤器指定一个程序包将包含在一个操作中,则对该程序包的授予也将包括在内。同样,如果表被过滤器排除,则表的索引,约束,授权和触发器也将被过滤器排除。

如果为一个对象类型指定了多个过滤器,则对其执行隐式AND操作。也就是说,参与作业的对象必须通过应用于其对象类型的所有过滤器。

可以在一个作业中多次指定相同的过滤器名称。

要查看可以过滤哪些对象,可以查询以下视图:DATABASE_EXPORT_OBJECTS对于全模式导入,SCHEMA_EXPORT_OBJECTS对于模式模式导入以及TABLE_EXPORT_OBJECTS对于表模式和表空间模式导入。请注意,完整的对象路径名是由导出模式而不是由导入模式确定的。

有关此示例,请参见元数据过滤器

也可以看看:

导入的命令行模式下可用的参数

本节介绍了命令行模式下可用的参数数据泵导入。许多描述都包含有关如何使用参数的示例。

使用导入参数示例

如果尝试运行为每个参数提供的示例,请注意以下几点:

  • 如示例中所示输入用户名和参数后,将开始导入,并在建立数据库连接之前提示您输入密码:

    导入:11.1.0.6.0版-2007年8月27日星期一生产12:15:55
     
    版权所有(c)2003、2007,Oracle。版权所有。
     
    密码:密码
     
    连接到:Oracle Database 11g企业版11.1.0.6.0版-生产
    带有分区,数据挖掘和实际应用程序测试选项
    
  • 大多数示例使用种子数据库的样本模式,该样本数据库在安装Oracle数据库时默认安装。特别是,hr经常使用人力资源()模式。

  • 指定要导入的转储文件的示例假定该转储文件存在。这些示例将尽可能使用第2章中运行“导出”示例时生成的转储文件。

  • 这些示例假定目录对象dpump_dir1dpump_dir2已存在,READ并且WRITE已经hr为这些目录对象的模式授予了和特权。有关创建目录对象和为其分配特权的信息请参见转储,日志和SQL文件的默认位置

  • 一些示例需要EXP_FULL_DATABASEIMP_FULL_DATABASE角色。这些示例假定hr已授予该模式这些角色。

如有必要,请向DBA寻求帮助,以创建这些目录对象以及分配必要的特权和角色。

这些参数的语法图在“数据泵导入的语法图”中提供。

除非特别说明,否则这些参数也可以在参数文件中指定。

在数据泵命令行上使用引号

某些操作系统要求命令行上的引号前面必须有转义字符,例如反斜杠。如果不存在反斜杠,则Import所使用的命令行解析器将无法理解引号并将其删除,从而导致错误。通常,Oracle建议您将此类语句放在参数文件中,因为在参数文件中不需要转义字符。

注意:

如果习惯于使用原始的导入实用程序,则可能想知道使用哪些数据泵参数来执行用于原始导入的操作。要进行比较,请参阅数据泵导入参数如何映射到原始导入实用程序的参数

连接

默认值:如果只有一个正在运行的作业,则为用户架构中的当前作业。

目的

附件 与现有导入作业的客户端会话,并自动将您置于交互式命令模式。

语法和说明

附加[= [ schema_name。] job_name ]

schema_name如果您要附加的架构不是您自己的架构,请指定一个。您必须具有IMP_FULL_DATABASE执行此操作的角色。

job_name如果只有一个正在运行的作业与您的模式关联并且该作业处于活动状态,则不必指定A。如果要附加到的作业已停止,则必须提供作业名称。要查看数据泵作业名称列表,您可以查询该DBA_DATAPUMP_JOBS视图或该USER_DATAPUMP_JOBS视图。

附加到作业后,“导入”将显示作业说明,然后显示“导入”提示。

限制条件

  • 指定ATTACH参数时,您可以在命令行上指定的唯一其他数据泵参数是ENCRYPTION_PASSWORD

  • 如果要附加的作业最初是使用加密密码启动的,那么当附加至该作业时,必须再次ENCRYPTION_PASSWORD在命令行中输入参数以重新指定该密码。唯一的例外是,如果作业最初是使用ENCRYPTION=ENCRYPTED_COLUMNS_ONLY参数启动的。在这种情况下,附加到作业时不需要加密密码。

  • 除非作业已经在运行,否则您无法将其附加到另一个架构中。

  • 如果已删除作业的转储文件集或主表,则附加操作将失败。

  • 以任何方式更改主表都将导致不可预测的结果。

以下是使用ATTACH参数的示例。

> impdp hr ATTACH = import_job

本示例假定架构中import_job存在一个名为的作业hr

内容

默认: ALL

目的

使您可以过滤导入操作期间加载的内容。

语法和说明

CONTENT = {ALL | DATA_ONLY | METADATA_ONLY}
  • ALL加载源中包含的所有数据和元数据。这是默认值。

  • DATA_ONLY l只将表行数据存储到现有表中;没有创建数据库对象。

  • METADATA_ONLY仅加载数据库对象定义;没有加载表行数据。

限制条件

  • CONTENT=METADATA_ONLY参数和值不能与参数一起使用TRANSPORT_TABLESPACES(可运输-表空间模式)。

  • CONTENT=ALLCONTENT=DATA_ONLY参数和值可以不与一起使用SQLFILE的参数。

以下是使用CONTENT参数的示例。您可以expfull.dmp通过运行为ExportFULL参数提供的示例来创建本示例中使用的转储文件。请参阅FULL

> impdp hr DIRECTORY = dpump_dir1 DUMPFILE = expfull.dmp CONTENT = METADATA_ONLY

此命令将执行完全导入,该导入将仅加载expfull.dmp转储文件中的元数据。它执行完全导入,因为这是未指定导入模式的基于文件的导入的默认设置。

DATA_OPTIONS

默认值:没有默认值。如果不使用此参数,那么它提供的特殊数据处理选项将根本无效。

目的

DATA_OPTIONS参数提供有关在导出和导入期间如何处理某些类型的数据的选项。对于导入操作,DATA_OPTIONS参数的唯一有效选项是SKIP_CONSTRAINT_ERRORS

语法和说明

DATA_OPTIONS = SKIP_CONSTRAINT_ERRORS

SKIP_CONSTRAINT_ERRORS选项影响在加载数据对象(表,分区或子分区)时如何处理非延迟约束违规。如果遇到延迟约束违规,则对负载没有影响。延迟约束违例总是导致整个负载回滚。

SKIP_CONSTRAINT_ERRORS选项指定即使遇到非延迟约束违例,也要继续执行导入操作。它记录导致非延迟约束违例的所有行,但不会停止遇到违例的数据对象的加载。

如果SKIP_CONSTRAINT_ERRORS未设置,则默认行为是回滚遇到非延迟约束冲突的数据对象的整个负载。

限制条件

  • 如果SKIP_CONSTRAINT_ERRORS使用,并且数据对象在加载时已定义了唯一的索引或约束,则APPEND提示将不会用于加载该数据对象。因此,SKIP_CONSTRAINT_ERRORS使用该选项时,加载此类数据对象将花费更长的时间。

  • 即使SKIP_CONSTRAINT_ERRORS已指定,也不会使用它,除非使用外部表访问方法加载数据对象。

此示例显示了SKIP_CONSTRAINT_ERRORS启用了数据的纯表模式:

> impdp hr TABLES =员工CONTENT = DATA_ONLY 
DUMPFILE = dpump_dir1:table.dmp DATA_OPTIONS = skip_constraint_errors

如果在此导入操作期间遇到任何非延迟约束违规,则将记录它们,并且导入将继续完成。

目录

默认: DATA_PUMP_DIR

目的

指定导入作业可以在其中找到转储文件集的默认位置,以及应在其中创建日志和SQL文件的默认位置。

语法和说明

目录= directory_object

directory_object是一个数据库目录对象的名称(不是 文件路径 的实际目录)。安装后,特权用户可以访问名为的默认目录对象DATA_PUMP_DIR。有权访问的用户DATA_PUMP_DIR根本不需要使用该DIRECTORY参数。

在指定的目录对象DUMPFILELOGFILESQLFILE参数覆盖您指定的任何目录对象DIRECTORY参数。您必须具有对用于转储文件集的目录的“读取”访问权限,以及对用于创建日志和SQL文件的目录的“写入”访问权限。

以下是使用DIRECTORY参数的示例。您可以expfull.dmp通过运行为ExportFULL参数提供的示例来创建本示例中使用的转储文件。请参阅FULL

> impdp hr DIRECTORY = dpump_dir1 DUMPFILE = expfull.dmp 
LOGFILE = dpump_dir2:expfull.log

此命令导致导入作业expfull.dmpdpump_dir1目录对象指向的目录中查找转储文件。dpump_dir2LOGFILE参数上指定的目录对象将覆盖DIRECTORY参数,以便将日志文件写入dpump_dir2

也可以看看:

DUMPFILE

默认值:expdatdmp

目的

指定 名字 以及(可选)由Export创建的转储文件集的目录对象。

语法和说明

DUMPFILE = [ directory_object:] file_name [,...]

directory_object如果DIRECTORY参数已建立一个,则可选。如果确实在此处提供值,则该值必须是已经存在并且可以访问的目录对象。指定为DUMPFILE参数一部分的数据库目录对象将覆盖该参数指定的值DIRECTORY

file_name是在转储文件集的文件的名称。文件名也可以是包含替换变量的模板%U。如果%U使用,导入将检查与模板匹配的每个文件(直到找不到匹配项),以查找属于转储文件集的所有文件。在%U一个2位递增的整数膨胀开始01。

如果DUMPFILE参数中的文件规范包含整个集合,则文件中将包含足够的信息以供Import定位整个集合。不需要文件具有与导出时相同的名称,位置或顺序。

以下是使用ImportDUMPFILE参数的示例。您可以通过运行为ExportDUMPFILE参数提供的示例来创建本示例中使用的转储文件。参见DUMPFILE

> impdp hr DIRECTORY = dpump_dir1 DUMPFILE = dpump_dir2:exp1.dmp,exp2%U.dmp

由于dpump_dir2exp1.dmp转储文件指定了目录对象(),因此导入作业将在其中查找该文件。它还将查找dpump_dir1该格式的转储文件exp2<nn>.dmp。日志文件将被写入dpump_dir1

ENCRYPTION_PASSWORD

默认值:没有默认值。该值由用户提供。

目的

指定用于访问转储文件集中的加密列数据的密码。这样可以防止未经授权访问加密的转储文件集。

语法和说明

ENCRYPTION_PASSWORD =密码

如果在导出操作中指定了加密密码,则在导入操作中需要此参数。指定的密码必须与导出操作上指定的密码相同。

限制条件

  • 该参数仅在Oracle Database 11g企业版中有效。

  • ENCRYPTION_PASSWORD如果转储文件集是使用透明加密模式创建的,则此参数无效。

  • ENCRYPTION_PASSWORD参数对于网络导入作业无效。

  • 所有列的加密属性必须在导出的表定义和目标表之间匹配。例如,假设您有一个表EMP,并且其中的一列名为EMPNO。以下两种情况都将导致错误,因为EMP源表中列的加密属性EMP与目标表中列的加密属性不匹配:

    • EMP表随EMPNO加密列一起导出,但是在导入表之前,您需要从该EMPNO列中删除加密属性。

    • EMP表导出没有EMPNO列被加密,但在此之前导入表您启用加密EMPNO列。

在以下示例中,123456必须指定加密密码,因为它是在dpcd2be1.dmp创建转储文件时指定的(请参阅“ ENCRYPTION_PASSWORD”)。

> impdp hr TABLES = employee_s_encrypt DIRECTORY = dpump_dir
  DUMPFILE = dpcd2be1.dmp ENCRYPTION_PASSWORD = 123456

在导入操作过程中,employee_s_encrypt表中在导出操作过程中加密的所有列在导入之前都会被解密。

估计

默认: BLOCKS

目的

在网络导入操作中指示源系统 估计将生成多少数据。

语法和说明

ESTIMATE = {块| 统计}

ESTIMATE参数的有效选择如下:

  • BLOCKS -通过将源对象使用的数据库块数乘以适当的块大小来计算估算值。

  • STATISTICS-使用每个表格的统计数据计算估算值。为了使此方法尽可能准确,应最近对所有表进行分析。

生成的估计值可用于确定整个导入作业执行过程中的完成百分比。

限制条件

  • ESTIMATE仅在NETWORK_LINK还指定了导入参数的情况下,导入参数才有效。

  • 当导入源是转储文件集时,已经知道要加载的数据量,因此将自动计算完成百分比。

  • 如果该估计可能是不准确QUERYSAMPLEREMAP_DATA使用参数。

在下面的示例中,source_database_link将被替换为指向源数据库的有效链接的名称。

> impdp hr TABLES = job_history NETWORK_LINK = source_database_link
  DIRECTORY = dpump_dir1 ESTIMATE =统计信息 

模式中的job_historyhr是从源数据库导入的。默认情况下会创建一个日志文件,并将其写入dpump_dir1目录对象指向的目录中。作业开始时,将基于表统计信息计算作业的估算值。

排除

默认值:没有默认值

目的

使您可以过滤 元数据 通过指定要从导入作业中排除的对象和对象类型来导入。

语法和说明

EXCLUDE = object_type [:name_clause ] [,...]

对于给定的导入方式,包括源(及其从属)中包含的所有对象类型,但EXCLUDE语句中指定的对象类型除外。如果对象被排除,则其所有从属对象也将被排除。例如,排除一个表也将排除该表上的所有索引和触发器。

name_clause是可选的。它允许在对象类型内细粒度选择特定对象。它是一个SQL表达式,用作该类型的对象名称的过滤器。它由一个SQL运算符和与指定类型的对象名称进行比较的值组成。name子句仅适用于实例具有名称的对象类型(例如,它适用于TABLEVIEW,但不适用于GRANT)。必须使用冒号将可选的名称子句与对象类型分开,并用双引号引起来,因为必须使用单引号来分隔名称字符串。例如,您可以设置EXCLUDE=INDEX:"LIKE 'DEPT%'"为排除名称以开头的所有索引dept

EXCLUDE可以指定多个语句。Oracle建议您将EXCLUDE语句放在参数文件中,以避免在命令行上使用特定于操作系统的转义符。

正如下面的章节中解释,你应该知道的排除指定某些对象,特别的影响,CONSTRAINTGRANT,和USER

排除约束

不能排除以下约束:

  • NOT NULL 约束。

  • 被创建并成功地加载(例如,用于索引编排表或主键约束所需表约束REF SCOPEWITH ROWID与表的约束REF列)。

这意味着以下EXCLUDE语句将被解释如下:

  • EXCLUDE=CONSTRAINT将排除所有非参照约束,但NOT NULL约束以及成功创建和加载表所需的任何约束除外。

  • EXCLUDE=REF_CONSTRAINT 将排除参照完整性(外键)约束。

不包括赠款和用户

指定EXCLUDE=GRANT将排除所有对象类型上的对象授予和系统特权授予。

指定EXCLUDE=USER仅排除用户定义,而不排除用户模式中包含的对象。

要排除特定用户和该用户的所有对象,请指定一个过滤器,例如以下内容(其中hr是您要排除的用户的架构名称):

EXCLUDE=SCHEMA: "= 'HR' "

如果您尝试通过使用诸如EXCLUDEUSER:“ =” HR'之类的语句来排除用户,则仅CREATE USER hrDDL语句将被排除,并且您可能无法获得预期的结果。

限制条件

  • EXCLUDEINCLUDE参数是互斥的。

假设以下内容位于参数文件中,exclude.par供DBA或其他具有该IMP_FULL_DATABASE角色的用户使用。(如果您想尝试该示例,则需要创建此文件。)

EXCLUDE =功能
EXCLUDE =步骤
EXCLUDE =包装
EXCLUDE = INDEX:“像'EMP%'”

然后,您可以发出以下命令。您可以expfull.dmp通过运行为ExportFULL参数提供的示例来创建此命令中使用的转储文件。请参阅FULL

> impdp系统DIRECTORY = dpump_dir1 DUMPFILE = expfull.dmp PARFILE = exclude.par

expfull.dmp转储文件中的所有数据都将被加载,但名称以开头的函数,过程,程序包和索引除外emp

也可以看看:

有关在导入操作期间进行过滤的更多信息,请参见使用EXCLUDE参数的效果

FLASHBACK_SCN

默认值:没有默认值

目的

指定 导入将用于启用闪回实用程序的系统更改号(SCN)。

语法和说明

FLASHBACK_SCN = scn_number

导入操作使用与指定的数据一致的数据执行scn_number

注意:

如果您在逻辑备用系统上,则该FLASHBACK_SCN参数将被忽略,因为逻辑备用数据库选择了SCN。有关逻辑备用数据库的信息,请参见Oracle Data Guard概念和管理

限制条件

  • FLASHBACK_SCN参数只有当NETWORK_LINK还指定参数。

  • FLASHBACK_SCN参数仅与Oracle数据库的闪回查询功能有关。它不适用于闪回数据库,闪回删除或闪回数据存档。

  • FLASHBACK_SCN并且FLASHBACK_TIME是互斥的。

以下是使用FLASHBACK_SCN参数的示例。

> impdp hr DIRECTORY = dpump_dir1 FLASHBACK_SCN = 123456  
NETWORK_LINK = source_database_link

source_database_link这个例子将与您进行导入数据源数据库的名称所取代。

FLASHBACK_TIME

默认值:没有默认值

目的

指定导入将用于启用闪回实用程序的系统更改号(SCN)。

语法和说明

FLASHBACK_TIME =“ TO_TIMESTAMP()”

最接近匹配的SCN找到指定的时间,并且此SCN用于启用闪回实用程序。导入操作是使用与该SCN一致的数据执行的。因为该TO_TIMESTAMP值用引号引起来,所以最好将此参数放在参数文件中。否则,您可能需要在命令行中在引号前使用转义字符。请参见在数据泵命令行上使用引号

注意:

如果您在逻辑备用系统上,则该FLASHBACK_TIME参数将被忽略,因为逻辑备用数据库选择了SCN。有关逻辑备用数据库的信息,请参见Oracle Data Guard概念和管理

限制条件

  • 仅当NETWORK_LINK还指定了参数时,此参数才有效。

  • FLASHBACK_TIME参数仅与Oracle数据库的闪回查询功能有关。它不适用于闪回数据库,闪回删除或闪回数据存档。

  • FLASHBACK_TIME并且FLASHBACK_SCN是互斥的。

您可以以该DBMS_FLASHBACK.ENABLE_AT_TIME过程接受的任何格式指定时间。例如,假设您有一个参数文件flashback_imp.par,其中包含以下内容:

FLASHBACK_TIME =“ TO_TIMESTAMP('25 -08-2003 14:35:00','DD-MM-YYYY HH24:MI:SS')”

然后,您可以发出以下命令:

> impdp hr DIRECTORY = dpump_dir1 PARFILE = flashback_imp.par NETWORK_LINK = source_database_link

将使用与最接近指定时间的SCN一致的数据执行导入操作。

也可以看看:

《 Oracle数据库高级应用程序开发人员指南》中有关使用闪回的信息

充分

默认: Y

目的

指定要执行完整的数据库导入。

语法和说明

FULL = y

值FULL = y表示从源(转储文件集或另一个数据库)导入了所有数据和元数据。

筛选可以限制使用此导入模式导入的内容(请参阅导入操作中的筛选)。

如果使用了NETWORK_LINK参数USERID,则执行导入作业的IMP_FULL_DATABASE用户在目标数据库上具有角色,那么该用户还必须EXP_FULL_DATABASE在源数据库上具有角色。

如果您是从文件导入的非特权用户,则仅导入映射到您自己的模式的模式。

FULL 是在执行基于文件的导入时的默认模式。

以下是使用FULL参数的示例。您可以expfull.dmp通过运行为ExportFULL参数提供的示例来创建本示例中使用的转储文件。请参阅FULL

> impdp hr DUMPFILE = dpump_dir1:expfull.dmp FULL = y 
LOGFILE = dpump_dir2:full_imp.log

本示例从expfull.dmp转储文件中导入所有内容。在此示例中,DIRECTORY未提供参数。因此,必须在DUMPFILE参数和LOGFILE参数上都提供目录对象。如本示例所示,目录对象可以不同。

帮帮我

默认: n

目的

显示导入实用程序的联机帮助。

语法和说明

帮助= y

如果指定HELPy,则“导入”显示摘要 所有“导入”命令行参数和交互式命令。

> impdp HELP = Y

此示例将显示所有导入参数和命令的简短描述。

包括

默认值:没有默认值

目的

使您可以过滤 通过为当前导入模式指定对象和对象类型来导入的元数据。

语法和说明

INCLUDE = object_type [:name_clause ] [,...]

INCLUDE导入语句中显式指定的源(及其从属)中的对象类型。

name_clause是可选的。它允许在对象类型内细粒度选择特定对象。它是一个SQL表达式,用作该类型的对象名称的过滤器。它由一个SQL运算符和与指定类型的对象名称进行比较的值组成。name子句仅适用于实例具有名称的对象类型(例如,它适用于TABLE,但不适用于GRANT)。必须使用冒号将可选的名称子句与对象类型分开,并用双引号引起来,因为必须使用单引号来分隔名称字符串。

INCLUDE可以指定多个语句。Oracle建议您将INCLUDE语句放在参数文件中,以避免在命令行上使用特定于操作系统的转义符。

要查看与该INCLUDE参数一起使用的有效路径的列表,可以查询以下视图:DATABASE_EXPORT_OBJECTS完整模式,SCHEMA_EXPORT_OBJECTS模式模式以及TABLE_EXPORT_OBJECTS表和表空间模式。

限制条件

  • INCLUDEEXCLUDE参数是互斥的。

假设以下内容位于参数文件中,imp_include.par供DBA或其他具有该IMP_FULL_DATABASE角色的用户使用:

包含=功能
包含=过程
包含=包装
INCLUDE = INDEX:“像'EMP%'”

然后,您可以发出以下命令:

> impdp系统SCHEMAS = hr目录= dpump_dir1 DUMPFILE = expfull.dmp 
PARFILE = imp_include.par

您可以expfull.dmp通过运行为ExportFULL参数提供的示例来创建本示例中使用的转储文件。请参阅FULL

导入操作将仅从hr名称以开头的模式和索引中加载函数,过程和程序包EMP。尽管这是特权模式导入(用户必须具有IMP_FULL_DATABASE角色),但不会导入架构定义,因为USER未在INCLUDE语句中指定对象类型。

JOB_NAME

默认值:系统生成的表单名称 SYS_<IMPORT or SQLFILE>_<mode>_NN

目的

作业名称用于在后续操作中标识导入作业,例如何时使用ATTACH参数将其附加到作业,或通过DBA_DATAPUMP_JOBSUSER_DATAPUMP_JOBS视图标识作业。作业名称将成为当前用户架构中主表的名称。主表控制导入作业。

语法和说明

JOB_NAME = jobname_string

jobname_string指定 一个名字此导入作业的最大长度为30个字节。字节必须代表可打印的字符和空格。如果包含空格,则名称必须用单引号引起来(例如,“星期四导入”)。作业名称由执行导入操作的用户的架构隐式限定。

默认作业名称是系统生成的,格式为SYS_IMPORT_mode_NNSYS_SQLFILE_mode_NN,其中NN会扩展为以01开头的2位递增整数'SYS_IMPORT_TABLESPACE_02。默认名称的示例为'。

以下是使用JOB_NAME参数的示例。您可以expfull.dmp通过运行为ExportFULL参数提供的示例来创建本示例中使用的转储文件。请参阅FULL

> impdp hr DIRECTORY = dpump_dir1 DUMPFILE = expfull.dmp JOB_NAME = impjob01

日志文件

默认值:importlog

目的

指定名称,以及可选的目录对象,用于导入作业的日志文件。

语法和说明

LOGFILE = [ directory_object:] file_name

如果指定directory_object,则它必须是DBA先前建立的并且可以访问的一个。这将覆盖用DIRECTORY参数指定的目录对象。默认行为是create importlogDIRECTORY参数中指定的目录对象引用的目录中。

如果file_name您指定的名称已经存在,它将被覆盖。

有关正在进行的工作,已完成的工作以及遇到的错误的所有消息都将写入日志文件。(对于作业的实时状态,请STATUS以交互方式使用该命令。)

除非NOLOGFILE指定参数,否则始终创建日志文件。与转储文件集一样,日志文件是相对于服务器而不是客户端的。

注意:

数据泵导入使用数据库字符集写入日志文件。如果您的客户端NLS_LANG环境设置了与数据库字符集不同的客户端字符集,则日志文件中的表名可能与在客户端输出屏幕上显示的表名不同。

限制条件

  • 要使用自动存储管理(ASM)执行数据泵导入,必须指定一个LOGFILE参数,该参数包括不包含ASM +表示法的目录对象。即,必须将日志文件写入磁盘文件,而不要写入ASM存储。或者,您可以指定NOLOGFILE=Y。但是,这阻止了日志文件的写入。

以下是使用LOGFILE参数的示例。您可以expfull.dmp通过运行为ExportFULL参数提供的示例来创建本示例中使用的转储文件。请参阅FULL

> impdp hr SCHEMAS = HR DIRECTORY = dpump_dir2 LOGFILE = imp.log
 DUMPFILE = dpump_dir1:expfull.dmp

由于没有在LOGFILE参数上指定目录对象,因此会将日志文件写入到在DIRECTORY参数上指定的目录对象。

另请参阅

NETWORK_LINK

默认值:没有默认值

目的

启用从有效数据库链接标识的(源)数据库的导入。来自源数据库实例的数据直接写回到连接的数据库实例。

语法和说明

NETWORK_LINK = source_database_link

NETWORK_LINK参数通过数据库链接启动导入。这意味着与impdp客户端连接的系统联系由引用的源数据库source_database_link,从中检索数据,并将数据写入所连接实例上的数据库。没有涉及的转储文件。

source_database_link规定必须是一个数据库链接到可用的数据库的名称。如果该实例上的数据库尚无数据库链接,则您或您的DBA必须创建一个数据库链接。有关该CREATE DATABASE LINK语句的更多信息,请参见《Oracle数据库SQL语言参考》

使用可移植方法执行网络导入时,必须开始导入之前将源数据文件复制到目标数据库。

如果源数据库是只读的,则连接的用户必须在源数据库上分配一个本地管理的表空间作为默认的临时表空间。否则,作业将失败。有关此操作的更多详细信息,请参见《Oracle数据库管理员指南》中有关创建本地管理的临时表空间的信息。

当指定任何以下参数,该参数是必需的:FLASHBACK_SCNFLASHBACK_TIMEESTIMATETRANSPORT_TABLESPACES,或TRANSPORTABLE

警告:

如果通过未加密的网络链接执行导入操作,则所有数据都将以明文形式导入,即使已在数据库中进行了加密也是如此。有关网络安全性的更多信息,请参见《Oracle数据库高级安全性管理员指南》

限制条件

  • 网络导入不支持使用进化类型。

  • NETWORK_LINK参数与TABLES参数一起使用时,只能导入整个表(不能导入表的分区)。唯一的例外TRANSPORTABLE=ALWAYS是还指定了if ,在这种情况下,可以导入指定表的单个或多个分区。

  • 如果USERID执行导入作业的IMP_FULL_DATABASE角色在目标数据库上具有角色,则该用户还必须EXP_FULL_DATABASE在源数据库上具有角色。

  • 数据泵导入支持的唯一数据库链接类型为:公共,固定用户和连接用户。不支持当前用户数据库链接。

在下面的示例中,source_database_link将被替换为有效数据库链接的名称。

> impdp hr TABLES =员工DIRECTORY = dpump_dir1
NETWORK_LINK = source_database_link EXCLUDE = CONSTRAINT

此示例导致employees从源数据库中导入表(不包括约束)。日志文件将写入参数中dpump_dir1指定的DIRECTORY

日志文件

默认: n

目的

指定是否禁止创建日志文件的默认行为。

语法和说明

NOLOGFILE = {y | n}

如果您指定NOLOGFILE=Y禁止创建日志文件,则进度和错误信息仍会写入所有连接的客户端(包括启动原始导出操作的客户端)的标准输出设备中。如果没有客户端附加到正在运行的作业上,而您指定NOLOGFILE=Y,则可能会丢失重要的进度和错误信息。

以下是使用NOLOGFILE参数的示例。

> impdp hr DIRECTORY = dpump_dir1 DUMPFILE = expfull.dmp NOLOGFILE = Y

此命令导致expfull.dmp转储文件以全模式导入(基于文件的导入的默认设置)。由于NOLOGFILE设置为,因此未写入任何日志文件y

平行

默认: 1

目的

指定代表导入作业运行的活动执行的最大线程数。

语法和说明

PARALLEL =整数

您指定的值integer指定代表导入作业运行的活动执行的最大线程数。该执行集由工作进程和并行I / O服务器进程组成。主控制进程,空闲工作程序以及在并行I / O操作中充当并行执行协调器的工作程序进程不计入该总数。此参数使您可以在资源消耗和经过时间之间进行权衡。

如果导入的源是由文件组成的转储文件集,则可以从同一文件读取多个进程,但是性能可能会受到I / O争用的限制。

要增加或减少PARALLEL作业执行期间的值,请使用交互式命令模式。

并行性用于加载用户数据和程序包主体,以及用于建立索引。

也可以看看:

控制资源消耗

限制条件

  • 该参数仅在Oracle Database 11g企业版中有效。

以下是使用PARALLEL参数的示例。

> impdp hr DIRECTORY = dpump_dir1 LOGFILE = parallel_import.log 
JOB_NAME = imp_par3 DUMPFILE = par_exp%U.dmp PARALLEL = 3

此命令将导入在运行ExportPARALLEL参数的示例时创建的转储文件集。(见并行。)转储文件的名称是par_exp01.dmppar_exp02.dmppar_exp03.dmp

参数文件

默认值:没有默认值

目的

指定 导入参数文件的名称。

语法和说明

PARFILE = [ directory_path ] file_name

与服务器创建和写入的转储文件,日志文件和SQL文件不同,参数文件由运行impdp映像的客户端打开和读取。因此,目录对象名称既不是必需的,也不是适当的。默认值为用户的当前目录。如果使用的参数值需要使用引号,则强烈建议使用参数文件。(请参阅在数据泵命令行上使用引号。)

限制条件

  • PARFILE参数不能在参数文件中指定。

示例参数文件的内容hr_imp.par可能如下:

TABLES =国家,位置,地区
DUMPFILE = dpump_dir2:exp1.dmp,exp2%U.dmp
目录= dpump_dir1
平行= 3 

然后,您可以发出以下命令来执行参数文件:

> impdp hr PARFILE = hr_imp.par

名为countrieslocations和的表regions将从您为ExportDUMPFILE参数运行示例时创建的转储文件集中导入。(请参见DUMPFILE。)导入作业exp1.dmp在指向的位置查找文件dpump_dir2。它会exp2<nn>.dmp在指向的位置中查找任何形式的转储文件dpump_dir1。作业的日志文件也将写入dpump_dir1

PARTITION_OPTIONS

缺省值:缺省值是departitionTABLES参数上指定并TRANPORTABLE=ALWAYS设置分区名称时(无论是在导入操作上还是在导出过程中)。否则,默认值为none

目的

指定在导入操作期间应如何创建表分区。

语法和说明

PARTITION_OPTIONS = {无| 出发| 合并}

none创建表的值,该表存在于执行导出操作的系统上。如果导出是通过可移植方法以及分区或子分区过滤器执行的,则不能使用该none选项merge。在这种情况下,必须使用departition选项。

值可以departition将每个分区或子分区提升为新的单个表。新表的默认名称将是表和分区名称或表和子分区名称的串联(视情况而定)。

的值merge将所有分区和子分区组合到一个表中。

限制条件

  • 如果创建了转储文件的导出操作是使用可传输方法执行的,并且指定了分区或子分区,则导入操作必须使用departition选项。

  • 如果创建转储文件的导出操作是使用可传输方法执行的,则导入操作不能使用PARTITION_OPTIONS=merge

  • 如果对要分离的对象有任何授权,则会生成错误消息,并且不会加载对象。

以下示例假定该sh.sales表已导出到名为的转储文件中sales.dmp。它使用MERGE选项将所有分区合并sh.salesscott架构中的一个未分区表中。

> impdp系统TABLES = sh.sales PARTITION_OPTIONS =合并 
目录= dpump_dir1 DUMPFILE = sales.dmp REMAP_SCHEMA = sh:scott

也可以看看:

使用TRANSPORTABLE进行导入操作的示例PARTITION_OPTIONS=departition

查询

默认值:没有默认值

目的

允许您指定一个查询子句来过滤要导入的数据。

语法和说明

QUERY = [[ schema_name。] table_name:] query_clause

query_clause通常是一个SQLWHERE细粒度行选择条款,但可以是任何SQL子句。例如,ORDER BY可以使用一个子句来加快从堆组织表到索引组织表的迁移。如果未提供模式和表名,则该查询将应用于源转储文件集或数据库中的所有表(并且必须对它有效)。特定于表的查询将覆盖应用于所有表的查询。

当查询要应用于特定表时,冒号必须将表名与查询子句分开。可以指定一个以上的表特定查询,但是每个表只能指定一个查询。

查询必须用单引号或双引号引起来。推荐使用双引号,因为子句中的字符串必须用单引号引起来。Oracle建议您将QUERY规范放在参数文件中,以避免在命令行上使用特定于操作系统的转义符。请参见在数据泵命令行上使用引号

使用此QUERY参数时,将使用外部表方法(而不是直接路径方法)进行数据访问。

若要在特定于表的查询中指定除您自己的模式之外的其他模式,必须授予您对该特定表的访问权限。

限制条件

  • QUERY参数不能与以下参数结合使用:

    • CONTENT=METADATA_ONLY

    • SQLFILE

    • TRANSPORT_DATAFILES

  • QUERY为一个表被指定的参数,数据泵使用外部表加载目标表。外部表使用INSERT带有SELECT子句的SQL语句。QUERY参数的值包含在语句部分的WHERE子句中。如果参数包括对另一个表的引用,这些表的名称与正在加载的表相匹配,并且在查询中使用了这些列,那么您将需要使用表别名来区分正在加载的表和正在加载的表中的列。相同名称的语句。数据泵用于正在加载的表的表别名为。SELECTINSERTQUERYSELECTKU$

    例如,假设您要sh.sales基于sh.customers表中客户的信用额度导入表的子集。在以下示例中,KU$用于限定参数loading中的cust_id字段。结果,Data Pump仅为信用额度大于10,000美元的客户导入行。QUERYsh.sales

    QUERY ='sales:“在哪里(从客户那里选择cust_id,而cust_credit_limit> 10000 AND ku $ .cust_id = c.cust_id)””
    

    如果KU$未将其用作表别名,则结果将是所有行均已加载:

    QUERY ='sales:“在哪里(从客户那里选择cust_id,而cust_credit_limit> 10000 AND cust_id = c.cust_id)”'
    

以下是使用QUERY参数的示例。您可以expfull.dmp通过运行为ExportFULL参数提供的示例来创建本示例中使用的转储文件。请参阅FULL。由于该QUERY值使用引号引起来,因此Oracle建议您使用参数文件来避免必须在命令行上使用转义符。(请参阅在数据泵命令行上使用引号。)

假设您有一个参数文件query_imp.par,其中包含以下内容:

QUERY =部门:“ WHERE department_id <120”

然后,您可以输入以下命令:

> impdp hr DIRECTORY = dpump_dir1 DUMPFILE = expfull.dmp 
  PARFILE = query_imp.par NOLOGFILE = Y

expfull.dmp导入了所有表,但是对于该departments表,仅导入满足QUERY参数中指定条件的数据。

REMAP_DATA

默认值:没有默认值

目的

REMAP_DATA参数允许您在将数据插入到新数据库中时对其进行重新映射。通常的用途是重新生成主键,以避免在将表导入目标数据库中预先存在的表中时发生冲突。

您可以指定一个重映射函数,该函数将转储文件或远程数据库中指定列的值作为源。然后,重新映射函数返回一个重新映射的值,该值将替换目标数据库中的原始值。

相同的功能可以应用于要转储的多个列。当您要保证在引用约束中重新映射子列和父列时的一致性时,这很有用。

语法和说明

REMAP_DATA = [模式。]表名column_name:[模式。] pkg功能

每个语法元素的描述(按它们在语法中出现的顺序)如下:

schema-包含要重新映射的表的模式。默认情况下,这是执行导入的用户的架构。

tablename-将重新映射其列的表。

column_name-要重新映射其数据的列。

schema-包含您创建的包含重新映射功能的PL / SQL包的模式。默认情况下,这是执行导入的用户的架构。

pkg-您创建的包含重新映射功能的PL / SQL软件包的名称。

函数-PL / SQL中的函数名称,将调用该函数名称以重新映射指定表的每一行中的列表。

限制条件

  • 源参数的数据类型和返回的值都应与表中指定列的数据类型匹配。

  • 除在自主事务中外,重新映射功能不应执行提交或回滚。

下面的示例假定一个名为包remap已经创建了一个包含了一个名为功能plusx改变的值first_nameemployees表中。

> impdp hr DIRECTORY = dpump_dir1 DUMPFILE = expschema.dmp
TABLES = hr.employees REMAP_DATA = hr.employees.first_name:hr.remap.plusx

REMAP_DATAFILE

默认值:没有默认值

目的

改名 源数据文件要在源数据文件中引用的所有SQL语句的目标数据文件名:CREATE TABLESPACECREATE LIBRARY,和CREATE DIRECTORY

语法和说明

REMAP_DATAFILE = source_datafiletarget_datafile

在具有不同文件命名约定的平台之间移动数据库时,重新映射数据文件很有用。在source_datafiletarget_datafile名称应该是完全按照您希望它们出现在被引用的SQL语句。Oracle建议您将数据文件名括在引号中,以消除在冒号是有效文件规范字符的平台上的歧义。

您必须具有IMP_FULL_DATABASE指定此参数的角色。

由于该REMAP_DATAFILE值使用引号引起来,因此Oracle建议您在参数文件中指定该参数,以避免在命令行上使用转义符。(请参阅在数据泵命令行上使用引号。)例如,假设您有一个参数文件,payroll.par其内容如下:

目录= dpump_dir1
FULL = Y
DUMPFILE = db_full.dmp
REMAP_DATAFILE =“'DB1 $:[HRDATA.PAYROLL] tbs6.f':'/ db1 / hrdata / payroll / tbs6.f'”“

然后,您可以发出以下命令:

> impdp hr PARFILE = payroll.par

此示例将导入期间所有SQL DDL语句的VMS文件规范(DR1$:[HRDATA.PAYROLL]tbs6.f)重新映射为UNIX文件规范(/db1/hrdata/payroll/tbs6.f)。转储文件db_full.dmp,位于目录对象dpump_dir1

REMAP_SCHEMA

默认值:没有默认值

目的

负荷 从源模式到目标模式的所有对象。

语法和说明

REMAP_SCHEMA = source_schematarget_schema

REMAP_SCHEMA可以指定多行,但是每一个源模式都必须不同。但是,不同的源模式可以映射到相同的目标模式。映射可能未完全完成100%,因为某些架构引用是Import无法找到的。例如,“导入”将找不到嵌入在类型,视图,过程和包的定义体内的模式引用。

如果您要重新映射的架构尚不存在,则导入操作将创建它,前提是转储文件集包含CREATE USER源架构的必要元数据,并且要以足够的特权进行导入。例如,输入以下“导出”命令将创建具有必需元数据的转储文件集,以创建模式,因为用户SYSTEM具有必需的特权:

> expdp系统SCHEMAS = hr
密码:密码

> expdp系统FULL = y
密码:密码

如果转储文件集不包含创建模式所需的元数据,或者您没有特权,则必须在执行导入操作之前创建目标模式。这是因为无特权的转储文件不包含导入所需的必要信息以自动创建架构。

如果导入操作确实创建了架构,则在导入完成后,必须为其分配有效的密码才能连接到该架构。需要特权的SQL语句是:

SQL> ALTER USER schema_namenew_password标识 

限制条件

  • 非特权用户只有在其架构是重映射的目标架构时才能执行架构重映射。(特权用户可以执行不受限制的模式重映射。)

  • 例如,SCOTT可以将他BLAKE的对象重新映射到SCOTT,但是SCOTT不能将其对象重新映射SCOTTBLAKE

假设以用户身份SYSTEM执行以下导出和导入命令以将hr架构重新映射到scott架构中:

> expdp系统SCHEMAS = hr DIRECTORY = dpump_dir1 DUMPFILE = hr.dmp

> impdp系统DIRECTORY = dpump_dir1 DUMPFILE = hr.dmp REMAP_SCHEMA = hr.scott

在此示例中,如果scott在导入之前用户已经存在,则“导入”REMAP_SCHEMA命令会将对象从hr架构添加到现有scott架构。您可以scott在导入后使用现有密码(无需重置)连接到架构。

如果scott在执行导入操作之前不存在用户,则“导入”会使用无效的密码自动创建它。这是可能的,因为转储文件hrdmp创建时SYSTEM,,具有创建创建转储文件所需的特权,转储文件包含创建模式所需的元数据。但是,scott除非scott在导入完成后在目标数据库上重置密码,否则无法在导入完成时连接到。

REMAP_TABLE

默认值:没有默认值

目的

允许您在使用可传输方法执行的导入操作期间重命名表。

语法和说明

REMAP_TABLE = [模式。] old_tablename [ .partition ] :new_tablename

您可以使用REMAP_TABLE参数重命名整个表。

您还可以使用它来覆盖使用可移植方法导出的表分区的自动命名。使用可移植的方法导出分区表时,每个分区和子分区都被提升为自己的表,并且默认情况下,该表是通过组合表和分区名称(即tablename_partitionname)来命名的。您可以REMAP_TABLE用来指定默认名称以外的名称。

限制条件

  • 仅由导入创建的对象将被重新映射。特别是,如果TABLE_EXISTS_ACTION设置为TRUNCATE或,则不会重新映射现有表APPEND

以下是使用REMAP_TABLE参数将employees表重命名为新名称的示例emps

> impdp hr DIRECTORY = dpump_dir1 DUMPFILE = expschema.dmp
TABLES = hr.employees REMAP_TABLE = hr.employees:emps 

REMAP_TABLESPACE

默认值:没有默认值

目的

重新映射所有对象 选择与源表空间中的持久性数据一起导入,以在目标表空间中创建。

语法和说明

REMAP_TABLESPACE = source_tablespacetarget_tablespace

REMAP_TABLESPACE可以指定多个参数,但不能两个参数具有相同的源表空间。目标架构必须在目标表空间中具有足够的配额。

请注意,使用REMAP_TABLESPACE参数是在Data Pump Import中重新映射表空间的唯一方法。与原始的导入实用程序中提供的方法相比,这是一种更简单,更干净的方法。该方法受到许多限制(包括表空间子句的数量),有时会导致某些DDL命令失败。

相比之下,使用REMAP_TABLESPACE参数的数据泵导入方法适用于所有对象,包括用户,并且不管DDL语句中有多少个表空间子句,该方法都有效。

限制条件

  • 数据泵导入只能为兼容性级别为10.1或更高版本的数据库中的可移植导入重新映射表空间。

  • 仅由导入创建的对象将被重新映射。特别是,如果TABLE_EXISTS_ACTION设置为或SKIP,则不会重新映射现有表的表空间。TRUNCATEAPPEND

以下是使用REMAP_TABLESPACE参数的示例。

> impdp hr REMAP_TABLESPACE = tbs_1:tbs_6目录= dpump_dir1
  DUMPFILE = employees.dmp 

REUSE_DATAFILES

默认: n

目的

指定导入作业是否应将现有数据文件重新用于表空间创建。

语法和说明

REUSE_DATAFILES = {y | n}

如果使用默认值(n)和数据文件CREATE TABLESPACE语句中指定的值已经存在,则会发出来自失败CREATE TABLESPACE语句的错误消息,但导入作业将继续。

如果将此参数指定为y,则现有数据文件将重新初始化。请注意,指定Y可能会导致数据丢失。

以下是使用REUSE_DATAFILES参数的示例。您可以expfull.dmp通过运行为ExportFULL参数提供的示例来创建本示例中使用的转储文件。请参阅FULL

> impdp hr DIRECTORY = dpump_dir1 DUMPFILE = expfull.dmp LOGFILE = reuse.log
REUSE_DATAFILES =是

本示例将重新初始化文件中的CREATE TABLESPACE语句引用的数据expfull.dmp文件。

模式

默认值:没有默认值

目的

指定要执行模式导入。

语法和说明

SCHEMAS = schema_name [,...]

如果您具有该IMP_FULL_DATABASE角色,则可以通过指定架构列表来使用此参数来执行架构模式导入导入。首先,导入用户定义(如果尚不存在),包括系统和角色授予,密码历史记录等。然后导入架构中包含的所有对象。非特权用户只能指定他们自己的架构或重新映射到自己的架构的架构。在这种情况下,不会导入有关架构定义的任何信息,只会导入其中包含的对象。

使用过滤可以限制使用此导入模式导入的内容。请参阅导入操作期间的过滤

执行基于网络的导入时,模式模式是默认模式。

以下是使用SCHEMAS参数的示例。您可以expdat.dmp通过运行为ExportSCHEMAS参数提供的示例来创建此示例中使用的文件。参见SCHEMAS

> impdp hr SCHEMAS = hr DIRECTORY = dpump_dir1 LOGFILE = schemas.log
DUMPFILE = expdat.dmp

hr模式从导入expdat.dmp文件。日志文件schemas.log写入dpump_dir1

SKIP_UNUSABLE_INDEXES

默认值:Oracle数据库配置参数的值SKIP_UNUSABLE_INDEXES

目的

指定“导入”是否跳过具有索引的加载表 (系统或用户)将其设置为“索引不可用”状态。

语法和说明

SKIP_UNUSABLE_INDEXES = {y | n}

如果SKIP_UNUSABLE_INDEXES将设置为y,并且遇到索引处于“不可用”状态的表或分区,则无论如何该表或分区的加载都会继续进行,就好像不存在的索引不存在一样。

如果SKIP_UNUSABLE_INDEXES设置为n,并且遇到索引处于“不可用”状态的表或分区,则不会加载该表或分区。索引之前未设置为“不可用”的其他表将在插入行时继续更新。

如果SKIP_UNUSABLE_INDEXES未指定该参数,则将使用Oracle数据库配置参数的设置SKIP_UNUSABLE_INDEXES(其默认值为y)来确定如何处理不可用的索引。

如果将用于强制约束的索引标记为不可用,则数据不会导入到该表中。

注意:

仅当将数据导入现有表时,此参数才有用。将表作为导入的一部分创建时,它没有实际作用,因为在这种情况下,表和索引是新创建的,不会被标记为不可用。

以下是使用SKIP_UNUSABLE_INDEXES参数的示例。您可以expfull.dmp通过运行为ExportFULL参数提供的示例来创建本示例中使用的转储文件。请参阅FULL

> impdp hr DIRECTORY = dpump_dir1 DUMPFILE = expfull.dmp LOGFILE = skip.log
SKIP_UNUSABLE_INDEXES = y

SQL文件

默认值:没有默认值

目的

指定一个文件 根据其他参数,将在其中写入Import本应执行的所有SQL DDL。

语法和说明

SQLFILE = [ directory_object:] file_name

file_name指定了导入作业会写会在作业期间执行的DDL。该SQL实际上并未执行,并且目标系统保持不变。该文件将写入DIRECTORY参数中指定的目录对象,除非在此directory_object明确指定了另一个对象。名称与使用此参数指定的名称匹配的任何现有文件都将被覆盖。

请注意,密码不包含在SQL文件中。例如,如果一条CONNECT语句是已执行的DDL的一部分,它将被仅显示模式名称的注释替换。在下面的示例中,破折号表示后面有注释,并显示了hr架构名称,但未显示密码。

-连接小时

因此,在执行SQL文件之前,必须通过删除表示注释的破折号并添加hr架构的密码来对其进行编辑。

对于Streams和其他Oracle数据库选项,匿名PL / SQL块可能会出现在SQLFILE输出中。它们不应该直接执行。

限制条件

  • 如果SQLFILE指定,则如果将CONTENT参数设置为ALL或,则将忽略该参数DATA_ONLY

  • 要使用自动存储管理(ASM)将数据泵导入到SQL文件SQLFILE,您指定的参数必须包括不使用ASM +表示法的目录对象。即,必须将SQL文件写入磁盘文件,而不是ASM存储。

以下是使用SQLFILE参数的示例。您可以expfull.dmp通过运行为ExportFULL参数提供的示例来创建本示例中使用的转储文件。请参阅FULL

> impdp hr DIRECTORY = dpump_dir1 DUMPFILE = expfull.dmp
SQLFILE = dpump_dir2:expfull.sql

名为的SQL文件expfull.sql被写入dpump_dir2

状态

默认: 0

目的

指定显示作业状态的频率。

语法和说明

STATUS [=整数]

如果提供的值integer,则它指定以日志记录模式显示作业状态的频率(以秒为单位)。如果未输入任何值或使用默认值0,则除了有关每个对象类型,表或分区的完成信息之外,不会显示其他信息。

此状态信息仅写入标准输出设备,而不写入日志文件(如果有效)。

以下是使用STATUS参数的示例。您可以expfull.dmp通过运行为ExportFULL参数提供的示例来创建本示例中使用的转储文件。请参阅FULL

> impdp hr NOLOGFILE = y STATUS = 120 DIRECTORY = dpump_dir1 DUMPFILE = expfull.dmp

在此示例中,状态每两分钟(120秒)显示一次。

STREAMS_CONFIGURATION

默认: y

目的

指定是否导入导出转储文件中可能存在的任何Streams元数据。

语法和说明

STREAMS_CONFIGURATION = {y | n}

以下是使用STREAMS_CONFIGURATION参数的示例。您可以expfull.dmp通过运行为ExportFULL参数提供的示例来创建本示例中使用的转储文件。请参阅FULL

> impdp hr DIRECTORY = dpump_dir1 DUMPFILE = expfull.dmp STREAMS_CONFIGURATION = n

TABLE_EXISTS_ACTION

默认值:(SKIP请注意,如果CONTENT=DATA_ONLY指定了默认值APPEND,则不是SKIP。)

目的

告诉进口 如果要创建的表已经存在,该怎么办。

语法和说明

TABLE_EXISTS_ACTION = {跳过| 附录| 截断 更换}

可能的值具有以下作用:

  • SKIP保持表格原样并移至下一个对象。如果CONTENT参数设置为,则此选项无效DATA_ONLY

  • APPEND 从源加载行,并使现有行保持不变。

  • TRUNCATE 删除现有行,然后从源中加载行。

  • REPLACE删除现有表,然后从源创建并加载它。如果CONTENT参数设置为,则此选项无效DATA_ONLY

使用这些选项时,请考虑以下注意事项:

  • 使用TRUNCATE或时REPLACE,请确保受影响的表中的行不是任何引用约束的目标。

  • 当您使用SKIPAPPEND或时TRUNCATE,将忽略源中现有的表相关对象,例如索引,授权,触发器和约束。对于REPLACE,如果未显式或隐式排除(使用EXCLUDE)并且在源转储文件或系统中存在依赖对象,则从源中删除并重新创建依赖对象。

  • 当您使用APPEND或时TRUNCATE,在执行任何操作之前,将进行检查以确保来自源的行与现有表兼容。

    如果现有表具有活动的约束和触发器,则使用外部表访问方法加载它。如果有任何行违反活动约束,则加载失败,并且不会加载任何数据。您可以通过DATA_OPTIONS=SKIP_CONSTRAINT_ERRORS在“导入”命令行上指定来覆盖此行为。

    如果您有必须加载的数据,但可能会导致违反约束,请考虑在重新启用约束之前禁用约束,加载数据,然后删除问题行。

  • 使用时APPEND,数据总是加载到新空间中;现有空间(即使可用)也不会被重用。因此,您可能希望在加载后压缩数据。

限制条件

  • TRUNCATE 不能在群集表或网络链接上使用。

以下是使用TABLE_EXISTS_ACTION参数的示例。您可以expfull.dmp通过运行为ExportFULL参数提供的示例来创建本示例中使用的转储文件。请参阅FULL

> impdp hr TABLES =员工DIRECTORY = dpump_dir1 DUMPFILE = expfull.dmp
TABLE_EXISTS_ACTION =替换

桌子

默认值:没有默认值

目的

指定要执行表模式导入。

语法和说明

TABLES = [ schema_name。] table_name [:partition_name ]

在表模式导入中,您可以过滤从源导入的数据 通过指定以逗号分隔的表和分区或子分区列表。

如果不提供schema_name,则默认为当前用户的。要指定您自己的架构以外的其他架构,您必须具有该IMP_FULL_DATABASE角色或将该架构重新映射到当前用户。

使用过滤可以限制使用此导入模式导入的内容。请参阅导入操作期间的过滤

如果partition_name指定a,则它必须是关联表中分区或子分区的名称。

还支持使用通配符指定表名;但是,只能提供一个表表达式。例如,TABLES=emp%将导入名称以“ EMP”开头的所有表。

限制条件

  • TABLES不支持将同义词用作参数值。例如,如果架构中的regionshr的同义词为regn,则使用无效TABLES=regn。将返回错误。

  • 如果您指定多个table_name,则它们必须全部驻留在同一架构中。

  • 如果PARTITION_OPTIONS=DEPARTITION在导入中也指定了分区,则只能从一个表中指定分区。

  • NETWORK_LINK参数与TABLES参数一起使用时,只能导入整个表(不能导入表的分区)。唯一的例外TRANSPORTABLE=ALWAYS是还指定了if ,在这种情况下,可以导入指定表的单个或多个分区。

  • 如果指定TRANSPORTABLE=ALWAYS,则TABLES参数上指定的所有分区都必须在同一表中。

  • TABLES除非您将NETWORK_LINK参数用于10.2.0.3或更早版本的数据库或只读数据库,否则为该参数指定的表名列表的长度最大不能超过4MB 。在这种情况下,限制为4KB。

以下示例显示了使用TABLES参数的简单用法,仅从文件中导入employeesjobsexpfull.dmp。您可以expfull.dmp通过运行为ExportFULL参数提供的示例来创建本示例中使用的转储文件。请参阅FULL

> impdp hr DIRECTORY = dpump_dir1 DUMPFILE = expfull.dmp表=员工,工作

以下示例显示了如何使用TABLES参数导入分区:

> impdp hr DIRECTORY = dpump_dir1 DUMPFILE = expdat.dmp 
TABLES = sh.sales:sales_Q1_2000,sh.sales:sales_Q2_2000

本示例为架构中的表导入分区sales_Q1_2000sales_Q2_2000表。salessh

餐桌空间

默认值:没有默认值

目的

指定您要执行表空间模式导入。

语法和说明

TABLESPACES = tablespace_name [,...]

使用TABLESPACES指定表空间的列表 要从源(完整,架构,表空间或表模式导出转储文件集或另一个数据库)中导入其表和相关对象的名称。

在以下导入情况下,Data Pump自动创建将数据导入到其中的表空间:

  • 导入是在FULLTRANSPORT_TABLESPACES模式下完成的

  • 导入是在表格模式下完成的 TRANSPORTABLE=ALWAYS

在所有其他情况下,所选对象的表空间必须在导入数据库上已经存在。您还可以使用ImportREMAP_TABLESPACE参数将表空间名称映射到导入数据库上的现有表空间。

使用过滤可以限制使用此导入模式导入的内容。请参阅导入操作期间的过滤

限制条件

  • TABLESPACES除非您在NETWORK_LINK10.2.0.3或更早版本的数据库或只读数据库中使用该参数,否则为该参数指定的表空间名称列表的长度最大不能超过4MB 。在这种情况下,限制为4KB。

以下是使用TABLESPACES参数的示例。它假定表空间已经存在。您可以expfull.dmp通过运行为ExportFULL参数提供的示例来创建本示例中使用的转储文件。请参阅FULL

> impdp hr DIRECTORY = dpump_dir1 DUMPFILE = expfull.dmp TABLESPACES = tbs_1,tbs_2,tbs_3,tbs_4

这个例子将导入在表空间中的数据的所有表tbs_1tbs_2tbs_3,和tbs_4

转变

默认值:没有默认值

目的

使您能够更改要导入对象的对象创建DDL。

语法和说明

TRANSFORM = transform_name[:object_type ]

的 transform_name指定的名称变换。可能的选项如下:

  • SEGMENT_ATTRIBUTES -如果值指定为 y,则将包括段属性(物理属性,存储属性,表空间和日志记录)以及适当的DDL。默认值为y

  • STORAGE-如果将值指定为y,则包含带有适当DDL的存储子句。默认值为y。如果此参数被忽略SEGMENT_ATTRIBUTES=,n

  • OID-如果将值指定为n,则在创建对象表和类型期间禁止分配导出的OID。而是分配一个新的OID。这对于克隆架构很有用,但不会影响引用的对象。默认值为y

  • PCTSPACE-value此转换提供的数字必须大于零。它表示用于更改范围分配和数据文件大小的百分比乘数。

    请注意,您可以将PCTSPACE转换与“数据泵导出”SAMPLE参数一起使用,以使存储分配的大小与采样数据子集匹配。(请参阅示例。)

value指定的类型取决于使用的转换。SEGMENT_ATTRIBUTES,STORAGE和OID转换需要布尔值(y / n)。PCTSPACE转换需要整数值。

object_type是可选的。如果提供,则指定将要应用转换的对象类型。如果未指定对象类型,则转换将应用于所有有效的对象类型。表3-1中显示了每个转换的有效对象类型。

表3-1数据泵Export TRANSFORM参数的有效对象类型

  SEGMENT_ATTRIBUTES 存储 OID PCT空间

CLUSTER

X

X

 

X

CONSTRAINT

X

X

 

X

INC_TYPE

   

X

 

INDEX

X

X

 

X

ROLLBACK_SEGMENT

X

X

 

X

TABLE

X

X

X

X

TABLESPACE

X

   

X

TYPE

   

X

 

对于以下示例,假定您已employeeshr模式中导出了表。CREATE TABLE然后导入表时产生的SQL语句类似于以下内容:

创建表“ HR”。“员工” 
   (“” EMPLOYEE_ID“ NUMBER(6,0), 
     “ FIRST_NAME” VARCHAR2(20), 
     “ LAST_NAME” VARCHAR2(25)CONSTRAINT“ EMP_LAST_NAME_NN” NOT NULL ENABLE, 
     “ EMAIL” VARCHAR2(25)CONSTRAINT“ EMP_EMAIL_NN” NOT NULL ENABLE, 
     “ PHONE_NUMBER” VARCHAR2(20), 
     “ HIRE_DATE”日期约束“ EMP_HIRE_DATE_NN”不能为空, 
     “ JOB_ID” VARCHAR2(10)约束“ EMP_JOB_NN”不为空, 
     “薪水” NUMBER(8,2), 
     “ COMMISSION_PCT” NUMBER(2,2), 
     “ MANAGER_ID” NUMBER(6,0), 
     “ DEPARTMENT_ID” NUMBER(4,0)
   )PCTFREE 10 PCTUSED 40 INITRANS 1 MAXTRANS 255 NOCOMPRESS LOGGING
  存储(初始10240下16384最小1最大121
  PCTINCREASE 50个FREELISTS 1个FREELIST GROUPS 1个BUFFER_POOL DEFAULT)
  表空间“系统”;

如果不想保留该STORAGE子句TABLESPACE,则可以CREATE STATEMENT使用ImportTRANSFORM参数将其从中删除。将值指定SEGMENT_ATTRIBUTESn。这导致从表中排除段属性(存储和表空间)。

> impdp hr TABLES = hr.employees \
  目录= dpump_dir1 DUMPFILE = hr_emp.dmp \
  TRANSFORM = SEGMENT_ATTRIBUTES:n:表

该表的结果CREATE TABLE语句employees将类似于以下内容。它不包含STORAGEorTABLESPACE子句;HR而是将使用架构默认表空间的属性。

创建表“ HR”。“员工” 
   (“” EMPLOYEE_ID“ NUMBER(6,0), 
     “ FIRST_NAME” VARCHAR2(20), 
     “ LAST_NAME” VARCHAR2(25)CONSTRAINT“ EMP_LAST_NAME_NN” NOT NULL ENABLE, 
     “ EMAIL” VARCHAR2(25)CONSTRAINT“ EMP_EMAIL_NN” NOT NULL ENABLE, 
     “ PHONE_NUMBER” VARCHAR2(20), 
     “ HIRE_DATE”日期约束“ EMP_HIRE_DATE_NN”不能为空, 
     “ JOB_ID” VARCHAR2(10)约束“ EMP_JOB_NN”不为空, 
     “薪水” NUMBER(8,2), 
     “ COMMISSION_PCT” NUMBER(2,2), 
     “ MANAGER_ID” NUMBER(6,0), 
     “ DEPARTMENT_ID” NUMBER(4,0)
   );

如前面的示例所示,SEGMENT_ATTRIBUTES转换适用于存储和表空间属性。要仅省略该STORAGE子句并保留该TABLESPACE子句,可以使用以下STORAGE转换:

> impdp hr TABLES = hr.employees \
  目录= dpump_dir1 DUMPFILE = hr_emp.dmp \
  TRANSFORM = STORAGE:n:table

SEGMENT_ATTRIBUTESSTORAGE变换可以通过不指定对对象类型被应用于所有适用的表和索引的对象TRANSFORM参数,如图以下命令:

> impdp hr DIRECTORY = dpump_dir1 DUMPFILE = hr.dmp \
 SCHEMAS =小时TRANSFORM = SEGMENT_ATTRIBUTES:n

TRANSPORT_DATAFILES

默认值:没有默认值

目的

指定数据文件列表可以通过可传输模式导入或表模式导入(如果TRANSPORTABLE=ALWAYS在导出过程中设置)导入目标数据库。文件必须已经从源数据库系统复制到目标数据库系统。

语法和说明

TRANSPORT_DATAFILES =数据文件名

datafile_name必须包括绝对目录路径指定(目录对象名),这是系统在目标数据库驻留在有效。

以下是使用TRANSPORT_DATAFILES参数的示例。由于该TRANSPORT_DATAFILES值用引号引起来,因此Oracle建议您使用参数文件,以避免在命令行上使用转义符。(请参阅在数据泵命令行上使用引号。)假定您有一个参数文件,trans_datafiles.par,其内容如下:

目录= dpump_dir1
DUMPFILE = tts.dmp
TRANSPORT_DATAFILES ='/ user01 / data / tbs1.f'

然后,您可以发出以下命令:

> impdp hr PARFILE = trans_datafiles.par

TRANSPORT_FULL_CHECK

默认: n

目的

指定是否验证其他表空间中的对象正在引用指定的可传输表空间集。

语法和说明

TRANSPORT_FULL_CHECK = {y | n}

如果 TRANSPORT_FULL_CHECK=y,那么导入验证可移动集内的那些对象与可移动集外的那些对象之间没有依赖关系。该检查解决了双向依赖性。例如,如果表在可传输集中,但其索引不在内部,则返回失败并终止导入操作。同样,如果索引在可传输集中但表不在索引中,则也会返回失败。

如果是,TRANSPORT_FULL_CHECK=n,则“导入”仅验证可移动集内是否不存在依赖于可移动集外的对象的对象。此检查解决了单向依赖性。例如,一台是不依赖于指数,但是指数依赖于表,因为没有一个表的索引是没有意义的。因此,如果可传输集包含一个表,但不包含它的索引,则此检查成功。但是,如果可传输集包含索引而不是表,则导入操作将终止。

除此检查外,导入始终会验证由指定的表空间集中定义的所有表(及其索引)的所有存储段TRANSPORT_TABLESPACES是否实际上包含在表空间集中。

限制条件

  • TRANSPORTABLE=ALWAYS仅当指定此参数时,此参数才对可移动模式(或在导出中指定时为表模式)有效NETWORK_LINK

在下面的示例中,source_database_link将被替换为有效数据库链接的名称。该示例还假定tbs6.f已存在一个名为的数据文件。

由于该TRANSPORT_DATAFILES值用引号引起来,因此Oracle建议您使用参数文件,以避免在命令行上使用转义符。(请参阅在数据泵命令行上使用引号。)例如,假定您有一个参数文件,full_check.par其内容如下:

目录= dpump_dir1
TRANSPORT_TABLESPACES = tbs_6
NETWORK_LINK = source_database_link
TRANSPORT_FULL_CHECK = y
TRANSPORT_DATAFILES ='/ wkdir / data / tbs6.f'

然后,您可以发出以下命令:

> impdp hr PARFILE = full_check.par

TRANSPORT_TABLESPACES

默认值:没有默认值

目的

指定您要通过网络链接执行可传输表空间模式导入。

语法和说明

TRANSPORT_TABLESPACES = tablespace_name [,...]

使用TRANSPORT_TABLESPACES参数指定表空间列表 对象元数据将从源数据库导入到目标数据库的名称。

由于这是可移植模式的导入,因此数据泵会自动创建将数据导入到其中的表空间。您无需预先创建它们。但是,在开始导入之前,应将数据文件复制到目标数据库。

限制条件

  • 您不能导出可移动表空间,然后将它们导入较低版本级别的数据库中。您要导入的目标数据库必须与源数据库处于相同或更高的发行版级别。

  • TRANSPORT_TABLESPACES参数只有当NETWORK_LINK还指定参数。

  • 可传输模式不支持加密列。

在下面的示例中,source_database_link将被替换为有效数据库链接的名称。该示例还假设已将名为的数据文件tbs6.f从源数据库复制到本地系统。由于该TRANSPORT_DATAFILES值用引号引起来,因此Oracle建议您使用参数文件,以避免在命令行上使用转义符。(请参阅在数据泵命令行上使用引号。)假设您有一个参数文件,tablespaces.par,其内容如下:

目录= dpump_dir1
NETWORK_LINK = source_database_link
TRANSPORT_TABLESPACES = tbs_6
TRANSPORT_FULL_CHECK = n
TRANSPORT_DATAFILES ='user01 / data / tbs6.f'

然后,您可以发出以下命令:

> impdp hr PARFILE = tablespaces.par

可运输

默认: NEVER

目的

指定在执行表模式导入(由TABLES参数指定)时是否应使用transportable选项。

语法和说明

可运输= {总是| 决不}

允许值的定义如下:

ALWAYS-指示导入作业使用可运输选项。如果无法运输,则作业将失败。

NEVER-指示导入作业使用直接路径或外部表方法加载数据而不是可传输选项。这是默认值。

限制条件

  • TRANSPORTABLE仅当NETWORK_LINK还指定了参数时,该参数才有效。

  • TRANSPORTABLE参数仅在表模式导入中有效(不必对表进行分区或细分)。

  • 执行可移植导入的模式需要源数据库上的EXP_FULL_DATABASE角色和目标数据库上的IMP_FULL_DATABASE角色。

  • 要充分利用该TRANSPORTABLE参数,COMPATIBLE必须将初始化参数至少设置为11.0.0。

以下示例显示了TRANSPORTABLE在网络链接导入期间参数的使用。

> impdp系统TABLES = hr.sales TRANSPORTABLE =始终
  DIRECTORY = dpump_dir1 NETWORK_LINK = dbs1 PARTITION_OPTIONS =部门
  TRANSPORT_DATAFILES =数据文件名 

默认: COMPATIBLE

目的

指定版本导入的数据库对象的数量。请注意,这并不能意味着数据泵导入可以与之前的10.1 Oracle数据库的版本中使用。数据泵导入仅适用于Oracle Database 10 g版本1(10.1)或更高版本。该VERSION参数仅允许您标识要导入的对象的版本。

语法和说明

VERSION = {兼容| 最新| version_string }

此参数可用于加载目标数据库,该目标系统的Oracle数据库的兼容性版本早于源系统的兼容性版本。与指定版本不兼容的源系统上的数据库对象或属性将不会移至目标。例如,包含指定版本不支持的新数据类型的表将不会导入。此参数的合法值如下:

  • COMPATIBLE- 这是默认值。元数据的版本对应于数据库兼容性级别。数据库兼容性必须设置为9.2.0或更高。

  • LATEST -元数据的版本对应于数据库版本。

  • version_string-特定的数据库版本(例如11.1.0)。在Oracle Database 11g中,该值必须为9.2.0或更高。

以下是使用VERSION参数的示例。您可以expfull.dmp通过运行为ExportFULL参数提供的示例来创建本示例中使用的转储文件。请参阅FULL

> impdp hr DIRECTORY = dpump_dir1 DUMPFILE = expfull.dmp TABLES =员工
VERSION =最新

数据泵导入参数如何映射到原始导入实用程序的参数

表3-2映射,尽可能将“数据泵导入”参数更改为原始“导入”参数。在某些情况下,由于重新设计了功能,不再需要原始的Import参数,因此没有数据泵命令可以与其进行比较。另外,如表所示,某些参数名称可能相同,但功能略有不同。

表3-2数据泵导入中的原始导入参数及其对应项

原始导入参数 可比数据泵导入参数
缓冲

BUFFER不需要可比的参数。

字符集

CHARSET不需要可比的参数。

承诺

COMMIT不支持可比较的参数。

编译

COMPILE不支持可比较的参数。

约束

EXCLUDE=CONSTRAINT

数据文件

TRANSPORT_DATAFILES

破坏

REUSE_DATAFILES

反馈

STATUS

文件

DUMPFILE

文件大小

没有必要。它包含在转储文件集中。

发件人

SCHEMAS

充分

FULL

赠品

EXCLUDE=GRANT

帮帮我

HELP

忽视

TABLE_EXISTS_ACTION

索引

EXCLUDE=INDEX

索引文件

SQLFILE 与 INCLUDE INDEX

日志

LOGFILE

参数文件

PARFILE

记录长度

RECORDLENGTH不需要可比的参数。

可恢复

RESUMABLE不需要可比的参数。自动为已被授予IMP_FULL_DATABASE角色的用户提供此功能。

RESUMABLE_NAME

RESUMABLE_NAME不需要可比的参数。自动为已被授予IMP_FULL_DATABASE角色的用户提供此功能。

RESUMABLE_TIMEOUT

RESUMABLE_TIMEOUT不需要可比的参数。自动为已被授予IMP_FULL_DATABASE角色的用户提供此功能。

ROWS = N

CONTENT=METADATA_ONLY

ROWS = Y

CONTENT=ALL

显示

SQLFILE

SKIP_UNUSABLE_INDEXES

SKIP_UNUSABLE_INDEXES

统计

STATISTICS在原装进口的参数了四个可能的值:ALWAYSSAFERECALCULATE,和NONE

与原始导入等效的Data Pump参数STATISTICS=NONEEXCLUDE=STATISTICS

STATISTICS=ALWAYS|SAFE|RECALCULATE不需要与之相当的数据泵导入参数,因为如果源表具有统计信息,则默认情况下将其导入。

STREAMS_CONFIGURATION

STREAMS_CONFIGURATION

STREAMS_INSTANTIATION

STREAMS_INSTANTIATION不需要可比的参数。

桌子

TABLES

餐桌空间

TABLESPACES

TOID_NOVALIDATE

TOID_NOVALIDATE不需要可比的命令。OID不再用于类型验证。

顾客

REMAP_SCHEMA

TRANSPORT_TABLESPACE

TRANSPORT_TABLESPACE由于元数据存储在转储文件集中,因此不需要可比的参数。

TRANSPORT_TABLESPACE
 
TTS_OWNERS 

TTS_OWNERS不需要可比的参数,因为该信息存储在转储文件集中。

用户身份

USERID不需要可比的参数。调用导入时,此信息将作为用户名和密码提供。

体积

VOLSIZE不需要可比的参数,因为不支持磁带。

 

猜你喜欢

转载自blog.csdn.net/allway2/article/details/108875868