Author |
Message
|
cicsprog |
Posted: Mon Apr 04, 2005 1:32 pm Post subject: z/OS MQ log question |
|
|
Partisan
Joined: 27 Jan 2002 Posts: 347
|
I have a windows MQM sending a persistent message to a QLOCAL on z/OS. Once the message lands on the z/OS MQM, an MQ Client is pullling the message off.
I have been running CSQ1LOGP using the DATA keyword to search for a string of ASCII data in the message data. However, my results from CSQ1LOGP are not finding that log record in any of the archived logs.
My question is, once the message is committed, is the log message data removed from the active logs. Therefore, it would not show up in the archived ones either via a CSQ1LOGP.
I did recreate this in test. However, I forced the archive while the message still resided on the QLOCAL. In my test, CSQ1LOGP did print out the message data from the archived log. |
|
Back to top |
|
 |
Michael Dag |
Posted: Tue Apr 05, 2005 12:13 am Post subject: |
|
|
 Jedi Knight
Joined: 13 Jun 2002 Posts: 2607 Location: The Netherlands (Amsterdam)
|
I don't know about z/OS MQ but on distributed the logs are written at an x transactions interval where I believe x is 1000.
So on your first attempt you put a message on the queue, took it off and it did not show in the log, it could be both actions took place within the checkpoint. _________________ Michael
MQSystems Facebook page |
|
Back to top |
|
 |
bob_buxton |
Posted: Tue Apr 05, 2005 1:03 am Post subject: |
|
|
 Master
Joined: 23 Aug 2001 Posts: 266 Location: England
|
Data is never removed from log data sets (until you purge old archive log data sets).
Data is not guaranteed to appear in the log until commit time which is when unwritten log buffers are forced.
Data is first written to the active log data set and then offloaded to the archive log when the current active log data set is full. So there will be a delay (hours?) before a CSQ1LOGP of archive logs can see the data however you can run CSQ1LOGP against active logs.
The CSQJU004 can be used to show the range of log data in each data set.
Another possibility is that MQ has split your message data into multiple pages for storage and the split could occur in the middle of the data you are searching for. _________________ Bob Buxton
Ex-Websphere MQ Development |
|
Back to top |
|
 |
cicsprog |
Posted: Tue Apr 05, 2005 2:58 am Post subject: |
|
|
Partisan
Joined: 27 Jan 2002 Posts: 347
|
Bob's description was the way I always thought it worked.
Since I force a archive each night during my fuzzy backups, these messages should be appearing in the offloaded archives (unless my search string has been split up as Bob mentioned). The messages supposedly being sent that previous day and only one active log switch during the backup.
So the application team is either not telling me a valid search string, string is split up, they aren't sending the message, or it's not persistent.
Thanks! |
|
Back to top |
|
 |
cicsprog |
Posted: Tue Apr 05, 2005 3:07 am Post subject: |
|
|
Partisan
Joined: 27 Jan 2002 Posts: 347
|
Bob
It's ok to concatenate multiple archive log datasets in CSQ1LOGP utility right?
Jason |
|
Back to top |
|
 |
bob_buxton |
Posted: Tue Apr 05, 2005 3:24 am Post subject: |
|
|
 Master
Joined: 23 Aug 2001 Posts: 266 Location: England
|
Yes multiple archives can be concatenated in the correct order,
Alternatively you can specify the BSDS dataset to the BSDS DD and it will dynamically allocate the log data sets needed - but in that case don't forget to specify an RBASTART() so that it doesn't start searching back in pre-history  _________________ Bob Buxton
Ex-Websphere MQ Development |
|
Back to top |
|
 |
cicsprog |
Posted: Tue Apr 05, 2005 6:56 am Post subject: |
|
|
Partisan
Joined: 27 Jan 2002 Posts: 347
|
Since the z/OS MQM is just a hop and the message does not get converted (message is XML), any chance my search string is bad.
So: 0F2520590
In EBCDIC the ASCII representation : 304632353230353930 (So I have been searching on this)
In EBCDIC: F0C6F2F5F2F0F5F9F0 (not found either)
UTF-8:???????????????
My unicode skills are lacking. Maybe thats why CSQ1LOGP is not finding it? |
|
Back to top |
|
 |
bob_buxton |
Posted: Tue Apr 05, 2005 7:35 am Post subject: |
|
|
 Master
Joined: 23 Aug 2001 Posts: 266 Location: England
|
I don't think your search string is wrong (ASCII) since unless you have channel conversion the message body will stay in original format until MQGET. Headers will be converted.
Perhaps you could get the message on the original non zOS qmanager or try searching by message id, _________________ Bob Buxton
Ex-Websphere MQ Development |
|
Back to top |
|
 |
cicsprog |
Posted: Tue Apr 05, 2005 7:50 am Post subject: |
|
|
Partisan
Joined: 27 Jan 2002 Posts: 347
|
Bob
One of the application guys told me to add a '00" after each ASCII byte. I tried that and sure enough CSQ1LOGP printed those logs records with that string.
So: 0F2520590
In EBCDIC the ASCII representation : 304632353230353930 (So I have been searching on this)
In EBCDIC: F0C6F2F5F2F0F5F9F0
UTF-8: 300046003200350032003000350039003000
So a value of DATA(300046003200350032003000350039003000) in CSQ1LOGP found the log records with that string...I hope.
Best
Jason |
|
Back to top |
|
 |
javagate |
Posted: Mon Apr 11, 2005 11:18 am Post subject: |
|
|
 Disciple
Joined: 15 Nov 2004 Posts: 159
|
On z/OS the MQSeries logs (archieve logs) are meant for forward recovery in the event you loose your pagesets and for transaction backout. Once a persistent message is placed on a Queue you should be able to see the message in the Active Log or in the ARC data set after its archieved. The record layout of the ARC logs is proprietary as IBM will not gove that out. _________________ WebSphere Application Server 7.0 z/OS &
MQ 6.0. I work with WebSphere in the real world not in some IBM lab. |
|
Back to top |
|
 |
|