0

我们在 SAP Sybase ASE 15.7 数据库上运行 SAP 解决方案管理器。这意味着我们有一个保存应用程序数据的用户数据库,以及一个专门映射到该用户数据库的特殊 tempdb。
在过去的几周里,数据库服务器一直在记录如下消息:

Can't allocate Space forobject 'temp worktable' in database 'saptempdb'  
because 'system' segment is full/has no free extents.[...]  

到目前为止,一切都很好。我一直在将设备和数据库段一次又一次地扩展到现在 150 GB 的大小,但消息不断出现。从应用程序管理员那里,我不断收到无法进一步调整应用程序配置的声明。每当出现日志消息时(例如通过查询 sysusages 表),我一直在尝试手动获取有关 tempdb 上实际发生的情况的更多信息,但是当它尝试使用所有数据库时,我似乎无法当场抓获数据库saptempdb 的系统段中的空间。
有没有人有任何提示或程序来正确监控临时数据库并找到导致对巨大临时工作表的需求的语句或事务?

4

2 回答 2

0

默认情况下,“系统”段与“默认”段位于同一位置(即,两个段位于同一组设备片段上)。这可能不同的是,如果“系统”段已被修改为驻留在比“默认”段更少和/或单独的设备片段上。

我想知道“系统”段是否可能已被修改为仅驻留在一个较小的设备片段上,而数据库的扩展(至 150 GB)可能不会增加“系统”段的可用空间。

目前尚不清楚采取了哪些实际步骤来扩展“设备和数据库段”(例如,是否仅扩展了“默认”段?),所以看看以下返回的内容会很有趣:

use saptempdb
go
exec sp_helpdb saptempdb
go

这应该提供必要的详细信息来告诉哪些段驻留在哪些设备片段上,包括显示“系统”段是否仅限于较小的设备片段。

如果“系统”段确实驻留在较小的设备片段上,则“系统”段的大小可以通过sp_extendsegment将该段扩展到(通过)数据库中的其他设备片段(例如,“默认”的设备片段上段当前正在运行)。

于 2017-08-22T18:17:24.150 回答
0

在您的 tempdb 中消耗空间的原因可能有很多。您可以通过定期查询 MDA 表 monProcessObject 获得一些见解。

于 2017-04-03T10:22:14.387 回答