blog結構圖:
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIn5GcuEmYzcjZ3ITO1kDMmNmYmZWNkJTN0QzNlZmYjJGOzADZfdWbp9CXt92Yu4GZjlGbh5SZslmZxl3Lc9CX6MHc0RHaiojIsJye.png)
SOURCE DB(虛拟機)
TARGET DB(虛拟機)
CLIENT(筆記本)
EXP/IMP
11.2.0.3.0
11.2.0.1.0
EXPDP/IMPDP
HOST IP
192.168.59.130
192.168.59.128
192.168.59.1
host 平台
記憶體
RHEL 6.5
MemTotal: 2.6g
windows XP
MemTotal: 2g
windows 8.1
MemTotal: 20g
DB VERSION
無
ORACLE_SID
orclasm
orcl
tnsname
orclxp
注意: 本實驗所有的代碼無特殊說明均在client用戶端執行
圖形關系如下:
首先來看這句話: expdp屬于服務端工具,而exp屬于用戶端工具,expdp生成的檔案預設是存放在服務端的,而exp生成的檔案是存放在用戶端的
來驗證exp和imp:
我們在client用戶端執行:
C:\Users\Administrator>exp lhr/lhr@orclasm tables=xb_log_lhr file=e:\e1.dmp log=E:\exp_table.log buffer=41943040
Export: Release 11.2.0.1.0 - Production on 星期二 2月 10 15:55:25 2015
Copyright (c) 1982, 2009, Oracle and/or its affiliates. All rights reserved.
連接配接到: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
With the Partitioning, Automatic Storage Management, OLAP, Data Mining
and Real Application Testing options
已導出 ZHS16GBK 字元集和 AL16UTF16 NCHAR 字元集
即将導出指定的表通過正常路徑...
. . 正在導出表 XB_LOG_LHR導出了 56 行
成功終止導出, 沒有出現警告。
C:\Users\Administrator>imp lhr/lhr@orclxp tables=xb_log_lhr file=e:\e1.dmp log=E:\exp_table.log buffer=41943040
Import: Release 11.2.0.1.0 - Production on 星期二 2月 10 15:59:42 2015
連接配接到: Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
經由正常路徑由 EXPORT:V11.02.00 建立的導出檔案
已經完成 ZHS16GBK 字元集和 AL16UTF16 NCHAR 字元集中的導入
. 正在将 LHR 的對象導入到 LHR
. . 正在導入表 "XB_LOG_LHR"導入了 56 行
成功終止導入, 沒有出現警告。
而檔案也的确是在本機的:
根據expdp的文法,我們執行如下腳本:
C:\Users\Administrator>expdp lhr/lhr@orclasm directory=DATA_PUMP_DIR dumpfile=exptable.dmp TABLES=xb_log_lhr LOGFILE=expdp_table.log
Export: Release 11.2.0.1.0 - Production on 星期二 2月 10 16:37:40 2015
啟動 "LHR"."SYS_EXPORT_TABLE_01": lhr/********@orclasm directory=DATA_PUMP_DIR dumpfile=exptable.dmp TABLES=xb_log_lhr LOGFILE=expdp_table.log
正在使用 BLOCKS 方法進行估計...
處理對象類型 TABLE_EXPORT/TABLE/TABLE_DATA
使用 BLOCKS 方法的總估計: 64 KB
處理對象類型 TABLE_EXPORT/TABLE/TABLE
處理對象類型 TABLE_EXPORT/TABLE/COMMENT
處理對象類型 TABLE_EXPORT/TABLE/INDEX/INDEX
處理對象類型 TABLE_EXPORT/TABLE/INDEX/FUNCTIONAL_INDEX/INDEX
處理對象類型 TABLE_EXPORT/TABLE/INDEX/STATISTICS/INDEX_STATISTICS
處理對象類型 TABLE_EXPORT/TABLE/INDEX/STATISTICS/FUNCTIONAL_INDEX/INDEX_STATISTICS
處理對象類型 TABLE_EXPORT/TABLE/TRIGGER
處理對象類型 TABLE_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS
. . 導出了 "LHR"."XB_LOG_LHR" 18.75 KB 56 行
已成功加載/解除安裝了主表 "LHR"."SYS_EXPORT_TABLE_01"
******************************************************************************
LHR.SYS_EXPORT_TABLE_01 的轉儲檔案集為:
/u01/app/oracle/admin/orclasm/dpdump/exptable.dmp
作業 "LHR"."SYS_EXPORT_TABLE_01" 已于 16:38:00 成功完成
C:\Users\Administrator>
在伺服器端檢視可知,檔案是存放在linux伺服器端的:
[oracle@rhel6_lhr dpdump]$ ll
total 156
-rw-r--r-- 1 oracle asmadmin 1391 Feb 10 16:38 expdp_table.log
-rw-r----- 1 oracle asmadmin 151552 Feb 10 16:38 exptable.dmp
[oracle@rhel6_lhr dpdump]$ pwd
/u01/app/oracle/admin/orclasm/dpdump
[oracle@rhel6_lhr dpdump]$
而在這種情況下必須将exptable.dmp 拷貝到windows XP上的相應目錄下才能使用impdp來進行導入,如下利用ftp下載下傳:
将exptable.dmp放到windows XP下的虛拟機裡:
C:\Users\Administrator>sqlplus lhr/lhr@orclxp
SQL*Plus: Release 11.2.0.1.0 Production on 星期二 2月 10 16:46:37 2015
Copyright (c) 1982, 2010, Oracle. All rights reserved.
連接配接到:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
SQL> set line 9999
SQL> SELECT * FROM dba_directories d WHERE d.directory_name='DATA_PUMP_DIR';
OWNER DIRECTORY_NAME DIRECTORY_PATH
------------------------------ ------------------------------ ---------------------------------------------------------------------
SYS DATA_PUMP_DIR F:\app\oracle\admin\orcl\dpdump\
SQL>
然後再進行導入操作:
C:\Users\Administrator>impdp lhr/lhr@orclxp directory=DATA_PUMP_DIR dumpfile=exptable.dmp LOGFILE=impdp_table.log
Import: Release 11.2.0.1.0 - Production on 星期二 2月 10 16:50:46 2015
已成功加載/解除安裝了主表 "LHR"."SYS_IMPORT_FULL_01"
啟動 "LHR"."SYS_IMPORT_FULL_01": lhr/********@orclxp directory=DATA_PUMP_DIR dumpfile=exptable.dmp LOGFILE=impdp_table.log
. . 導入了 "LHR"."XB_LOG_LHR" 18.75 KB 56 行
作業 "LHR"."SYS_IMPORT_FULL_01" 已經完成。
日志檔案路徑:
這樣操作是否非常麻煩,那麼如何将生成的檔案放在目标資料庫而不放在源資料庫呢,在expdp中使用network_link。
SQL*Plus: Release 11.2.0.1.0 Production on 星期二 2月 10 16:55:43 2015
SQL> create public database link dblk_orclasm connect to lhr identified by lhr using 'orclasm' ;
資料庫連結已建立。
SQL> SELECT count(1) FROM xb_log_lhr@dblk_orclasm;
COUNT(1)
----------
56
SQL> SELECT count(1) FROM xb_log_lhr;
SELECT count(1) FROM xb_log_lhr
*
第 1 行出現錯誤:
ORA-00942: 表或視圖不存在
SQL> exit
從 Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options 斷開
注意這裡的連接配接辨別符是orclxp,即連接配接到windows xp系統,是target庫。
C:\Users\Administrator>expdp lhr/lhr@orclxp directory=DATA_PUMP_DIR dumpfile=exptable.dmp TABLES=xb_log_lhr network_link=dblk_orclasm LOGFILE=expdp_table.log
Export: Release 11.2.0.1.0 - Production on 星期二 2月 10 17:07:35 2015
啟動 "LHR"."SYS_EXPORT_TABLE_01": lhr/********@orclxp directory=DATA_PUMP_DIR dumpfile=exptable.dmp TABLES=xb_log_lhr network_link=dblk_orclasm LOGFILE=expdp_table.log
F:\APP\ORACLE\ADMIN\ORCL\DPDUMP\EXPTABLE.DMP
作業 "LHR"."SYS_EXPORT_TABLE_01" 已于 17:07:58 成功完成
結果:
Import: Release 11.2.0.1.0 - Production on 星期二 2月 10 17:13:20 2015
作業 "LHR"."SYS_IMPORT_FULL_01" 已經完成(于 17:13:23 完成)
采用network_link選項時,所有的操作均在target即目标端執行。
如果想不生成dmp檔案而直接将需要的資料導入garget資料庫,則直接使用impdp帶network_link ,這樣可以直接impdp,而繞過了expdp的步驟
C:\Users\Administrator>impdp lhr/lhr@orclxp network_link=dblk_orclasm directory=DATA_PUMP_DIR TABLES=xb_log_lhr PARALLEL=2
Import: Release 11.2.0.1.0 - Production on 星期二 2月 10 17:20:58 2015
啟動 "LHR"."SYS_IMPORT_TABLE_01": lhr/********@orclxp network_link=dblk_orclasm directory=DATA_PUMP_DIR TABLES=xb_log_lhr PARALLEL=2
. . 導入了 "LHR"."XB_LOG_LHR" 56 行
作業 "LHR"."SYS_IMPORT_TABLE_01" 已經完成(于 17:21:10 完成)
不生成資料檔案而直徑導入的方法類似于在目标庫中執行create table xxx as select * from xxx@dblink ,不過impdp+nework_link一并将資料及其索引觸發器等都導入到了目标端,這樣就省了很多事情了。