Oracle導(dǎo)入導(dǎo)出dmp文件具體示例
寫在前面
筆者只是一名后端程序員,并非專業(yè)的數(shù)據(jù)庫管理員,說實在的,數(shù)據(jù)庫的功力很是一般般,只是比較熟練平常程序中的增刪改查之類的操作,其實 dmp 導(dǎo)入導(dǎo)出更多的使用場景是數(shù)據(jù)遷移和備份,只不過工作中恰巧碰到一次被領(lǐng)導(dǎo)要求進行導(dǎo)出導(dǎo)入的操作,因此學(xué)習(xí)了一下。
再次提醒,非專業(yè)人士,僅供參考,因涉及數(shù)據(jù),請審慎地對待您對數(shù)據(jù)庫執(zhí)行的每一條命令!請在了解文中提到的命令的每一個參數(shù)含義后,再判斷如何修改命令并執(zhí)行!
一、詳細知識點
1、dmp文件
dmp是"Data Pump"的縮寫,它是Oracle獨有的一種數(shù)據(jù)導(dǎo)入導(dǎo)出文件格式。dmp文件是Oracle數(shù)據(jù)庫備份/還原的常用文件格式之一,是一種完整備份文件,可以記錄Oracle數(shù)據(jù)庫的所有數(shù)據(jù),包括表、視圖、過程等等,保存為二進制格式的文件。dmp文件一般包含數(shù)據(jù)定義語言(DDL)和數(shù)據(jù)操作語言(DML)。具體來說,DDL是用來定義數(shù)據(jù)庫對象,例如表、視圖、用戶等等;DML則是用來操作這些對象,例如插入、刪除、更新數(shù)據(jù)等等。
2、導(dǎo)出dmp文件
2.1、exp和expdp區(qū)別
exp(Export) 和 expdp(Data Pump Export) 是Oracle數(shù)據(jù)庫提供的導(dǎo)出工具,用于將數(shù)據(jù)庫對象和數(shù)據(jù)導(dǎo)出為DMP文件。它們之間的主要區(qū)別如下:
| 工作原理 | exp是使用傳統(tǒng)的導(dǎo)出技術(shù),而expdp是使用Oracle Data Pump技術(shù)。Data Pump是Oracle在10g版本中引入的高性能、可擴展的導(dǎo)入導(dǎo)出工具,即 Oracle 10g 之前的版本不可以使用 expdp。 |
| 導(dǎo)出速度和效率 | 由于Data Pump使用了并行處理和更高級的壓縮算法,相對于exp,expdp通常具有更快的導(dǎo)出速度和更高效的性能。 |
| 支持的導(dǎo)出對象 | exp支持導(dǎo)出整個數(shù)據(jù)庫、模式(用戶)和表級別的對象,而expdp支持更多的導(dǎo)出對象級別,包括表、模式、表空間、工作表、存儲過程等。 |
| 導(dǎo)出選項和靈活性 | expdp提供了更多的選項和參數(shù),允許更靈活地控制導(dǎo)出的內(nèi)容,如選擇特定的對象、數(shù)據(jù)過濾、并行度配置等。它還提供了更豐富的重定向和日志記錄選項。 |
| 文件格式 | exp和expdp生成的DMP文件格式不同。雖然都是.dmp后綴,但exp生成的DMP文件格式只可通過imp進行導(dǎo)入,而expdp生成的DMP文件格式也只可通過impdp進行導(dǎo)入 。 |
總的來說,expdp相對于exp提供了更高級的功能和性能,尤其在大型數(shù)據(jù)庫中進行導(dǎo)出操作時,更為推薦使用。它提供了更多的靈活性和性能優(yōu)勢,可以更精細地控制導(dǎo)出的內(nèi)容和過程,但假如使用的數(shù)據(jù)庫版本為10g之前的版本,則只能使用exp。
2.2、exp導(dǎo)出操作
要使用exp工具導(dǎo)出dmp文件,可以按照以下步驟進行操作:
1) 使用 oracle 用戶登錄服務(wù)器,打開命令行終端或命令提示符窗口。
2) 輸入以下命令,以連接到Oracle數(shù)據(jù)庫實例:
sqlplus 用戶名/密碼@數(shù)據(jù)庫實例
3) 輸入以下命令,以創(chuàng)建一個目錄對象,用于存儲導(dǎo)出的dmp文件:
CREATE DIRECTORY 目錄名稱 AS '目錄路徑';
當(dāng)然也可以通過下面這條語句,查詢現(xiàn)有的目錄路徑:
SELECT * FROM ALL_DIRECTORIES;
4) 輸入以下命令,以確保您具有導(dǎo)出數(shù)據(jù)的適當(dāng)權(quán)限:
GRANT EXP_FULL_DATABASE TO 用戶名;
5) 輸入以下命令,以使用exp工具執(zhí)行導(dǎo)出操作:
exp 用戶名/密碼@數(shù)據(jù)庫實例 FILE=導(dǎo)出文件的文件名.dmp DIRECTORY=目錄名稱
6) 當(dāng)使用exp工具進行導(dǎo)出操作時,可以使用以下一些常用的參數(shù)來控制導(dǎo)出的方式和內(nèi)容:
| 參數(shù) | 使用說明 |
|---|---|
| USER | 指定要導(dǎo)出的用戶名。 |
| TABLES | 指定要導(dǎo)出的表格。例如,TABLES=table1,table2。 |
| FILE | 指定導(dǎo)出文件的路徑和名稱。例如,F(xiàn)ILE=/path/to/export.dmp。 |
| LOG | 指定導(dǎo)出過程的日志文件路徑和名稱。例如,LOG=/path/to/export.log。 |
| QUERY | 指定要導(dǎo)出數(shù)據(jù)的查詢條件。例如,QUERY=“WHERE column_name=‘value’”。 |
| ROWS | 指定要導(dǎo)出的行數(shù)限制。例如,ROWS=100。 |
| STATISTICS | 指定是否導(dǎo)出統(tǒng)計信息。可以是ALL、ESTIMATE或NONE。 |
| GRANTS | 指定是否導(dǎo)出對象的授權(quán)信息。可以是Y、N或FULL。 |
| CONSISTENT | 指定是否導(dǎo)出一致性視圖。可以是Y或N。 |
| INDEXES | 指定是否導(dǎo)出索引??梢允荵或N。 |
| COMPRESS | 指定是否壓縮導(dǎo)出文件??梢允荵或N。 |
這些只是一些常用的參數(shù)示例,exp工具還支持其他更多的參數(shù)和選項,例如是否導(dǎo)出觸發(fā)器、外鍵約束、序列等。可以使用exp help=y命令來查看完整的參數(shù)列表和詳細的幫助信息。
2.3、expdp導(dǎo)出操作
以下是使用expdp工具來導(dǎo)出dmp文件的一般步驟:
1) 使用 oracle 用戶登錄服務(wù)器,打開命令行終端或命令提示符窗口。
2) 輸入以下命令,以連接到Oracle數(shù)據(jù)庫實例:
sqlplus 用戶名/密碼@數(shù)據(jù)庫實例
3) 輸入以下命令,創(chuàng)建一個目錄對象用于存儲導(dǎo)出的dmp文件:
CREATE DIRECTORY 目錄名稱 AS '目錄路徑';
當(dāng)然也可以通過下面這條語句,查詢現(xiàn)有的目錄路徑:
SELECT * FROM ALL_DIRECTORIES;
4) 輸入以下命令,以確保您具有執(zhí)行導(dǎo)出操作的適當(dāng)權(quán)限:
GRANT EXPORT_FULL_DATABASE TO 用戶名;
5) 輸入以下命令,使用expdp工具執(zhí)行導(dǎo)出操作(此是導(dǎo)出全庫,請根據(jù)自己的使用場景搭配不同的參數(shù)):
expdp 用戶名/密碼@數(shù)據(jù)庫實例 DIRECTORY=目錄名稱 DUMPFILE=導(dǎo)出文件名.dmp FULL=Y
6) 使用expdp工具執(zhí)行數(shù)據(jù)泵導(dǎo)出操作時,可以根據(jù)需要指定不同的參數(shù)來控制導(dǎo)出的方式和內(nèi)容。以下是一些常用的expdp參數(shù):
| 參數(shù) | 使用說明 |
|---|---|
| SCHEMAS | 指定要導(dǎo)出的模式名。例如,SCHEMAS=schema1,schema2。 |
| INCLUDE | 指定要包括的對象類型。例如,INCLUDE=TABLE,VIEW將只導(dǎo)出表和視圖。 |
| EXCLUDE | 指定要排除的對象類型。例如,EXCLUDE=INDEX將排除索引的導(dǎo)出。 |
| DIRECTORY | 指定導(dǎo)出文件的目錄對象。例如,DIRECTORY=datapump_dir。 |
| DUMPFILE | 指定導(dǎo)出文件的名稱。例如,DUMPFILE=export.dmp。 |
| LOGFILE | 指定導(dǎo)出操作的日志文件名稱。例如,LOGFILE=export.log。 |
| PARALLEL | 指定并行導(dǎo)出的進程數(shù)。 |
| COMPRESSION | 指定導(dǎo)出文件是否壓縮??梢允茿LL、DATA_ONLY、METADATA_ONLY或NONE。 |
| CONTENT | 指定導(dǎo)出內(nèi)容??梢允茿LL、DATA_ONLY、METADATA_ONLY或METADATA_ONLY_EXCLUDING_DATA。 |
| QUERY | 指定導(dǎo)出的數(shù)據(jù)查詢條件。例如,QUERY=“WHERE column_name=‘value’”。 |
| FILESIZE | 指定導(dǎo)出文件的最大文件大小。 |
| JOB_NAME | 指定導(dǎo)出作業(yè)的名稱。 |
| VERSION | 給定系統(tǒng)版本號的對象。例如,VERSION=SCN,SCN為版本號。 |
這些只是一些常用的參數(shù)示例,expdp工具還支持其他更多的參數(shù)和選項,例如導(dǎo)出模式的映射、導(dǎo)出過程的過濾、導(dǎo)出數(shù)據(jù)的轉(zhuǎn)換等??梢允褂?code>expdp help=y命令來查看完整的參數(shù)列表和詳細的幫助信息。
2.4、PL/SQL使用客戶端導(dǎo)出
2.4.1 特殊說明
需要在本地下載Oracle完整版,只下載客戶端可能沒有exp.exe文件,且需要指出的是,使用 PL/SQL直接導(dǎo)出,相當(dāng)于在服務(wù)端使用 exp 導(dǎo)出。
筆者在使用plsql進行導(dǎo)出時,還出現(xiàn)了 PL/SQL 比 Oracle 版本過高,導(dǎo)致Dos框一閃而過,且并沒有生成導(dǎo)出文件,降低 PL/SQL 版本后成功解決,但查詢一番并未有 PL/SQL 和 Oracle 版本需要一致的官方說明。
2.4.2 操作指引
這里直接引用一篇博主的文章,該文章中有截圖有步驟:http://www.dhdzp.com/database/304846pec.htm。由于文章中是漢化版的,加一個英文版界面截圖:

