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