熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

ORACLE入門之ORACLE的備份

2013-11-13 16:07:30  來源: Oracle 

  一意義
  當我們使用一個數據庫時總希望數據庫的內容是可靠的正確的但由於計算機系統的故障(硬件故障網絡故障進程故障和系統故障)影響數據庫系統的操作影響數據庫中數據的正確性甚至破壞數據庫使數據庫中全部或部分數據丟失因此當發生上述故障後希望能重新建立一個完整的數據庫該處理稱為數據庫恢復恢復子系統是數據庫管理系統的一個重要組成部分恢復處理隨所發生的故障類型所影響的結構而變化
  二備份的方法
  ORACLE數據庫有三種標准的備份導出/導入(EXPORT/IMPORT) 冷備份熱備份
  導出備份是一種邏輯備份這種方法包括讀取一系列的數據庫日志並寫入文件中這些日志的讀取與其所處位置無關
  冷備份和熱備份是物理備份(也稱低級備份)它涉及到組成數據庫的文件但不考慮邏輯內容
  下面我們分別介紹一下這三種備份方法及其特點
  (一)導出/導入(EXPORT/IMPORT)
   EXPORT/IMPORT是用來將ORACLE中數據移出/移入數據庫
  EXPORT將數據庫中數據備份成一個二進制系統文件稱為導出轉儲文件(EXPORT DUMP FILE)並將重新生成數據庫寫入文件中
  它有三種模式
  a用戶模式導出用戶所有對象以及對象中的數據
  b表模式導出用戶所有表或者指定的表
  c整個數據庫導出數據庫中所有對象
  它的備份有三種類型
  a完全型(COMPLETE EXPORT)備份整個數據庫
  b積累型(COMULATIVE ERPORT)備份上一次積累型備份所改變的數據
  c增量型(INCREAMENTAL EXPORT)備份上一次備份後改變的數據
  EXPORT 的命令可以交互式進行各參數的具體含義見附錄
  在進行導出備份時我們要考慮一點問題那就是導出的一致性在導出過程 中導出每讀一次就讀取一個表因而盡管導出是在一個特點時自己開始的但不同的表讀取的時間不同因此導出開始讀一個表時此時表中的數據才是導出的數據這樣當大多數表按內部關鍵字和外部關鍵字相互聯系時在導出過程中這些相關聯表的改變就會導致導出的不一致性要避開這個我們可以將導出過程安排在不對表操作的時候進行另外當ORACLE中RESTRICTEP CONSISTENT 選項就可以保證導出數據一致性
  IMPORT導入
  導入的過程是導出的逆過程這個命令先讀取導出來的導出轉儲二進制文件並運行文件恢復對象用戶和數據
  IMPORT命令執行的方法和EXPORT方案有關
  如果EXPORT所實施的是完全型方案(FULL)則在IMPORT時所有的數據對象包括表空間數據文件用戶都會在導入時創建但考慮到數據庫中的物理布局預先創建表空間和用戶是有用的
  如果EXPORT使用的是INCREMENTAL/CUMULATIVE方式則需要預先設置好表空間用戶數據文件
  (二)冷備份
   冷備份發生在數據庫已經正常關閉的情況下當正常關閉時會提供給我們一個完整的數據庫
  數據庫使用的每個文件都被備份下來這些文件包括
   ☆所有數據文件
   ☆所有控制文件
   ☆所有聯機REDO LOG 文件
   ☆INITORA文件(可選)
   值得注意的是冷備份必須是數據庫關閉的情況下完成當數據庫開著的時候執行數據庫文件系統備份無效
  作冷備份一般步驟是
  正常關閉要備份的實例(instance);
  : 備份整個數據庫到一個目錄
  啟動數據庫
   SQLDBA>connect internal
  SQLDBA>shutdown normal
   SQLDBA>! cp
  或
  SQLDBA>!tar cvf /dev/rmt/ /wwwdg/oracle
   SQLDBA>startup
  (三)熱備份(ACHIRELOG)
  數據庫需要二十四小時運行而且隨時有新的數據加入數據丟失將影響整個公司采用archivelog mode物理備份
  ?設置數據庫為automatic archivelog mode
   #su oracle
   %svrmgrl
   svrmgrl>connect internal
   svrmgrl>startup mount
   svrmgrl>alter database archivelog
   svrmgrl>shutdown
   svrmgrl>exit
   %vi initoracleora
   加入log_archive_start = true # if you want automatic archiving
   log_archive_dest = $ORACLE_HOME/dbs/arch
   log_archive_format = log%sarc
   %dbstart
   %ps ef|grep arch
   oracle :: ? : ora_arch_oracle
   注oracle database is in automatic archivelog mode
  
  ?full offline entire database backup 當數據庫初始完成後 這份備份是將來備份的基礎它提供了所有與數據庫有關的拷貝
   %dbshut
   %cp /oracle/oradata/oracle/systemdbf
   /oracle/oradata/oracle/rbsdbf
   /oracle/oradata/oracle/tempdbf
   /oracle/oradata/oracle/toolsdbf
   /oracle/oradata/oracle/usersdbf
   /oraclecle/app/oracle/product//dbs/applicationdbf
   /oracle/app/oracle/product//dbs/apptmpspdbf
   /oracle/app/oracle/product//dbs/apprlbkspdbf
   /oracle/oradata/oracle/redooraclelog
   /oracle/oradata/oracle/controlctl
   /oracle/oradata/oracle/controlctl
   /oracle/oradata/oracle/controlctl
  
   %dbstart
   注:以上*dbf文件為數據文件*log文件為日志文件*ctl文件為控制文件
   %exit
   %tar uvf /dev/rmt/
   注:如果為oracle 則copy 相應的 data filesrelog filescontrol files
  
  每天做一次 partial online with archiving backups
   #su oracle
   %svrmgrl
   %svrmgrl>connect internal
   %svrmgrl>alter tablespace billsp begin backup
   %svrmgrl>alter tablespace billtmpsp begin backup
   %svrmgrl>alter tablespace billrlbksp begin backup
   %svrmgrl>alter tablespace system begin backup
   %svrmgrl>alter tablespace rbs begin backup
   %svrmgrl>alter tablespace temp begin backup
   %svrmgrl>alter tablespace tools begin backup
   %svrmgrl>alter tablespace users begin backup
   %svrmgrl>host cp all datafile to the backup storage #文件名如第一步中以dbf結尾的
   %svrmgrl>alter tablespace billsp end backup
   %svrmgrl>alter tablespace billtmpsp end backup
   %svrmgrl>alter tablespace billrlbksp end backup
   %svrmgrl>alter tablespace system end backup
   %svrmgrl>alter tablespace rbs end backup
   %svrmgrl>alter tablespace temp end backup
   %svrmgrl>alter tablespace tools end backup
   %svrmgrl>alter tablespace users end backup
  
  做一個sql文件如上所寫
  
  The billing system can recover to the point of failure when the failure occur
  
  七備份文件的恢復
   恢復文件
   以下是對"/etc/passwd"文件的恢復
    (放入正確的磁帶
    (運行以下命令恢復"/etc/passwd"文件
    # rsh www mt f /dev/rmt/ rew
   ( 找到最近的磁帶向前進帶到最近的"/etc/passwd"比如要找星期三的"/etc/passwd"文件運行如下命令)
    #rsh www mt f /dev/rmt/n fsf
    # ufsrestore if www:/dev/rmt/n
   ufsrestore > ls
   .
   etc/
   ufsrestore > cd etc
   ufsrestore > ls
   ./etc
   passwd
   ufsrestore > add passwd
   Warnign ./etcFile exists
   ufsrestore > verbose
   verbose mode on
   ufsrestore > extract
   Extract requested files
   You have not read any volumes yet .
   Unless you know which volume your file(s) are on you should start witch the last volume and work to wards the first.
   Specify next volume #
   extract file ./etc/passwd
   Add
From:http://tw.wingwit.com/Article/program/Oracle/201311/17847.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.