SYBASE数据库基础

2025-06-19

MO000002 SYBASE数据库基础 ISSUE 3.3

第6章 数据库的备份与恢复

第6章 数据库的备份与恢复

? 路标:

1. 了解数据库备份和恢复的意义。 2. 掌握数据库备份的方法。 3. 掌握数据库恢复的方法。

4. 掌握事务日志的作用和监视其空间大小的方法。

对于任何数据库,备份都是很普遍的,也很重要的。Sybase提供了两种不同类型的恢复:一类是系统自动完成的恢复;另一类是人工完成的恢复。 系统自动恢复是防止系统失败的一种保护措施,每次SQL Server重启时都要运行自动恢复机制。自动恢复机制确保在系统瘫痪前完成的事务都写到数据库设备上,而未完成的事务都被回退(删除);

人工恢复功能是通过备份命令(dump命令)和恢复命令(load命令)从其它地方装入数据库完成的。在Sybase数据库中,备份通常称作转储,恢复通常称为加载,这是由备份与恢复的命名得来的。

在Sybase中,进行数据库的备份和恢复操作,必须保证备份服务器(sybserver backup )是处于运行状态。

6.1 系统软件故障恢复

系统自动恢复是在系统软件出现故障的情况下通过重新启动SQL Server进行恢复。

系统自动恢复从master数据库开始,然后是model数据库,再是temporary数据库,最后是用户数据库。在每个数据库上,恢复机制观察事务日志。如果日志已写入比数据库更近的数据,恢复机制则向前恢复数据库,以使它与日志一样。然后,如果事务尚未完成,则要回退(删除)它们。

什么是事务日志呢?事务是恢复和工作的一个基本单元。SQL Server自动管理所有更新数据库的单元,以便在更新过程中万一出现故障后可以恢复它们。一般而言,对数据库的任何更新都自动记录到系统表syslogs中,此表叫事务日志。每个数据库都有它自己的事务日志。事务日志中记录着对数据库的更新请求,例如插入、修改和删除。查询操作不记入事务日志中。

28

MO000002 SYBASE数据库基础 ISSUE 3.3

第6章 数据库的备份与恢复

6.2 数据库的备份与恢复

6.2.1 备份数据库和事务日志

备份是保证数据库可以恢复的最简单容易的方法。没有备份,可能会丢失所有数据而且必须从头重新创建,备份可以防止表或数据库的损坏、介质故障和用户错误。为了得到有效的数据,应根据需要尽量频繁地进行备份。 备份操作建议在系统比较空闲的时候进行,这样容易保证备份数据的正确性和可用性。

备份数据库(数据和事务日志)的语法为:

dump database database_name to filename(or device) 例如:将数据库hlr直接备份到到操作系统中一个文件hlrbak, 1> dump database hlr to hlrbak 2> go

此备份时间约花5分钟左右。

数据库日志是指对数据库进行的一些操作纪录。备份事务日志(增量备份)的语法为:

dump transaction database_name to filename(or device) [with truncate_only | with no_log | with no_truncate]

前两项表示删除日志,作用相同,后一项表示不删除日志,即备份日志。 ? 诀窍:?

with no truncate 不删除日志,可以获得整个日志(自从上一次dump transaction以来发生的一切事情)。 参数with truncate_only删除日志的活动部分但并不作备份。

在备份数据库前的所有事务日志备份都是没有意义的。我们一般不经常备份数据库,但我们要经常备份事务日志。这是因为备份事务日志比备份数据库需要更少的时间和存储空间。

同样,恢复日志只能在数据库恢复之后才能使用。恢复数据库后,就可以恢复一个或多个事务日志了。恢复数据库日志的顺序必须按它们被卸出的顺序进行。SQL Server会检查每个恢复数据库以及每个事务日志的时间戳,以确定次序是否正确。

29

MO000002 SYBASE数据库基础 ISSUE 3.3

第6章 数据库的备份与恢复

