昨天又有开发同事表示sybase数据库使用又出现故障,报错情况如下图:
(1)客户端无法登陆sybase数据库,报错信息如下:
Device 'add_device' (with physical name '/data/databackup/add_dev.dat',and virtual device number 29) has not been correctly activated at startup time.
Please contact a user with SystemAdministrator (SA) role.Failed to allocate disk space for a work table indatabase 'sybsystemprocs'.
You may be able to free up space by usingthe DUMP TRANsaction command, or you may want to extend the size of thedatabase by using the ALTER DATABASE command.
(2)使用命令行登陆,查看数据库状态信息的命令也都无法使用:
1、 查看数据库日志:
系启动数据库时名为“add_device”的存储设备启动失败。
2、 查看数据库中存储设备权限状况:
(数据库的安装配置等,全部使用的是sybase用户进行操作,数据库启动也使用sybase用户;
数据库登录、存储设备创建使用:sa。)
系新建的存储设备权限被修改,需赋予正确权限:
1. 重新为存储设备授权:
使用root用户,进入存储设备所在路径,将需要修改权限的文件授权为sybase用户:
(或者直接为整个文件夹授权)
chown –R sybase:sybase databackup
2. 然后查看文件夹中文件权限状况,确认授权正确:
3. 重新使用“sybase”用户登录sybase服务器,并重启实例:
如下图,存储设备正常启动,实例正常启动:
1、 关于数据库报错
Database 'sybsystemprocs' has not been recovered yet
需重新创建下sybsystemprocs库
操作过的步骤具体如下:
1. 启动数据库,提示如下:
Error: 840, Severity: 17, State: 1
evice 'sysprocsdev' (with physical name'/syb_data/sybproc.dat', and virtual device
number 1) has not been correctly activatedat startup time
2、恢复过程
2. 单用户模式启动:
startserver -f RUN_DBSERVER –m
3. 进入数据库,执行命令,允许更改系统表:
1>sp_configure ‘allow updates to systemtables’,1
2>go
4. 删除sybsystemprocs库
1>use master
2>go
1>drop database sybsystemprocs
2>go
OR
1>dbcc dbrepair(sybsystemprocs,dropdb)
2>go
OR
1>delete sysdatabases where dbid=4
2>go
3>delete sysusages where dbid=4
4>go
5. 删除sysdevices表中sybproc.dat设备的定义
1>begin tran
2>delete sysdevices where name='sysprocsdev'
3>commit
6. 重新启动数据库
startserver -f RUN_DBSERVER –m
7. 新建数据库设备,名为'sysprocsdev',为sybsystemprocs重新初始化设备:
isql -Usa -P –SDBSERVER
1>use master
2>go
1>disk init
2>name='sysprocsdev', #存储设备名称
3>physname='/data/databackup/sybproc.dat',#存储设备存放路径
4>vdevno=35,#存储设备编号
5>size=51200 #新建设备100M
6>go6>go
8. 重建sybsystemprocs系统库
1>create database sybsystemprocs onsysprocsdev=90
2>go
效果如下图:
9. 重新启动数据库
startserver -f RUN_DBSERVER –m
10. 允许更改系统表:
1>sp_configure ‘allow updates to systemtables’,0
2>go
效果如下图:
11. 重建存储过程
isql -Usa -P -SDBSERVER -n -i/opt/sybase/ASE-15_0/scripts/installmaster
效果如下图: