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

2020-09-14 16:35发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)在我工作的地方,我们遇到了一个长...

         点击此处--->   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条回答
三十六小时_GS
2020-09-14 17:15

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



一周热门 更多>