Oracle imp exp命令詳解,impexp

來源:互聯網
上載者:User

Oracle imp exp命令詳解,impexp

如何在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 將資料庫orcl(執行個體)完全匯出(只有DBA才可以,普通使用者不可以),使用者名稱system 密碼manager 匯出到d:\daochu.dmp中  
       exp system/manager@orcl file=d:\daochu.dmp full=y 
   2 將資料庫中system使用者與sys使用者的表匯出  
       exp system/manager@orcl file=d:\daochu.dmp owner=(system,sys) 
   3 將資料庫中的表inner_notify、notify_staff_relat匯出   
      exp scott/tiger@orcl file= d:\test.dmp tables=(inner_notify,notify_staff_relat)  
   4 將資料庫中的表table1中的欄位filed1以"00"打頭的資料匯出  
      exp system/manager@orcl 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 system/manager@test full=y  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*plus 
第二,以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

 

 附錄二: 
   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      擁有可傳輸資料表空間集中資料的使用者

---------------------------------------------------------------------------------------

如果只匯出表的結構(建表語句),不匯出表的資料,可用Tools--Export User Objects

選中要匯出的表,設定好匯出的路徑和各個參數後,點擊Export就OK

PS:這種方式只能匯出屬於這個使用者的表,其他使用者的表不能匯出,建議用命令列匯出(exp, imp)

如果想將表結構,表的資料,觸發器,函數之類的全部匯出,可用Tools--Export Tables

選中要匯出的表(可選多個),匯出方式有三種:

Oracle Export,Sql Insert,pl/sql developer

第一種是匯出為.dmp的檔案格式,.dmp檔案是二進位的,可以跨平台,還能包含許可權,效率也很不錯,用的最廣。

第二種是匯出為.sql檔案的,選中create tables選項,where clause 裡寫入 where rownum<1可用文字編輯器查看,通用性比較好,但效率不如第一種,適合小資料量匯入匯出。尤其注意的是表中不能有大欄位(blob,clob),如果有,會提示不能匯出,可以用第一種和第三種方式匯出。

第三種是匯出為.pde格式的,.pde為Pl/sql developer自有的檔案格式,只能用Pl/sql developer自己匯入匯出;不能用編輯器查看,效率不知道怎麼樣

PS:只有“Oracle Export”方式匯出再匯入後,表結構和索引結構沒有發生變化,另兩種方式都改變了索引類型。

匯入的情況和匯出一樣

在表的所有者不能改變的情況下,可以使用匯入匯出表結構和表資料的方法,將表移動到你想要的所有者下(註:特別是建立表的時候如果以sysdba的身份登入的話,所有表的所有者都為sys,此時會對你用c#訪問資料庫產生麻煩,我在我的另一篇文章中也提到《.NET串連Oracle資料庫的錯誤,pl/sql中的myobjects過濾器 》),此時你只能用這種方法改變所有者。

匯入表結構:

執行剛剛匯出的sql檔案,記住要刪掉table前的使用者名稱,比如以前這表名為sys.tablename,必須刪除sys

匯入表資料:

執行剛剛匯出的sql檔案

 


oracle exp/imp命令用法?

通過輸入 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 必須是命令列中的第一個參數。
 
Oracle資料匯入匯出imp/exp命令 10g以上expdp/impdp命令 詳細的 詳細的

這個百度上一搜一大把,都說的很詳細,樓主沒搜過,
資料匯出:
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:datanewsmgnt.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=d:datanewsmgnt.dmp ignore=y
上面可能有點問題,因為有的表已經存在,然後它就報錯,對該表就不進行匯入。
在後面加上 ignore=y 就可以了。
2 將d:daochu.dmp中的表table1 匯入
imp system/manager@TEST file=d:daochu.dmp tables=(table1)

基本上上面的匯入匯出夠用了。不少情況要先是將表徹底刪除,然後匯入。

注意:
操作者要有足夠的許可權,許可權不夠它會提示。
資料庫時可以連上的。可以用tnsping TEST 來獲得資料庫TEST能否連上。

當然,上面的方法在匯出資料時可能會匯出很大的包,那是因為你的使用者可能在授權的時候授予了DBA的許可權,所以可以採用下面方法來進行Database Backup:

Database Backup
建議系統過渡後,每周進行一次備份。或者在資料表發生重大改變前,對要改變的資料表進行備份。
執行以下步驟,進行備份。
在命令列裡,敲入“cmd”,斷行符號,進入命令列視窗。
在視窗中,輸入:
exp mas/123456@mas

系統提示:輸入數組提取緩衝區大小: 4096 >
可以直接斷行符號;

系統提示:匯出檔案: EXPDAT.DMP>
此處輸入匯出檔案的位置,其路徑必須存在,Oracle在這裡不會自動建立路徑,但可以建立檔案名稱。備份檔案以dmp作為尾碼。
輸入內容如:e:\work\mas_db_090925v1.dmp 斷行符號

系統提示: (1)E(完整的資料庫),(2)U(使用者) 或 (3)T(表): (2)U > u
此處可以輸入u,也可以直接斷行符號,因為系統此時預設的是U

系統提示:匯出許可權(......餘下全文>>
 

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.