Skip to Content
0

ERROR SYBASE DSI SUSPENDED

Jun 01, 2017 at 12:01 PM

301

avatar image

Hello SAP Community,

I am getting below error trying to resume connection to our standby site. Master database is replicating well only the <SID> database which is not.

See below logs i have extracted from repserver logs after executing resume connection to <standby site i.e. SITE2>

----------------------------------------------------------------------

W. 2017/06/01 14:26:38. WARNING #5185 DSI EXEC(106(1) <SID>_SITE2.<SID>) - i/hqexec.c(5156) Row count mismatch for the command executed on '<SID>_SITE2.<SID>'. The command impacted 0 rows but it should impact 1 rows. I. 2017/06/01 14:26:38. (HQ Error): delete from SAPSR3."TBTCS" where "JOBNAME"='RSWUWFML2' and "JOBCOUNT"='00042001' I. 2017/06/01 14:26:38. A grouped transaction of 66 individual transactions has failed in database '<SID>_SITE2.<SID>'. It will be broken into smaller groups and retried. W. 2017/06/01 14:26:38. WARNING #5185 DSI EXEC(106(1) <SID>_SITE2.<SID>) - i/hqexec.c(5156) Row count mismatch for the command executed on '<SID>_SITE2.<SID>'. The command impacted 0 rows but it should impact 1 rows. I. 2017/06/01 14:26:38. (HQ Error): delete from SAPSR3."TBTCS" where "JOBNAME"='RSWUWFML2' and "JOBCOUNT"='00042001' I. 2017/06/01 14:26:38. . H. 2017/06/01 14:26:38. THREAD FATAL ERROR #5189 DSI EXEC(106(1) <SID>_SITE2.<SID>) - /dsiutil.c(892) The DSI thread for the '<SID>_SITE2.<SID>' database is being shut down. DSI received Replication Server error #5185 which is mapped to STOP_REPLICATION or RETRY_STOP_REPLICATION. See the Replication Server log for more information. T. 2017/06/01 14:26:38. (45): Last command(s) to '<SID>_SITE2.<SID>': T. 2017/06/01 14:26:38. (45): 'update SAPSR3."TBTCS" set "JOBGROUP"=? where "JOBNAME"=? and "JOBCOUNT"=? ' W. 2017/06/01 14:26:38. WARNING #5185 DSI EXEC(106(1) <SID>_SITE2.<SID>) - /dsiexec.c(19219) Row count mismatch for the command executed on '<SID>_SITE2.<SID>'. The command impacted 0 rows but it should impact 1 rows. I. 2017/06/01 14:26:38. The error was caused by output command #2 of the failed transaction on table 'SAPSR3.TBTCS'. I. 2017/06/01 14:26:38. The DSI thread for database '<SID>_SITE2.<SID>' is shutdown.

10 |10000 characters needed characters left characters exceeded
* Please Login or Register to Answer, Follow or Comment.

1 Answer

Mark A Parsons Jun 01, 2017 at 03:01 PM
0

The default behavior for the replication server error class is to suspend a connection when it finds a rowcount mismatch (error #5185).

In your case the DSI submitted a delete command that affected 0 rows in the RDB, but said command is associated with a single row delete in the PDB. Whether this is ok (eg, can be ignored) is up to you to determine ...

If the column set (JOBNAME, JOBCOUNT) represents a uniqe index on the TBTCS table, then your rowcount mismatch would seem to imply that your RDB is out of sync with the PDB (at least for this particular row in the TBTCS table; you'd have to take additional steps to determine if there are any other discrepancies between the PDB and RDB).

If the column set (JOBNAME, JOBCOUNT) does not represent a unique row in the TBTCS table (ie, there could be multiple rows with the same JOBNAME+JOBCOUNT values) then this specific instance of error #5185 may be spurious ... *IF* ... there was an earlier message that stated a delete command impacted 2/3/4/or-more rows when it should have impacted 1 row, otherwise you could still be looking at an out of sync issue.

----------------

As with an error class, you can assign specific actions to error #'s in the replication server error class.

Keep in mind that when you modify the action for a given error (eg, #5185), this action will be applied for any/all occurrences of the error in every RDB where the replication server error class has been assigned.

For example, if this particular DSI has the default replication server error class [ rs_repserver_error_class ] assigned to it, and you assign a different action for error #5185, then that same action will be applied for every DSI managed by this repserver, plus any DSI connections managed by downstream repservers that inherit their rs_repserver_error_class settings from this repserver.

If you want to change the action for error #5185 for just this particular DSI connection then you'll want to create a custom replication server error class, assign the action to said new class, then assign said new class to the DSI.

----------------

Since this replication setup is in support of a SAP application you may first want to run some searches of SAP notes/kba's.

If error #5185 is a known, recurring issue then you should find some notes/kba's with an 'official' SAP suggested solution (eg, change action for #5185; find/fix an out of sync issue).

Show 3 Share
10 |10000 characters needed characters left characters exceeded

Thanks Mark for your response.

I just looked at the specific error (The command impacted 0 rows but it should impact 1 rows), and was wondering if it is caused by the delete statement (delete from SAPSR3."TBTCS" where "JOBNAME"='RSWUWFML2' and "JOBCOUNT"='00042001') shown in the log?

I have also tried to select JOBNAME and JOBCOUNT on the standby site as below :

1> SELECT JOBNAME,JOBCOUNT FROM SAPSR3.TBTCS WHERE JOBNAME='RSWUWFML2'

2> go

JOBNAME JOBCOUNT

------------------------------------------------------------------------------------------------ ------------------------

RSWUWFML2 00033000

(1 row affected)

Why is the job count value different from the one given on the delete statement where clause (00042001)? Can I update the JOBCOUNT value in the table to "00042001" to match the delete statement criteria?

Regards,

Dominic

0

Hi Mark,

I have also checked the current JOBCOUNT value on the PDB as below :

1> SELECT JOBNAME,JOBCOUNT FROM SAPSR3.TBTCS WHERE JOBNAME='RSWUWFML2'

2> go

JOBNAME JOBCOUNT

------------------------------------------------------------------------------------------------ ------------------------

RSWUWFML2 18102800

(1 row affected)

Regards,

Dominic

0

While I work with SAP/Sybase ASE and SAP/Sybase Replication Server (SRS), I do not work with SAP applications, so I can't comment specifically on what should be in the SAPSR3.TBTCS table (PDB nor RDB).

However, generally speaking, it looks (to me) like your table may be out of sync between the PDB and RDB; though keep in mind that if the DSI (into the RDB) is currently down then you may have some recent transactions (for SAPSR3.TBTCS) still sitting in the repserver queues which, once applied to the RDB, might bring the PDB and RDB copies into sync; net result is that you really can't know if the PDB and RDB copies of a table are in sync unless the replication system has been quiesced (ie, there are no transactions in flight between the PDB and RDB).

----------------

As for the question about manually updating the RDB table to match the DELETE statement's WHERE clause ... *shrug* ... while that would allow this particular DELETE statement to flow through the system, you may just be masking a bigger issue (eg, what happens if you have dozens, perhaps 100's, of follow-on transactions that fail with a similar error message ... do you manually update each target rows ... or track down the root cause to explain why the PDB and RDB may be out of sync?).

0