ORACLE数据泵还原(IMPDP命令)
Oracle数据库还原IMPDP命令是相对于EXPDP命令的,⽅向是反向的。即对于数据库备份进⾏还原操作。
⼀、知晓IMPDP命令
C:\>impdp -help
Import: Release 11.1.0.7.0 - Production on 星期六, 28 9⽉, 2013 15:37:03
Copyright (c) 2003, 2007, Oracle.  All rights reserved.
数据泵导⼊实⽤程序提供了⼀种⽤于在 Oracle 数据库之间传输
数据对象的机制。该实⽤程序可以使⽤以下命令进⾏调⽤:
⽰例: impdp scott/tiger DIRECTORY=dmpdir DUMPFILE=scott.dmp
您可以控制导⼊的运⾏⽅式。具体⽅法是: 在 'impdp' 命令后输⼊各种参数。要指定各参数, 请使⽤关键字:
格式: impdp KEYWORD=value 或 KEYWORD=(value1,value2,...,valueN)
⽰例: impdp scott/tiger DIRECTORY=dmpdir DUMPFILE=scott.dmp
USERID 必须是命令⾏中的第⼀个参数。
关键字说明 (默认)
------------------------------------------------------------------------------
ATTACH                连接到现有作业, 例如 ATTACH [=作业名]。
CONTENT              指定要加载的数据, 其中有效关键字为:(ALL),DATA_ONLY和METADATA_ONLY。
DATA_OPTIONS          数据层标记,其中唯⼀有效的值为:SKIP_CONSTRAINT_ERRORS-约束条件错误不严重。
DIRECTORY            供转储⽂件,⽇志⽂件和sql⽂件使⽤的⽬录对象。
DUMPFILE              要从(expdat.dmp)中导⼊的转储⽂件的列表,例如 DUMPFILE=scott1.dmp, scott2.dmp, dmpdir:scott3.dmp。
ENCRYPTION_PASSWORD  ⽤于访问加密列数据的⼝令关键字。此参数对⽹络导⼊作业⽆效。
ESTIMATE              计算作业估计值, 其中有效关键字为:(BLOCKS)和STATISTICS。
EXCLUDE              排除特定的对象类型, 例如 EXCLUDE=TABLE:EMP。
FLASHBACK_SCN        ⽤于将会话快照设置回以前状态的 SCN。
FLASHBACK_TIME        ⽤于获取最接近指定时间的 SCN 的时间。
FULL                  从源导⼊全部对象(Y)。
HELP                  显⽰帮助消息(N)。
INCLUDE              包括特定的对象类型, 例如 INCLUDE=TABLE_DATA。
JOB_NAME              要创建的导⼊作业的名称。
LOGFILE              ⽇志⽂件名(import.log)。
NETWORK_LINK          链接到源系统的远程数据库的名称。
NOLOGFILE            不写⼊⽇志⽂件。
PARALLEL              更改当前作业的活动worker的数⽬。
PARFILE              指定参数⽂件。
PARTITION_OPTIONS    指定应如何转换分区,其中有效关键字为:DEPARTITION,MERGE和(NONE)
QUERY                ⽤于导⼊表的⼦集的谓词⼦句。
REMAP_DATA            指定数据转换函数,例如REMAP_DATA=EMP.EMPNO:REMAPPKG.EMPNO
REMAP_DATAFILE        在所有DDL语句中重新定义数据⽂件引⽤。
REMAP_SCHEMA          将⼀个⽅案中的对象加载到另⼀个⽅案。
REMAP_TABLE          表名重新映射到另⼀个表,例如 REMAP_TABLE=EMP.EMPNO:REMAPPKG.EMPNO。
REMAP_TABLESPACE      将表空间对象重新映射到另⼀个表空间。
REUSE_DATAFILES      如果表空间已存在, 则将其初始化 (N)。
SCHEMAS              要导⼊的⽅案的列表。
SKIP_UNUSABLE_INDEXES 跳过设置为⽆⽤索引状态的索引。
SQLFILE              将所有的 SQL DDL 写⼊指定的⽂件。
STATUS                在默认值(0)将显⽰可⽤时的新状态的情况下,要监视的频率(以秒计)作业状态。
STREAMS_CONFIGURATION 启⽤流元数据的加载
TABLE_EXISTS_ACTION  导⼊对象已存在时执⾏的操作。有效关键字:(SKIP),APPEND,REPLACE和TRUNCATE。
TABLES                标识要导⼊的表的列表。
TABLESPACES          标识要导⼊的表空间的列表。
TRANSFORM            要应⽤于适⽤对象的元数据转换。有效转换关键字为:SEGMENT_ATTRIBUTES,STORAGE,OID和PCTSPACE。TRANSPORTABLE        ⽤于选择可传
输数据移动的选项。有效关键字为: ALWAYS 和 (NEVER)。仅在 NETWORK_LINK 模式导⼊操作中有效。TRANSPORT_DATAFILES  按可传输模式导⼊的数据⽂件的列表。
TRANSPORT_FULL_CHECK  验证所有表的存储段 (N)。
TRANSPORT_TABLESPACES 要从中加载元数据的表空间的列表。仅在 NETWORK_LINK 模式导⼊操作中有效。
VERSION              要导出的对象的版本, 其中有效关键字为:(COMPATIBLE), LATEST 或任何有效的数据库版本。仅对 NETWORK_LINK 和 SQLFILE 有效。下列命令在交互模式下有效。
注: 允许使⽤缩写
命令说明 (默认)
------------------------------------------------------------------------------
CONTINUE_CLIENT      返回到记录模式。如果处于空闲状态, 将重新启动作业。
EXIT_CLIENT          退出客户机会话并使作业处于运⾏状态。
HELP                  总结交互命令。
KILL_JOB              分离和删除作业。
PARALLEL              更改当前作业的活动 worker 的数⽬。PARALLEL=<worker 的数⽬>。
START_JOB            启动/恢复当前作业。START_JOB=SKIP_CURRENT 在开始作业之前将跳过作业停⽌时执⾏的任意操作。
STATUS                在默认值 (0) 将显⽰可⽤时的新状态的情况下,要监视的频率 (以秒计) 作业状态。STATUS[=interval]
STOP_JOB              顺序关闭执⾏的作业并退出客户机。STOP_JOB=IMMEDIATE 将⽴即关闭数据泵作业。
备注:红⾊标记的选项是⽐较常⽤的,需知晓其⽤法。
⼆、操作实例
 1、全库模式导⼊[full]
  impdp orcldev/oracle directory=backup_path dumpfile=orcldev_schema.dmp full=Y table_exists_action=replace
