Oracle導入導出dmp文件具體示例
寫在前面
筆者只是一名后端程序員,并非專業(yè)的數據庫管理員,說實在的,數據庫的功力很是一般般,只是比較熟練平常程序中的增刪改查之類的操作,其實 dmp 導入導出更多的使用場景是數據遷移和備份,只不過工作中恰巧碰到一次被領導要求進行導出導入的操作,因此學習了一下。
再次提醒,非專業(yè)人士,僅供參考,因涉及數據,請審慎地對待您對數據庫執(zhí)行的每一條命令!請在了解文中提到的命令的每一個參數含義后,再判斷如何修改命令并執(zhí)行!
一、詳細知識點
1、dmp文件
dmp是"Data Pump"的縮寫,它是Oracle獨有的一種數據導入導出文件格式。dmp文件是Oracle數據庫備份/還原的常用文件格式之一,是一種完整備份文件,可以記錄Oracle數據庫的所有數據,包括表、視圖、過程等等,保存為二進制格式的文件。dmp文件一般包含數據定義語言(DDL)和數據操作語言(DML)。具體來說,DDL是用來定義數據庫對象,例如表、視圖、用戶等等;DML則是用來操作這些對象,例如插入、刪除、更新數據等等。
2、導出dmp文件
2.1、exp和expdp區(qū)別
exp(Export) 和 expdp(Data Pump Export) 是Oracle數據庫提供的導出工具,用于將數據庫對象和數據導出為DMP文件。它們之間的主要區(qū)別如下:
工作原理 | exp是使用傳統(tǒng)的導出技術,而expdp是使用Oracle Data Pump技術。Data Pump是Oracle在10g版本中引入的高性能、可擴展的導入導出工具,即 Oracle 10g 之前的版本不可以使用 expdp。 |
導出速度和效率 | 由于Data Pump使用了并行處理和更高級的壓縮算法,相對于exp,expdp通常具有更快的導出速度和更高效的性能。 |
支持的導出對象 | exp支持導出整個數據庫、模式(用戶)和表級別的對象,而expdp支持更多的導出對象級別,包括表、模式、表空間、工作表、存儲過程等。 |
導出選項和靈活性 | expdp提供了更多的選項和參數,允許更靈活地控制導出的內容,如選擇特定的對象、數據過濾、并行度配置等。它還提供了更豐富的重定向和日志記錄選項。 |
文件格式 | exp和expdp生成的DMP文件格式不同。雖然都是.dmp后綴,但exp生成的DMP文件格式只可通過imp進行導入,而expdp生成的DMP文件格式也只可通過impdp進行導入 。 |
總的來說,expdp相對于exp提供了更高級的功能和性能,尤其在大型數據庫中進行導出操作時,更為推薦使用。它提供了更多的靈活性和性能優(yōu)勢,可以更精細地控制導出的內容和過程,但假如使用的數據庫版本為10g之前的版本,則只能使用exp。
2.2、exp導出操作
要使用exp工具導出dmp文件,可以按照以下步驟進行操作:
1) 使用 oracle 用戶登錄服務器,打開命令行終端或命令提示符窗口。
2) 輸入以下命令,以連接到Oracle數據庫實例:
sqlplus 用戶名/密碼@數據庫實例
3) 輸入以下命令,以創(chuàng)建一個目錄對象,用于存儲導出的dmp文件:
CREATE DIRECTORY 目錄名稱 AS '目錄路徑';
當然也可以通過下面這條語句,查詢現有的目錄路徑:
SELECT * FROM ALL_DIRECTORIES;
4) 輸入以下命令,以確保您具有導出數據的適當權限:
GRANT EXP_FULL_DATABASE TO 用戶名;
5) 輸入以下命令,以使用exp工具執(zhí)行導出操作:
exp 用戶名/密碼@數據庫實例 FILE=導出文件的文件名.dmp DIRECTORY=目錄名稱
6) 當使用exp工具進行導出操作時,可以使用以下一些常用的參數來控制導出的方式和內容:
參數 | 使用說明 |
---|---|
USER | 指定要導出的用戶名。 |
TABLES | 指定要導出的表格。例如,TABLES=table1,table2。 |
FILE | 指定導出文件的路徑和名稱。例如,FILE=/path/to/export.dmp。 |
LOG | 指定導出過程的日志文件路徑和名稱。例如,LOG=/path/to/export.log。 |
QUERY | 指定要導出數據的查詢條件。例如,QUERY=“WHERE column_name=‘value’”。 |
ROWS | 指定要導出的行數限制。例如,ROWS=100。 |
STATISTICS | 指定是否導出統(tǒng)計信息。可以是ALL、ESTIMATE或NONE。 |
GRANTS | 指定是否導出對象的授權信息??梢允荵、N或FULL。 |
CONSISTENT | 指定是否導出一致性視圖??梢允荵或N。 |
INDEXES | 指定是否導出索引??梢允荵或N。 |
COMPRESS | 指定是否壓縮導出文件??梢允荵或N。 |
這些只是一些常用的參數示例,exp工具還支持其他更多的參數和選項,例如是否導出觸發(fā)器、外鍵約束、序列等。可以使用exp help=y
命令來查看完整的參數列表和詳細的幫助信息。
2.3、expdp導出操作
以下是使用expdp工具來導出dmp文件的一般步驟:
1) 使用 oracle 用戶登錄服務器,打開命令行終端或命令提示符窗口。
2) 輸入以下命令,以連接到Oracle數據庫實例:
sqlplus 用戶名/密碼@數據庫實例
3) 輸入以下命令,創(chuàng)建一個目錄對象用于存儲導出的dmp文件:
CREATE DIRECTORY 目錄名稱 AS '目錄路徑';
當然也可以通過下面這條語句,查詢現有的目錄路徑:
SELECT * FROM ALL_DIRECTORIES;
4) 輸入以下命令,以確保您具有執(zhí)行導出操作的適當權限:
GRANT EXPORT_FULL_DATABASE TO 用戶名;
5) 輸入以下命令,使用expdp工具執(zhí)行導出操作(此是導出全庫,請根據自己的使用場景搭配不同的參數):
expdp 用戶名/密碼@數據庫實例 DIRECTORY=目錄名稱 DUMPFILE=導出文件名.dmp FULL=Y
6) 使用expdp工具執(zhí)行數據泵導出操作時,可以根據需要指定不同的參數來控制導出的方式和內容。以下是一些常用的expdp參數:
參數 | 使用說明 |
---|---|
SCHEMAS | 指定要導出的模式名。例如,SCHEMAS=schema1,schema2。 |
INCLUDE | 指定要包括的對象類型。例如,INCLUDE=TABLE,VIEW將只導出表和視圖。 |
EXCLUDE | 指定要排除的對象類型。例如,EXCLUDE=INDEX將排除索引的導出。 |
DIRECTORY | 指定導出文件的目錄對象。例如,DIRECTORY=datapump_dir。 |
DUMPFILE | 指定導出文件的名稱。例如,DUMPFILE=export.dmp。 |
LOGFILE | 指定導出操作的日志文件名稱。例如,LOGFILE=export.log。 |
PARALLEL | 指定并行導出的進程數。 |
COMPRESSION | 指定導出文件是否壓縮??梢允茿LL、DATA_ONLY、METADATA_ONLY或NONE。 |
CONTENT | 指定導出內容??梢允茿LL、DATA_ONLY、METADATA_ONLY或METADATA_ONLY_EXCLUDING_DATA。 |
QUERY | 指定導出的數據查詢條件。例如,QUERY=“WHERE column_name=‘value’”。 |
FILESIZE | 指定導出文件的最大文件大小。 |
JOB_NAME | 指定導出作業(yè)的名稱。 |
VERSION | 給定系統(tǒng)版本號的對象。例如,VERSION=SCN,SCN為版本號。 |
這些只是一些常用的參數示例,expdp工具還支持其他更多的參數和選項,例如導出模式的映射、導出過程的過濾、導出數據的轉換等??梢允褂?code>expdp help=y命令來查看完整的參數列表和詳細的幫助信息。
2.4、PL/SQL使用客戶端導出
2.4.1 特殊說明
需要在本地下載Oracle完整版,只下載客戶端可能沒有exp.exe文件,且需要指出的是,使用 PL/SQL直接導出,相當于在服務端使用 exp 導出。
筆者在使用plsql進行導出時,還出現了 PL/SQL 比 Oracle 版本過高,導致Dos框一閃而過,且并沒有生成導出文件,降低 PL/SQL 版本后成功解決,但查詢一番并未有 PL/SQL 和 Oracle 版本需要一致的官方說明。
2.4.2 操作指引
這里直接引用一篇博主的文章,該文章中有截圖有步驟:http://chabaoo.cn/database/304846pec.htm。由于文章中是漢化版的,加一個英文版界面截圖:
3、導入dmp文件
3.1、imp和impdp區(qū)別
imp(Import)和impdp(Data Pump Import)都是Oracle數據庫中用于導入dmp文件的工具,它們具有以下區(qū)別:
功能 | imp是Oracle傳統(tǒng)的導入工具,而impdp是更為強大和靈活的數據泵導入工具。impdp提供了比imp更多的選項和功能,可以更精確地控制導入過程。 |
導入方式 | imp使用單進程導入數據,而impdp使用多進程并行導入數據。因此,impdp通常比imp更快,特別是對于大型數據集導入。 |
平臺和版本支持 | imp是基于Oracle舊的導入工具,對于較新的Oracle版本和平臺可能支持有限。而impdp是Oracle Data Pump的一部分,對于大多數Oracle版本和平臺都有良好的支持。 |
導入對象類型 | imp和impdp都可以導入數據庫對象,如表、索引、視圖等。然而,impdp還支持導入其他數據對象類型,如數據泵導出的導入導出任務、PL/SQL程序包、觸發(fā)器等。 |
導入選項 | imp和impdp具有不同的導入選項和參數。例如,impdp可以通過INCLUDE和EXCLUDE參數來選擇性地導入特定的對象,以及通過TRANSFORM參數來修改導入對象的屬性。 |
總的來說,如果使用的是較新的 Oracle 版本,并且希望更高效、更靈活地控制導入過程,那么 impdp 是更推薦的導入工具。但是,如果正在使用較舊的 Oracle 版本或需要進行簡單的導入操作,那么只能使用 imp。
3.2、imp導入操作
要使用imp工具進行導入操作,可以按照以下步驟進行:
1) 打開命令行終端或命令提示符窗口。
2) 輸入以下命令,以連接到您的Oracle數據庫實例:
sqlplus 用戶名/密碼@數據庫實例
3) 輸入以下命令,創(chuàng)建一個目錄對象用于存儲導入的dmp文件:
CREATE DIRECTORY 目錄名稱 AS '目錄路徑';
當然也可以通過下面這條語句,查詢現有的目錄路徑:
SELECT * FROM ALL_DIRECTORIES;
4) 輸入以下命令,以確保您具有執(zhí)行導入操作的適當權限:
GRANT IMPORT_FULL_DATABASE TO 用戶名;
5) 輸入以下命令,使用imp工具執(zhí)行導入操作:
imp 用戶名/密碼@數據庫實例 FILE=導入文件的路徑.dmp FROMUSER=源用戶名 TOUSER=目標用戶名
6) 在使用 imp 工具進行數據導入時,可以根據需要指定不同的參數來控制導入的方式和內容。以下是一些常用的 imp 參數:
參數 | 使用說明 |
---|---|
USER | 指定要導入數據的用戶名。 |
FILE | 指定要導入的文件路徑和名稱。例如,FILE=/path/to/import.dmp。 |
FROMUSER | 指定導入數據來自的用戶名。 |
IGNORE | 指定是否忽略導入過程中遇到的錯誤??梢允荵或N。 |
INDEXES | 指定是否導入索引。可以是Y或N。 |
ROWS | 指定導入的行數限制。例如,ROWS=100。 |
DATA_ONLY | 指定只導入數據,不包括對象定義??梢允荵或N。 |
IGNORECASE | 指定導入時是否忽略大小寫??梢允荵或N。 |
FULL | 指定導入前先刪除現有對象??梢允荵或N。 |
LOG | 指定導入操作的日志文件路徑和名稱。例如,LOG=/path/to/import.log。 |
BUFFER | 指定讀取導入文件時的緩沖區(qū)大小。 |
REMAP_SCHEMA | 指定要將導入的對象映射到的新模式名。 |
REMAP_TABLESPACE | 指定要將導入的表空間映射到的新表空間名。 |
這些只是一些常用的參數示例,imp工具還支持其他更多的參數和選項,例如導入特定表、導入具有特定條件的數據、使用不同的字符集等??梢允褂?code>imp help=y命令來查看完整的參數列表和詳細的幫助信息。
3.3、impdp導入操作
要使用impdp工具進行導入操作,可以按照以下步驟進行:
1) 打開命令行終端或命令提示符窗口。
2) 輸入以下命令,以連接到您的Oracle數據庫實例:
sqlplus 用戶名/密碼@數據庫實例
3) 輸入以下命令,創(chuàng)建一個目錄對象用于導入的dmp文件:
CREATE DIRECTORY 目錄名稱 AS '目錄路徑';
當然也可以通過下面這條語句,查詢現有的目錄路徑:
SELECT * FROM ALL_DIRECTORIES;
4) 輸入以下命令,以確保您具有執(zhí)行導入操作的適當權限:
GRANT IMPORT_FULL_DATABASE TO 用戶名;
5) 輸入以下命令,使用impdp工具執(zhí)行導入操作:
impdp 用戶名/密碼@數據庫實例 DIRECTORY=目錄名稱 DUMPFILE=導入文件的名稱.dmp REMAP_SCHEMA=源用戶名:目標用戶名
6) impdp 工具提供了許多參數,用于控制導入過程中的行為和選項。以下是一些常用的 impdp 參數:
參數 | 使用說明 |
---|---|
ATTACH | 指定是否附加到正在運行的 impdp 作業(yè)。 |
DIRECTORY | 指定導入和導出文件所在的目錄對象。 |
DUMPFILE | 指定要導入的數據泵文件名。 |
REMAP_DATAFILE | 指定要將源數據文件映射到的目標數據文件。 |
REMAP_SCHEMA | 指定要將源模式映射到的目標模式。 |
REMAP_TABLESPACE | 指定要將源表空間映射到的目標表空間。 |
TABLE_EXISTS_ACTION | 對于已存在的表,指定要采取的操作(SKIP、APPEND、TRUNCATE、REPLACE)。 |
TRANSFORM | 指定要應用的數據轉換選項。 |
CONTENT | 指定要導入的對象類型(ALL、DATA_ONLY、METADATA_ONLY)。 |
PARALLEL | 指定并行執(zhí)行導入作業(yè)的程度。 |
LOGFILE | 指定導入操作的日志文件名。 |
INCLUDE/EXCLUDE | 指定要導入或排除的對象。 |
QUERY | 指定導入時使用的查詢條件。 |
這些只是一些常用的參數示例,impdp 工具還支持其他更多的參數和選項,例如處理數據沖突、啟用并行導入、使用網絡傳輸壓縮等??梢允褂?impdp help=y
命令來獲取完整的參數列表和詳細的幫助信息。
3.4、PL/SQL使用客戶端導入
3.4.1 特殊說明
需要在本地下載Oracle完整版,只下載客戶端可能沒有exp.exe文件(筆者在使用plsql進行導出時,出現了 PL/SQL 和 Oracle 版本號不一樣,導致頻頻失敗,但查詢一番并未有 PL/SQL 和 Oracle 版本需要一致的官方說明)
3.4.2 操作指引
這里直接引用一篇博主的文章,該文章中有截圖有步驟:https://blog.csdn.net/qq_36292543/article/details/105193485。由于文章中是漢化版的,加一個英文版界面截圖:
二、 具體示例
此示例中只是使用 impdp 導入的示例,也是筆者操作過的一個例子,imp 導入大體相當,至于導出,筆者只使用過用PL/SQL導出,因其簡單,不再贅述,后續(xù)也有可能會再補充不同場景的導入導出操作。
impdp導入dmp文件
1) 假設你不是數據庫維護人員,你的領導直接給了你一份.dmp文件,讓你導入到數據庫中,你對從那個庫中導出的,怎么導出的一無所知,這時候第一步,你最少要詢問一下這是使用 exp 還是 expdp 導出的(示例是假設使用的expdp導出的數據),還有就是索要導出日志。導出日志中會顯示導出的實例名、表名和數據行數;
2) 在 PL/SQL 中執(zhí)行 SELECT * FROM ALL_DIRECTORIES;
查詢已登記的目錄,并通過XFTP或者其他工具將 .dmp 文件上傳到其中某一個目錄,記下來上傳目錄對應的目錄名稱;
3) 使用 xshell 等工具連接要導入的數據庫所在的服務器,使用 oracle 用戶登錄(或者登錄root用戶后,使用命令su - oracle
切換到oracle也一樣);
4) 假如你使用 PL/SQL 連接數據庫時所填的信息和導出 .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@數據庫實例名 remap_schema=導入文件中的用戶名:導入數據庫中的用戶名 directory=dmp文件所在目錄 dumpfile=導入文件.dmp logfile=implog.log transform=segment_attributes:n
總結
到此這篇關于Oracle導入導出dmp文件的文章就介紹到這了,更多相關Oracle導入dmp文件內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Windows系統(tǒng)下Oracle?12c安裝保姆級圖文教程詳解
這篇文章主要給大家介紹了關于Windows系統(tǒng)下Oracle?12c安裝保姆級圖文教程的相關資料,Oracle數據庫12c的安裝是一個復雜的過程,但通過正確的安裝前置條件的準備,精心的安裝過程確實可以讓Oracle?12c穩(wěn)定、高效地運行在各類操作系統(tǒng)中,需要的朋友可以參考下2023-09-09