執行環境:可以在sqlplus.exe或者dos(命令行)中執行,
dos中可以執行時由於 在oracle 8i 中 安裝目錄\ora81\bin被設定為全局路徑,
該目錄下有exp.exe與imp.exe檔案被用來執行導入導出。
oracle用java編寫,sqlplus.exe、exp.exe、imp.exe這兩個檔案有可能是被包裝後的類檔案。
sqlplus.exe調用exp.exe、imp.exe所包裹的類,完成導入導出功能。
下面介紹的是導入導出的實例。
數據導出:
1 將資料庫test完全導出,用戶名system 密碼manager 導出到d:\daochu.dmp中
exp system/manager@test file=d:\daochu.dmp full=y
2 將資料庫中system用戶與sys用戶的表導出
exp system/manager@test file=d:\daochu.dmp owner=(system,sys)
3 將資料庫中的表inner_notify、notify_staff_relat導出
exp aichannel/aichannel@testdb2 file= d:\data\newsmgnt.dmp tables=(inner_notify,notify_staff_relat)
4 將資料庫中的表table1中的欄位filed1以"00"打頭的數據導出
exp system/manager@test file=d:\daochu.dmp tables=(table1) query=\" where filed1 like '00%'\"
上面是常用的導出,對於壓縮,既用winzip把dmp檔案可以很好的壓縮。
也可以在上面命令後面 加上 compress=y 來實現。
數據的導入
1 將d:\daochu.dmp 中的數據導入 test資料庫中。
imp system/manager@test file=d:\daochu.dmp
imp aichannel/aichannel@hust full=y file=file= d:\data\newsmgnt.dmp ignore=y
上面可能有點問題,因為有的表已經存在,然後它就報錯,對該表就不進行導入。
在後面加上 ignore=y 就可以了。
2 將d:\daochu.dmp中的表table1 導入
imp system/manager@test file=d:\daochu.dmp tables=(table1)
基本上上面的導入導出夠用了。不少情況要先是將表徹底刪除,然後導入。
注意:
操作者要有足夠的許可權,許可權不夠它會提示。
資料庫時可以連上的。可以用tnsping test 來獲得資料庫test能否連上。
附錄一:
給用戶增加導入數據許可權的操作
第一,啟動sql*puls
第二,以system/manager登入
第三,create user 用戶名 identified by 密碼 (如果已經創建過用戶,這步可以省略)
第四,grant create user,drop user,alter user ,create any view ,
drop any view,exp_full_database,imp_full_database,
dba,connect,resource,create session to 用戶名字
第五, 運行-cmd-進入dmp檔案所在的目錄,
imp userid=system/manager full=y file=*.dmp
或者 imp userid=system/manager full=y file=filename.dmp
執行示例:
f:\work\oracle_data\backup>imp userid=test/test full=y file=inner_notify.dmp
螢幕顯示
import: release 8.1.7.0.0 - production on 星期四 2月 16 16:50:05 2006
(c) copyright 2000 oracle corporation. all rights reserved.
連線到: oracle8i enterprise edition release 8.1.7.0.0 - production
with the partitioning option
jserver release 8.1.7.0.0 - production
經由常規路徑導出由export:v08.01.07創建的檔案
已經完成zhs16gbk字元集和zhs16gbk nchar 字元集中的導入
導出伺服器使用utf8 nchar 字元集 (可能的ncharset轉換)
. 正在將aichannel的對象導入到 aichannel
. . 正在導入表 "inner_notify" 4行被導入
準備啟用約束條件...
成功終止導入,但出現警告。
附錄二:
oracle 不允許直接改變表的擁有者, 利用export/import可以達到這一目的.
先建立import9.par,
然後,使用時命令如下:imp parfile=/filepath/import9.par
例 import9.par 內容如下:
fromuser=tgpms
touser=tgpms2 (註:把表的擁有者由fromuser改為touser,fromuser和touser的用戶可以不同)
rows=y
indexes=y
grants=y
constraints=y
buffer=409600
file==/backup/ctgpc_20030623.dmp
log==/backup/import_20030623.log