第25章 数据泵导入
数据泵备份与恢复
数据泵导入(IMPDP)数据库实例 (3)导入指定的表 使用IMPDP导入特定的表使用TABLES参数,该参数后是要导 入的表对象的列表,如果有多个表使用,逗号分隔。我们使用 了参数TABLE_EXISTS_ACTION参数,设置 TABLE_EXISTS_ACTION=REPLACE,如果该表存在则先删 除在加载数据。 例子25-38 导入特定的表对象。 D:\>impdp scott/tiger@orcl dumpfile=pump_dir:MYDB_TBS_USERSANDSYSTEM_ 01.DAT nologfile=y tables= emp table_exists_action=replace
数据泵备份与恢复
数据泵导入(IMPDP)数据库实例 (2)导入表空间 使用IMPDP导入特定的表空间时,需要有备份表空间文件,需要使用 TABLESPACES参数说明要导入的表空间名,此时实际上是导入表空 间中的所有数据库对象,当然这些工作都由IMPDP自己操作完成,由 于表空间中有表对象,如果当前的数据库中的表空间已有相应的表对 象,则最好告诉IMPDP该怎么做,此时需要参数 TABLE_EXITS_ACTION参数,它的默认值为SKIP即如果表已经存 在则跳过。我们建议使用REPLACE或TRUNCATE,前者表示重建表, 后者表示删除掉当前表中的数据,然后使用备份文件中的表数据进行 加载,但是会跳过所有相关元数据。如下例所示。 例子: 使用IMPDP导入特定的表空间 D:\>impdp system/oracle@orcl dumpfile=pump_dir:MYDB_TBS_USERSANDSYSTEM_01.DA T logfile= tablespaces=users table_exists_action=replace
数据泵备份与恢复
(3)导入作业参数 JOB_NAME:说明导入作业名,IMPDP提供了很多可管理性如停止 作业和恢复作业,附加(ATTACH)到特定的作业,都需要作业名来 关联导入作业。 PRALLEL:说明当前导入作业的线程数。该值的默认值为1。 STATUS:监视导入作业的状态频率,该参数的默认值为0 (4)导入方式参数 TABLES:说明允许导入指定的表,如果有多个表使用逗号分隔开, 同时也导入与这些表有依赖关系的对象,如索引、触发器和函数等。 SCHEMAS:说明要导入的模式列表,要使用该参数登录数据库的用 户必须拥有imp_full_database的权限。 TABLESPACES:说明要导入的表空间的列表,在导入这些表空间的 同时也要求导入与表空间有依赖关系的所有数据库对象。 FULL:说明要导入整个数据库。该参数的默认值为n。
数据泵备份与恢复
(9)交互模式参数 数据泵导入的交互参数和数据泵导出的交互参数功能是一样的,在数 据泵导入参数中没有ADD_FILE参数,它只对数据泵导出程序有效, 而其他参数以及切换到交互模式数据泵导入与导出是一样的。 PARALLEL:说明当前作业的活跃WORKER数量。 CONTINUE_CLIENT:在切换到交互模式后,返回记录模式。 EXIT_CLIENT:退出客户登录模式,但是不终止导入作业。 KILL_JOB:分离或删除当前导入作业。 START_JOB:在导入作业被意外终止后,可以重启或恢复当前作业。 STATUS:监视当前导入作业的状态,该参数是一个整数值,默认值 为0,如果设置STATUS=5,说明每5秒钟刷新一次导入作业的状态 信息。 STOP_JOB:关闭当前执行的作业并退出客户端,如果有多个导入作 业,则顺序关闭这些作业。如果设置STOP_JOB=IMMEDIATE将立 即关闭数据泵作业。
数据泵备份与恢复
数据泵导入(IMPDP)数据库实例 (1)导入整个数据库 导入整个数据库至少需要两个参数,一个是FULL,设置 FULL=Y说明是导入全库,一个是DUMPFILE,说明要导入的 备份文件的目录和名称,当然最好设置JOB_NAME参数,因为 它允许切换到交换模式,允许终止或重启导入会话。如下所示。 例子25-36 使用IMPDP导入整个数据库 D:\>impdp system/oracle@orcl dumpfile=pump_dir:full_db_%u.dat logfile=myfulldb.log parallel= 3 job_name=my_fulldb_impdp full =y
数据泵备份与恢复
(6)转换参数 TRANSFORM:该参数说明在导入数据泵作业时可以选择导入某个对象的存 储参数或其他属性值,如导入表时,不导入该表的存储属性等。 TRANSFORM参数的语法如下所示: TRANSFORM= transform_name:value[:object_type] 下面我们介绍各个部分: 1、transform_name:转换名由四个选项组成,代表四种基本的对象特征。其中 SEGMENT_ATTRIBUTES段属性包括物理属性、存储参数、表空间等,该参 数的值为Y或N,如果选择SETMENT_ATTRIBUTES=Y则说明导入作业包括 对象的这些属性;STORAGE存储属性说明是否导入对象的存储属性,如果 STORAGE=Y说明对象的存储属性作为导入作业的一部分。OID说明是否分 配新的OID给对象表。PCTSPACE:提供一个正数值,可以增加对象的分配 尺寸。 2、value:转换名的值中前三个值即SEGMENT_ATTRIBUTES、STORAGE和 OID默认值为Y,说明默认数据泵导入对象的存储属性,和段属性。而 PCTSPACE取一个正数值。 3、object_type:对象类型说明需要转换那些类型的对象,这些类型包括表、索 引、表空间以及约束等。
数据泵备份与恢复
数据泵导入参数 (2)过滤参数 INCLUDE:说明要导入的特定对象,如只导入表,此时会导入和导入特定对象有依赖关 系的对象如索引、触发器等。 下面是使用INCLUDE参数的例子,说明只允许导入表对象,且只有两个表可以导入。 INCLUDE=TABLE: "IN (‘EMP’,’DEPT’) " 也可以使用QUERY参数过滤要导入的表数据,此时数据泵导入作业使用外部表数据方法 访问数据,而不是采用直接路径方法。如下所示。 INCLUDE=TABLE: "IN (‘EMP’,’DEPT’) " QUERY=EMP: "WHERE sal>3000 ORDER BY sal" TABLE_EXITS_ACTION:该参数说明当导入的表已经存在时,IMPDP导入程序的行 为,参数TABLE_EXITS_ACTION有四个值,SKIP表示如果该表存在则跳过该表,它 是默认值;APPEND将导入的数据行附加到当前存在的表中;TRUNCATE截断表并从导 入数据文件中重新装载数据;REPLACE删除存在的表然后重建该表并导入数据。 EXCLUDE:在导入操作中排除特定的元数据,如不导入特定的表,此时也不会导入和 排除对象有依赖关系的其他对象。如下所示告诉IMPDP程序不导入表EMP和DEPT。
数据泵备份与恢复
数据泵导入(IMPDP)概述及参数含义 Oracle数据泵导入实用程序(IMPDP)将备份的数据导入到整 个数据库、特定的模式、特定的表或者特定的表空间,使用 IMPDP也可以在不同平台的数据库之间迁移表空间。IMPDP实 用程序通过各种参数支持对数据过滤以及对元数据的过滤,而 元数据的过滤可以有效控制要导入的对象类型,如导入表、索 引还是授权等等。 使用数据泵导入实用程序与数据泵导出实用程序一样可以使用 DIRECTORY、PARFILE、DUMPFILE和LOGFILE等参数,但 是正如ADD_FILE是数据泵导出EXPDP实用程序专有的一样, SQLFILE参数也是数据泵导入IMPDP实用程序所专有的。在执 行数据泵导入作业时,往往需要从备份数据文件中途提取DDL 语句,此时需要使用SQLFILE。
数据泵备份与恢复
数据泵导入参数 (1)目录和文件相关参数 DIRECTORY:说明备份文件、日志文件和SQL文件的目录对象,如果没有定 义目录,则会使用PUMP_DIR的默认值。 DUMPFILE:说明备份文件名,如导入数据时需要多个备份文件,则用逗号 分隔这些文件名,在DUMPFILE参数后可以使用包括目录,如 DUMFILE=PUMP_DIR:BACKUP.DMP,也可以使用替换变量(%U)告诉 IMPDP可以使用多个备份文件。如 DUMPFILE=PUMP_DIR:BACKUP_%U.DMP。 PARFILE:说明参数文件,IMPDP使用外部定义一个参数文件执行导入行为, 该参数文件是本地的,使用时需要告诉IMPDP参数文件的绝对位置。如 D:\IMPDP SYSTEM/ORACLE@ORCL PARFILE=D:\PAR\EXP.PAR LOGFILE:说明使用日志文件保存导入过程的信息,该参数的值是日志文件 的名字名,如LOGFILE =MYLOG.LOG。 NOLOGFILE:说明不使用日志文件记录导入过程,如NOLOGFILE=Y。 SQLFILE:说明从备份文件中提取SQL的DDL语句,并写入该参数设置的文 件中,如SQLFILE=MYSQLFILE.SQL。该文件默认保存在DIRECTORY参 数设置的目录对象中。
数据泵备份与恢复
数据泵导入(IMPDP)数据库实例 (4)导入指定的数据库对象 导入特定的数据库对象使用INCLUDE参数,该例 子中我们从备份文件中恢复SCOTT用户的所有表 和触发器对象,而对于已经存在的表则重建再加载 数据。 D:\>impdp scott/tige_USERSAND SYSTEM_01.DAT nologfile=y include=table,trigger table_exists_action=replace
数据泵备份与恢复
(5)重新映射参数 重新映射使得在数据导入过程中将数据从一个数据库对象移动到另一个数据库对象,可 以映射模式,映射数据文件和映射表空间,映射可以理解为“数据对象移动”。 REMAP_SCHEMA:重新映射模式,可以将对象从一个模式移动到另一个模式, D:\>impdp system/oracle@orcl dumpfile =pump_dir:SHCEMA_SCOTT.DMP remap_schema=scott:linzi 上例将SCOTT模式下的所有数据库对象移动到LINZI模式下,这样使用LINZI模式登录 数据库,就可以使用SCOTT用户的所有数据库对象。我们通过下例验证重映射模式的结 果。 REMAP_DATAFILE:在导入数据时,重新定义数据文件的名称和目录。如下所示。 D:\impdp system/oracle@orcl directory=pump_dir dumpfile=backup_full.dmp remap_datafile='c:\mydb.dbf':'d:\mydb\newdb.dbf REMAP_TABLESPACE:重映射表空间使得将数据对象从一个表空间移动到另一个表空 间。如下所示。 D:\impdp system/oracle@orcl remap_tablespace='users':'mynewusers' directory=pump_dir dumpfile=backup_full.dmp