3、導(dǎo)入dmp文件
3.1、imp和impdp區(qū)別
imp(Import)和impdp(Data Pump Import)都是Oracle數(shù)據(jù)庫中用于導(dǎo)入dmp文件的工具,它們具有以下區(qū)別:
| 功能 | imp是Oracle傳統(tǒng)的導(dǎo)入工具,而impdp是更為強大和靈活的數(shù)據(jù)泵導(dǎo)入工具。impdp提供了比imp更多的選項和功能,可以更精確地控制導(dǎo)入過程。 |
| 導(dǎo)入方式 | imp使用單進程導(dǎo)入數(shù)據(jù),而impdp使用多進程并行導(dǎo)入數(shù)據(jù)。因此,impdp通常比imp更快,特別是對于大型數(shù)據(jù)集導(dǎo)入。 |
| 平臺和版本支持 | imp是基于Oracle舊的導(dǎo)入工具,對于較新的Oracle版本和平臺可能支持有限。而impdp是Oracle Data Pump的一部分,對于大多數(shù)Oracle版本和平臺都有良好的支持。 |
| 導(dǎo)入對象類型 | imp和impdp都可以導(dǎo)入數(shù)據(jù)庫對象,如表、索引、視圖等。然而,impdp還支持導(dǎo)入其他數(shù)據(jù)對象類型,如數(shù)據(jù)泵導(dǎo)出的導(dǎo)入導(dǎo)出任務(wù)、PL/SQL程序包、觸發(fā)器等。 |
| 導(dǎo)入選項 | imp和impdp具有不同的導(dǎo)入選項和參數(shù)。例如,impdp可以通過INCLUDE和EXCLUDE參數(shù)來選擇性地導(dǎo)入特定的對象,以及通過TRANSFORM參數(shù)來修改導(dǎo)入對象的屬性。 |
總的來說,如果使用的是較新的 Oracle 版本,并且希望更高效、更靈活地控制導(dǎo)入過程,那么 impdp 是更推薦的導(dǎo)入工具。但是,如果正在使用較舊的 Oracle 版本或需要進行簡單的導(dǎo)入操作,那么只能使用 imp。
3.2、imp導(dǎo)入操作
要使用imp工具進行導(dǎo)入操作,可以按照以下步驟進行:
1) 打開命令行終端或命令提示符窗口。
2) 輸入以下命令,以連接到您的Oracle數(shù)據(jù)庫實例:
sqlplus 用戶名/密碼@數(shù)據(jù)庫實例
3) 輸入以下命令,創(chuàng)建一個目錄對象用于存儲導(dǎo)入的dmp文件:
CREATE DIRECTORY 目錄名稱 AS '目錄路徑';
當(dāng)然也可以通過下面這條語句,查詢現(xiàn)有的目錄路徑:
SELECT * FROM ALL_DIRECTORIES;
4) 輸入以下命令,以確保您具有執(zhí)行導(dǎo)入操作的適當(dāng)權(quán)限:
GRANT IMPORT_FULL_DATABASE TO 用戶名;
5) 輸入以下命令,使用imp工具執(zhí)行導(dǎo)入操作:
imp 用戶名/密碼@數(shù)據(jù)庫實例 FILE=導(dǎo)入文件的路徑.dmp FROMUSER=源用戶名 TOUSER=目標(biāo)用戶名
6) 在使用 imp 工具進行數(shù)據(jù)導(dǎo)入時,可以根據(jù)需要指定不同的參數(shù)來控制導(dǎo)入的方式和內(nèi)容。以下是一些常用的 imp 參數(shù):
| 參數(shù) | 使用說明 |
|---|---|
| USER | 指定要導(dǎo)入數(shù)據(jù)的用戶名。 |
| FILE | 指定要導(dǎo)入的文件路徑和名稱。例如,F(xiàn)ILE=/path/to/import.dmp。 |
| FROMUSER | 指定導(dǎo)入數(shù)據(jù)來自的用戶名。 |
| IGNORE | 指定是否忽略導(dǎo)入過程中遇到的錯誤。可以是Y或N。 |
| INDEXES | 指定是否導(dǎo)入索引??梢允荵或N。 |
| ROWS | 指定導(dǎo)入的行數(shù)限制。例如,ROWS=100。 |
| DATA_ONLY | 指定只導(dǎo)入數(shù)據(jù),不包括對象定義??梢允荵或N。 |
| IGNORECASE | 指定導(dǎo)入時是否忽略大小寫??梢允荵或N。 |
| FULL | 指定導(dǎo)入前先刪除現(xiàn)有對象??梢允荵或N。 |
| LOG | 指定導(dǎo)入操作的日志文件路徑和名稱。例如,LOG=/path/to/import.log。 |
| BUFFER | 指定讀取導(dǎo)入文件時的緩沖區(qū)大小。 |
| REMAP_SCHEMA | 指定要將導(dǎo)入的對象映射到的新模式名。 |
| REMAP_TABLESPACE | 指定要將導(dǎo)入的表空間映射到的新表空間名。 |
這些只是一些常用的參數(shù)示例,imp工具還支持其他更多的參數(shù)和選項,例如導(dǎo)入特定表、導(dǎo)入具有特定條件的數(shù)據(jù)、使用不同的字符集等??梢允褂?code>imp help=y命令來查看完整的參數(shù)列表和詳細的幫助信息。
3.3、impdp導(dǎo)入操作
要使用impdp工具進行導(dǎo)入操作,可以按照以下步驟進行:
1) 打開命令行終端或命令提示符窗口。
2) 輸入以下命令,以連接到您的Oracle數(shù)據(jù)庫實例:
sqlplus 用戶名/密碼@數(shù)據(jù)庫實例
3) 輸入以下命令,創(chuàng)建一個目錄對象用于導(dǎo)入的dmp文件:
CREATE DIRECTORY 目錄名稱 AS '目錄路徑';
當(dāng)然也可以通過下面這條語句,查詢現(xiàn)有的目錄路徑:
SELECT * FROM ALL_DIRECTORIES;
4) 輸入以下命令,以確保您具有執(zhí)行導(dǎo)入操作的適當(dāng)權(quán)限:
GRANT IMPORT_FULL_DATABASE TO 用戶名;
5) 輸入以下命令,使用impdp工具執(zhí)行導(dǎo)入操作:
impdp 用戶名/密碼@數(shù)據(jù)庫實例 DIRECTORY=目錄名稱 DUMPFILE=導(dǎo)入文件的名稱.dmp REMAP_SCHEMA=源用戶名:目標(biāo)用戶名
6) impdp 工具提供了許多參數(shù),用于控制導(dǎo)入過程中的行為和選項。以下是一些常用的 impdp 參數(shù):
| 參數(shù) | 使用說明 |
|---|---|
| ATTACH | 指定是否附加到正在運行的 impdp 作業(yè)。 |
| DIRECTORY | 指定導(dǎo)入和導(dǎo)出文件所在的目錄對象。 |
| DUMPFILE | 指定要導(dǎo)入的數(shù)據(jù)泵文件名。 |
| REMAP_DATAFILE | 指定要將源數(shù)據(jù)文件映射到的目標(biāo)數(shù)據(jù)文件。 |
| REMAP_SCHEMA | 指定要將源模式映射到的目標(biāo)模式。 |
| REMAP_TABLESPACE | 指定要將源表空間映射到的目標(biāo)表空間。 |
| TABLE_EXISTS_ACTION | 對于已存在的表,指定要采取的操作(SKIP、APPEND、TRUNCATE、REPLACE)。 |
| TRANSFORM | 指定要應(yīng)用的數(shù)據(jù)轉(zhuǎn)換選項。 |
| CONTENT | 指定要導(dǎo)入的對象類型(ALL、DATA_ONLY、METADATA_ONLY)。 |
| PARALLEL | 指定并行執(zhí)行導(dǎo)入作業(yè)的程度。 |
| LOGFILE | 指定導(dǎo)入操作的日志文件名。 |
| INCLUDE/EXCLUDE | 指定要導(dǎo)入或排除的對象。 |
| QUERY | 指定導(dǎo)入時使用的查詢條件。 |
這些只是一些常用的參數(shù)示例,impdp 工具還支持其他更多的參數(shù)和選項,例如處理數(shù)據(jù)沖突、啟用并行導(dǎo)入、使用網(wǎng)絡(luò)傳輸壓縮等??梢允褂?impdp help=y 命令來獲取完整的參數(shù)列表和詳細的幫助信息。
3.4、PL/SQL使用客戶端導(dǎo)入
3.4.1 特殊說明
需要在本地下載Oracle完整版,只下載客戶端可能沒有exp.exe文件(筆者在使用plsql進行導(dǎo)出時,出現(xiàn)了 PL/SQL 和 Oracle 版本號不一樣,導(dǎo)致頻頻失敗,但查詢一番并未有 PL/SQL 和 Oracle 版本需要一致的官方說明)
3.4.2 操作指引
這里直接引用一篇博主的文章,該文章中有截圖有步驟:https://blog.csdn.net/qq_36292543/article/details/105193485。由于文章中是漢化版的,加一個英文版界面截圖:

