Author |
Message
|
thindk00 |
Posted: Wed Jul 27, 2005 8:00 am Post subject: Where are channel sequence numbers stored |
|
|
Voyager
Joined: 16 May 2001 Posts: 75 Location: UK
|
Hi,
Can someone tell me where channel sequence numbers are stored. My understanding is that channel sequence numbers are not reset every time a queue manager is restarted and that the sequence number is stored/persisted somewhere, does anyone know where?
Thanks,
Kulbir. |
|
Back to top |
|
 |
sebastianhirt |
Posted: Wed Jul 27, 2005 8:03 am Post subject: |
|
|
Yatiri
Joined: 07 Jun 2004 Posts: 620 Location: Germany
|
Hmmm, not really sure, but I would guess in the channel status table...
Add:
or in the scratch pad object...
from the Intercommunication manual:
Quote: |
Channel message sequence numbering
The channel uses sequence numbers to assure that messages are delivered, delivered without duplication, and stored in the same order as they were taken from the transmission queue. The sequence number is generated at the sending end of the channel and is incremented by one before being used, which means that the current sequence number is the number of the last message sent. This information can be displayed using DISPLAY CHSTATUS (see WebSphere MQ Script (MQSC) Command Reference ). The sequence number and an identifier called the LUWID are stored in persistent storage for the last message transferred in a batch. These values are used during channel start-up to ensure that both ends of the link agree on which messages have been transferred successfully.
Note:
On z/OS, if you are using distributed queuing with CICS, and you do not use the sequential delivery option, message sequence numbering is not used. |
|
|
Back to top |
|
 |
sjensen |
Posted: Wed Jul 27, 2005 8:19 am Post subject: |
|
|
Centurion
Joined: 18 Dec 2003 Posts: 134 Location: London
|
Hi
I thought it was in the SYSTEM.CHANNEL.SYNCQ
Cheers
Stefan |
|
Back to top |
|
 |
sebastianhirt |
Posted: Wed Jul 27, 2005 8:41 am Post subject: |
|
|
Yatiri
Joined: 07 Jun 2004 Posts: 620 Location: Germany
|
OK... You made me look for it a bit more information...
Here what I found in the MQAdmin2 class materials
Quote: |
... The values of common status fields can be retrieved either from data stored in the channel status table or from data stored in scratchpad objects or messages on the synchronisation queue. ... |
|
|
Back to top |
|
 |
thindk00 |
Posted: Wed Jul 27, 2005 8:50 am Post subject: where are these held |
|
|
Voyager
Joined: 16 May 2001 Posts: 75 Location: UK
|
Hi,
Where is the channel status objects stored? Where is the scratchpad object stored? I'm assuming this is not in memory as we could lose sequence numbers if the queue manager ended abnormally, in these scenarios the channel sequence numbers are normally ok.
When we did a test, we couldn't see messages being written to the synchronisation queue or any of the existing ones being updated.
Cheers,
Kulbir |
|
Back to top |
|
 |
sebastianhirt |
Posted: Wed Jul 27, 2005 9:02 am Post subject: |
|
|
Yatiri
Joined: 07 Jun 2004 Posts: 620 Location: Germany
|
You won't lose the sequence number. This is a persistent value. I don't think there is a need to worry about this. |
|
Back to top |
|
 |
thindk00 |
Posted: Wed Jul 27, 2005 9:05 am Post subject: where is it held |
|
|
Voyager
Joined: 16 May 2001 Posts: 75 Location: UK
|
I don't think we would lose it either, just would like to know where this is held. This information could come handy if we're trying to resolve "channel negotiation" issues when we don't know what the current sequence numbers are on our sending and receiving channels. |
|
Back to top |
|
 |
sebastianhirt |
Posted: Wed Jul 27, 2005 9:08 am Post subject: |
|
|
Yatiri
Joined: 07 Jun 2004 Posts: 620 Location: Germany
|
For solving this sort of issues, you need basically the sequence number of the sending and the receiving end as well as the curluwid and the lluwid fields. THey are all available in the status table. Based on that you need to decide what an appropriate action will be. |
|
Back to top |
|
 |
jefflowrey |
Posted: Wed Jul 27, 2005 9:10 am Post subject: Re: where is it held |
|
|
Grand Poobah
Joined: 16 Oct 2002 Posts: 19981
|
thindk00 wrote: |
I don't think we would lose it either, just would like to know where this is held. This information could come handy if we're trying to resolve "channel negotiation" issues when we don't know what the current sequence numbers are on our sending and receiving channels. |
You can retrieve the sequence number using runmqsc....
During channel negotiation problems due to sequence number mismatch, the error messages produced usually tell you what sequence number was found and what was expected. _________________ I am *not* the model of the modern major general. |
|
Back to top |
|
 |
Anirud |
Posted: Wed Jul 27, 2005 9:12 am Post subject: Re: where is it held |
|
|
 Master
Joined: 12 Feb 2004 Posts: 285 Location: Vermont
|
thindk00 wrote: |
I don't think we would lose it either, just would like to know where this is held. This information could come handy if we're trying to resolve "channel negotiation" issues when we don't know what the current sequence numbers are on our sending and receiving channels. |
Code: |
reset channel(channelname) |
on the sender channel will reset the sdr and rcvr channels to 1.
Also, as Jeff has mentioned, you should be able to see the sequence number errors in the error logs. |
|
Back to top |
|
 |
