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指的是在tnsnames.ora文件中配置的監聽名稱。
        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命令的參數選項一致。

三、數據泵備份(EXPDP命令)
   (1) http://www.cnblogs.com/oracle-dba/p/3344230.html

   (2) http://docs.oracle.com/cd/B19306_01/server.102/b14215/dp_export.htm#i1007829
四、參考資料
   ORACLE官網
    (1) http://docs.oracle.com/cd/B19306_01/server.102/b14215/dp_import.htm#g1025464


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM