Oracle expdp/impdp 及 exp/imp 命令詳解
一、基礎(chǔ)環(huán)境
操作系統(tǒng):Windows 或 Linux
數(shù)據(jù)庫版本:Oracle Database 11.2.0.1.0 及以上版本
二、命令簡介
我們在使用Oracle 數(shù)據(jù)庫的過程中會經(jīng)常對數(shù)據(jù)進行導(dǎo)入導(dǎo)出。Oracle 數(shù)據(jù)庫提供 expdp / impdp (Data Pump,數(shù)據(jù)泵)以及 exp / imp 兩種工具進行數(shù)據(jù)的導(dǎo)入導(dǎo)出,可以對數(shù)據(jù)庫進行邏輯備份。
A、expdp / impdp 是Oracle 10g 開始引入的全新的用于快速遷移數(shù)據(jù)的工具。提供了一種用于在 Oracle 數(shù)據(jù)庫之間傳輸數(shù)據(jù)對象的機制。是服務(wù)端的工具程序,它們只能在數(shù)據(jù)庫服務(wù)端使用,不可以在客戶端使用。expdp 導(dǎo)出的數(shù)據(jù)文件只能使用 impdp 命令進行導(dǎo)入。優(yōu)點如下:
1、導(dǎo)出 / 導(dǎo)入的速度快,效率高。
2、可以在不實際執(zhí)行導(dǎo)出的情況下,估計需要的磁盤空間和所需時間。
3、可以只處理某些對象,不處理某些對象,或者只處理某些對象中滿足條件的數(shù)據(jù)。
4、通過 db link 將遠程數(shù)據(jù)庫導(dǎo)出到轉(zhuǎn)儲文件。
5、通過 db link,直接將遠程數(shù)據(jù)庫中的數(shù)據(jù)導(dǎo)入到當前數(shù)據(jù)庫。
6、導(dǎo)入時可以修改數(shù)據(jù)所在的 schema 名稱,表空間名稱以及數(shù)據(jù)文件名稱。
7、導(dǎo)出模式:數(shù)據(jù)庫 、表空間 、對象模式 、表 。
8、通過采樣,導(dǎo)出部分數(shù)據(jù)。
9、只導(dǎo)出元數(shù)據(jù)。
10、并行操作。
B、exp / imp 是客戶端的工具程序,它們既可以客戶端使用,也可以在服務(wù)器端使用。exp 導(dǎo)出的數(shù)據(jù)文件只能使用 imp 命令進行導(dǎo)入。
三、命令詳解
A、expdp
關(guān)鍵字 | 說明 [ 默認值 ] |
---|---|
userid | 用戶名/口令,必須為第一個參數(shù),且不能省略。 |
directory | 用于轉(zhuǎn)儲文件和日志文件的目錄對象。[ data_pump_dir] |
dumpfile | 指定目標轉(zhuǎn)儲文件名的列表 [expdat.dmp] |
logfile | 指定日志文件名 [export.log]。 |
schemas | 要導(dǎo)出的方案的列表 [登錄的方案,即 userid 的那個用戶]。 |
tables | 標識要導(dǎo)出的表的列表。例如, tables=hr.employees,sh.sales:sales_1995。 |
nologfile | 不寫入日志文件 [N]。 |
query | 用于導(dǎo)出表的子集的謂詞子句。例如, query=employees:"WHERE department_id > 10"。 |
reuse_dumpfiles | 覆蓋目標轉(zhuǎn)儲文件 (如果文件存在) [N] |
compression | 減少轉(zhuǎn)儲文件大小。有效的關(guān)鍵字值為: all, data_only, [matadata_only] 和 none。 |
content | 指定要卸載的數(shù)據(jù)。[ ALL ] 即:元數(shù)據(jù)(表結(jié)構(gòu)等)和數(shù)據(jù)。DATA_ONLY 即:僅導(dǎo)出數(shù)據(jù)不導(dǎo)出元數(shù)據(jù)(表結(jié)構(gòu))。 METADATA_ONLY 即:僅導(dǎo)出元數(shù)據(jù)(表結(jié)構(gòu)等)不導(dǎo)出數(shù)據(jù)。 |
encryption | 加密某個轉(zhuǎn)儲文件的一部分或全部。 有效的關(guān)鍵字值為: ALL 即:加密元數(shù)據(jù)(表結(jié)構(gòu)等)和數(shù)據(jù)。 DATA_ONLY,即:僅加密數(shù)據(jù)部分,不加密元數(shù)據(jù)(表結(jié)構(gòu)等)。ENCRYPTED_COLUMNS_ONLY, 即:僅加密列。METADATA_ONLY,即:僅加密元數(shù)據(jù)(表結(jié)構(gòu)等)。NONE,即不加密元數(shù)據(jù)(表結(jié)構(gòu)等)和數(shù)據(jù)。 |
encryption_algorithm | 指定加密的方式。有效的關(guān)鍵字值為: [ AES128 ], AES192 和 AES256。 |
encryption_mode | 生成加密密鑰的方法。有效的關(guān)鍵字值為: dual, password和 [TRANSPARENT]。 |
encryption_password | 用于在轉(zhuǎn)儲文件中創(chuàng)建加密數(shù)據(jù)的口令密鑰。 |
network_link | 源系統(tǒng)的遠程數(shù)據(jù)庫鏈接的名稱。即dblink的名稱,用于導(dǎo)出遠程數(shù)據(jù)庫。(性能受網(wǎng)絡(luò)限制) |
version | 要導(dǎo)出的對象版本。有效的關(guān)鍵字值為: [COMPATIBLE], latest 或任何有效的數(shù)據(jù)庫版本。在不同版本數(shù)據(jù)庫導(dǎo)入導(dǎo)出數(shù)據(jù)時,必須指定此參數(shù),否則會導(dǎo)入失敗。 |
full | 導(dǎo)出整個數(shù)據(jù)庫 [N]。 |
estimate_only | 計算作業(yè)估計值而不執(zhí)行導(dǎo)出。 |
estimate | 計算作業(yè)估計值。 有效的關(guān)鍵字值為: [blocks] 和 STATISTICS。 |
help | 顯示幫助消息 [N]。 |
常用導(dǎo)出語句:
1、導(dǎo)出用戶 scott 和 HR 的所有對象,目錄對象為:默認,轉(zhuǎn)儲文件名稱為:默認[EXPDAT.DMP], 日志文件為:默認[export.log]
expdp userid=system/oracle schemas=SCOTT,HR
2、導(dǎo)出用戶 scott 的 emp 表和 HR 的 jobs 表,目錄對象為:默認,轉(zhuǎn)儲文件名稱為:默認[EXPDAT.DMP], 日志文件為:默認[export.log]
expdp system/oracle tables=scott.emp,hr.jobs
3、導(dǎo)出遠程用戶的scott
expdp userid=system/oracle network_link='test' schemas=scott,hr
4、生產(chǎn)環(huán)境單實例數(shù)據(jù)庫備份命令
expdp userid=帳號/密碼@實例名 schemas=方案名列表 reuse_dumpfiles=y compression=all encryption=data_only encryption_mode=password encryption_password=密碼
特別說明:為了保證數(shù)據(jù)安全,導(dǎo)出時對轉(zhuǎn)儲文件進行加密(密碼可以動態(tài)生成),防止未授權(quán)人員獲取此轉(zhuǎn)儲文件,導(dǎo)致數(shù)據(jù)泄露。
B、impdp
關(guān)鍵字 | 說明 [ 默認值 ] |
---|---|
userid | 用戶名/口令,必須為第一個參數(shù),且不能省略。 |
directory | 用于轉(zhuǎn)儲文件, 日志文件和 SQL 文件的目錄對象。[ data_pump_dir] |
dumpfile | 要從中導(dǎo)入的轉(zhuǎn)儲文件的列表,可以有多個。[expdat.dmp] |
logfile | 日志文件名 [import.log] |
schemas | 要導(dǎo)入的方案的列表。 |
encryption_password | 用于訪問轉(zhuǎn)儲文件中的加密數(shù)據(jù)的口令密鑰。 |
full | 導(dǎo)入源中的所有對象 [Y] |
remap_schema | 將一個方案中的對象加載到另一個方案。(修改用戶名) |
remap_tablespace | 將表空間對象重新映射到另一個表空間。(修改表空間) |
reuse_datafiles | 如果表空間已存在, 則將其初始化 [N]。 |
tables | 標識要導(dǎo)入的表的列表。 |
help | 顯示幫助消息 [N]。 |
常用的導(dǎo)入語句:
1、將用戶 scott 的 emp 用戶表刪除,從備份文件 EXPDAT.DMP 中恢復(fù) emp 表。(提前將 EXPDAT.DMP 放入 DATA_PUMP_DIR 對應(yīng)的目錄)
impdp userid=system/oracle tables=scott.emp
2、將備份文件 expdat.dmp 中所有對象導(dǎo)入到數(shù)據(jù)庫中,密碼為123456。(提前將 expdat.dmp 放入 DATA_PUMP_DIR 對應(yīng)的目錄)
impdp userid=system/oracle full=y encryption_password=123456
C、exp
關(guān)鍵字 | 說明[ 默認值 ] |
---|---|
userid | 用戶名/口令,必須為第一個參數(shù),且不能省略。 |
owner | 所有者用戶名列表,多個用英文逗號隔開。 |
file | 輸出文件。 [ expdat.dmp ] |
log | 屏幕輸出的日志文件,沒有默認值,建議指定,否則不產(chǎn)生日志文件。 |
rows | 導(dǎo)出數(shù)據(jù)行 [Y],如果只想導(dǎo)出元數(shù)據(jù),不導(dǎo)出數(shù)據(jù),請將此關(guān)鍵字設(shè)置為N |
query | 用于導(dǎo)出表的子集的 select 子句 |
tables | 表名列表。不同的用戶可以設(shè)置為:用戶名1.表名1,用戶名2.表名2 |
buffer | 數(shù)據(jù)緩沖區(qū)大小。建議設(shè)置為64000,可以加快導(dǎo)出速度。 |
direct | 直接路徑 [N]。建議設(shè)置為Y ,可以加快導(dǎo)出速度。 |
recordlength | IO 記錄的長度。建議設(shè)置為65535,可以加快導(dǎo)出速度。 |
grants | 導(dǎo)出權(quán)限 [ Y ] |
indexs | 導(dǎo)出索引 [ Y ] |
help | 顯示幫助消息 [N] |
常用的導(dǎo)出語句:
1、將 SCOTT 的 EMP 和 DEPT 表每個表導(dǎo)出 10 行。(不足10行的按照實際導(dǎo)出行數(shù)導(dǎo)出)
exp userid=scott/tiger log=export.log tables=emp,dept query="'WHERE ROWNUM <= 10'"
2、將 scott 的 emp 和 dept 表導(dǎo)出,最高效率(導(dǎo)出文件名為默認的expdat.dmp)
exp userid=scott/tiger log=export.log tables=emp,dept direct=y buffer=64000 recordlength=65535
D、imp
關(guān)鍵字 | 說明[ 默認值 ] |
---|---|
userid | 用戶名/口令,必須為第一個參數(shù),且不能省略。 |
file | 輸入文件。 [ expdat.dmp ] |
log | 屏幕輸出的日志文件,沒有默認值,建議指定,否則不產(chǎn)生日志文件。 |
fromuser | 所有者用戶名列表 |
touser | 用戶名列表 |
tables | 表名列表。前面可以加用戶名,如:scott.emp,scott.dept |
grants | 導(dǎo)入權(quán)限 [Y] |
indexes | 導(dǎo)入索引 [Y] |
rows | 導(dǎo)入數(shù)據(jù)行 [Y] |
full | 導(dǎo)入整個文件。[N] |
help | 顯示幫助消息 [N] |
常用的導(dǎo)入語句:
1、將 scott.dmp 導(dǎo)入數(shù)據(jù)庫。(需要提前將 emp,dept 表刪除)
imp userid=scott/tiger file=scott.dmp log=scott.log tables=emp,dept
四、參考資料
1、Oracle 自帶的命令:expdp -help 、impdp -help 、exp -help 、imp -help
到此這篇關(guān)于Oracle expdp/impdp 及 exp/imp 命令詳解的文章就介紹到這了,更多相關(guān)Oracle expdp/impdp 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
oracle數(shù)據(jù)庫表實現(xiàn)自增主鍵的方法實例
Oracle數(shù)據(jù)庫中沒有自增字段,我們可以通過創(chuàng)建序列和觸發(fā)器的方式,間接地實現(xiàn)自增的效果,下面這篇文章主要給大家介紹了關(guān)于oracle數(shù)據(jù)庫表實現(xiàn)自增主鍵的相關(guān)資料,需要的朋友可以參考下2022-06-06oracle 數(shù)據(jù)庫學(xué)習(xí) 基本結(jié)構(gòu)介紹
普及一下oracle的基礎(chǔ)知識,總結(jié)一下,oracle 是由實例和數(shù)據(jù)庫組成2012-11-11Oracle基礎(chǔ)多條sql執(zhí)行在中間的語句出現(xiàn)錯誤時的控制方式
今天小編就為大家分享一篇關(guān)于Oracle基礎(chǔ)多條sql執(zhí)行在中間的語句出現(xiàn)錯誤時的控制方式,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2018-12-12ORA-02298: 無法驗證 (約束)提示未找到父項關(guān)鍵字的解決辦法
這篇文章主要介紹了ORA-02298: 無法驗證 (約束)提示未找到父項關(guān)鍵字的解決辦法,本文介紹的非常詳細,具有參考借鑒價值,需要的朋友可以參考下2016-09-09利用Oracle數(shù)據(jù)庫發(fā)送郵件的實例代碼
本文給大家利用oracle數(shù)據(jù)庫發(fā)送郵件的實例,代碼簡單易懂,試用性非常高,對此文感興趣的朋友一起學(xué)習(xí)吧2016-09-09oracle數(shù)據(jù)庫中chr()函數(shù)和concat函數(shù)的使用說明
這篇文章主要介紹了oracle數(shù)據(jù)庫中chr()函數(shù)和concat函數(shù)的使用說明,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-07-07