impdp工具(9)

Oracle Data Pump Import(以下简称为import)是数据泵用于将数据和元数据从expdp导出文件集中导入目标数据库的工具(对应操作系统命令为impdp)。

工作方式

expdp工具相似,impdp命令行工具也有三种工作方式:

命令行方式(Command-Line Interface)
通过命令行方式直接为impdp指定相应的参数文件进行导入任务。

参数文件方式(Parameter File Interface)
将命令行参数写入参数文件,通过指定参数parfile来指定要读取的参数文件,如果指定参数涉及引号,建议使用参数文件方式。

命令交互方式(Interactive-Command Interface)
停止写入日志文件,并显示Ixport>提示符,可以在提示符当中输入相应的命令。可以在命令行方式和参数文件方式开始之后输入Ctrl+C调用命令交互方式,命令交互方式也可以连接到正在执行或者已停止的任务。

命令说���

通过执行如下命令可以得出impdp主要参数用法说明:

$ impdp help=y

因为impdp大部分命令与expdp相同,以下只说明不同的部分:

[oracle@dbabd ~]$ impdp help=y USERID must be the first parameter on the command line. The available keywords and their descriptions follow. Default values are listed within square brackets. -- 指定导入访问数据时使用的特殊方法,默认值AUTOMATIC ' AUTOMATIC:由数据泵自动选择导出访问数据方式; DIRECT_PATH:使用直接路径访问方式; EXTERNAL_TABLE:使用外部表访问方式; CONVENTIONAL:使用常规访问方式。 建议使用默认值方式,让数据泵自己选择适合的方式。 限制: 1.如果同时指定了参数NETWORK_LINK,则忽略该参数选项; 2.可传输表空间导入任务不支持参数ACCESS_METHOD。 ' ACCESS_METHOD=[AUTOMATIC | DIRECT_PATH | EXTERNAL_TABLE | CONVENTIONAL] ATTACH Attach to an existing job. For example, ATTACH=job_name. CLUSTER Utilize cluster resources and distribute workers across the Oracle RAC. Valid keyword values are: [Y] and N. CONTENT Specifies data to load. Valid keywords are: [ALL], DATA_ONLY and METADATA_ONLY. -- 指定哪些数据类型在导入过程中需要作相应的特殊处理 ' DISABLE_APPEND_HINT:指定在数据对象导入的时候不使用APPEND hint的功能。如果数据库中已经存在一部分需要导入的数据对象,为了提高应用对这部分数据的并发访问能力,禁用APPEND hint可以收到不错的效果,如果没有指定DISABLE_APPEND_HINT,则默认会使用APPEND hint来导入数据; SKIP_CONSTRAINT_ERRORS:指定在数据对象导入的时候如果遇到非延迟约束检测冲突时继续进行导入操作。该选项记录哪些行引起了冲突但不会中止导入,如果没有指定SKIP_CONSTRAINT_ERRORS,当遇到非延迟约束冲突时则默认会回滚数据对象导入操作。 限制: 1.如果指定了DISABLE_APPEND_HINT,则导入可能需要更长的时间; 2.如果指定了SKIP_CONSTRAINT_ERRORS,在导入过程中在相对应的数据对象上创建唯一索引或约束条件,则APPEND hint不会作用于对象的导入,所以对于这些对象的导入会花费较多时间; 3.即使指定了SKIP_CONSTRAINT_ERRORS,除非数据对象使用外部表方式导入,否则该选项也不会生效。 ' DATA_OPTIONS = [DISABLE_APPEND_HINT | SKIP_CONSTRAINT_ERRORS] DIRECTORY Directory object to be used for dump, log and SQL files. DUMPFILE List of dump files to import from [expdat.dmp]. For example, DUMPFILE=scott1.dmp, scott2.dmp, dmpdir:scott3.dmp. ENCRYPTION_PASSWORD Password key for accessing encrypted data within a dump file. Not valid for network import jobs. ESTIMATE Calculate job estimates. Valid keywords are: [BLOCKS] and STATISTICS. EXCLUDE Exclude specific object types. For example, EXCLUDE=SCHEMA:"='HR'". FLASHBACK_SCN SCN used to reset session snapshot. FLASHBACK_TIME Time used to find the closest corresponding SCN value. -- 指定需要导入整个数据库(或者从所有导出文件中导入),默认值YES ' 指定该参数需要有DATAPUMP_IMP_FULL_DATABASE角色权限。 ' FULL Import everything from source [Y]. HELP Display help messages [N]. INCLUDE Include specific object types. For example, INCLUDE=TABLE_DATA. JOB_NAME Name of import job to create. -- 指定导入任务的日志文件名,也可以加上具体路径,默认值import.log LOGFILE=[directory_object:]file_name NETWORK_LINK Name of remote database link to the source system. NOLOGFILE Do not write log file [N]. PARALLEL Change the number of active workers for current job. PARFILE Specify parameter file. -- 指定在导入任务时是否创建表分区,当指定参数TABLES和TRANPORTABLE=ALWAYS进行导入时默认值为departition,否则为none ' none:指定导入时根据表导出时的方式重建表。当表导出时是可传输模式并过滤了部分表分区或子分区时,不能指定该值,必须使用departition; departition:指定对于导出时是分区表,导入时每个表分区或子分区创建为独立的新表,表名继承表分区和子分区名称; merge:指定对于导出时是分区表,导入时合并创建为一张新表。 关于分区表导入并行度的说明: 1.如果是分区表数据导入一张已存在的分区表,则数据泵导入时一次只能处理一个分区或子分区,将会忽略参数PARALLEL指定的值; 2.如果要导入的分区表并不存在,必须通过数据泵导入进行创建,则参数PARALLEL指定值可以提高导入并行度。 限制: 1.如果表导出状态是可传输模式和指定表分区或子分区的导出时,在表导入时必须指定为PARTITION_OPTIONS=departition; 2.如果表导出状态是可传输模式时,则表导入时不能使用PARTITION_OPTIONS=merge; 3.如果导入操作要对已授权表分区对象进行非分区化操作,则会提示错误信息且不会导入对象。 ' PARTITION_OPTIONS=[NONE | DEPARTITION | MERGE] QUERY Predicate clause used to import a subset of a table. For example, QUERY=employees:"WHERE department_id > 10". REMAP_DATA Specify a data conversion function. For example, REMAP_DATA=EMP.EMPNO:REMAPPKG.EMPNO. -- 指定重映射导出文件中对于语句CREATE TABLESPACE、CREATE LIBRARY和CREATE DIRECTORY语句的数据文件引用对象 ' 对于需要在不同操作系统平台转换数据文件路径命名规则时较为适用,在导入的过程中可以进行数据文件的重映射。建议源路径名和目标路径名都用双引号("")包围,最好可以采用参数文件方式,避免不必要的转义符使用。 ' REMAP_DATAFILE=source_datafile:target_datafile -- 指定重映射导出文件中对象所属的SCHEMA ' REMAP_SCHEMA可以指定多个,但每一个的source_schema必须不相同,不同的source_schema可以映射到相同的target_schema中。 如果需要重映射的target_schema不存在,则在导入的过程中会创建,前提是在导出文件中包含针对source_schema的CREATE USER元数据信息和创建所需要的权限; 如果导出文件当中没有包含创建SCHEMA所需的元数据信息或者导入用户没有创建的相应权限,则target_schema必须在导入操作之前创建完成; 如果导入操作没有创建SCHEMA,当导入操作完成之后必须为SCHEMA指定一个新的密码进行连接,SQL语句如下: SQL> ALTER USER schema_name IDENTIFIED BY new_password 限制: 1.不具有权限的用户只能够执行target_schema是本身用户的重映射操作,如SCOTT可以重映射BLAKE对象到SCOTT,但没办法重映射自身对象到BLAKE; 2.如果导入正在重映射的任何表中包含用户定义的对象类型,并在导出和导入之间发生了变化,则该表的导入操作将失败,但是整个导入操作会继续进行; 3.默认情况下,SCHEMA对象在源数据库中都有对象标识符(OID),在导入时会将OID一同导入到目标数据库中。如果导入操作也是在源数据库上进行操作,则会发生OID的冲突导致导入操作失败,解决方式是指定参数TRANFORM=OID:N进行导入,这样会为导入对象创建一个新的OID,允许导入操作成功进行。 ' REMAP_SCHEMA=source_schema:target_schema -- 指定在导入过程中重命名表名 ' 可以使用REMAP_TABLE重命名整张表或者当导入操作将分区表转化为非分区表时进行重命名。 当使用如下第一种书写方式时,假设有REMAP_TABLE=A.B:C,则A是SCHEMA名,B是旧表名,C为新表名,如果需要将表的分区重命名为非分区表,则必须指定SCHEMA名; 当使用如下第二种书写方式时,如果需要将表的分区重命名为非分区表,则只需要对旧表名进行限定,不用指定SCHEMA名。 限制: 1.只有在进行导入操作的表才能进行重命名,已存在的表不支持; 2.如果需要重映射的表在相同SCHEMA中具有命名约束,并且在创建表时需要创建约束,则REMAP_TABLE不生效。 ' REMAP_TABLE=[schema.]old_tablename[.partition]:new_tablename 或 REMAP_TABLE=[schema.]old_tablename[:partition]:new_tablename -- 指定在导入操作时所有选择的对象及其包含的持久数据重映射在新的表空间中创建 ' REMAP_TABLESPACE可以指定多个,但每一个的source_tablespace必须不相同,并且导入的目标SCHEMA需要在target_tablespace具有合适的表空间配额。 使用REMAP_TABLESPACE是对象在导入操作重映射表空间的唯一方法,适用于几乎所有的对象,包括用户等。 ' REMAP_TABLESPACE=source_tablespace:target_tablespace -- 指定导入操作任务是否重用已存的数据文件创建表空间,默认值NO ' 如果指定默认值NO并且在CREATE TABLESPACE语句中的数据文件已经存在,则CREATE TABLESPACE将报错,但导入任务会继续。 如果指定值为YES,则已存在的数据文件会被初始化,有可能会导致数据丢失。 ' REUSE_DATAFILES=[YES | NO] -- 指定导入任务方式为SCHEMA模式导入,当使用基于网络导入模式时,该模式为默认模式 ' 如果执行导入操作的用户具有DATAPUMP_IMP_FULL_DATABASE角色权限,则可以通过该参数SCHEMAS指定需要进行该模式导入的SCHEMA列表,首先是用户定义语句(前提是事先并不存在)、系统和角色权限授予、密码历史纪录等等,其次是导入SCHEMA包含的所有对象。如果没有DATAPUMP_IMP_FULL_DATABASE角色权限,则只能导入用户自身的SCHEMA。 ' SCHEMAS=schema_name [,...] SERVICE_NAME Name of an active Service and associated resource group to constrain Oracle RAC resources. -- 指定导入操作是否跳过表中标记为Unusable状态的索引,默认值依据数据库参数SKIP_UNUSABLE_INDEXES指定的值 ' 如果该参数的值为YES,则遇到表或者表分区当中的索引是Unusable状态时导入操作依然会进行,就像该索引不存在一样; 如果该参数的值为NO,则遇到表或者表分区当中的索引是Unusable状态时导入操作不会进行,其他表如果之前没有设置Unusable状态的索引依然会进行导入更新; 如果参数未指定,则依据数据参数SKIP_UNUSABLE_INDEXES指定的值(默认为TRUE)来处理; 如果索引被用来强制执行约束但并标记为Unusable状态,则表的数据不会被导入。 此参数只适用于导入目标库中已存在表一部分数据时有用,如果表和索引的创建作为导入操作的一部分,则这个参数没有意义。 ' SKIP_UNUSABLE_INDEXES=[YES | NO] SOURCE_EDITION Edition to be used for extracting metadata. -- 指定将导入操作基于其他参数需要执行的DDL语句写入到文件中 ' file_name指定需要写入SQL DDL语句的文件名,可以额外为其指定目录(前提是用户需要有读写权限),SQL语句实际上并没有执行,连接用户的密码并不存储在该文件中。 限制: 1.如果指定了SQLFILE,参数CONTENT如果指定值为ALL或DATA_ONLY则被忽略; 2.如果导入操作使用到了ASM,则SQLFILE必须写入到磁盘文件,而不是写到ASM中; 3.SQLFILE不能与参数QUERY联合使用。 ' SQLFILE=[directory_object:]file_name STATUS Frequency (secs) job status is to be monitored where the default [0] will show new status when available. -- 指定是否导入在导出文件中包含的Streams元数据,默认值YES STREAMS_CONFIGURATION=[YES | NO] -- 指定导入操作对目标数据库中已存在表如何处理,默认值SKIP(当指定参数CONTENT=DATA_ONLY时,默认值为APPEND) ' SKIP:让已存在的表保持原样并跳过至下一个对象进行导入,如果指定参数CONTENT=DATA_ONLY,该选项无效; APPEND:保持已存在的表原有行数据不变,并追加新的行数据; TRUNCATE:对已存在的表执行TRUNCATE操作后再插入新的行数据; REPLACE:删除已存在的表然后从导出文件中重新创建表并插入新的行数据,如果指定参数CONTENT=DATA_ONLY,该选项无效。 注意: 1.当指定参数值为TRUNCATE或REPLACE时,需确保受影响表中的行不受参考约束的限制; 2.当指定参数值为SKIP、APPEND或TRUNCATE时,对于源端已存在的表独立对象,如索引、对象授权、触发器和约束都不会被修改。当指定参数值为REPLACE时,如果没有显式或隐式的指定EXCLUDE排除对象,则源端独立对象会被删除并且重建; 3.当指定参数值为APPEND或TRUNCATE时,将会先对源端表数据行与已存在的表数据行是否兼容,然后再执行其它操作: (1).如果已存在的表存在活动状态的约束和触发器,则导入操作使用外部表访问方式进行,假如行数据与约束冲突,则导入操作失败,数据也不会被导入,可以通过参数DATA_OPTIONS=SKIP_CONSTRAINT_ERRORS跳过检查; (2).如果表数据是必须被导入,但有可能会引起约束检测冲突,解决方式可以先禁用约束检测,导入完数据并且清除导致冲突的数据再重新启用约束。 4.当指定参数值为APPEND时,导入数据总是会使用新的空间,即使原先有空闲空间也不会被重复使用,所以可能需要在导入完成之后进行数据压缩。 ' TABLE_EXISTS_ACTION=[SKIP | APPEND | TRUNCATE | REPLACE] TABLES Identifies a list of tables to import. For example, TABLES=HR.EMPLOYEES,SH.SALES:SALES_1995. -- 指定导入任务方式为表空间模式(tablespace-mode)导入 ' 该参数指定在导出文件集中(FULL、SCHEMA��TABLESPACE和TABLE的导出模式)或其它源数据库里哪些表空间和表空间下面包含的表以及独立对象会被导入。 以下情况导入操作会自动创建表空间: 1.导入模式是FULL模式或使用可传输表空间模式(TRANSPORT_TABLESPACES); 2.导入模式是表模式,但同时指定了TRANSPORTABLE=ALWAYS。 对于其他模式的导入都需要表空间事先存在,也可以通过参数REMAP_TABLESPACE指定重映射到已存在的表空间。 ' TABLESPACES=tablespace_name [, ...] -- 可以参考expdp中的SOURCE_EDITION参数说明 TARGET_EDITION Edition to be used for loading metadata. -- 指定更改导入对象DDL创建语句 ' transform_name指定需要转换的名称,主要有以下几种: 1.SEGMENT_ATTRIBUTES(段属性):如果指定值为y,则段属性(物理属性、存储属性、表空间和日志记录都包含在内)及适合的DDL语句。默认值为y。 2.STORAGE(存储):如果指定值为y,则包含存储子句及适合的DDL语句。默认值为y。如果选项SEGMENT_ATTRIBUTES=n则忽略该选项的值。 3.OID(对象标识符):如果指定值为n,则在导入时禁止为导出的表和类别对象创建新的OID。导入为对象创建新的OID对于SCHEMA的克隆很有用,但并不会影响参考的对象。默认值为y。 4.PCTSPACE:指定数据文件当中区分配的百分比大小。指定值必须是一个大于0的数值。 5.SEGMENT_CREATION(段创建):如果指定值为y,则SEGMENT CREATION子句会加入到CREATE TABLE语句中,SEGMENT CREATION会以SEGMENT CREATION DEFERRED或SEGMENT CREATION IMMEDIATE的形式存在。如果指定值为n,则在CREATE TABLE省略SEGMENT CREATION子句,使用数据库默认创建段的方式。 value指定转换的取值,根据转换的种类来决定取值,从以上取值可发现,除了PCTSPACE需要为数值时,其它的都是y/n。 object_type指定转换类型,为可选项,如果没指定的话则应用于所有的对象类型。详细可以参考官方文档: https://docs.oracle.com/cd/E11882_01/server.112/e22490/dp_import.htm#SUTIL939 ' TRANSFORM = transform_name:value[:object_type] -- 指定导入任务方式为表模式(table-mode)导入是否使用可传输选项导入指定表、表分区和子分区的元数据,默认值NEVER ' ALWAYS:指定导入任务使用可传输选项,该选项与参数TABLES一起使用时只导入表、表分区和子分区的元数据; NEVER:指定导入任务使用直接路径或外部表方法导入数据而不使用可传输选项,这是默认值。 其他说明可以参考expdp同名参数说明。 限制: 1.TRANSPORTABLE参数只有与参数NETWORK_LINK一起使用时才生效; 2.TRANSPORTABLE参数只适用于表模式导入任务(表不能被分区或生成子分区); 3.要执行可传输选项的导入任务,用户在源端需要有DATAPUMP_EXP_FULL_DATABASE角色权限,在目标端需要有DATAPUMP_IMP_FULL_DATABASE角色权限; ' TRANSPORTABLE = [ALWAYS | NEVER] -- 指定一个或多个数据文件通过可传输表空间模式导入目标数据库,或者在导出期间使用参数TRANSPORTABLE=ALWAYS并使用表模式导入。数据文件必须在目标数据库存在。 ' datafile_name必须以绝对路径的方式提供。 在执行导入任务操作之前,数据文件必须拷贝到目标端操作系统中,同时也可以对数据文件进行重命名操作。 如果已经有存在通过可传输表空间导出的转储文件,则可以通过可传输模式执行导入任务,通过指定转储文件(包含元数据)和指定参数TRANSPORT_DATAFILE来实现。参数TRANSPORT_DATAFILE为导入任务指明从哪里获取实际的数据。 ' TRANSPORT_DATAFILES=datafile_name -- 指定是否验证通过可传输表空间导出的文件是否被属于其它表空间的对象引用,默认值NO ' 参数说明可以参考expdp同名参数。 该参数只有当与参数NETWORK_LINK一起使用且针对可传输模式的导出(或对指定参数TRANSPORTABLE=ALWAYS的表模式导出)才生效。 ' TRANSPORT_FULL_CHECK=[YES | NO] -- 指定哪些表空间通过DBLINK进行可传输表空间模式的导入任务 ' 该参数是将指定的一个或多个表空间元数据从源端数据库导入到目标数据库。 因为是可传输模式的导入任务,所以在导入过程中数据泵会自动创建表空间,但是必须在执行导入任务之前拷贝相应的数据文件到目标数据库。 因为在进行基于DBLINK的可传输表空间导入任务中指定了参数NETWORK_LINK,所以在数据传输过程当中并没有生成导出文件,因此还必须指定参数TRANSPORT_DATAFILES来确保impdp工具从哪里获取实际的数据,该数据文件在先前已经拷贝成功。 如果之前已经通过可传输表空间模式的导出任务生成了导出文件集,则也可以执行基于导出文件的可传输表空间模式的导入任务,但在这种情况下不再需要指定参数TRANSPORT_TABLESPACES或者NETWORK_LINK,指定了这两个参数反而会报错,只需要指定导出文件集和参数TRANSPORT_DATAFILES即可。 限制: 1.通过可传输表空间模式进行导出导入任务时,目标数据库版本必须不低于源端数据库; 2.该参数只有与参数NETWORK_LINK一起使用才生效; 3.可传输模式不支持加密字段; 4.可传输表空间导入任务不支持参数ACCESS_METHOD。 ' TRANSPORT_TABLESPACES=tablespace_name [, ...] VERSION Version of objects to import. Valid keywords are: [COMPATIBLE], LATEST or any valid database version. Only valid for NETWORK_LINK and SQLFILE. ------------------------------------------------------------------------------ -- 以下交互模式命令说明与expdp一致 The following commands are valid while in interactive mode. Note: abbreviations are allowed. CONTINUE_CLIENT Return to logging mode. Job will be restarted if idle. EXIT_CLIENT Quit client session and leave job running. HELP Summarize interactive commands. KILL_JOB Detach and delete job. PARALLEL Change the number of active workers for current job. START_JOB Start or resume current job. Valid keywords are: SKIP_CURRENT. STATUS Frequency (secs) job status is to be monitored where the default [0] will show new status when available. STOP_JOB Orderly shutdown of job execution and exits the client. Valid keywords are: IMMEDIATE. 导入模式

全导入模式
需要导入全部数据库数据。通过指定参数FULL,必须有DATAPUMP_IMP_FULL_DATABASE权限,这是基于文件导入的默认模式。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/c5f5211542d385175e71281df8fffac0.html