检查在DSI连接上执行的事务的一致性。

2020-09-14 16:35发布

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

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


在我工作的地方,我们遇到了一个长期运行的问题,其中大容量varbinary列(〜16k)的大量复制导致repserver偶尔崩溃。 当Repserver崩溃时,我们注意到在成功应用的事务中偶然丢失了数据的varbinary行(确切地说,这是事务中丢失的复制命令。但是通常,这对我们来说是丢失的插入) 。 多年以来,我们已经为此与SAP开了几张罚单(错误事件),但一直未能查明原因。

Linux的repserver的64位版本似乎已禁用堆栈跟踪(CR 811377、341442),这一事实使问题更加严重,因此识别导致问题的代码非常困难。

仅供参考,崩溃/数据丢失问题似乎与负载有关。 我们已经解决了这个问题(主要是通过摆脱路由,关闭SMP线程,并将复制拆分到单独的Repserver(针对不同的数据库)),因此每个Repserver的负载都较小。 我们还运行数据检查脚本以查找丢失的行。

请注意,当复制服务器处于活动状态时,正常关闭repserver时,我们还会看到类似的"成功事务中缺少插入"数据丢失的情况。 因此,现在我们执行"从所有挂起的日志传输",并在关闭repserver之前先清空repserver。

我的问题是,无论如何,是否有必要让repserver检查事务的一致性(即,一组开始事务/提交事务的命令内的一组插入/删除/更新)。 例如,检查应用于事务的RCL命令的数量。

请注意,设置dsi_row_count_validation没有帮助,因为从不运行insert命令。

预先感谢。
Ben

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

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


在我工作的地方,我们遇到了一个长期运行的问题,其中大容量varbinary列(〜16k)的大量复制导致repserver偶尔崩溃。 当Repserver崩溃时,我们注意到在成功应用的事务中偶然丢失了数据的varbinary行(确切地说,这是事务中丢失的复制命令。但是通常,这对我们来说是丢失的插入) 。 多年以来,我们已经为此与SAP开了几张罚单(错误事件),但一直未能查明原因。

Linux的repserver的64位版本似乎已禁用堆栈跟踪(CR 811377、341442),这一事实使问题更加严重,因此识别导致问题的代码非常困难。

仅供参考,崩溃/数据丢失问题似乎与负载有关。 我们已经解决了这个问题(主要是通过摆脱路由,关闭SMP线程,并将复制拆分到单独的Repserver(针对不同的数据库)),因此每个Repserver的负载都较小。 我们还运行数据检查脚本以查找丢失的行。

请注意,当复制服务器处于活动状态时,正常关闭repserver时,我们还会看到类似的"成功事务中缺少插入"数据丢失的情况。 因此,现在我们执行"从所有挂起的日志传输",并在关闭repserver之前先清空repserver。

我的问题是,无论如何,是否有必要让repserver检查事务的一致性(即,一组开始事务/提交事务的命令内的一组插入/删除/更新)。 例如,检查应用于事务的RCL命令的数量。

请注意,设置dsi_row_count_validation没有帮助,因为从不运行insert命令。

预先感谢。
Ben

付费偷看设置
发送
3条回答
callcenter油条
1楼-- · 2020-09-14 17:08

您是否尝试过SQL语句复制?

Repagent将DML语句和exec rs_sqldml @ rs_rowcount =发送到逻辑入站队列。 DSI检查受影响的行数是否匹配,如果行数不匹配,则RS返回错误5186,并且DSI默认情况下被挂起。 然后,您可以相应地处理该错误。 假定问题出在RS命令的生成中。 如果失败的是对目标的应用程序,那么它可能无济于事。 它本身并不是真正的检查,但可能会帮助您解决问题。 我的设置中没有较大的varbinary列,而是较大的字段为TEXT数据类型,因此我没有看到您提到的行为。

我的另一种想法是,也许数据保障选件可能具有可以帮助您解决此问题的功能,但是我对此没有经验。

三十六小时_GS
2楼-- · 2020-09-14 17:15

在我的实现中,我从未见过使用语句复制使行计数不同步的任何实例。我所看到的是,有时sqldml的执行失败并由于两个原因而挂起DSI 有时会在我们的实现中出现的其他问题-'set dsi_quoted_identifier'和我们几年前从iso-1到utf-8进行的字符集切换。 似乎sqldml有时会失败,并且在RS日志和挂起的DSI中显示为语法错误。 我们只是禁用语句复制,直到有问题的事务通过并再次恢复为止。 这种情况可能一年发生四次,因此不值得调查。



d56caomao
3楼-- · 2020-09-14 17:08

仅供参考,现在有一个知识库文章(KBA),编号2681937,它讨论了上述缺少的repserver stracktrace问题。 基本上,它已在RS 15.7.1 SP305或更高版本(CR 794854)中修复

一周热门 更多>