二、 具體示例
此示例中只是使用 impdp 導(dǎo)入的示例,也是筆者操作過的一個例子,imp 導(dǎo)入大體相當(dāng),至于導(dǎo)出,筆者只使用過用PL/SQL導(dǎo)出,因其簡單,不再贅述,后續(xù)也有可能會再補充不同場景的導(dǎo)入導(dǎo)出操作。
impdp導(dǎo)入dmp文件
1) 假設(shè)你不是數(shù)據(jù)庫維護人員,你的領(lǐng)導(dǎo)直接給了你一份.dmp文件,讓你導(dǎo)入到數(shù)據(jù)庫中,你對從那個庫中導(dǎo)出的,怎么導(dǎo)出的一無所知,這時候第一步,你最少要詢問一下這是使用 exp 還是 expdp 導(dǎo)出的(示例是假設(shè)使用的expdp導(dǎo)出的數(shù)據(jù)),還有就是索要導(dǎo)出日志。導(dǎo)出日志中會顯示導(dǎo)出的實例名、表名和數(shù)據(jù)行數(shù);
2) 在 PL/SQL 中執(zhí)行 SELECT * FROM ALL_DIRECTORIES;查詢已登記的目錄,并通過XFTP或者其他工具將 .dmp 文件上傳到其中某一個目錄,記下來上傳目錄對應(yīng)的目錄名稱;

