ASG
IBM
Zystems
Cressida
Icon
Netflexity
 
  MQSeries.net
Search  Search       Tech Exchange      Education      Certifications      Library      Info Center      SupportPacs      LinkedIn  Search  Search                                                                   FAQ  FAQ   Usergroups  Usergroups
 
Register  ::  Log in Log in to check your private messages
 
RSS Feed - WebSphere MQ Support RSS Feed - Message Broker Support

MQSeries.net Forum Index » General Discussion » Where are channel sequence numbers stored

Post new topic  Reply to topic Goto page 1, 2  Next
 Where are channel sequence numbers stored « View previous topic :: View next topic » 
Author Message
thindk00
PostPosted: Wed Jul 27, 2005 8:00 am    Post subject: Where are channel sequence numbers stored Reply with quote

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
View user's profile Send private message Send e-mail
sebastianhirt
PostPosted: Wed Jul 27, 2005 8:03 am    Post subject: Reply with quote

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
View user's profile Send private message
sjensen
PostPosted: Wed Jul 27, 2005 8:19 am    Post subject: Reply with quote

Centurion

Joined: 18 Dec 2003
Posts: 134
Location: London

Hi

I thought it was in the SYSTEM.CHANNEL.SYNCQ

Cheers
Stefan
Back to top
View user's profile Send private message
sebastianhirt
PostPosted: Wed Jul 27, 2005 8:41 am    Post subject: Reply with quote

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
View user's profile Send private message
thindk00
PostPosted: Wed Jul 27, 2005 8:50 am    Post subject: where are these held Reply with quote

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
View user's profile Send private message Send e-mail
sebastianhirt
PostPosted: Wed Jul 27, 2005 9:02 am    Post subject: Reply with quote

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
View user's profile Send private message
thindk00
PostPosted: Wed Jul 27, 2005 9:05 am    Post subject: where is it held Reply with quote

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
View user's profile Send private message Send e-mail
sebastianhirt
PostPosted: Wed Jul 27, 2005 9:08 am    Post subject: Reply with quote

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
View user's profile Send private message
jefflowrey
PostPosted: Wed Jul 27, 2005 9:10 am    Post subject: Re: where is it held Reply with quote

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
View user's profile Send private message
Anirud
PostPosted: Wed Jul 27, 2005 9:12 am    Post subject: Re: where is it held Reply with quote

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
View user's profile Send private message Visit poster's website
thindk00
PostPosted: Wed Jul 27, 2005 9:21 am    Post subject: messages Reply with quote

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
View user's profile Send private message Send e-mail
vinodsasidharan
PostPosted: Thu Sep 15, 2005 6:24 am    Post subject: Location of scratch pad Reply with quote

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
View user's profile Send private message Send e-mail Visit poster's website Yahoo Messenger
fjb_saper
PostPosted: Thu Sep 15, 2005 7:45 pm    Post subject: Reply with quote

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
View user's profile Send private message Send e-mail
vinodsasidharan
PostPosted: Thu Sep 15, 2005 10:25 pm    Post subject: storage of objects Reply with quote

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
View user's profile Send private message Send e-mail Visit poster's website Yahoo Messenger
Nigelg
PostPosted: Fri Sep 16, 2005 1:14 am    Post subject: Reply with quote

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
View user's profile Send private message
Display posts from previous:   
Post new topic  Reply to topic Goto page 1, 2  Next Page 1 of 2

MQSeries.net Forum Index » General Discussion » Where are channel sequence numbers stored
Jump to:  



You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
Protected by Anti-Spam ACP
 
 


Theme by Dustin Baccetti
Powered by phpBB © 2001, 2002 phpBB Group

Copyright © MQSeries.net. All rights reserved.