Oracle數據泵sql
注:高版本ORACLE向低版本的數據遷移還得加上VERSION
數據庫
1、數據泵的做用:網絡
1.實現邏輯備份和邏輯恢復oracle
2.在數據庫用戶之間移動對象工具
3.在數據庫之間移動對象加密
4.實現表空間轉移spa
二 、數據泵的特色與傳統導出導入的區別命令行
1.EXP和IMP是客戶段工具程序, EXPDP和IMPDP是服務端的工具程序日誌
2.EXP和IMP效率比較低. EXPDP和IMPDP效率高對象
3.數據泵功能強大並行、過濾、轉換、壓縮、加密、交互等等
4.數據泵不支持9i之前版本, EXP/IMP短時間內仍是比較適用
5.同exp/imp數據泵導出包括導出表,導出方案,導出表空間,導出數據庫4種方式.
3、DATA PUMP的體系結構:
4、EXPDP語法介紹:
數據泵導出實用程序提供了一種用於在 Oracle 數據庫之間傳輸
數據對象的機制。該實用程序可使用如下命令進行調用:
示例: expdp scott/tiger DIRECTORY=dmpdir DUMPFILE=scott.dmp
您能夠控制導出的運行方式。具體方法是: 在 'expdp' 命令後輸入
各類參數。要指定各參數, 請使用關鍵字:
格式: expdp KEYWORD=value 或 KEYWORD=(value1,value2,...,valueN)
示例: expdp scott/tiger DUMPFILE=scott.dmp DIRECTORY=dmpdir SCHEMAS=scott
或 TABLES=(T1:P1,T1:P2), 若是 T1 是分區表
USERID 必須是命令行中的第一個參數。
關鍵字 說明 (默認)
------------------------------------------------------------------------------
ATTACH 鏈接到現有做業, 例如 ATTACH [=做業名]。
COMPRESSION 減少有效的轉儲文件內容的大小
關鍵字值爲: (METADATA_ONLY) 和 NONE。
CONTENT 指定要卸載的數據, 其中有效關鍵字爲:
(ALL), DATA_ONLY 和 METADATA_ONLY。
DIRECTORY 供轉儲文件和日誌文件使用的目錄對象。
DUMPFILE 目標轉儲文件 (expdat.dmp) 的列表,
例如 DUMPFILE=scott1.dmp, scott2.dmp, dmpdir:scott3.dmp。
ENCRYPTION_PASSWORD 用於建立加密列數據的口令關鍵字。
ESTIMATE 計算做業估計值, 其中有效關鍵字爲:
(BLOCKS) 和 STATISTICS。
ESTIMATE_ONLY 在不執行導出的狀況下計算做業估計值。
EXCLUDE 排除特定的對象類型, 例如 EXCLUDE=TABLE:EMP。
FILESIZE 以字節爲單位指定每一個轉儲文件的大小。
FLASHBACK_SCN 用於將會話快照設置回之前狀態的 SCN。
FLASHBACK_TIME 用於獲取最接近指定時間的 SCN 的時間。
FULL 導出整個數據庫 (N)。
HELP 顯示幫助消息 (N)。
INCLUDE 包括特定的對象類型, 例如 INCLUDE=TABLE_DATA。
JOB_NAME 要建立的導出做業的名稱。
LOGFILE 日誌文件名 (export.log)。
NETWORK_LINK 連接到源系統的遠程數據庫的名稱。
NOLOGFILE 不寫入日誌文件 (N)。
PARALLEL 更改當前做業的活動 worker 的數目。
PARFILE 指定參數文件。
QUERY 用於導出表的子集的謂詞子句。
SAMPLE 要導出的數據的百分比;
SCHEMAS 要導出的方案的列表 (登陸方案)。
STATUS 在默認值 (0) 將顯示可用時的新狀態的狀況下,
要監視的頻率 (以秒計) 做業狀態。
TABLES 標識要導出的表的列表 - 只有一個方案。
TABLESPACES 標識要導出的表空間的列表。
TRANSPORT_FULL_CHECK 驗證全部表的存儲段 (N)。
TRANSPORT_TABLESPACES 要從中卸載元數據的表空間的列表。
VERSION 要導出的對象的版本, 其中有效關鍵字爲:
(COMPATIBLE), LATEST 或任何有效的數據庫版本。
下列命令在交互模式下有效。
注: 容許使用縮寫
命令 說明
------------------------------------------------------------------------------
ADD_FILE 向轉儲文件集中添加轉儲文件。
CONTINUE_CLIENT 返回到記錄模式。若是處於空閒狀態, 將從新啓動做業。
EXIT_CLIENT 退出客戶機會話並使做業處於運行狀態。
FILESIZE 後續 ADD_FILE 命令的默認文件大小 (字節)。
HELP 總結交互命令。
KILL_JOB 分離和刪除做業。
PARALLEL 更改當前做業的活動 worker 的數目。
PARALLEL=<worker 的數目>。
START_JOB 啓動/恢復當前做業。
STATUS 在默認值 (0) 將顯示可用時的新狀態的狀況下,
要監視的頻率 (以秒計) 做業狀態。
STATUS[=interval]
STOP_JOB 順序關閉執行的做業並退出客戶機。
STOP_JOB=IMMEDIATE 將當即關閉
數據泵做業。
5、IMPDP語法介紹:
數據泵導入實用程序提供了一種用於在 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。
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 指定參數文件。
QUERY 用於導入表的子集的謂詞子句。
REMAP_DATAFILE 在全部 DDL 語句中從新定義數據文件引用。
REMAP_SCHEMA 將一個方案中的對象加載到另外一個方案。
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。
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 將當即關閉
數據泵做業。
6、實踐操做:
1. 使用目錄:DATA_PUMP_DIR
[sql] view plaincopy
SQL> select * from dba_directories;
OWNER DIRECTORY_NAME
------------------------------ ------------------------------
DIRECTORY_PATH
----------------------------------------------------------------
SYS ADMIN_DIR
C:\ADE\aime_10.2_nt_push\oracle/md/admin
SYS DATA_PUMP_DIR
E:\admin\orcl\dpdump\
SYS WORK_DIR
C:\ADE\aime_10.2_nt_push\oracle/work
SQL> grant read, write on directory data_pump_dir to scott;
受權成功。
2.EXPDP用法舉例:
1)按用戶導
expdp scott/tiger@orcl schemas=scott dumpfile=expdp.dmp DIRECTORY=dpdata1;
2)並行進程parallel
expdp scott/tiger@orcl directory=dpdata1 dumpfile=scott3.dmp parallel=40 job_name=scott3
3)按表名導
expdp scott/tiger@orcl TABLES=emp,dept dumpfile=expdp.dmp DIRECTORY=dpdata1;
4)按查詢條件導
expdp scott/tiger@orcl directory=dpdata1 dumpfile=expdp.dmp Tables=emp query='WHERE deptno=20';
5)按表空間導
expdp system/manager DIRECTORY=dpdata1 DUMPFILE=tablespace.dmp TABLESPACES=temp,example;
6)導整個數據庫
expdp system/manager DIRECTORY=dpdata1 DUMPFILE=full.dmp FULL=y;
3.IMPDP用法舉例:
1)導到指定用戶下
impdp scott/tiger DIRECTORY=dpdata1 DUMPFILE=expdp.dmp SCHEMAS=scott;
2)改變表的owner
impdp system/manager DIRECTORY=dpdata1 DUMPFILE=expdp.dmp TABLES=scott.dept REMAP_SCHEMA=scott:system;
3)導入表空間
impdp system/manager DIRECTORY=dpdata1 DUMPFILE=tablespace.dmp TABLESPACES=example;
4)導入數據庫
impdb system/manager DIRECTORY=dump_dir DUMPFILE=full.dmp FULL=y;
5)追加數據
impdp system/manager DIRECTORY=dpdata1 DUMPFILE=expdp.dmp SCHEMAS=system TABLE_EXISTS_ACTION
4. 案例:將數據庫A中HR用戶下全部對象導入到SCOTT用戶下:
1)導出HR方案:
[sql] view plaincopy
expdp system/admin@orcl schemas=hr dumpfile=hr.dmp DIRECTORY=data_pump_dir nologfle=y;
2)將hr.dmp導入SCOTT方案:
[sql] view plaincopy
啓動 "SYSTEM"."SYS_IMPORT_FULL_01": system/******** dumpfile=hr.dmp directory=data_pump_dir remap_schema=hr:scott
處理對象類型 SCHEMA_EXPORT/USER
ORA-31684: 對象類型 USER:"SCOTT" 已存在
處理對象類型 SCHEMA_EXPORT/SYSTEM_GRANT
處理對象類型 SCHEMA_EXPORT/ROLE_GRANT
處理對象類型 SCHEMA_EXPORT/DEFAULT_ROLE
處理對象類型 SCHEMA_EXPORT/TABLESPACE_QUOTA
處理對象類型 SCHEMA_EXPORT/PRE_SCHEMA/PROCACT_SCHEMA
處理對象類型 SCHEMA_EXPORT/SEQUENCE/SEQUENCE
處理對象類型 SCHEMA_EXPORT/TABLE/TABLE
處理對象類型 SCHEMA_EXPORT/TABLE/TABLE_DATA
. . 導入了 "SCOTT"."COUNTRIES" 6.085 KB 25 行
. . 導入了 "SCOTT"."DEPARTMENTS" 6.632 KB 27 行
. . 導入了 "SCOTT"."EMPLOYEES" 15.76 KB 107 行
. . 導入了 "SCOTT"."JOBS" 6.609 KB 19 行
. . 導入了 "SCOTT"."JOB_HISTORY" 6.585 KB 10 行
. . 導入了 "SCOTT"."LOCATIONS" 7.710 KB 23 行
. . 導入了 "SCOTT"."REGIONS" 5.289 KB 4 行
處理對象類型 SCHEMA_EXPORT/TABLE/INDEX/INDEX
處理對象類型 SCHEMA_EXPORT/TABLE/CONSTRAINT/CONSTRAINT
處理對象類型 SCHEMA_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
處理對象類型 SCHEMA_EXPORT/TABLE/COMMENT
處理對象類型 SCHEMA_EXPORT/PROCEDURE/PROCEDURE
處理對象類型 SCHEMA_EXPORT/PROCEDURE/ALTER_PROCEDURE
處理對象類型 SCHEMA_EXPORT/TABLE/CONSTRAINT/REF_CONSTRAINT
處理對象類型 SCHEMA_EXPORT/TABLE/TRIGGER
處理對象類型 SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
做業 "SYSTEM"."SYS_IMPORT_FULL_01" 已經完成, 可是有 1 個錯誤 (於 15:32:01 完成)
3)效果就是HR下面的對象都複製到了SCOTT用戶下:
[sql] view plaincopy
SQL> select * from scott.employees where rownum<10;
EMPLOYEE_ID FIRST_NAME LAST_NAME EMAIL
----------- -------------------- ------------------------- ------------------
100 Steven King SKING
101 Neena Kochhar NKOCHHAR
102 Lex De Haan LDEHAAN
103 Alexander Hunold AHUNOLD
104 Bruce Ernst BERNST
105 David Austin DAUSTIN
106 Valli Pataballa VPATABAL
107 Diana Lorentz DLORENTZ
108 Nancy Greenberg NGREENBE
已選擇9行。