3) 使用 xshell 等工具連接要導(dǎo)入的數(shù)據(jù)庫所在的服務(wù)器,使用 oracle 用戶登錄(或者登錄root用戶后,使用命令su - oracle切換到oracle也一樣);
4) 假如你使用 PL/SQL 連接數(shù)據(jù)庫時所填的信息和導(dǎo)出 .dmp 的文件是這樣的:


5) 你可以參考如下這條命令修改自己的命令語句:
impdp 1111/2222@orcl remap_schema=MTM:1111 directory=DATA_PUMP_DIR dumpfile=DMP_FILE.dmp logfile=implog.log transform=segment_attributes:n
即:
impdp username/password@數(shù)據(jù)庫實例名 remap_schema=導(dǎo)入文件中的用戶名:導(dǎo)入數(shù)據(jù)庫中的用戶名 directory=dmp文件所在目錄 dumpfile=導(dǎo)入文件.dmp logfile=implog.log transform=segment_attributes:n
總結(jié)
到此這篇關(guān)于Oracle導(dǎo)入導(dǎo)出dmp文件的文章就介紹到這了,更多相關(guān)Oracle導(dǎo)入dmp文件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Oracle?數(shù)據(jù)庫層級遍歷查詢功能的實現(xiàn)
這篇文章主要介紹了Oracle?數(shù)據(jù)庫層級遍歷查詢,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-07-07
常見數(shù)據(jù)庫系統(tǒng)比較 Oracle數(shù)據(jù)庫
常見數(shù)據(jù)庫系統(tǒng)比較 Oracle數(shù)據(jù)庫...2007-03-03
Oracle數(shù)據(jù)庫遷移所有文件到新掛載磁盤路徑
根據(jù)實際須要,有時安裝了oracle以后須要擴展磁盤空間時,每每是新增一個單獨的文件路徑并掛載存儲,這時便須要總體遷移數(shù)據(jù)庫文件數(shù)據(jù)庫,本文就來介紹一下Oracle數(shù)據(jù)庫遷移所有文件到新掛載磁盤路徑2024-01-01
Windows系統(tǒng)下Oracle?12c安裝保姆級圖文教程詳解
這篇文章主要給大家介紹了關(guān)于Windows系統(tǒng)下Oracle?12c安裝保姆級圖文教程的相關(guān)資料,Oracle數(shù)據(jù)庫12c的安裝是一個復(fù)雜的過程,但通過正確的安裝前置條件的準備,精心的安裝過程確實可以讓Oracle?12c穩(wěn)定、高效地運行在各類操作系統(tǒng)中,需要的朋友可以參考下2023-09-09