备份数据库和备份日志的关系如下所示: 创建数据库备份数据库备份日志备份日志

时刻1

时刻2

时刻3 时刻4

6.2.2 恢复数据库

要恢复被破坏的数据库,可以按如下步骤进行:

用带no_truncate选项的dump transaction命令卸出用户数据库事务日志。 用drop database的命令删除被破环的数据库。

用和被破坏的数据库同样的结构建立一个新的数据库。(对于OMC Server数据库,OMC Server提供重建数据库的程序,不必用create命令。) 用load database命令重新装入数据库 用load transaction重新装入事务日志。 装入数据库的语法为:

load database database_name from file_name(or device) 装入事务日志的语法为:

load transaction database_name from file_name(or device) 例:数据库备份

1> dump database hlr to hlrbak 2> go 数据库恢复

1> load database hlr from hlrbak 2> go

恢复数据库比备份数据所花的时间将更长。

注意:数据库恢复之后,必须运行下面一条命令,使它进入正常工作状态: 1>online database hlr 2>go

30

MO000002 SYBASE数据库基础 ISSUE 3.3

第6章 数据库的备份与恢复

日志备份

1> dump transaction hlr to hlrlog with no_truncate 2> go 日志恢复

1> load transaction hlr from hlrlog 2> go 日志删除

1> dump transaction hlr with truncate_only 2> go

?注意:备份数据库与备份日志

如果总用dump database命令,不用dump transaction,事务日志将不会被删除,会变得非常庞大。因此对于一般的数据库,每次运行dump database与dump transaction with no_truncate之后,应当运行dump transaction with truncate_only删除日志。

注意:load命令仅当该数据库没有被其他用户占用时才起作用。如果有其他的用户正在使用该数据库,则load命令不会成功。如下详细显示了装载不成功的现象及解决过程:

1. 装载数据库时提示该数据正在使用。 1> load database warn from warnbak 2> go

Msg 3101, Level 16, State 1: Line 1:

Database in use. A user with System Administrator (SA) role must have exclusive

use of database to run load. 1>

2. 用sp_who命令看看谁正在用,得到spid号。如下所示warn库的spid=7。 1> sp_who 2> go

31

MO000002 SYBASE数据库基础 ISSUE 3.3

第6章 数据库的备份与恢复

fid spid status loginame origname hostname blk dbname cmd ------ ------ ------------ ------------------------------------------------------------ ---------- 0 7 recv sleep sa sa omcserver 0 warn AWAITING COMMAND 3. 用kill (spid)命令删除该数据库用户 1> kill 7 2> go

4. 再执行load database命令,可以进行。 1> load database warn from warnbak 2> go

Backup Server session id is: 11. Use this value when executing the 'sp_volchanged' system stored procedure after fulfilling any volume change request from the Backup Server.

Backup Server: 6.28.1.1: Dumpfile name 'warn011370EC3F ' section number 0001

mounted on disk file '/home1/sybase/warnbak'

Backup Server: 4.58.1.1: Database warn: 11176 kilobytes LOADed. Backup Server: 4.58.1.1: Database warn: 50182 kilobytes LOADed. Backup Server: 4.58.1.1: Database warn: 93194 kilobytes LOADed. Backup Server: 4.58.1.1: Database warn: 136714 kilobytes LOADed. Backup Server: 4.58.1.1: Database warn: 179214 kilobytes LOADed. Backup Server: 4.58.1.1: Database warn: 204814 kilobytes LOADed. Backup Server: 4.58.1.1: Database warn: 204822 kilobytes LOADed. Backup Server: 3.42.1.1: LOAD is complete (database warn).

Use the ONLINE DATABASE command to bring this database online; SQL Server will

not bring it online automatically.

由上可见load命令成功之后,系统提示必须执行online命令。

32


SYBASE数据库基础.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:人教版试题试卷2024-2025学年沂南生物《遗传与进化》

相关阅读
本类排行
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 7

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219