dtfox 发表于 2008-12-13 14:50

sybase早版本中增加原有数据库空间出错

环境:
    操作系统是win2000,分区格式为NTFS,分为C:,D:,E:三个区,D:为存放数据库文件地方。
    sybase为11.9

问题:
    当应用在执行数据操作时,会提示我Can't allocate space for object `%.*s' in database `%.*s' because `%.*s' segment is full. If you ran out of space in syslogs, dump the transaction log. Otherwise, use ALTER DATABASE or sp_extendsegment to increase size of the segment.我先是尝试清除日志,当我清除日志后问题依然存在,后来发现是当初分配给该数据库的空间已经用完(D盘硬盘空间还有很大,只是分配给该数据库的空间已经用完)。我尝试用alter database database_name on database_drive1=100但无效。用sybase central在数据库右键属性里进行修改也不能成功。甚至后来出现"ALTER DATABASE failed. Log space in master database has reached the last chance threshold. Please free-up log space in master database and try again. "这样的错误。

现在我是不知如何是好。请众兄弟姐妹指教指教!我万分感谢!因为是新人没有分可给。以后将报答!

[ 本帖最后由 dtfox 于 2008-12-13 16:09 编辑 ]

dtfox 发表于 2008-12-13 14:55

并且已经在google和baidu进行过搜索,未果!

dtfox 发表于 2008-12-13 14:58

name                  db_size      owner                  dbid      created      status                                                                                                
----                  -------      -----                  ----------- -------      ------                                                                                                
past                        1500.0 MB sa                              6 Dec 13, 2005trunc log on chkpt                                                                                    

device_fragments            size          usage                free kbytes
----------------            ----          -----                -----------
past_data                      1000.0 MB    data only                      0
past_log                      500.0 MB      log only                  511984

数据库的情况,空间没有了。

D_D_D_D 发表于 2008-12-14 00:38

11.9啊...

那就disk init先,建立一个设备,不过这个版本需要指定设备号,具体的语法可以查到
然后alter database past on 新设备

然后操作就不会报错了

dtfox 发表于 2008-12-14 16:37

原帖由 D_D_D_D 于 2008-12-14 00:38 发表 http://bbs.chinaunix.net/images/common/back.gif
11.9啊...

那就disk init先,建立一个设备,不过这个版本需要指定设备号,具体的语法可以查到
然后alter database past on 新设备

然后操作就不会报错了

我不知道disk init怎么做,因为我根本没有使用过sybase。希望能得到详细操作流程和具体语句。谢谢

在CSDN上听有人说是因为master使用太多需要清理,不知道是不是那么一回事。我也去测试一下。

dtfox 发表于 2008-12-14 17:02

看见CSDN上有人那么据说后,我去sp_helpdb master后确认了有项目为0了,在使用dump tran master with truncate_only清理后,已经有了些许的空间,但是当我通过sybase central增加该数据库的空间时,确实不在出现以上错误,但是仍然提示我:“CREATE of ALTER DATABASE failed because the device 'past_data' has no space available either for log or for data.”,是不是因为该数据库本身没有空间,就无法增加其空间呢?该如何处理?谢谢。

我SQL Advantage里用alter database past on past_data = 100也是提示上述错误。

D_D_D_D 发表于 2008-12-14 19:05

先删master的日志是正确的,disk init举例

DISK INIT
NAME=设备名,
PHYSNAME=物理设备名,
VDEVNO=虚拟设备号,
SIZE=块数
希望还是能自己看看,别人都写了对提高没有任何好处的

然后就可以alter databasepast on了

设备最好做的大点,因为11.9不支持 disk reinit

dtfox 发表于 2008-12-15 17:03

非常谢谢4d的帮助,现问题已经解决。谢谢谢谢。
页: [1]
查看完整版本: sybase早版本中增加原有数据库空间出错