如何捕获锁定/锁定消耗的SPID/进程

2020-08-21 01:28发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)嗨, 我有7 TB大小的大型S...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨,

我有7 TB大小的大型SAP ASE数据库,正在运行数千个作业。 我们在深夜遇到了"锁用尽"问题,很难找到哪个SPID/进程占用了所有锁。

在DBA控制台中找不到哪个会话消耗了所有锁的信息。

在ASE日志中,所有可用的受害会话信息均有效,而并非元凶会话。

请建议我们如何找到作业消耗所有锁的会话,或者将来如何进行监视。

此致

Bhupendra Sharma

3条回答
浮生未央
2020-08-21 01:52

你好Bhupendra,

如果并发性很高,很难检查哪一个是导致此问题的罪魁祸首。 一个工作(即数据加载)或用户会话(即报告)需要访问比平常更多的数据。 一些建议:

1)要检查ASE错误日志中报告的第一个错误1204的日期时间,并与SM37进行交叉匹配,以检查哪些作业可能已在该日期时间附近运行。 至少可以帮助减少批处理作业的选择。

2)要从当天的DBACockpit> Performance> SQL语句> Top语句中检查消耗最大的语句(平均经过时间更长),并检查其Details是否在该时间运行 报告了第一个错误1204的位置。 首先,要分析查询是进行表扫描还是访问非常大的表,是否对表进行时间重组等。请确保表重组已经完成(通过ATM)。

3 )还要检查ASE参数"锁数"的值,考虑到您的数据库大小,该值至少应为1500万。 不要犹豫将其增加到2000万,并继续监视ASE错误日志中是否有新的1204,或者您可以在isql会话(包括在crontab shell上)上运行此命令,以查看锁的使用情况不时演变 :

isql -S -Usapsa -X

sp_monitorconfig"锁数"
go

当几乎达到限制时,请检查 从SM50当前会话开始,并通过DBACockpit>性能>进程或使用isql从" select * from master..sysproceses"查询中从ASE中进行检查。

4)设置lock_count资源调控器限制。 您可以参考KBA 2203739 -"错误1204:服务器已失锁并挂起-SAP ASE" 和SAP注意 2224350 -SYB:DBA座舱-为"锁定计数"启用资源限制并支持操作类型 '取消交易'

HTH,

亲切的问候,
维多利亚。

一周热门 更多>