table_exists_action有三种选项:
    (1)truncate (2) replace (3) append
  ⼀般来说,在还原数据库操作的时候,⾸先要删除这个⽤户,然后在进⾏impdp还原操作。
eg:
  (1)SQL>DROP USER orcldev CASCADE;
  (2)impdp orcldev/oracle directory=backup_path dumpfile=orcldev_2013.dmp full=Y
 2、Schema模式导⼊[schema]
  --还原orcldev这个⽅案(⽤户)
  impdp orcldev/oracle directory=backup_path dumpfile=orcldev_schema.dmp schemas=orcldev table_exists_action=replace
  3、表模式导⼊[table]
  --还原某个⽤户下的具体的表
  (1)windows版本:
  impdp orcldev/oracle directory=backup_path dumpfile=orcldev_table.dmp tables='TAB_TEST' table_exists_action=replace
  (2)unix版本:需要将'单引号进⾏转义操作
  impdp orcldev/oracle directory=backup_path dumpfile=orcldev_table.dmp tables=\'TAB_TEST\' table_exists_action=replace
  4、表空间模式导⼊[tablespace]
  impdp orcldev/oracle directory=backup_path dumpfile=orcldev_tablespace.dmp tablespace=user,orcldev
 5、传输表空间模式导⼊[Transportable Tablespace]
  (1)Oracle_Online
  You cannot export transportable tablespaces and then import them into a database at a lower release level. The target database must be at the same or higher release level as the source database.
  The TRANSPORT_TABLESPACES is valid only when the NETWORK_LINK parameter is also specified.
  意思就说,⽬标库的版本要等于或者⾼于源数据库的版本,TRANSPORT_TABLESPACES参数选项有效前提条件是NETWORK_LINK参数需被指定。
  查询数据库版本号SQL语句:SELECT * FROM v$version;
  impdp orcldev/oracle DIRECTORY=dackup_path NETWORK_LINK=db_link_test01 TRANSPORT_TABLESPACES=test0001 TRANSPORT_FULL_CHECK=n TRANSPORT_DATAFILES='app/oradata/test0001.dbf'
  (2)创建数据库dbLink⽅法:
  语法:
    CREATE [PUBLIC] DATABASE LINK LINK_NAME
    CONNECT TO Username IDENTIFIED BY Password
    USING 'ConnectString';
  注释:
