Oracle備份與恢復入門

路途中的人2012發表於2016-01-29
整理自《Oracle database 11g RMAN備份與恢復

001 邏輯備份與恢復
    Oracle database 11g使用Oracle data pump體系結構來支援邏輯備份和恢復。這些實用程式包括資料泵匯出程式(expdp)和資料泵匯入程式(impdp)。對於邏輯備份來說,時間點恢復是不可能的。RMAN不進行邏輯備份和恢復。

002 Oracle物理備份與恢復
    RMAN實際上是物理備份。
    在archivelog模式和noarchivelog模式下,Oracle都可以執行離線備份。此外,如果資料庫處於archivelog模式,那麼Oracle既可以執行離線備份,也可以執行聯機備份。
2-1 noarchivelog模式下的物理備份
    noarchivelog模式只在資料庫關閉時支援資料庫備份(為什麼??答:使用使用者管理下的備份,資料庫檔案頭的SCN會被凍結,對應檔案塊的改變都會被記錄到redo日誌檔案中,歸檔是對redo日誌的備份。不開歸檔,手動備份下的檔案無法恢復到一致性的狀態。這樣的備份,沒有意義。)。此外,noarchivelog模式下資料庫的完全恢復只能恢復到備份的時間點。按照下面的步驟可以在noarchivelog模式中執行資料庫的手動備份(需要注意的是,如果使用RMAN,這些步驟會有所不同):
    (1)完全關閉資料庫
    (2)備份所有資料庫資料檔案、控制檔案和聯機重做日誌檔案
    (3)重新啟動資料庫
2-2 archivelog模式下的物理備份
    archivelog模式下的冷備份步驟:
    (1)完全關閉資料庫
    (2)備份所有資料庫資料檔案
    (3)重新啟動資料庫
    (4)使用alter system switch logfile命令強制執行一個聯機重做日誌切換。一旦歸檔了聯機重做日誌,那麼就備份所有歸檔的重做日誌。
    (5)使用alter database backup control file to trace命令和alter database backup control file to ’file_name‘命令建立控制檔案的一個備份。
    當然,在資料庫處於archivelog模式時,您有可能想完成資料庫的聯機備份(熱備份)。資料庫處於archivelog模式時,Oracle允許在資料庫開啟和執行的同時備份每個單獨的表空間與其資料檔案,甚至還可以在不同的時刻備份選擇的資料庫部分(只要備份策略正確即可,這樣仍然可以保持資料一致性)。
    使用下面的步驟可以執行表空間的一個聯機備份:
    (1)使用alter tablespace begin backup命令將需要備份的表空間和資料檔案置入聯機備份模式。如果希望備份整個資料庫,則可以使用alter database begin backup命令將所有資料庫表空間置入熱備模式。
    (2)備份與剛被置入熱備份模式的表空間相關聯的資料檔案(可以選擇備份指定的資料檔案)。
    (3)對於在步驟(1)中置入聯機備份模式的每個表空間來說,都要執行alter tablespace end backup命令將其從熱備份模式中取出。如果希望將所有表空間從熱備份模式中取出,可以使用alter database end backup命令。
    (4)使用alter system switch logfile命令強制執行一個聯機重做日誌切換。
    (5)一旦完成了日誌切換並歸檔了當前的聯機重做日誌,就備份所有歸檔的重做日誌。
    需要注意的是,步驟(5)中的日誌切換和歸檔的重做日誌備份是必需的,這是因為恢復操作必須應用在備份期間生成的所有重做上。Oracle在聯機備份期間不斷地物理更新資料檔案(除了資料檔案頭)時,在備份操作期間存在資料塊分離的可能性,這種可能性會導致備份的資料檔案不一致。此外,資料庫資料檔案可能在備份之後、但是在整個備份程式結束之前被寫入,由於備份中的每個資料檔案當前可能會有不同的SCN,因此資料檔案備份映像會不一致,所以擁有在備份期間生成的重做以應用於恢復是非常重要的。
    執行alter tablespace begin backup命令或alter database begin backup命令時,重做生成會發生更改。一般來說,Oracle只將更改向量儲存為重做記錄。這些小型的記錄只定義已經發生的更改。當資料檔案處於聯機備份模式時,Oracle會記錄資料庫資料檔案的整個塊更改,而不是僅僅記錄更改向量,這意味著聯機備份期間總的重做生成會大幅增加,這樣在熱備份程式執行期間所需的磁碟空間和CPU開銷會受到影響。RMAN提供了不將表空間置入熱備份模式而執行熱備份的功能,這樣就避免了使用額外的I/O操作。當結束資料檔案的聯機備份狀態時,就可以進行正常的操作。
    還需要注意的是在archivelog模式的兩種備份中(聯機備份和離線備份),並不備份聯機重做日誌,而是備份資料庫的歸檔的重做日誌。此外,也不會備份控制檔案,但是會建立備份控制檔案,這是因為在恢復期間不希望冒險重寫聯機重做日誌或控制檔案(備份的舊的聯機重做日誌或控制檔案肯能會將現有的最新的聯機重做日誌或控制檔案覆蓋)。
    至於為什麼不恢復聯機重做日誌,那是因為在archivelog模式的恢復期間,聯機重做日誌中可能有最新的重做,這樣當前的(current日誌組)聯機重做日誌將被用於完全的時間點恢復。由於這個原因,我們不在archivelog模式的資料庫恢復期間重寫聯機重做日誌。如果資料庫丟失了聯機重做日誌(希望不會發生這種情況),就必須使用所有歸檔的重做日誌來執行時間點恢復。
    

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29067253/viewspace-1984159/,如需轉載,請註明出處,否則將追究法律責任。

相關文章