八、数据库备份与恢复 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服务器名 九、几个实用程序 1、bcp 以用户指定的形式将数据库表拷贝到操作系统文件中,或从操作系统文件中拷贝一个数据库表。提供了在数据库表和操作系统文件之间传递数据的一个方便、快速的方法。
bcp 其中,table_name是想要拷贝的数据库表名;{in/out}为拷贝方向,in表示从文件到数据库的拷贝,out表示从数据库到文件的拷贝;datafile是操作系统文件的全路径名。 常用的开关有: -f formatfile----存有上次使用bcp处理同一表时得到的应答文件的全路径名,格式文件名的扩展名为.fmt。使用格式文件,省去了再重复回答前面的问题。 -U username----允许用户指定一个注册名。 -P password----允许用户指定当前的SQL Server口令。如果未使用-P选项,bcp将提示输入一个口令。 -S Server----允许用户指定与其相连的SQL Server的名字。 例:在客户端备份tele114数据库中code_1th表,按照code_1th.fmt的格式 c> bcp tele114..code_1th out code_1th.txt -杅code_1th.fmt 朥sa 朠 2、 isql 与SQL Server交互的SQL句法分析器。
isql [各种开关]
常用的开关有: -U username----允许用户指定一个注册名。 -P password----允许用户指定当前的SQL Server的口令。 -S Server----允许用户指定与其连接的SQL Server的名称。 -i输入文件 -o输出文件 终止一条命令:go 清除查询缓冲:reset 调用编辑器:vi 执行一条操作系统命令:!!命令 退出isql:quit或exit
3、showserver 显示当前在本机上正在运行的SQL Server。 showserver 4、startserver 启动SQL Server。
startserver [各种开关]
常用的开关有: -f runserverfile----指定一个运行服务器文件名,每次重启SQL Server时,以这个文件为参考。在我们的实际机器上,这个文件名为RUN_SYBASE或RUN_SYB_BACKUP。 -m ----以单用户的方式启动SQL Server。这个方式用于恢复master数据库。
5、syman 显示联机的库例程,系统过程及实用程序手册。 syman [keyword]
syman实用程序的联机文本文件存放在$SYBASE下的doc子目录中。 6、dbcc 数据库一致性检查
Dbcc 用来检查一个数据库的逻辑一致性和物理一致性。通常在下面的情况下使用dbcc: x 常规数据库维护 x 确定当一个系统错误后可能损坏的范围 x 在备份数据库之前 x 怀疑数据库受到损坏。 dbcc有两个主要功能:可检查分配表结构(命令checkalloc、tablealloc和Indexalloc);可检查页链接和页级、行级上的数据指针。 只有表属主可以用checktable、fix-text和reindex选项执行dbcc命令。只有数据库属主可以使用checkdb、checkalloc、checkcatalog、indexalloc和tablealloc选项。只有系统管理员可以使用dbrepair选项 dbcc命令的完整语法格式如下: Dbcc {checktable({表明|表标识}[,Skip_ncindex])| Checkdb [(数据库名[,skip_ncindex])]| Checkalloc [(数据库名[,fix|nofix])]| Talbealloc ({表明|表标识}[,{full|optimized|fast|null}[,fix|nofix>))| Indexalloc ({表明|表标识},索引标识[,{full|optimized|fast|null}[,fix|nofix>))| Checkcatalog [(数据库名)] Dbrepair (数据库名,dropdb)| Reindex ({表明|表标识})| fix_text({表明|表标识})} 十 、SQL客户端软件 1. DOS状态下SQL客户端软件 软件位于c:\sqlbin 运行步骤: 运行TCPIP协议程序tcp.bat c:\nwclient\lsl /c:\nwclient\net.cfg c:\nwclient\ne2000 c:\nwclient\tcpip (2) ping 129.6.114.201 (服务器地址) 返回129.6.114.201 is alive 正常 返回No response from 129.6.114.201 为异常 (3)运行sybclenv.bat------------------ Sybase的DOS接口启动程序,内容如下: set path=c:\sqlbin\binr;%path% -------------Sybase的DOS接口程序所在目录 set dsquery=129.6.114.201,4114--------------连接服务器IP地址和端口号 c:\sqlbin\binr\dbnovtcp C:\sqlbin\binr\rmineti
dbping 129.6.114.201------------检查是否连通SYBASE服务器 连接成功出现“Successfully opened network connection" (5) isql 朥sa 朠 1> sp_help 2> go
没有相关教程
|