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