如何在oracle中導入dmp資料庫檔案

  oracle數據導入導出imp/exp就相當於oracle數據還原與備份。exp命令可以把數據從遠程資料庫伺服器導出到本地的dmp檔案,imp命令可以把dmp檔案從本地導入到遠處的資料庫伺服器中。 利用這個功能可以構建兩個相同的資料庫,一個用來測試,一個用來正式使用。
 
執行環境:可以在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