Oracle導(dǎo)入導(dǎo)出dmp文件的方法對(duì)比及示例
前言
在工作中,經(jīng)常會(huì)遇到需要備份庫(kù),庫(kù)表遷移的場(chǎng)景,對(duì)于oracle會(huì)使用dmp文件進(jìn)行數(shù)據(jù)遷移和備份?;谝淮芜w移數(shù)據(jù)庫(kù)的經(jīng)歷,整理記錄dmp相關(guān)知識(shí)點(diǎn),供后續(xù)工作參考使用。
一、什么是dmp?
● dmp
是"Data Pump"
的縮寫(xiě),它是Oracle獨(dú)有的一種數(shù)據(jù)導(dǎo)入導(dǎo)出文件格式。.dmp文件是一種數(shù)據(jù)庫(kù)導(dǎo)出文件的擴(kuò)展名,通常用于存儲(chǔ)數(shù)據(jù)庫(kù)中的表、數(shù)據(jù)、視圖等對(duì)象的結(jié)構(gòu)和內(nèi)容。是一種特定數(shù)據(jù)庫(kù)系統(tǒng)的二進(jìn)制信息,因此不能直接用文本編輯器打開(kāi)。
●.dmp文件一般包含數(shù)據(jù)定義語(yǔ)言(DDL)和數(shù)據(jù)操作語(yǔ)言(DML)。具體來(lái)說(shuō),DDL是用來(lái)定義數(shù)據(jù)庫(kù)對(duì)象,例如表、視圖、用戶(hù)等等;DML則是用來(lái)操作這些對(duì)象,例如插入、刪除、更新數(shù)據(jù)等。常用來(lái)進(jìn)行數(shù)據(jù)庫(kù)遷移或者備份操作。
●其他數(shù)據(jù)庫(kù)也有類(lèi)似備份文件,比如MySQL數(shù)據(jù)庫(kù)
使用.sql文件
或者.dump文件
來(lái)表示數(shù)據(jù)庫(kù)導(dǎo)出文件,而SQL Server數(shù)據(jù)庫(kù)
使用.bak文件
來(lái)表示備份文件。
二、imp/impdp、exp/expdp對(duì)比及示例
imp/exp(Oracle導(dǎo)入導(dǎo)出實(shí)用程序)
是使用傳統(tǒng)的導(dǎo)出技術(shù),而impdp/expdp(數(shù)據(jù)泵導(dǎo)入實(shí)用程序)
是使用Oracle Data Pump技術(shù)。Data Pump是Oracle在10g版本中引入的高性能、可擴(kuò)展的導(dǎo)入導(dǎo)出工具,即 Oracle 10g 之前的版本不可以使用 impdp/expdp。
1.區(qū)別
●imp和exp是傳統(tǒng)的導(dǎo)入和導(dǎo)出工具,而impdp和expdp是數(shù)據(jù)泵工具,采用了新的架構(gòu)和方法。
●imp和exp是基于基于二進(jìn)制文件
的,而impdp和expdp則是使用數(shù)據(jù)泵作業(yè)
來(lái)執(zhí)行數(shù)據(jù)移動(dòng)操作,可以提供更高的性能和擴(kuò)展性。
●imp和exp不支持在分布式環(huán)境中執(zhí)行,而impdp和expdp可以在分布式環(huán)境中執(zhí)行。
●數(shù)據(jù)泵通常指的是一種高性能的數(shù)據(jù)導(dǎo)入和導(dǎo)出工具,用于在數(shù)據(jù)庫(kù)系統(tǒng)中進(jìn)行快速的數(shù)據(jù)遷移和加載操作。數(shù)據(jù)泵工具能夠提供比傳統(tǒng)的導(dǎo)入導(dǎo)出工具更快速、更靈活的數(shù)據(jù)傳輸方式,通常支持并行處理、大容量數(shù)據(jù)傳輸和高性能加載等特點(diǎn)。
2.imp/impdp對(duì)比及示例
a. imp
可通過(guò) imp help=y 命令查詢(xún)相關(guān)參數(shù)
- imp常用參數(shù)說(shuō)明,可以根據(jù)需要指定不同的參數(shù)來(lái)控制導(dǎo)入的方式和內(nèi)容。
參數(shù) | 使用說(shuō)明 |
---|---|
TOUSER | 指定要導(dǎo)入數(shù)據(jù)的用戶(hù)名。 |
FROMUSER | 指定導(dǎo)入數(shù)據(jù)來(lái)自的用戶(hù)名。 |
FILE | 指定要導(dǎo)入的文件路徑和名稱(chēng)。例如,F(xiàn)ILE=/path/to/import.dmp。 |
IGNORE | 指定是否忽略導(dǎo)入過(guò)程中遇到的錯(cuò)誤??梢允荵或N。 |
INDEXES | 指定是否導(dǎo)入索引。可以是Y或N。 |
ROWS | 控制是否導(dǎo)入表中的行數(shù)據(jù)。可以是Y或N。 |
DATA_ONLY | 指定只導(dǎo)入數(shù)據(jù),不包括對(duì)象定義。可以是Y或N。 |
IGNORECASE | 指定導(dǎo)入時(shí)是否忽略大小寫(xiě)??梢允荵或N。 |
FULL | 指定導(dǎo)入前先刪除現(xiàn)有對(duì)象??梢允荵或N。 |
LOG | 指定導(dǎo)入操作的日志文件路徑和名稱(chēng)。例如,LOG=/path/to/import.log。 |
BUFFER | 指定讀取導(dǎo)入文件時(shí)的緩沖區(qū)大小。 |
REMAP_SCHEMA | 指定要將導(dǎo)入的對(duì)象映射到的新模式名。 |
REMAP_TABLESPACE | 指定要將導(dǎo)入的表空間映射到的新表空間名。 |
TABLES | 指定要導(dǎo)入的特定表。舉例:IMP SCOTT/TIGER IGNORE=Y TABLES=(EMP,DEPT) FULL=N(or TABLES=(T1:P1,T1:P2) 表分區(qū)可用) |
- 命令格式:
imp 用戶(hù)名/密碼@數(shù)據(jù)庫(kù)實(shí)例 FILE=導(dǎo)入文件的路徑.dmp FROMUSER=源用戶(hù)名 TOUSER=目標(biāo)用戶(hù)名
- 命令示例:
--windows環(huán)境下 imp username/password@SERVICENAME:1521 file=e:\temp.dmp rows=y log=E:/test/dmp/kf_workflow_0512.log full = y; -linux環(huán)境路徑進(jìn)行替換
b. impbp
可通過(guò) impbp help=y 命令查詢(xún)相關(guān)參數(shù)
- impbp常用參數(shù)說(shuō)明,可以根據(jù)需要指定不同的參數(shù)來(lái)控制導(dǎo)入的方式和內(nèi)容。
參數(shù) | 使用說(shuō)明 |
---|---|
ATTACH | 指定是否附加到正在運(yùn)行的 impdp 作業(yè)。 |
DIRECTORY | 指定導(dǎo)入和導(dǎo)出文件所在的目錄對(duì)象。 |
DUMPFILE | 指定要導(dǎo)入的數(shù)據(jù)泵文件名。 |
REMAP_DATAFILE | 指定要將源數(shù)據(jù)文件映射到的目標(biāo)數(shù)據(jù)文件。 |
REMAP_SCHEMA | 指定要將源模式映射到的目標(biāo)模式。 |
REMAP_TABLESPACE | 指定要將源表空間映射到的目標(biāo)表空間。 |
TABLE_EXISTS_ACTION | 對(duì)于已存在的表,指定要采取的操作(SKIP、APPEND、TRUNCATE、REPLACE)。 |
TRANSFORM | 指定要應(yīng)用的數(shù)據(jù)轉(zhuǎn)換選項(xiàng)。 |
CONTENT | 指定要導(dǎo)入的對(duì)象類(lèi)型(ALL、DATA_ONLY、METADATA_ONLY)。 |
PARALLEL | 指定并行執(zhí)行導(dǎo)入作業(yè)的程度。 |
LOGFILE | 指定導(dǎo)入操作的日志文件名。 |
INCLUDE/EXCLUDE | 指定要導(dǎo)入或排除的對(duì)象。 |
QUERY | 指定導(dǎo)入時(shí)使用的查詢(xún)條件。For example, QUERY=employees:“WHERE department_id > 10”. |
- 命令格式:
--命令參考 impdp 用戶(hù)名/密碼@數(shù)據(jù)庫(kù)實(shí)例 DIRECTORY=目錄名稱(chēng) DUMPFILE=導(dǎo)入文件的名稱(chēng).dmp REMAP_SCHEMA=源用戶(hù)名:目標(biāo)用戶(hù)名 --舉例 impdp user/password@SID DIRECTORY=DMPDATA DUMPFILE=fileName.dmp remap_tablespace=um_dev:um remap_schema=u_um_dev:u_um
參數(shù)說(shuō)明:
- user/password@SID 用戶(hù)名/用戶(hù)密碼@數(shù)據(jù)庫(kù)實(shí)例;
- directory=dmpdata 導(dǎo)入的目錄,DMPDATA為數(shù)據(jù)庫(kù)虛擬路徑(參考目錄三中的目錄映射),即導(dǎo)入dmpdata下的文件也就是’/data/u01/dmpdata/';
- dumpfile=filename.dmp 導(dǎo)入的文件名,結(jié)合上面的 directory=dmpdata 就將’/data/u01/dmpdata/filename.dmp’;導(dǎo)入目標(biāo)服務(wù)器(需要注意大小寫(xiě));
- remap_tablespace=um_dev:um----->um_dev:導(dǎo)出表空間 ,um:導(dǎo)入表空間;
- remap_schema=u_um_dev:u_um ----> u_um_dev:導(dǎo)出用戶(hù) u_um:導(dǎo)入用戶(hù)。
- 命令示例:
impdp kf_gs_workflow_0604/a@gfmisdev directory='DUMP_DIR' DUMPFILE='GSU_WORKFLOW_20240604.dmp' LOGFILE='GSU_WORKFLOW_20240604.log' REMAP_SCHEMA=GSU_WORKFLOW:kf_gs_workflow_0604 REMAP_TABLESPACE=GRP:USERS
3.exp/expdp對(duì)比及示例
a. exp
可通過(guò) exp help=y 命令查詢(xún)相關(guān)參數(shù)
- imp常用參數(shù)說(shuō)明,可以根據(jù)需要指定不同的參數(shù)來(lái)控制導(dǎo)入的方式和內(nèi)容。
參數(shù) | 使用說(shuō)明 |
---|---|
TABLES | 指定要導(dǎo)出的表格。例如,TABLES=table1,table2。 |
FILE | 指定導(dǎo)出文件的路徑和名稱(chēng)。例如,F(xiàn)ILE=/path/to/export.dmp。 |
LOG | 指定導(dǎo)出過(guò)程的日志文件路徑和名稱(chēng)。例如,LOG=/path/to/export.log。 |
QUERY | 指定要導(dǎo)出數(shù)據(jù)的查詢(xún)條件。例如,QUERY=“ SELECT * FROM TABLE WHERE column_name=‘value’”。 |
ROWS | 控制是否導(dǎo)入表中的行數(shù)據(jù)??梢允荵或N。 |
STATISTICS | 指定是否導(dǎo)出統(tǒng)計(jì)信息??梢允茿LL、ESTIMATE或NONE。 |
GRANTS | 指定是否導(dǎo)出對(duì)象的授權(quán)信息??梢允荵、N或FULL。 |
CONSISTENT | 指定是否導(dǎo)出一致性視圖??梢允荵或N。 |
INDEXES | 指定是否導(dǎo)出索引??梢允荵或N。 |
COMPRESS | 指定是否壓縮導(dǎo)出文件??梢允荵或N。 |
- 命令格式:
exp username/password@[database] FILE=[導(dǎo)出文件路徑] TABLES=[要導(dǎo)出的表名]
- 命令示例:
--完全導(dǎo)出: exp user/password@SID file=E:/test/dmp/kf_workflow_0512.dmp full=y --導(dǎo)出A、B表 exp user/password@SID file= E:/test/dmp/kf_workflow_0512.dmp tables=(A,B)
b.expdp
可通過(guò) expdp help=y 命令查詢(xún)相關(guān)參數(shù)
- imp常用參數(shù)說(shuō)明,可以根據(jù)需要指定不同的參數(shù)來(lái)控制導(dǎo)入的方式和內(nèi)容。
參數(shù) | 使用說(shuō)明 |
---|---|
SCHEMAS | 指定要導(dǎo)出的模式名。例如,SCHEMAS=schema1,schema2。 |
INCLUDE | 指定要包括的對(duì)象類(lèi)型。例如,INCLUDE=TABLE,VIEW將只導(dǎo)出表和視圖。 |
EXCLUDE | 指定要排除的對(duì)象類(lèi)型。例如,EXCLUDE=INDEX將排除索引的導(dǎo)出。 |
DIRECTORY | 指定導(dǎo)出文件的目錄對(duì)象。例如,DIRECTORY=datapump_dir。 |
DUMPFILE | 指定導(dǎo)出文件的名稱(chēng)。例如,DUMPFILE=export.dmp。 |
LOGFILE | 指定導(dǎo)出操作的日志文件名稱(chēng)。例如,LOGFILE=export.log。 |
PARALLEL | 指定并行導(dǎo)出的進(jìn)程數(shù)。 |
DIRECTORY | 指定導(dǎo)出文件的目錄對(duì)象。例如,DIRECTORY=datapump_dir。 |
COMPRESSION | 指定導(dǎo)出文件是否壓縮。可以是ALL、DATA_ONLY、METADATA_ONLY或NONE。 |
CONTENT | 指定導(dǎo)出內(nèi)容??梢允茿LL、DATA_ONLY、METADATA_ONLY或METADATA_ONLY_EXCLUDING_DATA。 |
QUERY | 指定導(dǎo)出的數(shù)據(jù)查詢(xún)條件。例如,QUERY=“WHERE column_name=‘value’”。 |
FILESIZE | 指定導(dǎo)出文件的最大文件大小。 |
JOB_NAME | 指定導(dǎo)出作業(yè)的名稱(chēng)。 |
VERSION | 給定系統(tǒng)版本號(hào)的對(duì)象。例如,VERSION=SCN,SCN為版本號(hào)。 |
- 命令格式:
expdp 用戶(hù)名/密碼@數(shù)據(jù)庫(kù)實(shí)例 DIRECTORY=目錄名稱(chēng) DUMPFILE=導(dǎo)出文件名.dmp EXCLUDE=TABLE:"IN ('table1','table2')" INCLUDE=TABLE:"IN ('EMPLOYEES', 'DEPARTMENTS')" FULL=Y
- 命令示例:
--按用戶(hù)導(dǎo) expdp user/password@SID schemas=u_mom_um dumpfile=expdp.dmp directory=dmp logfile=expdlog.log; --按表名導(dǎo) expdp user/password@SID tables=test1,test2 dumpfile=expdp.dmp directory=dmp logfile=expdlog.log; --按查詢(xún)條件導(dǎo) expdp user/password@SID directory=dmp dumpfile=expdp.dmp Tables=test query='WHERE id<20' logfile=expdlog.log; --按表空間導(dǎo) expdp user/password@SID directory=dmp dumpfile=expdp.dmp TABLESPACES={#表空間1},{#表空間2} logfile=expdlog.log; --導(dǎo)整個(gè)庫(kù) expdp user/password@SID directory=dmp dumpfile=expdp.dmp FULL=y logfile=expdlog.log;
- 具體命令示例:
--按照表空間導(dǎo) expdp user/password@SID directory=DMPDATA dumpfile=tbs2022.dmp TABLESPACES=tbs logfile=expdlog.log; --用EXCLUDE、INCLUDE時(shí),對(duì)應(yīng)的符號(hào)需要進(jìn)行轉(zhuǎn)譯 expdp GSU_ELEMENT/yth2023 schemas=GSU_ELEMENT dumpfile=GSU_ELEMENT_20240604.dmp EXCLUDE=TABLE:\"IN\(\'GFM_TB_RESULT\',\'GAP_PAYEE_ACCOUNT\'\)\" directory=GSZX logfile=GSU_ELEMENT_20240604.log
3.其他事項(xiàng)
- 在執(zhí)行導(dǎo)入導(dǎo)出時(shí)需要進(jìn)入oracle去執(zhí)行。
--linux su oracle ;--到這就可執(zhí)行導(dǎo)入導(dǎo)出 sqlplus / as sysdba; --windows: win + r,cmd,enter; --到這可執(zhí)行導(dǎo)入導(dǎo)出 sqlplus 用戶(hù)名/口令@數(shù)據(jù)庫(kù)名 as sysdba;
- 在執(zhí)行導(dǎo)入、導(dǎo)出的命令時(shí),可通過(guò)nohup來(lái)執(zhí)行,nohup是一個(gè)在Unix和類(lèi)Unix操作系統(tǒng)上用來(lái)忽略HUP(掛起)信號(hào)并運(yùn)行命令的實(shí)用程序。通過(guò)使用nohup,您可以使命令在后臺(tái)運(yùn)行,即使當(dāng)前Shell終端窗口關(guān)閉,也能繼續(xù)運(yùn)行。
- 使用exp 導(dǎo)出文件需要使用imp導(dǎo)入,數(shù)據(jù)泵類(lèi)型需要一致。
- 用
EXCLUDE、INCLUDE
時(shí),對(duì)應(yīng)的符號(hào)需要進(jìn)行轉(zhuǎn)譯;
三、執(zhí)行導(dǎo)入導(dǎo)出前置條件
如果數(shù)據(jù)庫(kù)用戶(hù)已經(jīng)存在,并有相關(guān)目錄跳過(guò)此步驟。
1.創(chuàng)建角色并授權(quán)
--創(chuàng)建角色 create user orcl identified by orclorcl; --授權(quán) grant dba ,connect ,resource ,select any table,create view to orcl; --查看用戶(hù)創(chuàng)建情況 select * from all_users;
2.創(chuàng)建目錄映射
CREATE DIRECTORY my_dir AS '/path/to/directory';
- 查詢(xún)現(xiàn)有目錄是否滿(mǎn)足條件
select * from DBA_DIRECTORIES;
- 創(chuàng)建文件夾
--linux mkdir /data/u01/dmpdata --windows下自行創(chuàng)建文件,記下目錄
- 文件夾創(chuàng)建后給oracle用戶(hù)授權(quán)
chown -R oracle /data/u01/dmpdata
- 數(shù)據(jù)庫(kù)里執(zhí)行SQL創(chuàng)建導(dǎo)入/導(dǎo)出目錄(目錄映射)
--目錄對(duì)象在數(shù)據(jù)庫(kù)中注冊(cè),并映射到實(shí)際物理目錄的路徑。 create or replace directory DMPDATA as '/data/u01/dmpdata';
- 為建立的目錄賦權(quán)限,須要以其余用戶(hù)運(yùn)行,建議在sys用戶(hù)下執(zhí)行
grant read,write on directory DMPDATA to {#用戶(hù)名};
總結(jié)
到此這篇關(guān)于Oracle導(dǎo)入導(dǎo)出dmp文件的方法對(duì)比及示例的文章就介紹到這了,更多相關(guān)Oracle導(dǎo)入導(dǎo)出dmp文件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
oracle如何恢復(fù)被覆蓋的存儲(chǔ)過(guò)程
如果你不小心覆蓋了之前的存儲(chǔ)過(guò)程,那得趕緊閃回,時(shí)長(zhǎng)越長(zhǎng)閃回的可能性越小,下面為大家介紹下恢復(fù)原理2014-05-05ORACLE中查找定位表最后DML操作的時(shí)間小結(jié)
在Oracle數(shù)據(jù)庫(kù)中,如何查找,定位一張表最后一次的DML操作的時(shí)間呢? 方式有三種,不過(guò)都有一些局限性,下面簡(jiǎn)單的解析、總結(jié)一下。感興趣的朋友跟隨小編一起看看吧2018-11-11Oracle?ORA-00257:?歸檔程序錯(cuò)誤解決辦法
今天發(fā)現(xiàn)oracle數(shù)據(jù)庫(kù)連不上,報(bào)錯(cuò):ORA-00257:歸檔程序錯(cuò)誤,在釋放之前僅限于內(nèi)部連接?馬上聯(lián)想到可能是空間滿(mǎn)了,一看磁盤(pán)目錄果然,這篇文章主要給大家介紹了關(guān)于Oracle?ORA-00257:歸檔程序錯(cuò)誤的解決辦法,需要的朋友可以參考下2024-04-04Oracle根據(jù)時(shí)間查詢(xún)的一些常見(jiàn)情況匯總
根據(jù)時(shí)間查詢(xún)是我們?nèi)粘i_(kāi)發(fā)中經(jīng)常會(huì)遇到的一個(gè)功能,下面這篇文章主要給大家介紹了關(guān)于Oracle根據(jù)時(shí)間查詢(xún)的一些常見(jiàn)情況,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-08-08Oracle中sql語(yǔ)句(+)符號(hào)代表連接的使用講解
今天小編就為大家分享一篇關(guān)于Oracle中sql語(yǔ)句(+)符號(hào)代表連接的使用講解,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-02-02Oracle數(shù)據(jù)庫(kù)下載與安裝的完整步驟
這篇文章主要給大家介紹了關(guān)于Oracle數(shù)據(jù)庫(kù)下載與安裝的相關(guān)資料,文中通過(guò)圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03