對 Oracle 備份與恢復 的補充說明
之前曾整理過一片文章,來說明Oracle 的備份與恢復的。
Oracle 備份 與 恢復 概述
http://blog.csdn.net/tianlesoftware/archive/2010/04/16/5490733.aspx
今天又看到了一些知識,與上次說明的角度不一樣。 所以整理下,算是對上篇的一個補充說明。
Oracle 備份分邏輯備份和物理備份。
一.邏輯備份
邏輯備份就是exp/imp, 10g 以後推出了資料泵(Data Pump/ expdp/impdp). 資料泵在效率上要比之前的exp/imp 高那麼幾倍,直觀的反應就是備份所花的時間少了。 還有就是Data Pump 的功能要比exp/imp 多一點。
Oracle 10g EXPDP和IMPDP使用說明
http://blog.csdn.net/tianlesoftware/archive/2009/10/16/4674224.aspx
二. 物理備份
先說明一下,RMAN 屬於物理備份。 Oracle 分為Archive log 模式 和 NoArchive Log 模式。
1. NoArchive Log 模式下的物理備份
這種模式下只能在資料庫關閉的情況下才能備份。 並且只能完全恢復到備份的時間點。
手工備份的步驟如下:
(1) 完全關閉資料庫
(2) 備份所有資料庫的資料檔案,控制檔案和聯機重做日誌
(3) 重新啟動資料庫
2. NoArchiveLog 模式下的恢復
很簡單,關閉資料庫後,把備份的資料檔案,控制檔案和聯機重做日誌還原,在啟動資料庫即可。 不過這種備份只能恢復到最後的備份時間點。
3. Archive Log 模式下的物理備份
3.1 離線備份(冷備份)
步驟如下:
(1) 完全關閉資料庫
(2) 備份所有資料庫的資料檔案
(3) 重新啟動資料庫
(4) 使用alter system switch logfile 命令強制執行一個聯機重做日誌切換,一旦歸檔了聯機重做日誌,那麼就備份所有的歸檔重做日誌。
(5) 使用alter database backup control file to trace 和 alter database backup control file to 'file_name' 命令建立控制檔案的一個備份
3.2 聯機備份(熱備份)
步驟如下:
(1) 使用 alter tablespace ts_name begin backup 命令將需要備份的表空間和資料檔案置入聯機備份模式。
如果希望備份整個資料庫,可以使用alter database begin backup命令。
(2) 備份與剛才置入備份模式的表空間相關的資料檔案
(3) 執行alter tablespace ts_name end backup 或者alter database end backup,將表空間或者資料庫從熱備份模式中取出。
(4) 使用alter system switch logfile 命令,強制執行一次redo log 切換。 一旦完成切換,就備份所有的歸檔的重做日誌。
說明: 為什麼要強制切換redo log。 因為恢復操作必須應用在備份期間生成的所有重做上。 Oracle 在聯機備份期間不斷地物理更新資料檔案(除了資料檔案頭)時,在備份操作期間存在資料塊分離的可能性,這種可能性就會導致備份資料檔案不一致。 此外,資料檔案可能在備份之後,但是在整個備份程式結束之前被寫入,由於備份中的每個資料檔案可能會有不同的SCN,因此資料檔案備份映像會不一致,所以擁有在備份期間生成的重做以應用於恢復是非常重要的。
聯機備份的不足:
執行Alter tablespace ts_name begin backup 和 alter database begin backup 命令時,重做日誌會發生更改。一般來說,Oracle只將更改向量儲存為重做記錄,這些小型的記錄指定義已經發生的更改。當資料檔案處於聯機備份模式時,Oracle 會記錄資料檔案的整塊更改,而不是僅僅記錄更改向量,這意味著聯機備份期間總的重做日誌會大量增加,這樣在熱備份程式執行期間所需要的磁碟空間和CPU開銷會收到影響。
而RMAN 提供了不將表空間置入熱備份模式而執行熱備份的功能。 所以就避免了使用I/0操作,當結束資料檔案的聯機備份狀態時,就可以進行正常的操作。
注意:
在Archivelog 模式下,聯機備份和離線備份,不備份聯機重做日誌 和 控制檔案,只是備份歸檔檔案及建立備份的控制檔案,這是因為在恢復期間不希望冒險重寫聯機重做日誌或者控制檔案。
為什麼不恢復聯機重做日誌,因為在Archive log 模式的恢復期間,聯機重做日誌中可能有最新的重做,這樣當前的聯機重做日誌將被用於完全的時間點恢復。如果丟失了聯機重做日誌,就必須用所有的歸檔日誌來執行時間點恢復。
不備份控制檔案的原因和重做一樣,因為當前的控制檔案含有最新的聯機重做日誌資訊和歸檔的重做日誌資訊。
4. Archive Log 模式下的恢復
4.1 Archive log 模式下的完全恢復
完全恢復,就是沒有資料丟失的恢復,它的前提是所有聯機重做日誌檔案都沒有損壞,所有的歸檔檔案都在。 如果丟失了redo log或者 歸檔檔案,就需要執行時間點的恢復。如果丟失了控制檔案的備份,就需要恢復控制檔案並執行不完全恢復。
完全恢復的步驟如下:
(1)從備份中還原所有資料檔案
(2)還原所有備份的歸檔
(3)載入資料庫(startup mount)
(4)恢復資料庫(recover database)
(5)Oracle 會提示應用歸檔重做日誌,在提示符下輸入:AUTO,Oracle 會自動應用所有重做日誌。
(6)應用結束有,開啟資料庫。
補充:如果用Recover database until cancel 命令會恢復所需的重做日誌,在應用完最後一個歸檔的衝過日誌後,需要輸入cancel 命令來結束日誌應用。
4.2 Archive Log 模式下的表空間恢復和資料檔案恢復
可以在資料庫載入或者資料庫開啟時執行表空間或者資料檔案的恢復。
表空間的恢復步驟如下:
(1) 是表空間離線(alter tablespace tbname offilne)
(2) 還原與要恢復的表空間相關聯的所有資料檔案
(3) 聯機恢復表空間(recover tablespace)
(4) 恢復完成後,使表空間聯機(alter tablespace tnname online)
資料檔案的恢復,它的有點是可以保持表空間的聯機,步驟如下:
(1) 使資料檔案離線(alter database datafile 'file_name' offline)
(2) 還原所有要恢復的資料檔案
(3) 聯機恢復資料檔案(recover datafile)
(4) 完成恢復後,使資料檔案聯機(alter database 'file_name' online).
4.3 Archive Log 模式下時間點恢復
4.3.1 恢復到某一時間點資料庫的步驟
(1)從備份中恢復所有資料檔案,這個備份要在恢復時間點之前結束
(2)使用命令恢復資料庫並應用redo: recover database until time '2010-6-4'
(3)完成恢復後開啟資料庫
4.3.2 使用SCN 號來恢復,步驟如下:
(1)從備份中恢復所有資料檔案,這個備份要在恢復時間點之前結束
(2)使用命令恢復資料庫並應用redo: recover database until change '1287299'
(3)開啟資料庫
SCN 小知識補充:
檢視SCN:
SELECT dbms_flashback.get_system_change_number FROM dual;
SELECT CURRENT_SCN FROM V$DATABASE;
檢視SCN和timestamp之間的對應關係:
select scn,to_char(time_dp,'yyyy-mm-dd hh24:mi:ss')from sys.smon_scn_time;
系統時間標記與scn的每5分鐘匹配一次。舉個例子,比如scn:339988,339989分別匹配09-05-3013:52:00和09-05-30-13:57:00,則當你透過as of timestamp查詢09-05-30 13:52:00或09-05-30 13:56:59這段時間點內的時間時,oracle都會將其匹配為scn:339988到undo表空間中查詢,也就說在這個時間內,不管你指定的時間點是什麼,查詢返回的都將是09-05-30 13:52:00這個時刻的資料。
------------------------------------->>轉載於
http://blog.csdn.net/tianlesoftware/article/details/5647494
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29119536/viewspace-1133730/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle邏輯備份與恢復選項說明Oracle
- Oracle RAC ASM disk header 備份 恢復 與 重建 示例說明OracleASMHeader
- LightDB常用備份恢復命令說明
- Oracle OCR的備份與恢復Oracle
- Oracle 備份 與 恢復 概述Oracle
- Oracle RAC備份與恢復Oracle
- Oracle備份與恢復 (zt)Oracle
- Oracle備份與恢復案例Oracle
- Oracle備份與恢復(轉)Oracle
- 【備份恢復】Oracle 資料備份與恢復微實踐Oracle
- 從備份集恢復歸檔日誌的測試與說明
- 備份與恢復oracle_homeOracle
- Oracle 備份與恢復(一):概念Oracle
- oracle備份與恢復雜記Oracle
- Oracle備份與恢復入門Oracle
- Oracle備份與恢復案例 (zt)Oracle
- Oracle資料庫備份與恢復之三:OS備份/使用者管理的備份與恢復Oracle資料庫
- 備份與恢復--利用備份的控制檔案恢復
- 備份與恢復系列 十一 控制檔案的備份與恢復
- Oracle備份恢復之熱備份恢復及異機恢復Oracle
- Oracle備份與恢復【丟失控制檔案的恢復】Oracle
- Oracle資料泵的備份與恢復Oracle
- oracle資料庫的備份與恢復Oracle資料庫
- Oracle 12c 備份與恢復Oracle
- oracle備份與恢復測試(五)Oracle
- Oracle備份與恢復總結[轉]Oracle
- ORACLE之常用FAQ:備份與恢復Oracle
- ORACLE 備份與恢復之 思路整理Oracle
- 循序漸進oracle第7章:備份與恢復之RMAN的簡單備份與恢復Oracle
- 備份與恢復:polardb資料庫備份與恢復資料庫
- MongoDB資料檔案備份與恢復詳解及實驗說明MongoDB
- Oracle備份與恢復【丟失資料檔案的恢復】Oracle
- Mysql的備份與恢復MySql
- Oracle 備份恢復概念Oracle
- oracle備份恢復PPTOracle
- Oracle 備份和恢復Oracle
- ORACLE備份&恢復案例Oracle
- oracle rac 在asm下的備份與恢復OracleASM