首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >增加开放对象值的原因是什么?

增加开放对象值的原因是什么?
EN

Stack Overflow用户
提问于 2018-09-18 10:12:57
回答 1查看 980关注 0票数 0

sybase数据库中打开的对象数量正在急剧增加,并且出现了以下错误:

代码语言:javascript
复制
Increase the config parameter 'number of open objects' to avoid descriptor reuse.

起初,“打开对象”的值是100000。

代码语言:javascript
复制
   sp_monitorconfig "open objects"
    go
    Name    Num_free           Num_active   Pct_act  Max_Used   Reuse_cnt          Instance_Name
    number of open objects     1223         90380    95.25      92380   9269 

我将值从100000改为160000,但值仍在增加。有什么方法可以让我知道物体在增加吗?价值增加的原因是什么,如何停止这样的增长?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-18 12:24:01

当我看到这个问题(打开对象的描述符使用量不断增加)时,我将问题追溯到一个正在生成大量准备语句的应用程序(例如,对于重复的DML语句,应用程序将重新使用准备语句,而是为每个DML语句创建一个新的准备语句)。

在Sybase (现在的SAP) ASE中,准备好的语句被转换为“轻量级过程”(也称为LWP;想想“临时过程”),而后者又需要自己的描述符。

为了查明这是否是一个LWP问题:

  • 授予sybase_ts_role您的登录
  • 运行dbcc traceon(3604)
  • 运行dbcc des

注意:dbcc des将生成一个输出的批量,所以请确保将其捕获到一个文件中!!

在“dbcc des”输出中,LWP会显示以下属性:

  • 存在于登录程序的tempdb中
  • 有负宾语id
  • 有像*dddddddddddddd_hhhhhh (其中d‘==十进制数,'h’==十六进制数字).
  • 可能有像*aadddddddddd_dddddddddaa* ('d‘==十进制,’‘==字母字符’)这样的名字
  • objssystat = O_PROC
  • objsysstat2 = O2_LWP

找到冒犯的联系..。您可以从LWP名称( spid输出)或从master..monCachedProcedures列(查找名称为*sq##########ss**ss#########ss* )中提取master..monCachedProcedures.类似于系统/自动生成的名字的东西)。

注:视ASE版本而定(11? 12? 15? 16?)LWP的名称格式可能会有所不同,因此您可能需要做一些调查才能找到相关的spid

对于spid是名称一部分的LWP,spid很可能是(dbcc des)对象名的前5位数字;因此,对于下面的spid = 61

代码语言:javascript
复制
*00061000000606_9d5317
*00061000000626_a149eb
*00061000000606_9d5317
*00061000000589_63ea4e

多年来,这个主题出现了很多次,您可以在以下链接中查看我的一些杂乱无章:这里这里这里这里

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52384226

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档