oracle中exp,imp的使用詳解_oracle

來源:互聯網
上載者:User

基本文法和執行個體: 
    1、EXP:
      有三種主要的方式(完全、使用者、表)
      1、完全:
          EXP SYSTEM/MANAGER BUFFER=64000 FILE=C:\FULL.DMP FULL=Y
          如果要執行完全匯出,必須具有特殊的許可權
      2、使用者模式:
          EXP SONIC/SONIC    BUFFER=64000 FILE=C:\SONIC.DMP OWNER=SONIC
          這樣使用者SONIC的所有對象被輸出到檔案中。
      3、表模式:
          EXP SONIC/SONIC    BUFFER=64000 FILE=C:\SONIC.DMP OWNER=SONIC TABLES=(SONIC)
          這樣使用者SONIC的表SONIC就被匯出
    2、IMP:
      具有三種模式(完全、使用者、表)
      1、完全:
          IMP SYSTEM/MANAGER BUFFER=64000 FILE=C:\FULL.DMP FULL=Y
      2、使用者模式:
          IMP SONIC/SONIC    BUFFER=64000 FILE=C:\SONIC.DMP FROMUSER=SONIC TOUSER=SONIC
          這樣使用者SONIC的所有對象被匯入到檔案中。必須指定FROMUSER、TOUSER參數,這樣才能匯入資料。
      3、表模式:
          EXP SONIC/SONIC    BUFFER=64000 FILE=C:\SONIC.DMP OWNER=SONIC TABLES=(SONIC)
          這樣使用者SONIC的表SONIC就被匯入。

ORACLE資料庫有兩類備份方法。第一類為物理備份,該方法實現資料庫的完整恢複,但資料庫必須運行在歸擋模式下(業務資料庫在非歸擋模式下運行),且需要極大的外部存放裝置,例如磁帶庫;第二類備份方式為邏輯備份,業務資料庫採用此種方式,此方法不需要資料庫運行在歸擋模式下,不但備份簡單,而且可以不需要外部存放裝置。
  
  資料庫邏輯備份方法
  
  ORACLE資料庫的邏輯備份分為三種模式:表備份、使用者備份和完全備份。
  
  表模式
  
  備份某個使用者模式下指定的對象(表)。業務資料庫通常採用這種備份方式。
  
  若備份到本地檔案,使用如下命令:
  
  exp icdmain/icd rows=y indexes=n compress=n buffer=65536
  feedback=100000 volsize=0
  file=exp_icdmain_csd_yyyymmdd.dmp
  log=exp_icdmain_csd_yyyymmdd.log
  tables=icdmain.commoninformation,icdmain.serviceinfo,icdmain.dealinfo
  
  若直接備份到磁帶裝置,使用如下命令:
  exp icdmain/icd rows=y indexes=n compress=n buffer=65536
  feedback=100000 volsize=0
  file=/dev/rmt0
  log=exp_icdmain_csd_yyyymmdd.log
  tables=icdmain.commoninformation,icdmain.serviceinfo,icdmain.dealinfo
  
  註:在磁碟空間允許的情況下,應先備份到本機伺服器,然後再拷貝到磁帶。出於速度方面的考慮,盡量不要直接備份到磁帶裝置。
  
  使用者模式
  
  備份某個使用者模式下的所有對象。業務資料庫通常採用這種備份方式。
  若備份到本地檔案,使用如下命令:
  exp icdmain/icd owner=icdmain rows=y indexes=n compress=n buffer=65536
  feedback=100000 volsize=0
  file=exp_icdmain_yyyymmdd.dmp
  log=exp_icdmain_yyyymmdd.log
  若直接備份到磁帶裝置,使用如下命令:
  exp icdmain/icd owner=icdmain rows=y indexes=n compress=n buffer=65536
  feedback=100000 volsize=0
  file=/dev/rmt0
  log=exp_icdmain_yyyymmdd.log
  註:如果磁碟有空間,建議備份到磁碟,然後再拷貝到磁帶。如果資料庫資料量較小,可採用這種辦法備份。
 
  以下為詳細的匯入匯出執行個體:

  一、資料匯出:
 
  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、 將資料庫中的表table1 、table2匯出
 
  exp system/manager@TEST file=d:\daochu.dmp tables=(table1,table2)
 
  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
 
  上面可能有點問題,因為有的表已經存在,然後它就報錯,對該表就不進行匯入。
 
  在後面加上 ignore=y 就可以了。
 
  2 將d:\daochu.dmp中的表table1 匯入
 
  imp system/manager@TEST  file=d:\daochu.dmp  tables=(table1)
 
  基本上上面的匯入匯出夠用了。不少情況我是將表徹底刪除,然後匯入。
 
  注意:
 
  你要有足夠的許可權,許可權不夠它會提示你。
 
  資料庫時可以連上的。可以用tnsping TEST 來獲得資料庫TEST能否連上。

oracleimp/exp命令使用

舉例匯出資料庫服務abc,使用者user,密碼psd下的table1,table2,table3表到d:\data目錄下,匯出檔案名稱為test.dmp,語句為:

  exp user/psd@adc file=d:\data\test.dmp tables=(table1,table2,table3) 。

  將上述檔案恢複的語句為:

  exp user/psd@adc full=y file=d:\data\test.dmp.注意:如果將備份檔案中的所有表恢複,需要加上full=y。如果只須只需要恢複table1,則語句為:

  exp user/psd@adc file=d:\data\test.dmp tables=table1。即必須指明倒入那些資訊,要麼全部要麼部分表。

  以下是摘抄的別人的經驗。

  執行環境:可以在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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

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.