1)创建dblink需有CREATE DATABASE LINK或CREATE PUBLIC DATABASE LINK的系统权限以及⽤来登录到远程数据库⽤户必须有CREATE SESSION权限。
2)ConnectString指的是在a⽂件中配置的监听名称。
3)当GLOBAL_NAME=TRUE时,dblink名必须与远程数据库的全局数据库名GLOBAL_NAME相同;否则,可以任意命名。
  (3)查看GLOBAL_NAME参数⽅法:
   SQL> show parameters global_name;
    NAME                                    TYPE        VALUE
    ----------------------------------- ----------- ------------------------------
    global_names                        boolean    FALSE
 6、REMAP_SCHEMA参数
  众所周知:IMP⼯具的FROMUSER和TOUSER参数可以实现将⼀个⽤户的的数据迁移到另外⼀个⽤户。
  impdp数据泵使⽤REMAP_SCHEMA参数来实现不同⽤户之间的数据迁移;
  语法:
        REMAP_SCHEMA=source_schema:target_schema
        impdp orcldev/oracle DIRECTORY=backup_path DUMPFILE=oracldev.dmp REMAP_SCHEMA=orcldev:orcltwo
  与REMAP_SCHEMA类似的参数选项,如REMAP_TABLESPACE将源表空间的所有对象导⼊⽬标表空间。
  7、REMAP_TABLE参数
  将源表数据映射到不同的⽬标表中
  impdp orcldev/oracle DIRECTORY=backup_path dumpfile=oracldev.dmp remap_table=TAB_TEST:TEST_TB
  数据导⼊到TEST_TB表中,但是该表的索引等信息并没有相应的创建,需要⼿⼯初始化。
 8、REMAP_DATAFILE参数
  语法:REMAP_DATAFILE=source_datafile:target_datafile
  Oracle_Online:
  Remapping datafiles is useful when you move databases between platforms that have different file naming conventions. The source_datafile and target_datafile names should be exactly as you want them to appear in the SQL statements where they are referenced. Oracle recommends that you enclose datafile names in quotation marks to eliminate ambiguity on platforms for which a colon is a valid file specification character.
  9、PARALLEL参数
  使⽤PARALLEL参数可以提⾼数据泵还原的效率,前提是必须有多个expdp的⽂件,如expdp01.dmp,expdp02.dmp,expdp03dmp等等,不然会有问题。运⾏impdp命令时,会先启动⼀个WORKER进程将METADATA导⼊,然后再启动多个WORKER进程将数据以及其他对象导⼊,所以在前期只会看到⼀个WORKER在导⼊METADATA,⽽且IMPDP也需要DUMP⽂件是多个,也可以使⽤%U来进⾏导⼊。建议使⽤PARALLEL参数时,使
⽤%U选项,否则执⾏效果不理想。
impdp orcldev/oracle directory=backup_path dumpfile=orcldev_schema_%U.dmp schemas=orcldev parallel=4
备注:⽽在11GR2后EXPDP和IMDP的WORKER进程会在多个INSTANCE启动,所以DIRECTORY必须在共享磁盘上,如果没有设置共享磁盘还是指定cluster=no来防⽌报错。
 10、CONTENT参数
 CONTENT参数选项有ALL,DATA_ONLY和METADATA_ONLY,默认情况是ALL。可以选择只导⼊元数据或者是只导⼊数据。
 例如: 
  impdp orcldev/oracle directory=backup_path dumpfile=orcldev_schema.dmp schemas=orcldev CONTENT=DATA_ONLY
 11、其他选项
  include、exclude、parfile、query和version参数选项与EXPDP命令的参数选项⼀致。oracle登录命令

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。