專題實驗 備份與恢複

來源:互聯網
上載者:User

標籤:des   style   color   使用   strong   檔案   

備份方法: 邏輯備份和物理備份

邏輯備份: 拖過邏輯匯出對資料進行備份, 邏輯備份的資料只能給予備份時刻進行資料轉儲, 所以, 恢複也只能恢複到備份時儲存的資料. 邏輯備份適合備份哪些很少變化的資料表, 如果通過邏輯備份進行全庫恢複, 通常需要重建資料庫, 匯入備份資料來完成, 對於可用性要求很高的資料庫, 這種恢複的時間太長, 通常不被採用, 由於邏輯備份具有平台無關性, 所以更為常見的是, 邏輯備份被作為一個資料移轉及移動的主要手段.

物理備份: 指拖過物理檔案拷貝的方式對資料庫進行備份, 物理備份又可分為冷備份和熱備份. 冷備份是指對資料庫進行關閉後拷貝的備份, 這樣的備份具有一致和完整的時間點資料, 恢複時只需恢複所有檔案就可以啟動資料庫; (所有檔案中包含redo記錄檔, contrl file, datafile), 在生產系統中最為常見的備份方式是熱備份, 進行熱備份的資料庫需要運行在歸檔模式下, 熱備份不需要關閉資料庫, 從而能夠保證系統的持續運行, 在進行恢複時, 通過備份的資料檔案及歸檔記錄檔, 資料庫可以進行完全恢複, 恢複可以一直進行到最後一個歸檔日誌(剩下的內容可以通過redo記錄檔進行恢複), 如果聯機日誌存在(redo log), 則恢複可以繼續, 實現無資料損失的完全恢複.

恢複原理

恢複利用重做記錄檔, redo log 及其衍生的歸檔記錄檔(archived redo log file)

熱備份恢複: 逐漸應用日誌向前恢複的過程成為前滾, 前滾的過程實際上就是應用日誌重演事務的過程, 完成前滾後, 資料檔案將包含未提交和提交的資料, 然後需要應用復原資料, 將未提交的交易回復, 這個過程成為 rolling back 或 transaction recovery.

通常, 完全恢複應用於那些由於硬體故障導致的資料庫損失, 在這種情況下需要最大可能的恢複資料; 不完全恢複通常用於恢複使用者錯誤, 比如使用者不小心刪掉了不該刪掉的內容.

在實際管理中, 很多情況下進行的是不完全恢複, 不完全恢複主要有 4 種類型: 基於時間的恢複(Time-based Recovery), 基於放棄的恢複(cancel-based Recovery), 基於改變的恢複(Change-based Recovery) 和基於日誌序列的恢複(Log sequece recovery)

基於時間點的恢複最為常用, 當然更多情況下, 我們可能面對的是單個資料檔案或資料表空間的損壞. 對於這類故障, 可以針對單個檔案或資料表空間進行恢複, 恢複通常並不影響整個資料庫的運行, 受影響可能只是和故障資料表空間相關的應用.

檢查點 與 RBA

在恢複的內部控制上, oracle資料庫通過檢查點和RBA資訊來確定恢複範圍, 正常情況下, 最後一個完成檢查點對應的RBA是恢複的起點(Cache-Low RBA), 恢複能達到的終點是on-disk RBA, 也就是最後一個寫出到磁碟的 REDO 的日誌記錄, 在執行個體恢複中, oracle資料庫就將進行介於Cache-Low RBA 和 On-Disk RBA 之間的自動執行個體恢複.

RBA(Redo Byte Address): it is a pointer to a specific location in the redo logs.

上邊的起點和終點, 是指在 redo log file 這個檔案中, 最後一個完成檢查點的RBA(一個在redo log內部指向某條記錄的指標, 這個指標的操作結果已經寫入磁碟, 因為已經完成檢查點), 這個RBA作為起點, 到on-disk RBA(只LGWR已經將某條記錄寫到 redo log file 中).

資料庫的運行模式

archive log list; 獲得當前歸檔的資訊

生產庫都運行在歸檔模式下. 曾經見過很多使用者由於缺乏必要的監控和備份策略, 在歸檔模式下由于歸檔空間耗盡而導致資料庫故障的案例.

更改資料庫模式,(非歸檔->歸檔)

  • 修改必要的初始化參數(log_archive_start: 用於定義是否啟動自動歸檔, oracle10g後, 這個參數廢棄, log_archive_format: 用於定義歸檔檔案格式, 可以採用預設值, log_archive_dest: 用於定義歸檔檔案路徑, log_archive_dest_n: oracle准許多路歸檔路徑, 一般可以使用 log_archive_dest_1 參數即可.
  • 以 immediate 方式關閉資料庫
  • 啟動執行個體到 mount 狀態
  • 更改運行模式並開啟資料庫 alter database archivelog; alater database open; archive log list;
邏輯備份與恢複 ? 再確認

貌似這種方法, 只是匯入匯出資料, 但是骨架( tablespace, table, user 等等資訊, 需要先建立在資料庫中)

使用 EXP 進行邏輯備份, EXP 工具可以將 oracle 資料庫中的資料提取出來, IMP 可以將資料匯入.

但是需要注意的是, 使用 EXP 備份的資料進行全庫恢複時, 需要重建立立資料庫, 匯入備份的資料, 恢複的過程可能極其漫長.

1) EXP 匯出與字元集,

