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