数据泵导入
本章介绍了Oracle Data Pump导入实用程序。讨论了以下主题:
什么是数据泵导入?
注意:
尽管数据泵导入(impdp
)功能类似于原始导入实用程序(imp
)的功能,但它们是完全独立的实用程序,并且它们的文件不兼容。有关原始导入实用程序的说明,请参见第20章“原始导出和导入”。
数据泵导入(为便于阅读,以下称为导入)是用于将导出转储文件集加载到目标系统的实用程序。转储文件集由一个或多个磁盘文件组成,这些文件包含表数据,数据库对象元数据和控制信息。这些文件以专有的二进制格式写入。在导入操作期间,“数据泵导入”实用程序将使用这些文件在转储文件集中找到每个数据库对象。
导入还可以用于直接从源数据库加载目标数据库,而无需插入转储文件。这称为网络导入。
通过数据泵导入,您可以指定作业是应该从转储文件集还是从源数据库移动数据和元数据的子集(对于网络导入),具体取决于导入模式。这是使用数据过滤器完成的和元数据过滤器,它们是通过导入命令实现的。请参阅导入操作期间的过滤。
要查看使用导入的各种方式的一些示例,请参阅使用数据泵导入的示例。
调用数据泵导入
使用impdp
命令调用“数据泵导入”实用程序。导入操作的特征由您指定的导入参数确定。这些参数可以在命令行或参数文件中指定。
注意:
请注意,如果您正在执行将数据泵导入到NOLOGGING
启用了该子句的表或表空间中的操作,则可能仍会生成重做日志文件。在这种情况下生成的重做通常用于维护主表或与基础递归空间事务,数据字典更改以及需要记录的表上索引的索引维护有关。
以下各节包含有关调用导入的更多信息:
注意:
如果当前在Oracle RAC环境中的其他实例上正在运行数据泵作业,则无法在Oracle Real Application Clusters(RAC)环境中的一个实例上启动或重新启动数据泵作业。数据泵导入接口
你可以互动 通过使用命令行,参数文件或交互式命令模式使用Data Pump Import。
-
命令行界面:使您可以直接在命令行上指定导入参数。有关命令行界面中可用参数的完整说明,请参见Import的命令行模式中可用的参数。
-
参数文件界面:使您可以在参数文件中指定命令行参数。唯一的例外是
PARFILE
参数,因为参数文件无法嵌套。如果您使用的参数值需要用引号引起来,则建议使用参数文件。请参见在数据泵命令行上使用引号。 -
交互式命令界面:停止登录到终端并显示“导入”提示,从中可以输入各种命令,其中一些命令特定于交互式命令模式。在通过命令行界面或参数文件界面启动的导入操作过程中,通过按Ctrl + C组合键可以启用此模式。当您附加到正在执行或已停止的作业时,也会启用交互式命令模式。
有关交互式命令模式下可用命令的完整说明,请参见Import的交互式命令模式下可用的命令。
数据泵导入模式
导入操作的最重要特征之一是其模式,因为该模式在很大程度上决定了要导入的内容。指定的模式适用于操作源,即转储文件集或其他数据库(如果NETWORK_LINK
指定了该参数)。
当导入操作的源是转储文件集时,指定模式是可选的。如果未指定任何模式,则“导入”将尝试以运行导出操作的模式加载整个转储文件集。
使用适当的参数在命令行上指定模式。可用模式如下:
注意:
当您导入由全模式导出创建的转储文件时,导入操作将尝试SYS
从源数据库复制该帐户的密码。有时这会失败(例如,如果密码在共享密码文件中)。如果确实失败,则在导入完成后,必须将SYS
目标数据库上的帐户密码设置为您选择的密码。
注意:
作业(由Oracle数据库作业计划程序创建)始终被导入到导入用户的模式中。导入后,如果查询DBA_JOBS
视图,则将看到LOG_USER
和PRIV_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
参数指定。在表空间模式下,将加载指定表空间集中包含的所有对象以及相关对象。源可以是完整的,模式,表空间或表模式导出转储文件集或另一个数据库。对于非特权用户,将不会处理未重新映射到当前架构的对象。
也可以看看:
餐桌空间网络注意事项
调用“数据泵导入”实用程序时,可以在连接字符串中指定连接标识符。该标识符可以指定与由当前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客户端连接到命令行连接字符串标识的数据库实例,从数据库链接标识的数据库实例中检索要导入的数据,并将数据写入连接的数据库实例。没有涉及的转储文件集。
导入操作期间的过滤
数据泵导入提供了比原始导入实用程序更大的数据和元数据过滤功能。
资料筛选器
特定于数据的过滤是通过QUERY
和SAMPLE
参数实现的,该参数指定对要导入的表行的限制。数据过滤也可以作为元数据过滤的结果而间接发生,该数据可以包括或排除表对象以及任何关联的行数据。
每个表只能指定一个数据过滤器,每个作业只能指定一次。如果将使用相同名称的不同过滤器应用于特定表和整个作业,则为该特定表提供的过滤器参数将优先。
元数据过滤器
数据泵导入提供了比原始导入实用程序更大的元数据筛选功能。元数据过滤是通过EXCLUDE
和INCLUDE
参数实现的。在EXCLUDE
和INCLUDE
参数是互斥的。
元数据过滤器标识一组要包含在数据泵操作中或从数据泵操作中排除的对象。例如,您可以请求完全导入,但没有“包装规格”或“包装实体”。
要正确使用过滤器并获得期望的结果,请记住,已识别对象的依赖对象与已识别对象一起被处理。例如,如果过滤器指定一个程序包将包含在一个操作中,则对该程序包的授予也将包括在内。同样,如果表被过滤器排除,则表的索引,约束,授权和触发器也将被过滤器排除。
如果为一个对象类型指定了多个过滤器,则对其执行隐式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_dir1
和dpump_dir2
已存在,READ
并且WRITE
已经hr
为这些目录对象的模式授予了和特权。有关创建目录对象和为其分配特权的信息,请参见转储,日志和SQL文件的默认位置。 -
一些示例需要
EXP_FULL_DATABASE
和IMP_FULL_DATABASE
角色。这些示例假定hr
已授予该模式这些角色。
如有必要,请向DBA寻求帮助,以创建这些目录对象以及分配必要的特权和角色。
这些参数的语法图在“数据泵导入的语法图”中提供。
除非特别说明,否则这些参数也可以在参数文件中指定。
某些操作系统要求命令行上的引号前面必须有转义字符,例如反斜杠。如果不存在反斜杠,则Import所使用的命令行解析器将无法理解引号并将其删除,从而导致错误。通常,Oracle建议您将此类语句放在参数文件中,因为在参数文件中不需要转义字符。
也可以看看:
-
有关创建默认目录对象的信息,转储,日志和SQL文件的默认位置
注意:
如果习惯于使用原始的导入实用程序,则可能想知道使用哪些数据泵参数来执行用于原始导入的操作。要进行比较,请参阅数据泵导入参数如何映射到原始导入实用程序的参数。连接
默认值:如果只有一个正在运行的作业,则为用户架构中的当前作业。
附件 与现有导入作业的客户端会话,并自动将您置于交互式命令模式。
附加[= [ 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=ALL
和CONTENT=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
参数。
在指定的目录对象DUMPFILE
,LOGFILE
或SQLFILE
参数覆盖您指定的任何目录对象DIRECTORY
参数。您必须具有对用于转储文件集的目录的“读取”访问权限,以及对用于创建日志和SQL文件的目录的“写入”访问权限。
以下是使用DIRECTORY
参数的示例。您可以expfull.dmp
通过运行为ExportFULL
参数提供的示例来创建本示例中使用的转储文件。请参阅FULL。
> impdp hr DIRECTORY = dpump_dir1 DUMPFILE = expfull.dmp
LOGFILE = dpump_dir2:expfull.log
此命令导致导入作业expfull.dmp
在dpump_dir1
目录对象指向的目录中查找转储文件。dpump_dir2
在LOGFILE
参数上指定的目录对象将覆盖DIRECTORY
参数,以便将日志文件写入dpump_dir2
。
也可以看看:
-
转储,日志和SQL文件的默认位置,以获取有关默认目录对象的更多信息
-
《 Oracle数据库SQL语言参考》以获取有关该
CREATE
DIRECTORY
命令的更多信息
DUMPFILE
默认值:expdat
。dmp
指定 名字 以及(可选)由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_dir2
为exp1.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 = {块| 统计}
-
BLOCKS
-通过将源对象使用的数据库块数乘以适当的块大小来计算估算值。 -
STATISTICS
-使用每个表格的统计数据计算估算值。为了使此方法尽可能准确,应最近对所有表进行分析。
生成的估计值可用于确定整个导入作业执行过程中的完成百分比。
-
ESTIMATE
仅在NETWORK_LINK
还指定了导入参数的情况下,导入参数才有效。 -
当导入源是转储文件集时,已经知道要加载的数据量,因此将自动计算完成百分比。
-
如果该估计可能是不准确
QUERY
,SAMPLE
或REMAP_DATA
使用参数。
在下面的示例中,source_database_link
将被替换为指向源数据库的有效链接的名称。
> impdp hr TABLES = job_history NETWORK_LINK = source_database_link
DIRECTORY = dpump_dir1 ESTIMATE =统计信息
模式中的job_history
表hr
是从源数据库导入的。默认情况下会创建一个日志文件,并将其写入dpump_dir1
目录对象指向的目录中。作业开始时,将基于表统计信息计算作业的估算值。
排除
默认值:没有默认值
使您可以过滤 元数据 通过指定要从导入作业中排除的对象和对象类型来导入。
EXCLUDE = object_type [:name_clause ] [,...]
对于给定的导入方式,包括源(及其从属)中包含的所有对象类型,但EXCLUDE
语句中指定的对象类型除外。如果对象被排除,则其所有从属对象也将被排除。例如,排除一个表也将排除该表上的所有索引和触发器。
该name_clause
是可选的。它允许在对象类型内细粒度选择特定对象。它是一个SQL表达式,用作该类型的对象名称的过滤器。它由一个SQL运算符和与指定类型的对象名称进行比较的值组成。name子句仅适用于实例具有名称的对象类型(例如,它适用于TABLE
和VIEW
,但不适用于GRANT
)。必须使用冒号将可选的名称子句与对象类型分开,并用双引号引起来,因为必须使用单引号来分隔名称字符串。例如,您可以设置EXCLUDE=INDEX:"LIKE
'DEPT%'"
为排除名称以开头的所有索引dept
。
EXCLUDE
可以指定多个语句。Oracle建议您将EXCLUDE
语句放在参数文件中,以避免在命令行上使用特定于操作系统的转义符。
正如下面的章节中解释,你应该知道的排除指定某些对象,特别的影响,CONSTRAINT
,GRANT
,和USER
。
不能排除以下约束:
-
NOT
NULL
约束。 -
被创建并成功地加载(例如,用于索引编排表或主键约束所需表约束
REF
SCOPE
和WITH
ROWID
与表的约束REF
列)。
这意味着以下EXCLUDE
语句将被解释如下:
-
EXCLUDE=
CONSTRAINT
将排除所有非参照约束,但NOT
NULL
约束以及成功创建和加载表所需的任何约束除外。 -
EXCLUDE=
REF_CONSTRAINT
将排除参照完整性(外键)约束。
指定EXCLUDE=
GRANT
将排除所有对象类型上的对象授予和系统特权授予。
指定EXCLUDE=
USER
仅排除用户定义,而不排除用户模式中包含的对象。
要排除特定用户和该用户的所有对象,请指定一个过滤器,例如以下内容(其中hr
是您要排除的用户的架构名称):
EXCLUDE=SCHEMA: "= 'HR' "
如果您尝试通过使用诸如EXCLUDE
= USER
:“ =” HR
'之类的语句来排除用户,则仅CREATE USER hr
DDL语句将被排除,并且您可能无法获得预期的结果。
-
在
EXCLUDE
和INCLUDE
参数是互斥的。
假设以下内容位于参数文件中,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
。
FLASHBACK_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
如果指定HELP
= y
,则“导入”显示摘要 所有“导入”命令行参数和交互式命令。
> 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
表和表空间模式。
-
在
INCLUDE
和EXCLUDE
参数是互斥的。
假设以下内容位于参数文件中,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_JOBS
或USER_DATAPUMP_JOBS
视图标识作业。作业名称将成为当前用户架构中主表的名称。主表控制导入作业。
JOB_NAME = jobname_string
该jobname_string
指定 一个名字此导入作业的最大长度为30个字节。字节必须代表可打印的字符和空格。如果包含空格,则名称必须用单引号引起来(例如,“星期四导入”)。作业名称由执行导入操作的用户的架构隐式限定。
默认作业名称是系统生成的,格式为SYS_IMPORT_mode_NN
或SYS_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
日志文件
默认值:import
。log
LOGFILE = [ directory_object:] file_name
如果指定directory_object
,则它必须是DBA先前建立的并且可以访问的一个。这将覆盖用DIRECTORY
参数指定的目录对象。默认行为是create import
。log
在DIRECTORY
参数中指定的目录对象引用的目录中。
如果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_SCN
,FLASHBACK_TIME
,ESTIMATE
,TRANSPORT_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.dmp
,par_exp02.dmp
和par_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
名为countries
,locations
和的表regions
将从您为ExportDUMPFILE
参数运行示例时创建的转储文件集中导入。(请参见DUMPFILE。)导入作业exp1.dmp
在指向的位置查找文件dpump_dir2
。它会exp2<nn>.dmp
在指向的位置中查找任何形式的转储文件dpump_dir1
。作业的日志文件也将写入dpump_dir1
。
PARTITION_OPTIONS
缺省值:缺省值是departition
在TABLES
参数上指定并TRANPORTABLE=ALWAYS
设置分区名称时(无论是在导入操作上还是在导出过程中)。否则,默认值为none
。
指定在导入操作期间应如何创建表分区。
PARTITION_OPTIONS = {无| 出发| 合并}
none
创建表的值,该表存在于执行导出操作的系统上。如果导出是通过可移植方法以及分区或子分区过滤器执行的,则不能使用该none
选项merge
。在这种情况下,必须使用departition选项。
值可以departition
将每个分区或子分区提升为新的单个表。新表的默认名称将是表和分区名称或表和子分区名称的串联(视情况而定)。
的值merge
将所有分区和子分区组合到一个表中。
-
如果创建了转储文件的导出操作是使用可传输方法执行的,并且指定了分区或子分区,则导入操作必须使用departition选项。
-
如果创建转储文件的导出操作是使用可传输方法执行的,则导入操作不能使用
PARTITION_OPTIONS=merge
。 -
如果对要分离的对象有任何授权,则会生成错误消息,并且不会加载对象。
以下示例假定该sh.sales
表已导出到名为的转储文件中sales.dmp
。它使用MERGE
选项将所有分区合并sh.sales
到scott
架构中的一个未分区表中。
> 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
子句中。如果参数包括对另一个表的引用,这些表的名称与正在加载的表相匹配,并且在查询中使用了这些列,那么您将需要使用表别名来区分正在加载的表和正在加载的表中的列。相同名称的语句。数据泵用于正在加载的表的表别名为。SELECT
INSERT
QUERY
SELECT
KU$
例如,假设您要
sh.sales
基于sh.customers
表中客户的信用额度导入表的子集。在以下示例中,KU$
用于限定参数loading中的cust_id
字段。结果,Data Pump仅为信用额度大于10,000美元的客户导入行。QUERY
sh.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_name
在employees
表中。
> impdp hr DIRECTORY = dpump_dir1 DUMPFILE = expschema.dmp
TABLES = hr.employees REMAP_DATA = hr.employees.first_name:hr.remap.plusx
REMAP_DATAFILE
默认值:没有默认值
改名 源数据文件要在源数据文件中引用的所有SQL语句的目标数据文件名:CREATE TABLESPACE
,CREATE LIBRARY
,和CREATE DIRECTORY
。
REMAP_DATAFILE = source_datafile:target_datafile
在具有不同文件命名约定的平台之间移动数据库时,重新映射数据文件很有用。在source_datafile
和target_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_schema:target_schema
REMAP_SCHEMA
可以指定多行,但是每一个源模式都必须不同。但是,不同的源模式可以映射到相同的目标模式。映射可能未完全完成100%,因为某些架构引用是Import无法找到的。例如,“导入”将找不到嵌入在类型,视图,过程和包的定义体内的模式引用。
如果您要重新映射的架构尚不存在,则导入操作将创建它,前提是转储文件集包含CREATE
USER
源架构的必要元数据,并且要以足够的特权进行导入。例如,输入以下“导出”命令将创建具有必需元数据的转储文件集,以创建模式,因为用户SYSTEM
具有必需的特权:
> expdp系统SCHEMAS = hr
密码:密码
> expdp系统FULL = y
密码:密码
如果转储文件集不包含创建模式所需的元数据,或者您没有特权,则必须在执行导入操作之前创建目标模式。这是因为无特权的转储文件不包含导入所需的必要信息以自动创建架构。
如果导入操作确实创建了架构,则在导入完成后,必须为其分配有效的密码才能连接到该架构。需要特权的SQL语句是:
SQL> ALTER USER schema_name由new_password标识
-
非特权用户只有在其架构是重映射的目标架构时才能执行架构重映射。(特权用户可以执行不受限制的模式重映射。)
-
例如,
SCOTT
可以将他BLAKE
的对象重新映射到SCOTT
,但是SCOTT
不能将其对象重新映射SCOTT
到BLAKE
。
假设以用户身份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
在执行导入操作之前不存在用户,则“导入”会使用无效的密码自动创建它。这是可能的,因为转储文件hr
。dmp
创建时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_tablespace:target_tablespace
REMAP_TABLESPACE
可以指定多个参数,但不能两个参数具有相同的源表空间。目标架构必须在目标表空间中具有足够的配额。
请注意,使用REMAP_TABLESPACE
参数是在Data Pump Import中重新映射表空间的唯一方法。与原始的导入实用程序中提供的方法相比,这是一种更简单,更干净的方法。该方法受到许多限制(包括表空间子句的数量),有时会导致某些DDL命令失败。
相比之下,使用REMAP_TABLESPACE
参数的数据泵导入方法适用于所有对象,包括用户,并且不管DDL语句中有多少个表空间子句,该方法都有效。
-
数据泵导入只能为兼容性级别为10.1或更高版本的数据库中的可移植导入重新映射表空间。
-
仅由导入创建的对象将被重新映射。特别是,如果
TABLE_EXISTS_ACTION
设置为或SKIP
,则不会重新映射现有表的表空间。TRUNCATE
APPEND
以下是使用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
也可以看看:
Oracle Streams复制管理员指南TABLE_EXISTS_ACTION
默认值:(SKIP
请注意,如果CONTENT=
DATA_ONLY
指定了默认值APPEND
,则不是SKIP
。)
TABLE_EXISTS_ACTION = {跳过| 附录| 截断 更换}
可能的值具有以下作用:
-
SKIP
保持表格原样并移至下一个对象。如果CONTENT
参数设置为,则此选项无效DATA_ONLY
。 -
APPEND
从源加载行,并使现有行保持不变。 -
TRUNCATE
删除现有行,然后从源中加载行。 -
REPLACE
删除现有表,然后从源创建并加载它。如果CONTENT
参数设置为,则此选项无效DATA_ONLY
。
使用这些选项时,请考虑以下注意事项:
-
使用
TRUNCATE
或时REPLACE
,请确保受影响的表中的行不是任何引用约束的目标。 -
当您使用
SKIP
,APPEND
或时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
不支持将同义词用作参数值。例如,如果架构中的regions
表hr
的同义词为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
参数的简单用法,仅从文件中导入employees
和jobs
表expfull.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_2000
和sales_Q2_2000
表。sales
sh
餐桌空间
默认值:没有默认值
指定您要执行表空间模式导入。
TABLESPACES = tablespace_name [,...]
使用TABLESPACES
指定表空间的列表 要从源(完整,架构,表空间或表模式导出转储文件集或另一个数据库)中导入其表和相关对象的名称。
在以下导入情况下,Data Pump自动创建将数据导入到其中的表空间:
-
导入是在
FULL
或TRANSPORT_TABLESPACES
模式下完成的 -
导入是在表格模式下完成的
TRANSPORTABLE=ALWAYS
在所有其他情况下,所选对象的表空间必须在导入数据库上已经存在。您还可以使用ImportREMAP_TABLESPACE
参数将表空间名称映射到导入数据库上的现有表空间。
使用过滤可以限制使用此导入模式导入的内容。请参阅导入操作期间的过滤。
-
TABLESPACES
除非您在NETWORK_LINK
10.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_1
,tbs_2
,tbs_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空间 | |
---|---|---|---|---|
| X | X | X | |
| X | X | X | |
| X | |||
| X | X | X | |
| X | X | X | |
| X | X | X | X |
| X | X | ||
| X |
对于以下示例,假定您已employees
在hr
模式中导出了表。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_ATTRIBUTES
为n
。这导致从表中排除段属性(存储和表空间)。
> impdp hr TABLES = hr.employees \
目录= dpump_dir1 DUMPFILE = hr_emp.dmp \
TRANSFORM = SEGMENT_ATTRIBUTES:n:表
该表的结果CREATE
TABLE
语句employees
将类似于以下内容。它不包含STORAGE
orTABLESPACE
子句;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_ATTRIBUTES
和STORAGE
变换可以通过不指定对对象类型被应用于所有适用的表和索引的对象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参数,因此没有数据泵命令可以与其进行比较。另外,如表所示,某些参数名称可能相同,但功能略有不同。
原始导入参数 | 可比数据泵导入参数 |
---|---|
缓冲
|
|
字符集
|
|
承诺
|
|
编译
|
|
约束
|
|
数据文件
|
|
破坏
|
|
反馈
|
|
文件
|
|
文件大小
| 没有必要。它包含在转储文件集中。 |
发件人
|
|
充分
|
|
赠品
|
|
帮帮我
|
|
忽视
|
|
索引
|
|
索引文件
|
|
日志
|
|
参数文件
|
|
记录长度
|
|
可恢复
|
|
RESUMABLE_NAME
|
|
RESUMABLE_TIMEOUT
|
|
ROWS = N
|
|
ROWS = Y
|
|
显示
|
|
SKIP_UNUSABLE_INDEXES
|
|
统计
| 将 与原始导入等效的Data Pump参数
|
STREAMS_CONFIGURATION
|
|
STREAMS_INSTANTIATION
|
|
桌子
|
|
餐桌空间
|
|
TOID_NOVALIDATE
|
|
顾客
|
|
|
|
TRANSPORT_TABLESPACE
| |
TTS_OWNERS
|
|
用户身份
|
|
体积
|
|
导入的交互式命令模式下可用的命令
在交互式命令中模式下,当前作业继续运行,但是挂入终端的日志被挂起,并且显示导入提示(Import>
)。
要启动交互式命令模式,请执行以下任一操作:
-
从附加的客户端,按Ctrl + C。
-
在不同于正在运行作业的终端上的终端,使用
ATTACH
参数将其附加到作业。当您在一个位置开始工作,并且以后需要从另一个位置检查该任务时,此功能非常有用。
表3-3列出了可以在交互式命令模式下从“数据泵导入”提示符下针对当前作业执行的活动。
活动 | 使用命令 |
---|---|
退出交互式命令模式 | |
停止导入客户端会话,但保持当前作业运行 | |
显示可用命令的摘要 | |
分离所有当前附加的客户端会话并终止当前工作 | |
增加或减少当前作业的活动工作进程数。该命令仅在企业版中有效。 | |
重新启动您附加到的已停止的作业 | |
显示当前作业的详细状态 | |
停止当前工作 |
以下是“数据泵导入”的交互式命令模式下可用的命令的说明。
CONTINUE_CLIENT
CONTINUE_CLIENT
在日志记录模式下,作业状态将连续输出到终端。如果作业当前已停止,那么CONTINUE_CLIENT
还将导致客户端尝试启动作业。
导入> CONTINUE_CLIENT
EXIT_CLIENT
停止导入客户端会话,退出导入, 并停止记录到终端,但保持当前作业运行。
EXIT_CLIENT
由于EXIT_CLIENT
使该作业保持运行状态,因此如果该作业仍在执行或处于停止状态,则可以在以后附加到该作业。要查看作业的状态,您可以监视作业的日志文件,也可以查询USER_DATAPUMP_JOBS
视图或V$SESSION_LONGOPS
视图。
导入> EXIT_CLIENT
杀手
分离所有当前连接的客户端会话,然后终止当前的工作。它退出导入并返回到终端提示。
杀手
使用杀死的作业KILL_JOB
无法重新启动。所有附加的客户端(包括发出KILL_JOB
命令的客户端)都会收到警告,警告该作业正在被当前用户杀死,然后被分离。分离所有客户端后,作业的进程结构将立即运行,并且删除主表和转储文件。日志文件不会被删除。
导入> KILL_JOB
平行
使您能够增加或减少当前作业的活动工作进程和/或PQ从站数量。
PARALLEL =整数
PARALLEL
可同时用作命令行参数和交互模式参数。您将其设置为所需的并行进程数。如果有足够的资源并且有足够的工作量需要并行化,则增加立即生效。减少要等到现有流程完成其当前任务后才能生效。如果该整数值减小,则工作程序将闲置但不会删除,直到作业退出。
也可以看看:
并行以获取有关并行性的更多信息-
PARALLEL
仅在企业版中可用。
导入> PARALLEL = 10
START_JOB
START_JOB [= skip_current = y]
该START_JOB
命令将重新启动您当前附加的作业(该作业当前无法执行)。在意外发生故障或发出STOP_JOB
命令后,只要转储文件集和主表保持不受干扰,作业将重新启动且不会丢失数据或损坏数据。
该SKIP_CURRENT
选项使您可以重新启动以前由于某些DDL语句执行失败而无法重新启动的作业。将跳过失败的语句,并从下一个工作项重新启动作业。
SQLFILE作业和transportable-tablespace-mode导入均不可重新启动。
导入> START_JOB
状态
展示架作业的累积状态以及当前操作的描述。还返回作业的完成百分比。
状态[=整数]
您可以选择指定此状态在日志记录模式下显示的频率(以秒为单位)。如果未输入任何值或使用默认值0,则关闭定期状态显示,并且状态仅显示一次。
此状态信息仅写入标准输出设备,而不写入日志文件(即使已生效)。
以下示例将显示当前作业状态,并将日志记录模式的显示间隔更改为两分钟(120秒)。
导入> STATUS = 120
STOP_JOB
STOP_JOB [=立即]
如果在STOP_JOB
发出命令时或发出命令后不干扰主表和转储文件集,则可以使用该命令将作业附加到并在以后重新启动START_JOB
。
要执行有序的关闭,请使用STOP_JOB
(不带任何关联值)。将发出要求确认的警告。在工作进程完成当前任务之后,有序关闭将停止作业。
要立即关闭,请指定STOP_JOB
= IMMEDIATE
。将发出要求确认的警告。所有连接的客户端(包括发出该STOP_JOB
命令的客户端)都会收到一条警告,指出当前用户正在停止作业,并且它们将被分离。分离所有客户端后,作业的流程结构将立即耗尽。也就是说,主进程将不等待工作进程完成其当前任务。指定时,不存在损坏或数据丢失的风险STOP_JOB=IMMEDIATE
。但是,某些在关闭时未完成的任务可能必须在重新启动时重做。
导入> STOP_JOB =立即
使用数据泵导入的示例
本节提供了以下几种使用数据泵导入的方法的示例:
有关可帮助您成功使用这些示例的信息,请参阅《使用导入参数示例》。
执行仅数据表模式导入
例3-1显示了如何对名为的表执行纯数据表模式导入employees
。它使用示例2-1中创建的转储文件。
> impdp hr TABLES =员工CONTENT = DATA_ONLY DUMPFILE = dpump_dir1:table.dmp
NOLOGFILE = y
该CONTENT=DATA_ONLY
参数过滤掉所有数据库对象定义(元数据)。仅加载表行数据。
执行架构模式导入
> impdp hr SCHEMAS = hr DIRECTORY = dpump_dir1 DUMPFILE = expschema.dmp
EXCLUDE = CONSTRAINT,REF_CONSTRAINT,INDEX TABLE_EXISTS_ACTION = REPLACE
该EXCLUDE
参数过滤导入的元数据。对于给定的导入模式,将包含源中包含的所有对象及其所有从属对象,但EXCLUDE
语句中指定的对象除外。如果排除了某个对象,则其所有从属对象也将被排除。该TABLE_EXISTS_ACTION=REPLACE
参数告诉Import删除该表(如果已存在),然后使用转储文件内容重新创建并加载该表。
执行网络模式导入
例3-3执行网络模式导入,其中源是NETWORK_LINK
参数指定的数据库。