共計 2820 個字符,預計需要花費 8 分鐘才能閱讀完成。
exp/imp 與 expdp/impdp 區別是什么,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
在平常備庫和數據庫遷移的時候,當遇到大的數據庫的時候在用 exp 的時候往往是需要好幾個小時,耗費大量時間。oracle10g 以后可以用 expdp 來導出數據庫花費的時間要遠小于 exp 花費的時間,而且文件也要小很多。
1. 使用 expdp 要先在數據庫中創建 directory, 并給相應的用戶 read,write 權限.
SQL create dexp 和 empdp 的區別 irectory dmpdir as‘/u01/dmdir’;
SQL grant read,write on directory to test;
2. 常用導出方法
$expdp scott/tiger DUMPFILE=scott.dmp DIRECTORY=dmpdir SCHEMAS=test
$expdp
scott/tiger DUMPFILE=tmp_dump.dmp DIRECTORY=dmpdir
TABLES=(tmp_test:p1,tmp_test:p2) JOB_NAME=tmp_dump LOGFILE=tmp_dump.log
$expdp scott/tiger DUMPFILE=full.dmp DIRECTORY=dmpdir FULL=Y JOB_NAME=full
$expdp
scott/timer DUMPFILE=tmp_200703.dmp DIRECTORY=dmpdir TABLES=tmp
QUERY=\”where to_char\(create_time,\’yyyy-mm-dd\’\)\ \ 2007-04\ \
常用一些參數說明:
SCOTT/TIGER: 用戶 / 密碼(*)
DUMPFILE: 導出后的文件名(*)
DIRECTORY: 導出文件存放位置(位于服務器端)(*)
CONTENT: 導出文件中包含的內容(默認為:ALL, 可選 DATA_ONLY/METADATA_ONLY)
FILESIZE: 指定導出文件大小(單位為 bytes).
JOB_NAME: 此次導出進程使用的名稱, 方便跟蹤查詢(可選)
LOGFILE: 日志文件名(默認為:export.log)
INCLUDE: 導出時包含指定的類型
(例:INCLUDE=TABLE_DATA,
INCLUDE=TABLE: LIKE TAB%
INCLUDE=TABLE:”NOT LIKE‘TAB%’”…)
EXCLUDE: 導出時排除的數據類型(例:EXCLUDE=TABLE:EMP)
FULL: 全庫導出時使用(同 EXP 的 FULL, 默認為 N)
SCHEMA: 導出某一個 SCHEMA 下的所有數據
TABLES: 按表導出(這里的方法和 EXP 一樣)
TABLESPACE: 指定一個表空間導出.
QUERY: 按表導出時, 使用條件語句限定導出范圍(同 exp 中的 QUERY)
TRANSPORT_FULL_CHECK:
TRANSPORT_TABLESPACES:
FLASHBACK_SCN:
FLASHBACK_TIME:
PARALLEL: 并行操作
PARFILE:
NETWORK_LINK:
當 Data Pump Export (DPE) 運行時,按 Control-C;它將阻止消息在屏幕上顯示,但不停止導出進程本身。相反,它將顯示 DPE 提示符(如下所示)。進程現在被認為處于“交互式”模式:
Export
這種方法允許在這個 DPE 作業上輸入命令查詢及控制當前作業。
3. 您可以通過 PARALLEL 參數為導出使用一個以上的線程來顯著地加速作業。每個線程創建一個單獨的轉儲文件,因此參數 dumpfile 應當擁有和并行度一樣多的項目。您可以指定通配符作為文件名,而不是顯式地輸入各個文件名,例如:
expdp ananda/abc123 tables=CASES directory=DPDATA1 dumpfile=expCASES_%U.dmp parallel=4 job_name=Cases_Export
注意:dumpfile 參數擁有一個通配符 %U,它指示文件將按需要創建,格式將為 expCASES_nn.dmp,其中 nn 從 01 開始,然后按需要向上增加。
在并行模式下,狀態屏幕將顯示四個工作進程。(在默認模式下,只有一個進程是可見的)所有的工作進程同步取出數據,并在狀態屏幕上顯示它們的進度。
分離訪問數據文件和轉儲目錄文件系統的輸入 / 輸出通道是很重要的。否則,與維護 Data Pump 作業相關的開銷可能超過并行線程的效益,并因此而降低性能。并行方式只有在表的數量多于并行值并且表很大時才是有效的。
4.exp/imp 與 expdp/impdp 區別:
(1)
把用戶 usera 的對象導到用戶 userb, 用法區別在于 fromuser=usera touser=userb
,remap_schema=’usera’: usera’。例如:imp system/passwd fromuser=usera
touser=userb file=/oracle/exp.dmp log=/oracle/exp.log;
impdp system/passwd directory=expdp dumpfile=expdp.dmp remap_schema=’usera’: userb’logfile=/oracle/exp.log;
(2) 更換表空間,用 exp/imp 的時候,要想更改表所在的表空間,需要手工去處理一下,
如 alter table xxx move tablespace_new 之類的操作。
用 impdp 只要用 remap_tablespace=’tabspace_old’: tablespace_new’
(3) 當指定一些表的時候,使用 exp/imp 時,tables 的用法是 tables=(‘table1′,’table2′,’table3′)。
expdp/impdp 的用法是 tables=’table1′,’table2′,’table3′
(4) 是否要導出數據行
exp(ROWS=Y 導出數據行,ROWS=N 不導出數據行)
expdp content(ALL: 對象+導出數據行,DATA_ONLY:只導出對象,METADATA_ONLY:只導出數據的記錄)
(5) expdp 是 [10g] 的新特性而且只能在服務器執行。而 exp/imp 是通用的。
(6)
oracle11g 中有個新特性,當表無數據時,不分配 segment,以節省空間, 所以 exp 導不出空表。解決的辦法是用 expdp,
當然也可以設置 deferred_segment_creation 參數 或者 insert 一行,再 rollback,但是這樣很麻煩。
關于 exp/imp 與 expdp/impdp 區別是什么問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注丸趣 TV 行業資訊頻道了解更多相關知識。