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入磁带上的文件,然后装载 ,这种方式不须添加转储设备。