我们在SAP Sybase ASE 15.7数据库上运行SAP Solution Manager。这意味着我们有一个用户数据库,其中包含应用程序数据,以及一个专门映射到此用户数据库的特殊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系统段中的空间 有没有人有任何提示或程序来正确监控临时数据库并找到导致需要大量临时工作表的陈述或交易?
答案 0 :(得分:0)
在tempdb中消耗空间的原因有很多。您可以通过定期查询MDA表monProcessObject来获得一些见解。
答案 1 :(得分:0)
默认情况下,“系统”段与“默认”段位于同一位置(即两个段都位于同一组设备片段中)。如果“系统”段已被修改为驻留在比“默认”段更少和/或单独的设备片段上,则可能会有所不同。
我想知道'系统'段是否可能被修改为仅驻留在一个小的设备片段上,而数据库的扩展(到150 GB)可能没有增加'系统'段可用的空间
目前尚不清楚为扩展“设备和数据库细分”采取了哪些实际步骤(例如,只扩展了'默认'细分?),所以看看下面的内容会很有趣:
use saptempdb
go
exec sp_helpdb saptempdb
go
这应提供必要的详细信息,以告知哪些段驻留在哪些设备片段上,包括显示“系统”片段是否仅限于较小的设备片段。
如果'系统'段确实驻留在一个小的设备片段上,则可以通过将该段扩展(通过sp_extendsegment
)到数据库中的其他设备片段(例如, “默认”细分当前所在的设备片段。