oracle 資料泵解析

賀子_DBA時代發表於2015-03-12
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=
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 --如果表已經存在則進行替換操作。
  一般來說,在還原資料庫操作的時候,首先要刪除這個使用者,然後在進行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=\'ius_tran\' 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;

  EG: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引數可以實現將一個使用者的的資料遷移到另外一個使用者。
    (1)impdp資料泵使用REMAP_SCHEMA引數來實現不同使用者之間的資料遷移;
     語法:
      REMAP_SCHEMA=source_schema:target_schema
      eg:impdp orcldev/oracle DIRECTORY=backup_path DUMPFILE=oracldev.dmp REMAP_SCHEMA=orcldev:orcltwo
      與REMAP_SCHEMA類似的引數選項,如REMAP_TABLESPACE將源表空間的所有物件匯入目標表空間。

  7、REMAP_TABLE引數
    將源表資料對映到不同的目標表中
    eg: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來進行匯入。
    eg:
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。可以選擇只匯入後設資料或者是隻匯入資料。
    EG:
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)

  
 四、參考資料
  ORACLE官網
  (1)

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29654823/viewspace-1457025/,如需轉載,請註明出處,否則將追究法律責任。

相關文章