Reader process is in IDLE state when show read internal is issued and keeps restarting. Reader log (*ord.log) shows the following message :
2009-06-04 12:49:12.605076 22558 1 Restarting reader to see if problem reoccurs
ord 2009-06-04 12:50:07.741764 22641 1 FILE: SP_SYS_VRDIR/log/XXXX_ord01.log - LOG#: 1
ord 2009-06-04 12:50:07.741809 22641 1 sp_ordr: pid = 22641
ord 2009-06-04 12:50:07.741835 22641 1 Product = 0
ord 2009-06-04 12:50:08.994187 22641 1 Waiting for oracle to be available
ord 2009-06-04 12:50:09.048689 22641 1 Oracle available
ord 2009-06-04 12:50:09.102272 22641 1 Oracle available
ord 2009-06-04 12:50:09.158527 22641 1 Oracle available
ord 2009-06-04 12:50:09.215951 22641 1 Oracle available
ord 2009-06-04 12:50:09.217290 22641 1 cons get stat = 51, exec stat = 436
ord 2009-06-04 12:50:12.703047 22641 1 A: Invalid length 859320632 detected inside message from 15499/0
The error reader encountered is caused by our logic of filling in all the key columns when trying to evaluate a row for horizontal partitioning.
Discard the offending message from capture queue. Refer to this article SOL24445 for more details .
Status: Fixed in later version
The reason reader hit this issue is because of these 3 factors.
1) there was an update on a row, just inserted but not yet commited.
2) The column condition was on a column which was not the only key in the table.
3) Not all keys were available in the updates.
The error reader encountered is caused by our logic of filling in all the key columns when trying to evaluate a row for horizontal partitioning. In actuality, the keys at the point of evaluation should already have the keys filled in except if it's an update which follows an uncommited insert. In this particular scenario, the columns which need to be filled in are actually only the columns used in horizontal partitioning. We have logic that checks whether those columns are already in the message.