WEB开发网
开发学院数据库Sybase Sybase入门 阅读

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服务器名 

上一页  4 5 6 7 8 9 10 11 12 13  下一页

Tags:Sybase 入门

编辑录入:coldstar [复制链接] [打 印]
赞助商链接