Sybase 系统数据库的备份与恢复

href="file:///C:/DOCUME~1/LEOGUA~1/LOCALS~1/Temp/msohtml1/01/clip_filelist.xml" rel="File-List" />

Sybase 系统数据库的备份与恢复

 

Sybase的系统数据库有master, modelsybsystemprocstempdb以及一些可选的数据库(sybsecuritypubs2sybsyntax)。

 

系统数据库的备份只能是完全备份,即dump database。恢复系统数据库时,大致有以下几种方法:

1.       使用load database 命令加载数据库的备份集。

2.       使用buildmasterinstallmasterinstallmodel去还原到这些数据库的初始状态,也即重建。

3.       以上两种方式的结合。

 

一、master数据库

master数据库控制着用户数据库以及一些SQL Server的操作,它会跟踪如下信息:

u       用户帐号(表syslogins

u       远程用户帐号(表sysremotelogins

u       能够与之连接的远程服务器(表sysservers

u       正在运行的进程(表sysprocesses

u       可配置的环境变量(表sysconfigures

u       系统错误消息(表sysmessages

u       SQL Server上的数据库(表sysdatabases

u       分配给每个数据库的存储空间的信息(表sysusages

u       系统上被加载的磁带和磁盘信息(表sysdevices

u       活动锁(表syslocks

u       字符集(表syscharsets

u       拥有服务器范围权限的用户(表sysloginroles

u       服务器角色(表syssrvroles

u       SQL Server在线引擎(表sysengines

 

何时备份master数据库:每次当用户创建、更改或者删除任何设备、数据库、或数据库对象时需要备份;每次当用户执行一个存储过程去改变master数据库时需要备份。Master数据库的日志不能存放在单独的设备上,所以不能用dump transaction来备份。

 

Master数据库损坏原因和症状:master数据库一般会因为介质错误或一些数据库内部错误导致失败,出错后的master数据库有以下一些症状:

u       SQL Server不能启动。

u       频繁的段分割错误或I/O错误。

u       一些计划的数据库一致性检查报告中的错误,dbcc工具。

 

备份:master数据库必须要被备份到一个单独的卷或设备上,除非不只一个SQL Server能和Backup Server交互(可能是集群)。用dump database来做备份。

 

恢复:恢复时为了防止其他用户访问master数据库,所以必须以单用户的模式启动SQL Server。恢复master数据库时可以分为两种情形来对待:

u       master数据库被破坏但是master设备并没有被损坏的情况下,这种情况不会影响model数据库(model数据库的恢复将在后面讲解)。

u       master设备损坏时,用户必须恢复整个设备。用户也能利用这个过程将master数据库移到一个更大的master设备上去。

 

恢复时,可以分为以下步骤来进行:

u       对于一些重要的系统表做一份硬拷贝。

u       如果在master设备上存在用户数据库,并且是可访问的,先做备份。

u       使用buildmaster创建一个新的master数据库或master设备。

u       startserver命令以单用户模式重新启动SQL Server

u       如果master数据库大于3MB,那么在sysusages表中重新创建它的分配情况。

u       如果Backup Server的网络名(在接口文件里面)不是SYB_BACKUP,那么在sysservers表中要做相应的调整。

u       检查Backup Server是否在运行。

u       load database命令加载最近的master的备份,当恢复成功之后,SQL Server将会自动停止。

u       再次以单用户模式启动SQL Server

u       自从最后一次备份master以来,如果你需要添加数据库设备的话,请使用disk reinit命令重建sysdevices表。

u       如果你自动最后一次备份以来运行了disk reinit,或者使用了create databasealter database命令,那么对sysusagessysdatabases表做一份硬拷贝,然后使用disk refit命令重建系统表。

u       检查一致性:用sysusagessysdatabases的硬拷贝和他们的新版本比较,在每一个数据库中运行dbcc checkalloc,检查数据库中每一个重要的表。

u       如果你恢复了整个master设备,那么请恢复model数据库。

u       重新加载用户数据库。

u       如果自从上次备份master以来你添加了新的登录,检查syslogins表。

u       如果所有的东西都正确,那么停止SQL Server服务器并用多用户模式启动。

u       立即备份master数据库。

 

注意如果有用户数据库也存在于master设备上,并且此用户数据库没有备份过,那么我们不能用上述方法来恢复,这可能会导致master设备上的用户数据库的丢失。

 

二、model数据库

model数据库提供了模板或原型给新的数据库,每次创建新数据库的时候,SQL Server将做一份model的拷贝到新数据库。Model数据库包含了每个用户数据库中所要求的系统表,用户也可以定制一些表结构,这些表结构将会影响之后新建的用户数据库。

 

何时备份model数据库:当用户每次改变了model数据库的时候,需要备份。与master数据库一样,model数据库的日志不能存放在单独的设备上,所以不能用dump transaction来备份。

 

恢复:如果采用buildmaster工具重建model数据库,首先必须关闭SQL Server

恢复过程:在能使用model的情况下(用use model判断),只需第三步。

u       使用buildmaster还原model数据库。

u       如果你改变了model的大小,重新使用alter database命令。

u       load database命令加载备份集。

 

三、             sybsystemprocs数据库

sybase的系统存储过程都存储在sybsystemprocs数据库中。当用户在任何数据库中执行任何以“sp_”开头的存储过程时,SQL Server首先是从用户的当前数据库中查找,如果查找不到,SQL Server就在sybsystemprocs数据库中查找。如果在sybsystemprocs中也没有,那么SQL Server就会去master数据库中查找。

 

何时备份sybsystemprocs数据库:当用户改变了sybsystemprocs数据库或添加了自己的存储过程到此数据库,此时应该备份此数据库。与master数据库一样,sybsystemprocs数据库的日志不能存放在单独的设备上,所以不能用dump transaction来备份。

 

恢复:如果之前没有备份,只能使用installmaster重建。如果有备份,直接使用load database

注:原创,转帖请注明出处,谢谢
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值