Sybase入门
2006-03-05 21:48:31 来源:WEB开发网核心提示: 八、数据库备份与恢复 SQL Server提供了两种不同类型的恢复:一类是系统自动完成的恢复;另一类是人工完成的恢复, 1.系统软件故障恢复 系统自动恢复是在系统软件出现故障的情况下通过重新启动SQL Server进行恢复,Sybase入门(9), 自动恢复从master数据库开始,然后是model数据库, O、以多
八、数据库备份与恢复
SQL Server提供了两种不同类型的恢复:一类是系统自动完成的恢复;另一类是人工完成的恢复。
1.系统软件故障恢复
系统自动恢复是在系统软件出现故障的情况下通过重新启动SQL Server进行恢复。
自动恢复从master数据库开始,然后是model数据库,再是temporary数据库,最后是用户数据库。在每个数据库上,恢复机制观察事务日志。如果日志写入比数据库更近的数据,则向前恢复数据库。如果事务尚未完成,则要回退它们。
所谓事务日志就是一张系统表,syslogs。在这张表中记录着对数据库的更新请求,例如插入、修改和删除。查询操作不记入事务日志中。
2.介质故障的恢复
一旦介质发生故障,只有通过以前备份的数据库和事务日志才能恢复数据库,为此我们需要经常备份数据库和事务日志。备份数据库和事务日志我们使用dump命令,而恢复数据库和事务日志我们使用load命令。
与创建数据库需要一个数据库设备类似,我们备份数据库和事务日志也需要一个卸出设备。增加卸出设备可以通过系统过程sp_addumpdevice来实现。卸出设备可以是磁盘、磁带或操作系统文件。
sp_addumpdevice "type",device_name,physicalname
例:
sp_addumpdevice "disk", "db114", "/usr/sybase/zyl114.bak",1
(1) 备份数据库和事务日志
备份数据库的语法为:
dump database database_name to dump_device
例如:
dump database tele114 to db114
备份事务日志的语法为:
dump transaction database_name to dump_device
[with truncate_only | with no_log | with no_truncate]
前两项在日志中删除提交的事务,后一项不删除。
在备份数据库前的所有事务日志备份都是没有意义的。我们一般不经常备份数据库,但我们要经常备份事务日志。这是因为备份事务日志比备份数据库需要更少的时间和存储空间。
(2)恢复用户数据库
要恢复已被破坏的数据库,可以按如下步骤进行:
· 用带no_truncate选项的dump命令卸出用户数据库事务日志。
· 用和被破坏的数据库的同样的结构建立一个新的数据库。
· 用load命令重新装入数据库和事务日志。
装入数据库的语法为:
load database database_name
from file_name
装入事务日志的语法为:
load transaction database_name
from file_name
例:数据库备份
1> dump db_name to file_name
2> go
数据库恢复
1> load db_name from file_name
2> go
日志备份
1> dump transaction db_name to file_name
2> go
日志恢复
1> load transaction db_name from file_name
2> go
日志删除
1> dump transaction db_name with truncate_only
2> Go
(3)master数据库的恢复
A、保存系统表的拷贝:sysdatabases、sysdevices、sysusages、sysloginroles和Syslogins。
B、转储主设备上的用户数据库。
C、关闭SQL Server并使用buildmaster建立新的master数据库或主设备。
Buildmaster -m ...仅重建master数据库
Buildmaster ...重建主设备
D、已单用户模式启动SQL Server( Master-Recover )
Startserver -f RUN_服务器名 -m
E、若master数据库用alter database 命令扩展过,严格重建它在sysusages中的分配。
F、若Backup Server 的网络名(接口文件中的名字)不是SYB_BACKUP,在sysservers中改动网络名。
Update sysservers set srvnetname="PRODUCTION_BSRV" where srvname="SYB_BACKUP"
G、使用showserver查看,检查确保Backup Server正运行,若有必要,重启Bakup Server
H、装载master的备份。
Load database master from 'master.bak'
Load database执行成功后,SQL Server 自动关闭。
I、若自master的上次转储以来增加过数据库设备,执行disk reinit命令以重建sysdevices。
J、若执行了disk reinit,或自上次转储以来使用过create database或alter database,执行disk refit 重建sysusages和sysdatabases表,执行完毕后SQL Server自动关闭。
K、检查一致性:比较sysusages和sysdatabases的备份和新的联机版本,对每个数据库执行dbcc checkalloc, 并检查每个数据库中重要的表;若发现错误重新执行disk reinit和disk refit。
L、若恢复了整个主设备,则恢复model数据库。
Cd $SYBASE/scripts
Setenv DSQUERY 服务器名
Isql -Usa -P口令 -S服务器名 M、重新装载所有受影响的用户数据库。
N、恢复服务器用户ID。
O、以多用户模式重新启动SQL Server。
(4)恢复model 数据库
Buildmaster -d/设备名 -x
(5)恢复sybsystemproces数据库
A、删除sybsystemproces数据库(若物理磁盘损坏,删除设备,使用Disk init 重建设备)
B、重建数据库
Create database sybsystemporces on 设备名=数据库大小
C、恢复数据库
Cd $SYBASE/scripts
Setenv DSQUERY 服务器名
Isql -Usa -P口令 -S服务器名
更多精彩
赞助商链接