The Read errors out and the following messages are observed in event_log:
Error 2017-01-30 10:11:39.206000 4280 16888 Reader: 11000 - sp_ordr failed: can't peek at queue (from sourceSID) [module ord]
At times this can also result in child processes of SharePlex like Capture and Read failing to launch when SharePlex is bounced.
The queue corruption can be resolved by pursuing one of the following. Remember that resolving queue corruption can result in some or all data loss depending on the extent of corruption.
Try to resolve queue corruption by the simplest method of running “fixup all” after shutting down SharePlex as below:
1. shutdown Shareplex
2. Invoke the qview program located in the bin sub directory under product directory and run "fixup all" as follows:
qview -i
qview> fixup all
3. restart Shareplex
If the above does not resolve the problem, most likely the queue corruption persists and SharePlex Support may need to be involved. There are many ways to deal with queue corruption and not all of them are suitable in every situation. SharePlex Support has the expertise and tools to deal with such problems. Depending on the type and extent of queue corruption, data can be salvaged fully or there can be total data loss.
If willing to tolerate complete data loss, you can also carry out the following steps to deal with the queue corruption encountered above:
1. Shutdown SharePlex on source and target.
2. Invoke qview utility located in /proddir/bin (where proddir refers to SharePlex’ Product Directory):
Source:
qview –i
qview>qsetup
qview>reset c
qview>reset x (You will be prompted to select the appropriate named Export queue if named queues exist, otherwise you will only be prompted with the default Export queue. You have to answer in ‘Y’ or ‘N’)
qview>exit
Target:
qview –i
qview>qsetup
qview>reset p (You will be prompted to select the appropriate named Post queue if named queues exist, otherwise you will only be prompted with the default Post queue. You have to answer in ‘Y’ or ‘N’)
qview>exit
3. Then login to target database as SharePlex user and truncate the table shareplex_trans:
SQL>truncate table SHAREPLEX_TRANS;
4. Restart SharePlex on source and target.
5. Resync the target at any convenient time in future.