imp/exp命令 詳解(1)

csbwolf10發表於2010-03-11

--如何在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 wner=(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 - productionwith

the partitioning optionjserver 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
附錄三
EXP、IMP 命令詳解
命令詳解:
E:\>exp help=y

通過輸入 EXP 命令和使用者名稱/口令,您可以
在使用者 / 口令之後的命令:

例項: EXP SCOTT/TIGER
或者,您也可以通過輸入跟有各種引數的 EXP 命令來控制“匯出”的執行方式。
要指定引數,您可以使用關鍵字:
格式: EXP KEYWORD=value 或 KEYWORD=(value1,value2,...,valueN)
例項: EXP SCOTT/TIGER GRANTS=Y TABLES=(EMP,DEPT,MGR)
或 TABLES=(T1: P1,T1: P2),如果 T1 是分割槽表
USERID 必須是命令列中的第一個引數。
關鍵字      說明(預設)
---------------------------------------------------
USERID      使用者名稱/口令
FULL      匯出整個檔案 (N)
BUFFER      資料緩衝區的大小
OWNER      所有者使用者名稱列表
FILE      輸出檔案 (EXPDAT.DMP)
TABLES      表名列表
COMPRESS      匯入一個範圍 (Y)
RECORDLENGTH    IO 記錄的長度
GRANTS      匯出許可權 (Y)
INCTYPE      增量匯出型別
INDEXES      匯出索引 (Y)
RECORD      跟蹤增量匯出 (Y)
ROWS      匯出資料行 (Y)
PARFILE      引數檔名
CONSTRAINTS    匯出限制 (Y)
CONSISTENT      交叉表一致性
LOG      螢幕輸出的日誌檔案
STATISTICS      分析物件 (ESTIMATE)
DIRECT      直接路徑 (N)
TRIGGERS      匯出觸發器 (Y)
FEEDBACK      顯示每 x 行 (0) 的進度
FILESIZE      各轉儲檔案的最大尺寸
QUERY      選定匯出表子集的子句
下列關鍵字僅用於可傳輸的表空間
TRANSPORT_TABLESPACE    匯出可傳輸的表空間後設資料 (N)
TABLESPACES    將傳輸的表空間列表
E:\>imp help=y
可以通過輸入 IMP 命令和您的使用者名稱/口令
跟有您的使用者名稱 / 口令的命令:
例項: IMP SCOTT/TIGER
或者, 可以通過輸入 IMP 命令和各種自變數來控制“匯入”按照不同引數。
要指定引數,您可以使用關鍵字:
格式: IMP KEYWORD=value 或 KEYWORD=(value1,value2,...,vlaueN)
例項: IMP SCOTT/TIGER IGNORE=Y TABLES=(EMP,DEPT) FULL=N
或 TABLES=(T1: P1,T1: P2),如果 T1 是分割槽表
USERID 必須是命令列中的第一個引數。
關鍵字      說明(預設)
----------------------------------------------
USERID      使用者名稱/口令
FULL      匯入整個檔案 (N)
BUFFER      資料緩衝區大小
FROMUSER      所有人使用者名稱列表
FILE      輸入檔案 (EXPDAT.DMP)
TOUSER      使用者名稱列表
SHOW      只列出檔案內容 (N)
TABLES      表名列表
IGNORE      忽略建立錯誤 (N)
RECORDLENGTH    IO 記錄的長度
GRANTS      匯入許可權 (Y)
INCTYPE      增量匯入型別
INDEXES      匯入索引 (Y)
COMMIT      提交陣列插入 (N)
ROWS      匯入資料行 (Y)
PARFILE      引數檔名
LOG      螢幕輸出的日誌檔案
CONSTRAINTS    匯入限制 (Y)
DESTROY      覆蓋表空間資料檔案 (N)
INDEXFILE      將表/索引資訊寫入指定的檔案
SKIP_UNUSABLE_INDEXES    跳過不可用索引的維護 (N)
ANALYZE      執行轉儲檔案中的 ANALYZE 語句 (Y)
FEEDBACK      顯示每 x 行 (0) 的進度
TOID_NOVALIDATE    跳過指定型別 id 的校驗
FILESIZE      各轉儲檔案的最大尺寸
RECALCULATE_STATISTICS 重新計算統計值 (N)
下列關鍵字僅用於可傳輸的表空間
TRANSPORT_TABLESPACE    匯入可傳輸的表空間後設資料 (N)
TABLESPACES    將要傳輸到資料庫的表空間
DATAFILES      將要傳輸到資料庫的資料檔案
TTS_OWNERS      擁有可傳輸表空間集中資料的使用者
 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10113559/viewspace-629209/,如需轉載,請註明出處,否則將追究法律責任。

相關文章