Oracle的內核提供數(shù)據(jù)庫的備份和恢復機制,SQL*DBA按表空間進行數(shù)據(jù)的備份和恢復。Oracle提供兩種方式:備份恢復和向前滾動,保證意外故障恢復數(shù)據(jù)庫的一致性和完整性。
____1. 備份恢復方式
____對數(shù)據(jù)庫的某個一致狀態(tài)建立副本,并儲存在介質上脫機保存,以此作為數(shù)據(jù)庫恢復的基礎?,F(xiàn)以Oracle實用程序Export/Import來介紹備份恢復方式。
____Export/Import是Oracle提供的兩個互補性程序,即卸載和裝載。它們既完成數(shù)據(jù)庫與操作系統(tǒng)文件的互為轉載,同時可以有效地回收數(shù)據(jù)庫的碎片,提供不同版本間Oracle 數(shù)據(jù)傳送的手段,進行不同用戶間的數(shù)據(jù)傳送。
____Export數(shù)據(jù)卸載,將數(shù)據(jù)從Oracle寫到指定的操作系統(tǒng)文件進行備份。卸載的對象、內容與數(shù)量有三種模式:TABLE MODE(表模式)、USER MODE(用戶模式)、FULL DATABASEM ODE(所有數(shù)據(jù)庫模式)。使用方式既可用交互方式,也可采用命令行方式,以"關鍵字=值" 將所需信息在命令行中逐一描述來進行卸載。Export要求用戶具有CONNECT或DBA特權。
____Import與Export互逆,將操作系統(tǒng)文件重新裝載至Oracle數(shù)據(jù)庫中,使用方式如Expo rt。使用者要求具有CONNECT和RESOURCE特權,且可選擇部分或全部裝入。
____Export/Import非常方便,系統(tǒng)開銷小,它的限制是輸出的操作系統(tǒng)文件采用專門的壓縮方式存放,僅提供給Import使用。
____也可采用SQL*PLUS和SQL*LOADER實用工具進行備份。使用SQL*PLUS的SPOOL命令通過脫機定向輸出,使用PLUS格式化結果,形成指定格式的ASCII文件,需要時可用SQL*LOADER 進行加載。它的方便之處是ASCII文件可以編輯,可方便地加載至其他數(shù)據(jù)庫(如FoxPro、 Sybase中)。
____2. 向前滾動方式
____Oracle提供向前滾動方式,使建立備份后成功的事務不會丟失?;謴偷幕A是數(shù)據(jù)庫的某個一致性狀態(tài)(即方式1完成的備份恢復),恢復的依據(jù)是存檔的重作記錄文件。啟動重作記錄文件方法如下:
____(1) 啟動Oracle;
____(2) 連接Oracle:CONNECT SYSTEM/PASSWORD;
____(3) 啟動ARCHIVE LOG。
____出現(xiàn)介質故障時,可用SQL*DBA的RECOVER命令,利用存檔的重作記錄文件恢復一個或多個表空間。RECOVER命令對DATABASE或TABLASPACE進行恢復。前者要求SQL*DBA START UP已被排斥方式裝載且未被打開;后者對無活躍回退段的表空間執(zhí)行脫機,要求數(shù)據(jù)庫已裝載且被打開。
____由于向前滾動方式恢復的依據(jù)是存檔的重作記錄文件,因而系統(tǒng)開銷大,但恢復的是建立備份以后的成功事務,所以恢復的程度更高、更完備。
Sybase數(shù)據(jù)庫的備份
____Sybase數(shù)據(jù)庫提供兩種恢復方式:自動恢復和非自動恢復。自動恢復是在軟故障下提供的一種恢復機制,非自動恢復是發(fā)生硬故障時通過已轉儲的介質裝載的一種手動恢復機制。
____1. 軟件故障恢復機制
____SQL Server重啟時啟動自動恢復進程,將故障前已提交的事務寫到數(shù)據(jù)庫設備上,未完成的事務則回滾。自動恢復進程先恢復系統(tǒng)數(shù)據(jù)庫,后恢復用戶數(shù)據(jù)庫。對每個數(shù)據(jù)執(zhí)行自動恢復的依據(jù)是事務日志,即SYSLOGS表,它記載著用戶對數(shù)據(jù)庫的每一改變。
____恢復過程:掃描日志,對尚未結束的事務執(zhí)行撤銷,對已提交的事務進行重寫。
____撤銷機制:反向掃描日志,對每一個撤銷事務的更新操作執(zhí)行反操作。
____重寫機制:正向掃描日志,對已提交的事務但尚在數(shù)據(jù)庫緩沖區(qū)中的內容執(zhí)行物理地寫到庫設備上。
____2. 硬故障恢復機制
____硬故障一般指介質故障,備份的基礎數(shù)據(jù)源來自數(shù)據(jù)庫的轉儲介質。因而,它的恢復取決于轉儲(dump)命令的使用情況。
____現(xiàn)以250MB磁帶為例來描述轉儲、裝載過程。
____(1) 配置備份服務器,啟動SQL SERVER和BACKUP SERVER。如:
____startserver -f run -sybase
____startserver -f run -syb -backup
____(2) 建立磁帶轉儲設備
____sp-addumpdevice "tape",mytape,"/
____dev/nrct0",6,skip
____250
____go
____其中:"/dev/nrct0"指非回卷磁帶設備名,"6"是設備控制號, tape在3~8之間,skip 通知服務器忽略已存在的ANSI磁帶標號,250是磁帶的大小,以M為單位。
____建立成功后,可以查詢maser.dbo.sysdevices表中有name="mytape"的記錄描述。
____(3) 轉儲數(shù)據(jù)庫
____即備份一個完整的數(shù)據(jù)庫,包括它的系統(tǒng)表,建立各種數(shù)據(jù)對象和事務日志。備份格式不同于操作系統(tǒng)文件,tar命令不可讀,它只能由SQL Server的裝載工具來識別和恢復。轉儲命令如下:
____dump database TRYDB to mytape with init
____go
____其中:TRYDB為庫名;with init為選項,重新初始化磁帶卷。
____(4) 裝載數(shù)據(jù)庫
____如果數(shù)據(jù)庫受到破壞而必須刪除,則要重新初始化庫設備,
tb重建數(shù)據(jù)庫并裝載最近的數(shù)據(jù)庫備份及所有事務日志。
____裝載數(shù)據(jù)庫:
____load database TRYDB from mytape
____go
____以上僅限裝載用戶數(shù)據(jù)庫,不適用于master庫。另外,也可將數(shù)據(jù)庫備份成操作系統(tǒng)文件,執(zhí)行操作系統(tǒng)備份命令將文件拷至磁帶上。恢復時先tar入磁帶上的文件,然后裝載 ,這種方式不須添加轉儲設備。