2020-08-21 01:28发布
点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)嗨, 我有7 TB大小的大型S... 显示全部
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
嗨,
我有7 TB大小的大型SAP ASE数据库,正在运行数千个作业。 我们在深夜遇到了"锁用尽"问题,很难找到哪个SPID/进程占用了所有锁。
在DBA控制台中找不到哪个会话消耗了所有锁的信息。
在ASE日志中,所有可用的受害会话信息均有效,而并非元凶会话。
请建议我们如何找到作业消耗所有锁的会话,或者将来如何进行监视。
此致
Bhupendra Sharma
这是我用来监视锁的详细存储过程。 注意,此proc包含额外的代码,可忽略当有人运行" reorg rebuild
使用sybsystemprocs 走 创建过程sp_lock2 @verbose int = 0 如 开始 设置兼容性模式 设置为nocount if(@verbose = 0) 开始 -如果不详细,则显示每种spid和锁定类型的计数 选择p.spid,p.status,p.hostname,hostpid = p.hostprocess,p.program_name,p.cmd,BlockedOnSpid = p.blocked, object = case when(p.cmd =" REORG"和p.tran_name如"%ALTER TABLE ADM%"和p.tran_name如"%dbid =" + convert(varchar(20),l.DBID)+"%" 和p.tran_name,例如"%ID =" + convert(varchar(20),l.ObjectID)+"%" ) 然后l.DBName +" .." + convert(varchar(20),l.ObjectID) else l.DBName +" .." + object_name(l.ObjectID,l.DBID) 结束, l.LockID,l.LockState,l.LockType,l.LockLevel,WaitSecs = l.WaitTime,l.BlockedState,BlockedByLockID = l.BlockedBy,cnt = count(*) 进入#tmp_cnt 来自master..sysprocesses p,master..monLocks l 其中p.spid = l.SPID和p.spid!= @@ spid -从object_name()过滤出虚假错误消息,例如: -数据库''中的对象''正在进行REORG操作。 稍后重试查询。 -对于在带有w/dbid = 15的数据库中运行" reorg rebuild "的进程,sysprocesses将显示一个tran_name,例如" $ ALTER TABLE ADM ID = 192000684 dbid = 15 fid = 41" 按p.spid,p.status,p.hostname,p.hostprocess,p.program_name,p.cmd,p.blocked分组 (p.cmd =" REORG"和p.tran_name如"%ALTER TABLE ADM%"和p.tran_name如"%dbid =" + convert(varchar(20),l.DBID)+"%" 和p.tran_name,例如"%ID =" + convert(varchar(20),l.ObjectID)+"%" ) 然后l.DBName +" .." + convert(varchar(20),l.ObjectID) else l.DBName +" .." + object_name(l.ObjectID,l.DBID) 结束, l.LockID,l.LockState,l.LockType,l.LockLevel,l.WaitTime,l.BlockedState,l.BlockedBy exec sp_autoformat @fulltabname =" #tmp_cnt", @selectlist =" spid,状态,主机名,hostpid,程序名,cmd,BlockedOnSpid,对象,LockID,LockState,LockType,LockLevel,WaitSecs,BlockedState,BlockedByLockID,cnt", @orderby ="按spid,状态,主机名,hostpid,program_name,cmd,BlockedOnSpid,object,LockID,LockState,LockType,LockLevel进行排序" 删除表#tmp_cnt 结束 其他 开始 -对于详细输出,显示每个页面/行的锁定并显示SourceCodeID 选择p.spid,p.status,p.hostname,hostpid = p.hostprocess,p.program_name,p.cmd,BlockedOnSpid = p.blocked, object = case when(p.cmd =" REORG"和p.tran_name如"%ALTER TABLE ADM%"和p.tran_name如"%dbid =" + convert(varchar(20),l.DBID)+"%" 和p.tran_name,例如"%ID =" + convert(varchar(20),l.ObjectID)+"%" ) 然后l.DBName +" .." + convert(varchar(20),l.ObjectID) else l.DBName +" .." + object_name(l.ObjectID,l.DBID) 结束, l.LockID,l.LockState,l.LockType,l.LockLevel,WaitSecs = l.WaitTime,l.BlockedState,BlockedByLockID = l.BlockedBy,l.PageNumber,l.RowNumber,l.SourceCodeID 进入#tmp 来自master..sysprocesses p,master..monLocks l 其中p.spid = l.SPID和p.spid!= @@ spid exec sp_autoformat @fulltabname =" #tmp", @selectlist =" spid,状态,主机名,hostpid,program_name,cmd,BlockedOnSpid,对象,LockID,LockState,LockType,LockLevel,WaitSecs,BlockedState,BlockedByLockID,PageNumber,RowNumber,SourceCodeID", @orderby ="按spid,状态,主机名,hostpid,program_name,cmd,BlockedOnSpid,object,LockID,LockState,LockType,LockLevel进行排序" 删除表#tmp 结束 结束 走
此外,现在是否有发布此类共享代码的地方? (也许在github上?)
最多设置5个标签!
这是我用来监视锁的详细存储过程。 注意,此proc包含额外的代码,可忽略当有人运行" reorg rebuild
此外,现在是否有发布此类共享代码的地方? (也许在github上?)
一周热门 更多>
相关问答
采纳回答
编辑标签
举报内容
打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮
付费偷看金额在0.1-10元之间