1. 检查数据库服务器及备份服务器是否正常启动;

以sybase用户身份通过telnet工具登录进入到数据库服务器所在主机,使用showserver命令查看数据库服务器是否正常启动。

例子及说明:

showserver显示结果如下

USER       PID %CPU %MEM   SZ  RSS    TTY STAT    STIME  TIME COMMAND

sybase   16046  5.9  0.0 7060 4252      - A      Aug 10 7116:04 /sybase/bin/dataserver -d/dev/ryy_master -e/sybase/install/GA_YY_SY

sybase   16654  2.8  0.0 6976 4208      - A      Aug 10 3426:29 /sybase/bin/dataserver -ONLINE:2,0,0xf4090018,0x30000000,0x10000000

sybase   15128  2.4  0.0 6976 4120      - A      Aug 10 2938:05 /sybase/bin/backupserver -e/sybase/install/YY_SYB_BACKUP.log -N25 -C2

从例子中可以看出,当前系统中存在 三个ASE服务器进程,两个为数据库服务器(dataserver),一个为备份服务器(backupserver)。其中蓝色标记的为服务器进程号。

2. 检查数据库服务器是否能够正常连接;

以sybase用户身份通过telnet工具登录进入到数据库服务器所在主机,使用isql命令连接到数据库服务器内部。命令格式如下:

isql –U sa –P password –S dbsrv_name

其中sa为ASE默认超级管理员用户名称,password是sa登录相应的口令,dbsrv_name是需要登录的ASE数据库服务器的名称。

3. 检查系统数据库/用户数据库的物理分配、空间使用情况,确保有足够的数据、日志空间供应用系统使用。

以Sybase用户登录主机,使用isql程序登录到数据库服务器中,执行以下命令:

l 查看数据库总体情况信息

sp_helpdb DBNAME

l 查看数据库数据日志空间信息

sp_helpsegment ‘logsegment’

l 查看数据库使用空间信息

use DBNAME

go

sp_spaceused

go

例子及说明:

在isql中使用ASE中sp_helpdb命令对数据库进行空间检查。

name                     db_size       owner                    dbid        created        status                                                                                                

----                     -------       -----                    ----------- -------        ------                                                                                                

yydb                         3531.0 MB dxgl                               7 Nov 21, 1999   select into/bulkcopy/pllsort, trunc log on chkpt, allow nulls by default                              

device_fragments               size          usage                free kbytes

----------------               ----          -----                -----------

yy_dtv1                        503.0 MB      data only                  30512

yy_dtv2                        607.0 MB      data only                   3904

yy_dtv3                        607.0 MB      data only                  11568

yy_dtv4                        1007.0 MB     data only                 263120

yy_dtlog                       807.0 MB      log only                  793808

从例子中可以看出,当前数据库名称为yydb,此数据库总共的使用空间为3531.0 MB,数据库一共占用了 yy_dtv1、yy_dtv2、yy_dtv3、yy_dtv4四个设备作为数据空间使用以及yy_dtlog设备作为日志设备空间使用。可以从上面的结果free kbytes列中看到当前数据库空间剩余情况。

如果数据库数据空间或者日志空间剩余不足,都将影响到当前应用系统的正常运行,需要及时地进行数据库扩展。

4. 每日检查数据库错误日志

以sybase用户身份通过telnet工具登录进入到数据库服务器所在主机,进入到Sybase ASE产品安装目录下的ASE-12_X目录下的install目录中。

使用ls –l *.log命令可以查看到所有日志文件。数据库服务器错误日志文件文件名称一般为 数据库服务器名称.log。

可以使用vi命令分别对数据库服务器及备份服务器错误日志文件进行查看,错误信息一般都有相应的错误号,形式类似“Error: 错误号 错误信息”。如果对于显示信息无法判定其是否正常,可以使用ftp方式将文件下载到客户端,然后通过email发送给相关的维护工程师进行分析和解决。

5. 每日检查备份服务器日志

以sybase用户身份通过telnet工具登录进入到数据库服务器所在主机,进入到Sybase ASE产品安装目录下的ASE-12_X目录下的install目录中。

使用ls –l *.log命令可以查看到所有日志文件。备份服务器错误日志文件文件名称一般为 备份服务器名称.log。

可以使用vi命令分别对数据库服务器及备份服务器错误日志文件进行查看,如果对于显示信息无法判定其是否正常,可以使用ftp方式将文件下载到客户端,然后通过email发送给相关的维护工程师进行分析和解决。通过检查备份服务器日志,确认每日的数据库备份正常进行。

同时,如果是往物理磁盘进行备份应使用df –k或者bdf命令确认备份使用的文件系统有足够的存储空间用于存放备份文件;如果使用磁带进行备份应使用多盘磁带进行轮流备份,避免磁带损坏带来的数据库备份无法恢复故障。

