oracle數據庫備份(imp,exp命令)

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
  注:如果磁盤有空間,建議備份到磁盤,然後再拷貝到磁帶。如果數據庫數據量較小,可採用這種辦法備份。
  
  完全模式
  
  備份完整的數據庫。業務數據庫不採用這種備份方式。備份命令爲:
  exp icdmain/icd rows=y indexes=n compress=n buffer=65536
  feedback=100000 volsize=0 full=y
  file=exp_fulldb_yyyymmdd.dmp(磁帶設備則爲/dev/rmt0)
  log=exp_fulldb_yyyymmdd.log
  對於數據庫備份,建議採用增量備份,即只備份上一次備份以來更改的數據。增量備份命令:
  exp icdmain/icd rows=y indexes=n compress=n buffer=65536
  feedback=100000 volsize=0 full=y inctype=incremental
  file=exp_fulldb_yyyymmdd.dmp(磁帶設備則爲/dev/rmt0)
  log=exp_fulldb_yyyymmdd.log
  注:關於增量備份必須滿足下列條件:
  1.只對完整數據庫備份有效,且第一次需要full=y參數,以後需要inctype=incremental參數。
  2. 用戶必須有EXP_FULL_DATABASE的系統角色。
  3. 話務量較小時方可採用數據庫備份。
  4. 如果磁盤有空間,建議備份到磁盤,然後再備份到磁帶。
  
  業務數據庫備份方法及週期
  
  用EXP進行備份前,先在SYS用戶下運行CATEXP.SQL文件(如果以前已運行該文件,則不要執行這個腳本)。
  沒有特殊說明,不允許在客戶端執行備份命令。
  備份命令參照表模式下的備份命令。
  從磁盤文件備份到磁帶
  如果首先備份到本地磁盤文件,則需要轉儲到磁帶設備上。
  1. 若需查看主機上配置的磁帶設備,使用如下命令:
  lsdev -Cc tape
  顯示的結果如下例所示:
  rmt0 Available 30-58-00-2,0 SCSI 4mm Tape Drive
  rmt1 Defined  30-58-00-0,0 SCSI 4mm Tape Drive
  標明Available的設備是可用的磁帶設備。
  2. 若需查看磁帶存儲的內容,使用如下命令:
  tar -tvf /dev/rmt0
  顯示的結果如下例所示:
  -rw-r--r-- 300 400 8089600 Jan 11 14:33:57 2001 exp_icdmain_20010111.dmp
  如果顯示類似如下內容,則表示該磁帶存儲的備份數據是從數據庫直接備份到磁帶上,而非從本地磁盤轉儲到磁帶的備份文件,因此操作系統無法識別。
  tar: 0511-193 An error occurred while reading from the media.
  There is an input or output error.
  或
  tar: 0511-169 A directory checksum error on media; -267331077 not equal to
  2
  5626.
  3. 對於新磁帶或無需保留現存數據的磁帶,使用如下命令:
  tar -cvf /dev/rmt0 exp_icdmain_yyyymmdd.dmp
  注:A. 該命令將無條件覆蓋磁帶上的現存數據。
  B. 文件名不允許包含路徑信息,如:/backup/exp_icdmain_yyyymmdd.dmp。
  4. 對於需要保留現存數據的磁帶,使用如下命令:
  tar -rvf /dev/rmt0 exp_icdmain_yyyymmdd.dmp
  注:該命令將文件exp_icdmain_yyyymmdd.dmp追加到磁帶的末端,不會覆蓋現存的數據。
  特別強調:如果備份時是從數據庫直接備份到磁帶上,則不可再向該磁帶上追加複製任何其他文件,否則該備份數據失效。
  5. 若需將轉儲到磁帶上的備份文件複製到本地硬盤,使用如下命令:
  A. 將磁帶上的全部文件複製到本地硬盤的當前目錄
  tar -xvf /dev/rmt0
  B. 將磁帶上的指定文件複製到本地硬盤的當前目錄
  tar -xvf /dev/rmt0 exp_icdmain_yyyymmdd.dmp
  備份時間安排
  由於備份時對系統I/O有較大影響,所以,建議在晚上11點以後進行備份工作。
  
  業務數據庫Oracle版本的恢復
  
  恢復方案需根據備份方案確定。由於業務數據庫採用表備份和用戶備份相結合的方案,所以業務數據庫的恢復需根據實際情況採用表恢復和用戶恢復相結合的方案。
  
  恢復方案
  
  數據庫的邏輯恢復分爲表恢復、用戶恢復、完全恢復三種模式。
  
  表模式
  
  此方式將根據按照表模式備份的數據進行恢復。
  A. 恢復備份數據的全部內容
  若從本地文件恢復,使用如下命令:
  imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n
  commit=y buffer=65536 feedback=100000 ignore=n volsize=0
  file=exp_icdmain_cs
  d_yyyymmdd.dmp
  log=imp_icdmain_csd_yyyymmdd.log
  若從磁帶設備恢復,使用如下命令:
  imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n
  commit=y buffer=65536 feedback=100000 ignore=n volsize=0 file=/dev/rmt0
  log=imp_icdmain_csd_yyyymmdd.log
  B. 恢復備份數據中的指定表
  若從本地文件恢復,使用如下命令:
  imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n
  commit=y buffer=65536 feedback=100000 ignore=n volsize=0
  file=exp_icdmain_cs
  d_yyyymmdd.dmp
  log=imp_icdmain_csd_yyyymmdd.log
  tables=commoninformation,serviceinfo
  若從磁帶設備恢復,使用如下命令:
  imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n
  commit=y buffer=65536 feedback=100000 ignore=n volsize=0
  file=/dev/rmt0
  log=imp_icdmain_csd_yyyymmdd.log
  tables=commoninformation,serviceinfo
  
  用戶模式
  
  此方式將根據按照用戶模式備份的數據進行恢復。
  A. 恢復備份數據的全部內容
  若從本地文件恢復,使用如下命令:
  imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n
  commit=y buffer=65536 feedback=100000 ignore=n volsize=0
  file=exp_icdmain_yy
  yymmdd.dmp
  log=imp_icdmain_yyyymmdd.log
  若從磁帶設備恢復,使用如下命令:
  imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n
  commit=y buffer=65536 feedback=100000 ignore=n volsize=0 file=/dev/rmt0
  log=imp_icdmain_yyyymmdd.log
  B. 恢復備份數據中的指定表
  若從本地文件恢復,使用如下命令:
  imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n
  commit=y buffer=65536 feedback=100000 ignore=n volsize=0
  file=exp_icdmain_yy
  yymmdd.dmp
  log=imp_icdmain_yyyymmdd.log
  tables=commoninformation,serviceinfo
  若從磁帶設備恢復,使用如下命令:
  imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n
  commit=y buffer=65536 feedback=100000 ignore=n volsize=0 file=/dev/rmt0
  log=imp_icdmain_yyyymmdd.log
  tables=commoninformation,serviceinfo
  
  完全模式
  
  如果備份方式爲完全模式,採用下列恢復方法:
  若從本地文件恢復,使用如下命令:
  imp system/manager rows=y indexes=n commit=y buffer=65536
  feedback=100000 ignore=y volsize=0 full=y
  file=exp_icdmain_yyyymmdd.dmp
  log=imp_icdmain_yyyymmdd.log
  若從磁帶設備恢復,使用如下命令:
  imp system/manager rows=y indexes=n commit=y buffer=65536
  feedback=100000 ignore=y volsize=0 full=y
  file=/dev/rmt0
  log=imp_icdmain_yyyymmdd.log
  
  參數說明
  
  1. ignore參數
  Oracle在恢復數據的過程中,當恢復某個表時,該表已經存在,就要根據ignore參數的設置來決定如何操作。
  若ignore=y,Oracle不執行CREATE TABLE語句,直接將數據插入到表中,如果插入的記錄違背了約束條件,比如主鍵約束,則出錯的記錄不會插入,但合法的記錄會添加到表中。
  若ignore=n,Oracle不執行CREATE TABLE語句,同時也不會將數據插入到表中,而是忽略該表的錯誤,繼續恢復下一個表。
  2. indexes參數
  在恢復數據的過程中,若indexes=n,則表上的索引不會被恢復,但是主鍵對應的唯一索引將無條件恢復,這是爲了保證數據的完整性。
  
  字符集轉換
  
  對於單字節字符集(例如US7ASCII),恢復時,數據庫自動轉換爲該會話的字符集(NLS_LANG參數);對於多字節字符集(例如ZHS16CGB231280),恢復時,應儘量使字符集相同(避免轉換),如果要轉換,目標數據庫的字符集應是輸出數據庫字符集的超集。
  
  恢復方法
  
  業務數據庫採用表恢復方案。在用IMP進行恢復前,先在SYS用戶下運行CATEXP.SQL文件(如果以前已運行該文件,則不要執行這個腳本),然後執行下列命令:
  IMP ICDMAIN/ICD FILE=文件名 LOG=LOG文件名 ROWS=Y
  COMMIT=Y BUFFER=Y IGNORE=Y TABLES=表名
  注:要恢復的表名參照備份的表名
  。恢復是在原表基礎上累加數據
  。沒有特殊說明,不允許在客戶端執行恢復命令

  將一個數據庫的某用戶的所有表導到另外數據庫的一個用戶下面的例子  
  exp userid=system/manager owner=username1 file=expfile.dmp
  imp userid=system/manager fromuser=username1 touser=username2 ignore=y file=expfile.dmp

  將一個數據庫的某用戶的所有表導到另外數據庫的一個用戶下面的例子  

  exp userid=system/manager owner=username1 file=expfile.dmp
  imp userid=system/manager fromuser=username1 touser=username2 ignore=y file=expfile.dmp

  ORACLE數據庫有兩類備份方法。第一類爲物理備份,該方法實現數據庫的完整恢復,但數據庫必須運行在歸擋模式下(業務數據庫在非歸擋模式下運行),且需要極大的外部存儲設備,例如磁帶庫;第二類備份方式爲邏輯備份,業務數據庫採用此種方式,此方法不需要數據庫運行在歸擋模式下,不但備份簡單,而且可以不需要外部存儲設備。