thindk00 |
Posted: Wed Jul 27, 2005 9:21 am Post subject: messages |
|
|
Voyager
Joined: 16 May 2001 Posts: 75 Location: UK
|
runmqsc will not tell you what the sequence number is on the other side and i believe there may be some scenarios where by the error log will not give us that information either, it suggests that we just need to look in the logs in the other queue manager.
The reason I'm looking into this is that we have a single queue manager with about 200 apps connected to it. If we have to rebuild the queue manager I wouldn't want to contact the end points to get them to reset the channel sequence numbers and would rather be able to do all channels centrally.
We use server and requestor channels and our platforms range from PC, OS/400, UNIX (all flavours), VMS, etc, etc. We use a number of different versions ranging frmo 2.2 (on VMS), 5.0 on Unix, W2K all the way through to 5.3. I suspect that with the latest release deployed everywhere we would be able to reset from one end of the channel and that would force it through to the other end. We don't have the same version deployed on all our platforms and would like to be able to know the sequence numbers being sent to us if we're the recipient and also like to either be able to set the sequence number on our server channels or reset our servers forcing the requestors to be reset. I hope that makes sense.
Looking at wheer the information is stored is probably not to much of an issue, just out of curiosity we'd like to know. We wouldn't have access to this area on the end points, if we did we would also have access to the "reset chl" command on the end points.
Cheers,
Kulbir. |
|
Back to top |
|
 |
vinodsasidharan |
Posted: Thu Sep 15, 2005 6:24 am Post subject: Location of scratch pad |
|
|
 Apprentice
Joined: 25 Apr 2003 Posts: 47 Location: Norwich
|
Hi ,
As disussed earlier the persistent seq counter (lstseqno) and the saved curr counter(cstseqno) info and other info related to channel synchronisation are stored in the following
1) SYSTEM.CHANNEL.SYNCQ.
2) SCRATCH PAD .
3) channel status Table .
The location of the scratch pad are as follows.
<MQ_INSTALL_PATH>/qmgrs/QM/scratch directory or the IFS in as400 .
The scratch files has the format .
%CHLBATCH.4
%CHLBATCH.6
WebSphere MQ writes a record to it every time it transfers a batch of recoverable messages.
Also the details are stored in the syncq and channel table .
The scratch pad objects are loaded to memory when a channel is started .
aqhQueryScratchPad function acceses details of the scratch pad objects loaded in memory .
As a proof of the above statement ,
************************************************************
I tried the following
==>
I had a LSTSEQNUM of 22 and i deleted the scratch pad objects and also cleared the syncq and now tried the dis chs which still showed count of 22 .Now i restarted the qmgr and could find that new scratch pad files had been created most probably using the details from memory .So the scratch pad and the memory details are synchronised .
==>
So again i removed the scratch pad and rebooted the system and after which the LSTSEQNUM was shown as 0 and also on start of the channel got 2101 error saying scratch pad damaged .
************************************************************
This could prove that the scratch pad details are loaded to memory if i am not wrong .
But i was not able to find channel status Table . If anybody knows where this channel status table is please throw more light .
Regards, _________________ Vinod sasidharan
Ibm Certfied MQ Admin 5.3
Ibm Certfied MQ Admin 6.0
Ibm Certfied WAS Admin 6.0
Ibm Certfied WMB Admin 5.0
Ibm Certfied Db2 Specialist.
Sun certified Java Programmer.
"Ai carte, ai parte ....................." |
|
Back to top |
|
 |
fjb_saper |
Posted: Thu Sep 15, 2005 7:45 pm Post subject: |
|
|
 Grand High Poobah
Joined: 18 Nov 2003 Posts: 20756 Location: LI,NY
|
Guys
Could you stop making this all so complicated ?
before stopping your qmgr:
stop all channels
save all channel status
Code: |
echo "dis chs(*) all" | runmqsc MYQMGR > mychs.lst |
Whith that rebuild your qmgr.
Check out for one receiver channel. I believe you need to set the seqnum to the one shown in the mychs.lst +1 (you are expecting the next one).
Create a runmqsc for all the receiver/requester channels and set the seqnum. For sender channels set the seqnum to 1 ....
Enjoy  |
|
Back to top |
|
 |
vinodsasidharan |
Posted: Thu Sep 15, 2005 10:25 pm Post subject: storage of objects |
|
|
 Apprentice
Joined: 25 Apr 2003 Posts: 47 Location: Norwich
|
Hi Saper ,
This Topics purpose is the following
" Where are channel sequence numbers stored and persistantly without loss after a reboot or restart of qm" ...
As discussed above the SCRATCH pad and SYNCQ could be identified .
The other place the storage of sync data takes place is CHANNEL STATUS TABLE as discussed above.
But !!
what is and where is this table located is the question now? _________________ Vinod sasidharan
Ibm Certfied MQ Admin 5.3
Ibm Certfied MQ Admin 6.0
Ibm Certfied WAS Admin 6.0
Ibm Certfied WMB Admin 5.0
Ibm Certfied Db2 Specialist.
Sun certified Java Programmer.
"Ai carte, ai parte ....................." |
|
Back to top |
|
 |
Nigelg |
Posted: Fri Sep 16, 2005 1:14 am Post subject: |
|
|
Grand Master
Joined: 02 Aug 2004 Posts: 1046
|
The channel status table is held in shared memory during the life of the qmgr. It has MaxActiveChannels slots, and as channels are started and stopped the table is populated. The sequence number is hardened to persistent storage (the SYNCQ) as part of the UoW put at the end of the channel batch. If there are no persistent msgs and NPMSPEED is fast the sequence number is not updated because there is no msg recovery possible. _________________ MQSeries.net helps those who help themselves.. |
|
Back to top |
|
 |
|