6. 在系统高峰或者出现性能下降的情况时,使用sp_sysmon命令收集相关的数据库系统监控信息

使用sysmon可以全面检测数据库核心运行性能,重点检测以下指标:CPU占用、核心页交换、I/O流量、网络流量、锁竞争、内存调度等

操作步骤如下:

1. 在主机的任意目录下创建文件,名称可以为 sysmon.sql

sysmon.sql文件内容如下:

sp_sysmon '00:05:00'      

go

代表监控对当前运行的数据库服务器进行5分钟的全面采样。

根据实际情况,采样的频度及采样时间长短可能会有所差异

2. 在相同目录下建立文件名为 sysmon.sh

内容如下

isql -Usa -P password -S Server_name -i sysmon.sql -o sysmon.out

3. 执行sysmon.bat 脚本,监控完成后将生成 sysmon.out 文件

sysmon输出的监测结果是一些统计分析的数字信息,普通用户并没有办法直接通过这些统计信息得出性能的瓶颈结论以及解决办法,用户可对照ASE文档《性能优化》第三卷中针对sysmon的专门章节描述可以进行相应的判断,也可以将得到的文件发给Sybase工程师进行分析。

为了能够准确的得到系统瓶颈信息,应该在系统较闲、较忙时都进行一定数量的监测,之后将结果进行对比从而得到更准确的信息。

7. 在存储硬件设备出现故障时进行数据库一致性检查

为发现数据库一致性故障,在储存硬件故障发生或者错误日志中报告数据表页链损坏、存储设备读写错误等信息时,对数据库作dbcc 检查,包括dbcc checkdb、dbcc checkalloc、  dbcc checkcatalog等。

A. 在主机的任意目录下创建文件,名称可以为 dbcc.sql

dbcc.sql文件内容如下:

use master

go

dbcc checkdb(db_name)

go

dbcc checkalloc(db_name)

go

B. 在相同目录下建立文件名为 dbcc.sh

内容如下

isql -Usa -P password -S Server_name -i dbcc.sql -o dbcc.out

C. 执行dbcc.sh 脚本,监控完成后将生成 dbcc.out 文件

在dbcc检查结果中,数据库错误信息一般都是以Msg开头。

如果检查后发现错误,可以参照《ASE Trooble Shooting》针对错误进一步的解决

8. 索引统计信息定期更新和存储过程、触发器的重编译

对于数据库中数据表的索引统计信息的定期更新对于系统性能有很大的影响,应该制定对索引统计信息定期更新的执行计划。

建议定期能对所有用户数据库中数据表或者更新频繁的大数据表进行update all statistics操作,另外在索引统计信息更新完毕后,应该对与表相关的存储过程和触发器进行一次重新编译,以能够利用到最佳的查询计划。

   命令格式:

   update statistics table_name

sp_recompile table_name

A. 可使用下面的方法对数据库中所有表生成索引统计信息更新脚本:

打开sql advantage,选择需要进行更新统计信息的数据库,输入如下查询:

select 'update statistics' + name + char(10) + ‘go’ from sysobjects where type ='U' order by name

这个命令将生成一个可以批量执行的SQL命令

执行生成的SQL命令,将对当前数据库中所有用户表及其上的索引进行 统计信息更新 维护动作。对于大数据量的数据库,此命令可能耗时较长,在业务高峰期可能会造成业务阻塞,所以应选择业务较为空闲时进行。

B. 标记表上相关的存储过程和触发器需要重编译,从而使存储过程、触发器能够使用到最新的索引统计信息,从而保证系统高效运行。

打开sql advantage,选择需要进行更新统计信息的数据库,输入如下查询:

select 'sp_recompile' + name +char(10) + ‘go’ from sysobjects where type ='U' order by name

这个命令将生成一个可以批量执行的SQL命令执行生成的SQL命令,将对当前数据库中所有用户表上的相关的存储过程进行重新编译维护动作。


9、如何扩展数据库?

扩展数据空间:

alter database db_name on device_name  

扩展日志空间:

alter database db_name log on  device_name


10、如何设置数据库选项可以在用户表中自动添加序号生成器?

use master

go

sp_dboption db_name, “ auto identity”, true

go

use db_name

go

checkpoint

go


11、如何为数据库创建数据库用户?

语法:sp_adduser loginame [, name_in_db [, grpname]]

举例:

1.sp_adduser margaret  

将"margaret"增加为数据库用户。他的数据库用户名与Adaptive Server 的登录

名(login name)相同, 并且属于缺省组"public"。  

2.sp_adduser haroldq, harold, fort_mudge

将"haroldq"增加为数据库用户。当 "haroldq"使用当前数据库时,他的名字为

"harold"。该用户属于“ fort_mudge”组,同时也属于缺省组 "public"。