2007-5-27 10:59:01   
  
 2007-6-15 11:26:23    ORACLE EXP/IMP 參數詳解
EXP導出選項 
關鍵字
內容

USERID
運行導出命令的帳號的用戶名/口令

BUFFEER
用來取數據行的緩衝區的大小

FILE
導出轉儲文件的名字

COMPRESS
導出是否應該壓縮有碎片的段成一個範圍,這將會影響STORAGE子句

GRANTS
導出時否要導出數據庫對象上的授權

INDEXES
是否要導出表上的索引

ROWS
是否應導出行。如它爲‘N’,那麼在導出文件中僅生成數據庫對象的DDL

CONSSTRAINTS
是否導出表舊的約定條件

FULL
如設爲‘Y’,那麼將執行一個整個數據庫導出操作

OWNER
要導出的一系列數據庫帳號,然後執行這些帳號的USER導出操作

TABLES
要導出的一系列表;執行這些表的TABLE導出操作

RECORDLENGTH
轉儲導出文件日誌的長度(以字節爲單位),通常都使用缺省,除非要在兩個不同操作系統中傳遞導出文件

INCTYPE
正在執行的導出操作的類型(有效值有COMPLETE(缺省值),CUMULATIVE和IVCREMENTAL)

RECORD
在增量導出類型中的一個標記,標明是否將日誌存儲到數據字典中日誌導出的表中

