- 论坛徽章:
- 0
|
Sybase SQL Anywhere 是Sybase 公司开发的一种小型数据库产品,它可以安装在WIN95、WIN98
等操作平台上。Power
Builder5.0以上版本自身均带有一个SQL Anywhere数据库系统,SQL
Anywhere数据库支持标准SQL语句,且操作比较简单,功能也比较强大,因此,它成了当今单机版软
件开发的首选数据库之一。
Sybase SQL Anywhere 数据库是由两个数据库文件组成,它们分别是后缀为.db数据信息文件和
后缀为.log
日志文件。其中.db文件用来存放数据库的库结构信息及数据(如表结构、触发器、视图以及数据记录
等),而.log文件是用来存放用户每一次对数据库结构和数据有影响的操作,如创建或删除表、视图、触发器
等数据库对象以及增加、删除或修改数据库中的数据记录操作。
Sybase SQL Anywhere
数据库有时会因为不正常关机或其它不正常操作造成数据库破坏,从而给用户带来不必要的麻烦和损
失。因此建立一套行之有效的数据备份和恢复机制是十分有必要的。
Sybase SQL Anywhere 数据库的数据备份和恢复是依赖于.db和.log两个文件。实现的具体步骤
和方法如下:
一、 数据备份
Sybase SQL Anywhere
数据库不象Sybase等大型数据库那样复杂,它的数据库是以后缀为.db和.log的两个系统文件的形式
存放。前面已经讲过,.db存放数据库所有结构信息的数据记录,因此数据备份通常是将.db文件备份下来。
这项工作一定要定期进行,最好在数据库建立后就备份一次。在做好.db文件备份的同时删除.log文件。因为
.log文件存放以前用户对数据库有影响的操作,在.db文件备份之后,也就是所有的库结构信息及数据记录备
份之后,当前的.log文件就没有存放的必要,并且.log文件如果长期不删除会越来越大,无为地占用系统资
源。当前的.log文件删除后,并不影响以后记录日志。在SQL
Anywhere中,.db文件是用户建立的,而.log文件则是在用户在操作数据库时系统自动产生的,用来
记录有关的用户操作过程。
二、 数据恢复
如果数据库受到破坏,要进行数据恢复,要分以下几种不同情况分别进行处理(为了便于叙述,在
说明处理过程之前,先假设数据库系统文件名分别为testdb.db
和testdb.log,并假设数据库用户名为dba,口令为sql)。
1.在数据库遭破坏之前已有数据库testdb.db文件的备份,并在上次testdb.db文件备份之后没有
对数据库作任何操作或有影响的操作,或者对上次testdb.db文件备份之后的数据修改无需恢复。这时只要将
上次备份的
testdb.db 文件覆盖当前系统中的testdb.db文件,并同时删除testdb.log文件即可。在DOS命令行
中执行步骤为:
(1)Attrib -r testdb.db 将文件testdb.db文件的只读属性去掉,变为可写。
(2)Attrib -r testdb.log将文件testdb.log文件的只读属性去掉,变为可写。
(3)copy D:\testdb.db C:\testdb.db(注:前面为备份文件,后面为当前遭受破坏的文件)。
(4)Del testdb.log将日志文件testdb.log删除。
2.在数据库遭破坏之前已有数据库testdb.db文件的备份,并且在上次备份之后作过对数据库有
影响的操作,且有必要恢复这些操作时,除了使用testdb.db和testdb.log文件外,还要使用dbtran.exe、
dbeng50.exe、isql.exe等实用程序才能完成恢复工作。在DOS命令行中执行步骤为:
(1)dbtran-y testdb.log testdb.sql将testdb.log日志文件转换成SQL语句放在testdb.sql
文件中。
(2)Attrib -r testdb.db 将文件testdb.db文件的只读属性去掉,变为可写。
(3)Attrib -r testdb,log将文件testdb.log文件的只读属性去掉,变为可写。
(4)copy D:\testdb,db C:\testdb.db将前面的testdb.db备份文件覆盖后面遭破坏的
testdb.db文件。
(5)Del testdb.log将日志文件testdb.log删除。
(6)dbeng50 -d testdb.db 启动SQL Anywhere。
(7)isql -q -c ″userid=dba;password=sql″ read
tesrdb.sql执行testdb.sql文件中的SQL语句,恢复自上次备份以来所破坏的数据。
3.如果数据库被破坏之前从没有作过testdb.db
文件备份,则需要将被破坏的数据库删除,重建一个结构相同、名字相同的新数据库,然后再用
testdb.log文件恢复。在DOS命令行中执行步骤为:
(1)Attrib -r testdb.db 将文件testdb.db文件的只读属性去掉,变为可写。
(2)用结构相同、名字相同的新数据库testdb.db将被破坏的testdb.db文件覆盖。
(3)dbtran-y testdb.log
testdb.sql将testdb.log日志文件的内容转换成SQL语句,放在testdb.sql文件中。
(4)Attrib -r testdb.log将文件testdb.log文件的只读属性去掉,变为可写。
(5)Del testdb.log将日志文件testdb.log删除。
(6)dbeng50 -d testdb.db启动SQL Anywhere。
(7) isql -q -c ″userid=dba;password=sql″ read
tesrdb.sql执行testdb.sql文件中的SQL 语句,恢复自上次备份以来所破坏的数据。
以上数据备份和数据恢复方法,我们都已在WIN95和Powerbuilder 5.0环境下试验成功。
作者单位:王举国 郑 力(农业银行山东省分行) |
|