使用 IMP 進行邏輯恢複

由於使用 EMP 備份的資料進行恢複時, 一般需要重新建立資料庫, 匯入備份的資料, 恢複過程可能會極為漫長; 如果是做局部恢複(只針對部分使用者或部分表的恢複)則要相對簡單.

使用資料泵(EXPDP/IMPDP), 與EXP主要的不同, EXPDP 增加了一個主要的新的參數: DIRECTORY, 這個參數用來定義一個路徑, 這個 DIRECTORY 就對應的是server端的路徑, 可以自己建立一個DIRECTORY, 也可以使用預設的路徑.

物理備份與恢複

物理備份是只針對 Oracle 的檔案進行的備份, 這與邏輯備份針對資料的備份不同. (control file, data file, control file, redo log, archive log(非必須), 參數和口令), 注意, 臨時檔案因為不永久儲存資料, 所以不必備份.

冷備份

select name from v$database -- 先確定需要轉儲的檔案的位置.

冷備份的正常步驟:

1) 正常關閉資料庫

2) 備份所有重要的檔案到備份目錄

3) 完成備份後啟動資料庫

為了恢複方便, 冷備份應該包含所有的資料檔案, 控制檔案和記錄檔, 這樣當需要採用冷備份恢複時, 只需要將所有檔案恢複到原有位置, 就可以啟動資料庫了.

熱備份

分為使用者管理熱備份 和 rman

使用者管理的熱備份 指使用者通過將資料表空間置於熱備份模式下, 然後通過作業系統工具隊檔案進行複本備份, 備份完成後再結束資料表空間的備份模式.(即先將資料表空間設定備份模式, 然後copy檔案, 然後再恢複資料表空間)

rman: 不需要將資料表空間設定成熱備模式, 從而可減少對於資料庫的影響, 另外 RMAN 的備份資訊可以通過控制檔案或者額外的目錄資料庫進行管理, 功能大但是相對複雜.

使用者管理熱備步驟: (會影響效能, 建議使用 rman)

1) 在備份之前需要顯示發出 begin backup 命令 例如: alter tablespace system begin backup;

2) 作業系統 copy 檔案 (copy system01.dbf 到別的地方)

3) 發出 end backup 命令通知數據庫完成備份 alter tablespace end backup;

4) 備份歸檔記錄檔

恢複時, 直接將資料庫開啟到 mount狀態, 然後 alter database recover

rman 備份與恢複 ? 需要補充

任何使用 oracle 資料庫的使用者都應當使用 rman 來進行備份恢複管理, 這是非常重要的基本技能.

rman 的好處:

rman 支援除邏輯備份以外的所有備份類型, 包括完整備份, 增量備份, 資料表空間備份, 資料檔案備份, 控制檔案備份, 歸檔記錄備份 等.

自動產生備份日誌

rman 的備份指令碼和 OS 無關, 方便移植.

強大的報表功能可以方便的獲悉備份的可用性.

使用 rman 進行備份, 需要瞭解一個重要概念: 恢複目錄, rman 在進行備份時, 需要將備份資訊儲存起來, 這些資訊將用來進行恢複, 如果丟失了這些資訊, 恢複將變得極其困難和複雜. 預設 rman 將這些資訊儲存在控制檔案中, 那麼此時控制檔案的安全就變得極為重要, 對於重要的資料庫, 使用控制檔案進行資訊儲存是不夠穩妥的; oracle也支援將rman的備份資訊儲存在目錄資料庫中(catalog database), 目錄資料庫可以使用一個獨立的資料庫, 也可以使用現有的資料庫中的一個資料表空間, 一個目錄資料庫可以備份多個資料庫, 但是注意, 恢複目錄同樣需要進行備份, 通常使用邏輯備份即可.

1) 使用 nocatlog 方式進行備份( 即備份資訊儲存在 control file 中)

因為這樣, contrl file的安全就變得很重要, oracle支援自動備份控制檔案, 可以通過如下方式設定控制檔案的自動備份:

rman target /

configure controlfile autobackup on;

這個設定可以在rman 中查詢: show controlfile autobackup; 也可以在資料庫中, select * from v$rman_configuration; 中查詢, 注意一下備份路徑, 由於oracle10g後引入了閃回區的新特性, 所以自動備份儲存在閃回區中; 如果不適用閃回區或者適用 oracle 9i, 則自動備份儲存於 $oracle_home/dbs 目錄下

如果控制檔案等出現問題, 就可以使用之前的自動備份的控制檔案了(包含spfile)

在rman中輸入: restore spfile to ‘spfile位置’ from autobackup;   -- 恢複 spfile

在rman中輸入: restore controlfile to ‘spfile位置’ from autobackup;  -- 恢複 controlfile

最後, 強烈建議大家開啟自動備份 control file

全備:

backup database tag=leon070301;   -- 表示7月3日的第1個備份

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.