对 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這個時刻的數據。
?
?
?
?
?
?
?
?
?
------------------------------------------------------------------------------?
Blog:?http://blog.csdn.net/tianlesoftware?
網上資源:?http://tianlesoftware.download.csdn.net?
相關視頻:http://blog.csdn.net/tianlesoftware/archive/2009/11/27/4886500.aspx?
DBA1?群:62697716(滿);?DBA2?群:62697977
轉載于:https://www.cnblogs.com/zlja/archive/2010/06/04/2449874.html
總結
以上是生活随笔為你收集整理的对 Oracle 备份与恢复 的补充说明的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: [日志]做人与标点符号
 - 下一篇: coolite TreePanel Ch