对Sybase ASE性能问题进行故障排除

2020-09-19 03:09发布

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

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


我是Sybase ASE的新手,但在先前的工作中我曾是MS SQL Server的DBA。 我现在是使用Sybase ASE的SAP Data Services的开发经理之一。 请注意,我不是数据服务的基础人员。 数据服务服务器和相应的Sybase ASE服务器由PaaS提供商托管。

有时,数据服务不可访问。 我无法访问数据服务CMC或数据服务管理控制台。

PaaS提供程序告诉我们一个错误的查询正在影响Sybase ASE服务器。 我问他们正在查询什么数据库和什么表,但是我从他们那里一直没有得到答案。 我知道可以从MS SQL Server确定这一点,但是可以确定是什么查询导致了Sybase ASE中的问题? 如果是这样,确定的过程是什么?

谢谢。

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

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


我是Sybase ASE的新手,但在先前的工作中我曾是MS SQL Server的DBA。 我现在是使用Sybase ASE的SAP Data Services的开发经理之一。 请注意,我不是数据服务的基础人员。 数据服务服务器和相应的Sybase ASE服务器由PaaS提供商托管。

有时,数据服务不可访问。 我无法访问数据服务CMC或数据服务管理控制台。

PaaS提供程序告诉我们一个错误的查询正在影响Sybase ASE服务器。 我问他们正在查询什么数据库和什么表,但是我从他们那里一直没有得到答案。 我知道可以从MS SQL Server确定这一点,但是可以确定是什么查询导致了Sybase ASE中的问题? 如果是这样,确定的过程是什么?

谢谢。

付费偷看设置
发送
5条回答
callcenter油条
1楼 · 2020-09-19 03:57.采纳回答

欢迎来到SAP/Sybase ASE世界!

MSSQL Server从以前的SQLServer(现在称为ASE)继承了很多东西。 因此,应该熟悉这些理由。

ASE有一些工具可以帮助DBA

-用于整体服务器运行状况的sysmon

-MDA表缩小到制造麻烦的人。

-大量开箱即用的系统程序帮助

-了解服务器错误日志,sybdiag的健康状况的常用工具,用于索引,表,dbcc等的健康状况

因此,开始熟悉那些表,尤其是MDA表。

价格方面,还有第三方工具,例如Solarwinds的DPA,Bradmark的Surveillance, etc.to 可以帮助您

HTH和祝你好运

Avinash

暮风yp
2楼-- · 2020-09-19 03:32

Re:sysmon可确保服务器总体运行状况

在sysmon中需要注意的一件事:在"内核利用率"部分中,以新的线程模式运行ASE时," I/O繁忙"百分比可能会错误地很高。 从知识库文章1863319:

 *线程模式下的I/O繁忙计数与过程模式下的含义不同。 原因是引擎未在线程模式下执行I/O。 其他指定线程(不是引擎)正在线程模式下执行I/O。  
 *当前,在线程模式下,如果ASE有任何未完成的I/O并且引擎处于空闲状态,则引擎被计为" I/O忙"。 如果有一个I/O未完成并且有三个引擎处于空闲状态,则每个引擎都被视为" I/O Busy"。  
 *该问题已被识别并记录在SAP CR 757246下。其描述为:" sp_sysmon IO Busy在线程内核模式下权重过大。"。
 *解决方案-当前没有计划针对此问题的目标SAP ASE Service Pack(SAP CR 757246)。 我们的产品小组正在对其进行审核。 请将此KBA标记为"最爱",以便在CR修复后自动得到通知。
软件心理学工程师
3楼-- · 2020-09-19 03:38

一个容易检查的事情是查看资源是否已用完。 使用:

 sp_monitorconfig"全部" 

如果您正在寻找错误的查询,则可以使用mon表,但其中有很多。 这是我用于实时监控(即用于当前运行的查询)的基本查询:

开启nocount
 走
 在上设置flushmessage
 走
 从monProcessActivity选择*进入#old
 等待延迟" 00:00:05"
 从monProcessActivity选择*进入#new
 而(1 = 1)
 开始
   选择new.SPID,login = suser_name(new.ServerUserID),
          CPUTime = new.CPUTime-old.CPUTime,
          PhysicalReads = new.PhysicalReads-old.PhysicalReads,LogicalReads = new.LogicalReads-old.LogicalReads,
          PhysicalWrites = new.PhysicalWrites-old.PhysicalWrites,new.LocksHeld
          来自#old old,#new new
          其中old.SPID = new.SPID和old.KPID = new.KPID
          和(new.CPUTime-old.CPUTime> 0或new.PhysicalReads-old.PhysicalReads> 0或
                new.LogicalReads-old.LogicalReads> 0或new.PhysicalWrites-old.PhysicalWrites> 0)
          按new.CPUTime-old.CPUTime desc排序

   截断旧表
   插入#old,从#new选择*
   截断表#new
   等待延迟" 00:00:05"
   -糟糕,错过了这条线。 在以后的编辑中添加:
   从monProcessActivity插入#new select *
 结束
 走
 

您还可以使用monProcessSQLText查看给定spid运行的SQL(请确保按SPID,BatchID,LineNumber SequenceInLine排序)

如果要查看历史数据,则要复杂一些。 您可以使用monCachedProcedures查看缓存过程的累积统计信息(如果将存储过程推出缓存,则统计信息将消失。同一存储过程可以有多个缓存副本)。 也有monCachedStatement,但必须启用语句缓存才能使其正常工作。 高速缓存的语句有时可能会产生"需要重新编译"的副作用(高速缓存的语句在不应该进行扫描时会扫描)

SAP浪
4楼-- · 2020-09-19 03:35

糟糕。 感谢您的纠正。

风早神人
5楼-- · 2020-09-19 03:31

您好,梅尔,

从数据库角度来看,您必须要求PaaS提供程序从ASE发送一个sybdiag输出开始。 这是日志和配置的集合,如果后者在ASE日志中写入错误,则"可能"为您提供有关该问题的宝贵信息。 sybdiag也将有助于检查ASE是否需要调整。 如果没有提供者向您提供有关"错误查询"的详细信息,则很难进行故障排除。

首先要检查ASE日志。 如果在出现问题时在日志中未发现任何错误,则需要它们向您发送错误查询的证据。 这样您就可以检查相关的表。

这里是如何获得sybdiag的:

1。 以sybase用户身份登录。 在Windows系统上,请确保以管理员模式打开cmd提示符

2。 在命令行上执行以下命令

sybdiag -S <服务器名称>-美国-T asecore,密钥文件,aseadd,osdata

有关更多详细信息,请参见: https://launchpad.support。 sap.com/#/notes/2041802

希望这会有所帮助

Mehrab

一周热门 更多>