PARFILE
要傳遞給導出的參數文件的名字。這個文件將包含所有參數的入口項

ANALYZE
標明是否將移對象的統計信息寫入導出轉儲文件中

CONSISTENT
標明是否保留所有導出對象的讀取一致複製

LOG
導出日誌將要寫入的文件的名字

MLS
標明是否要導出MLS 標號

MLS_LABEL
規定了MLS標號的格式




IMP導入選項 
關鍵字
內容

USERID
運行導入命令的帳號的用戶名/口令

BUFFEER
用來取數據行的緩衝區的大小

FILE
導入轉儲文件的名字

SHOW
規定文件內容是否被顯示,而不是被執行

EGNORE
標明在執行‘CREATE’命令時,是否忽略遇到的錯誤。如果正在導入的對象已經存在時,應使用這個參數

FULL
如設爲‘Y’,那麼將執行一個整個數據庫導入操作

FROMUSER
在FULL=N的情況下,纔有參數。它是一系列的數據庫帳號,其對象應從導出轉儲文件中讀取

TOUSER
一系列數據庫帳號,導出轉儲文件扣的對象將要導入這些帳號

GRANTS
導入時否要導入數據庫對象上的授權

INDEXES
是否要導入表上的索引

ROWS
是否應導入行。如它爲‘N’,那麼在導入文件中執行數據庫對象的DDL

TABLES
要導入的一系列表

RECORDLENGTH
轉儲導入文件日誌的長度(以字節爲單位),通常都使用缺省,除非要在兩個不同操作系統中傳遞導入文件

INCTYPE
正在執行的導入操作的類型(有效值有COMPLETE(缺省值),CUMULATIVE和IVCREMENTAL)

PARFILE
要傳遞給導入的參數文件的名字。這個文件將包含所有參數的入口項

ANALYZE
標明是否將移對象的統計信息寫入導入轉儲文件中

LOG
導入日誌將要寫入的文件的名字

MLS
標明是否要導入MLS 標號

INDEXFILE
不執行導入動作,只生成建索引的文本
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章