{"id":3993,"date":"2014-11-24T12:18:55","date_gmt":"2014-11-24T04:18:55","guid":{"rendered":"http:\/\/rmohan.com\/?p=3993"},"modified":"2014-11-24T12:18:55","modified_gmt":"2014-11-24T04:18:55","slug":"websphere-mq-quick-reference","status":"publish","type":"post","link":"https:\/\/mohan.sg\/?p=3993","title":{"rendered":"Websphere MQ Quick reference"},"content":{"rendered":"<p><script src=\"https:\/\/apis.google.com\/_\/scs\/apps-static\/_\/js\/k=oz.gapi.en_GB.u6Fn0i2IZ7I.O\/m=gapi_iframes_style_slide_menu\/exm=gapi_iframes,gapi_iframes_style_bubble,plusone,profile\/rt=j\/sv=1\/d=1\/ed=1\/am=AQ\/rs=AGLTcCMrAcTPuE6kJJL2kgkme477adtFXA\/cb=gapi.loaded_3\" async=\"\"><\/script><script src=\"https:\/\/apis.google.com\/_\/scs\/apps-static\/_\/js\/k=oz.gapi.en_GB.u6Fn0i2IZ7I.O\/m=profile\/exm=gapi_iframes,gapi_iframes_style_bubble,plusone\/rt=j\/sv=1\/d=1\/ed=1\/am=AQ\/rs=AGLTcCMrAcTPuE6kJJL2kgkme477adtFXA\/cb=gapi.loaded_2\" async=\"\"><\/script><script src=\"http:\/\/www.gstatic.com\/pub-config\/ca-pub-7217973922249714.js\" async=\"\" type=\"text\/javascript\"><\/script><script src=\"https:\/\/apis.google.com\/_\/scs\/apps-static\/_\/js\/k=oz.gapi.en_GB.u6Fn0i2IZ7I.O\/m=gapi_iframes,gapi_iframes_style_bubble\/exm=plusone\/rt=j\/sv=1\/d=1\/ed=1\/am=AQ\/rs=AGLTcCMrAcTPuE6kJJL2kgkme477adtFXA\/cb=gapi.loaded_1\" async=\"\"><\/script><script src=\"https:\/\/apis.google.com\/_\/scs\/apps-static\/_\/js\/k=oz.gapi.en_GB.u6Fn0i2IZ7I.O\/m=plusone\/rt=j\/sv=1\/d=1\/ed=1\/am=AQ\/rs=AGLTcCMrAcTPuE6kJJL2kgkme477adtFXA\/cb=gapi.loaded_0\" async=\"\"><\/script><script type=\"text\/javascript\">\/\/ <![CDATA[\n(function() { var b=window,f=\"chrome\",g=\"tick\",k=\"jstiming\";(function(){function d(a){this.t={};this.tick=function(a,d,c){var e=void 0!=c?c:(new Date).getTime();this.t[a]=[e,d];if(void 0==c)try{b.console.timeStamp(\"CSI\/\"+a)}catch(h){}};this[g](\"start\",null,a)}var a;b.performance&#038;&#038;(a=b.performance.timing);var n=a?new d(a.responseStart):new d;b.jstiming={Timer:d,load:n};if(a){var c=a.navigationStart,h=a.responseStart;0<c&#038;&#038;h>=c&&(b[k].srt=h-c)}if(a){var e=b[k].load;0<c&#038;&#038;h>=c&&(e[g](\"_wtsrt\",void 0,c),e[g](\"wtsrt_\",\"_wtsrt\",h),e[g](\"tbsd_\",\"wtsrt_\"))}try{a=null,\nb[f]&&b[f].csi&&(a=Math.floor(b[f].csi().pageT),e&&0<c&#038;&#038;(e[g](\"_tbnd\",void 0,b[f].csi().startE),e[g](\"tbnd_\",\"_tbnd\",c))),null==a&#038;&#038;b.gtbExternal&#038;&#038;(a=b.gtbExternal.pageT()),null==a&#038;&#038;b.external&#038;&#038;(a=b.external.pageT,e&#038;&#038;0<c&#038;&#038;(e[g](\"_tbnd\",void 0,b.external.startE),e[g](\"tbnd_\",\"_tbnd\",c))),a&#038;&#038;(b[k].pt=a)}catch(p){}})();b.tickAboveFold=function(d){var a=0;if(d.offsetParent){do a+=d.offsetTop;while(d=d.offsetParent)}d=a;750>=d&&b[k].load[g](\"aft\")};var l=!1;function m(){l||(l=!0,b[k].load[g](\"firstScrollTime\"))}b.addEventListener?b.addEventListener(\"scroll\",m,!1):b.attachEvent(\"onscroll\",m);\n })();\n\/\/ ]]><\/script><!-- [if IE]><script type=\"text\/javascript\" src=\"https:\/\/www.blogger.com\/static\/v1\/jsbin\/3204238090-ieretrofit.js\"><\/script>\n<![endif]--> <!-- [if IE]> <script> (function() { var html5 = (\"abbr,article,aside,audio,canvas,datalist,details,\" + \"figure,footer,header,hgroup,mark,menu,meter,nav,output,\" + \"progress,section,time,video\").split(','); for (var i = 0; i < html5.length; i++) { document.createElement(html5[i]); } try { document.execCommand('BackgroundImageCache', false, true); } catch(e) {} })(); <\/script> <![endif]-->websphere-infra: Webspere MQ All<script type=\"text\/javascript\">\/\/ <![CDATA[\nvar a=\"indexOf\",b=\"&#038;m=1\",e=\"(^|&#038;)m=\",f=\"?\",g=\"?m=1\";function h(){var c=window.location.href,d=c.split(f);switch(d.length){case 1:return c+g;case 2:return 0<=d[1].search(e)?null:c+b;default:return null}}var k=navigator.userAgent;if(-1!=k[a](\"Mobile\")&#038;&#038;-1!=k[a](\"WebKit\")&#038;&#038;-1==k[a](\"iPad\")||-1!=k[a](\"Opera Mini\")||-1!=k[a](\"IEMobile\")){var l=h();l&#038;&#038;window.location.replace(l)};\n\/\/ ]]><\/script><script type=\"text\/javascript\">\/\/ <![CDATA[\nif (window.jstiming) window.jstiming.load.tick('headEnd');\n\/\/ ]]><\/script><script src=\"\/\/pagead2.googlesyndication.com\/pagead\/js\/google_top_exp.js\" type=\"text\/javascript\"><\/script><script src=\"http:\/\/www.google.com\/uds\/?file=search&amp;v=1&amp;hl=en&amp;async=2\" type=\"text\/javascript\"><\/script><script src=\"http:\/\/www.google.com\/uds\/api\/search\/1.0\/23952f7483f1bca4119a89c020d13def\/default+en.I.js\" type=\"text\/javascript\"><\/script><\/p>\n<div class=\"content\">\n<div class=\"content-outer\">\n<div class=\"fauxborder-left content-fauxborder-left\">\n<div class=\"content-inner\">\n<div class=\"main-outer\">\n<div class=\"fauxborder-left main-fauxborder-left\">\n<div class=\"region-inner main-inner\">\n<div class=\"columns fauxcolumns\">\n<div class=\"columns-inner\">\n<div class=\"column-center-outer\">\n<div class=\"column-center-inner\">\n<div id=\"main\" class=\"main section\">\n<div id=\"Blog1\" class=\"widget Blog\">\n<div class=\"blog-posts hfeed\">\n<div class=\"date-outer\">\n<div class=\"date-posts\">\n<div class=\"post-outer\">\n<div class=\"post hentry\">\n<div id=\"post-body-6401741283809424849\" class=\"post-body entry-content\">MQSC: indicates a runmqsc command, which can be executed while in runmqsc [QmgrName] or as one line command using:<br \/>\n echo command runmqsc [QmgrName]<br \/>\n on Unix platforms add double quotes:<br \/>\n echo \u201ccommand\u201d runmqsc [QmgrName]<br \/>\nMQ Display commands<\/p>\n<p>MQ start-Stop commands<\/p>\n<p>MQ status verification commands\n<\/p><\/div>\n<div class=\"post-body entry-content\"><\/div>\n<div class=\"post-body entry-content\"><\/div>\n<div class=\"post-body entry-content\"><a href=\"http:\/\/rmohan.com\/wp-content\/uploads\/2014\/11\/display-1.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-3994\" src=\"http:\/\/rmohan.com\/wp-content\/uploads\/2014\/11\/display-1.jpg\" alt=\"display-1\" width=\"215\" height=\"320\" srcset=\"https:\/\/mohan.sg\/wp-content\/uploads\/2014\/11\/display-1.jpg 215w, https:\/\/mohan.sg\/wp-content\/uploads\/2014\/11\/display-1-201x300.jpg 201w, https:\/\/mohan.sg\/wp-content\/uploads\/2014\/11\/display-1-100x150.jpg 100w\" sizes=\"(max-width: 215px) 100vw, 215px\" \/><\/a><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<p>backup queue manager in Websphere mq<\/p>\n<p>backup queue manager in Websphere mq<\/p>\n<p>Creating a backup queue manager<br \/>\n ========================<br \/>\n 1. Create a backup queue manager for the existing queue manager using the control command crtmqm. The backup queue manager requires the following:<br \/>\n * To have the same attributes as the existing queue manager, for example the queue manager name, the logging type, and the log file size.<br \/>\n * To be on the same platform as the existing queue manager.<br \/>\n * To be at an equal, or higher, code level than the existing queue manager.<br \/>\n 2. Take copies of all the existing queue manager\u2019s data and log file directories, including all subdirectories, as described in Backing up queue manager data.<br \/>\n 3. Overwrite the backup queue manager\u2019s data and log file directories, including all subdirectories, with the copies taken from the existing queue manager.<br \/>\n 4. Execute the following control command on the backup queue manager:<br \/>\n strmqm -r BackupQMName<br \/>\n This flags the queue manager as a backup queue manager within WebSphere\u00ae MQ, and replays all the copied log extents to bring the backup queue manager in step with the existing queue manager.<\/p>\n<p>starting a backup queue manager<br \/>\n =======================<br \/>\n 1. Execute the following control command to activate the backup queue manager:<br \/>\n strmqm -a BackupQMName<br \/>\n The backup queue manager is activated. Now active, the backup queue manager can no longer be updated.<\/p>\n<p>2. Execute the following control command to start the backup queue manager:<br \/>\n strmqm BackupQMName<\/p>\n<p>3. Restart all channels<\/p>\n<p>Note: stop the existing Qmgr using endmqm -w, before copying the qmgr date to backup qmgr<\/p>\n<p>&nbsp;<\/p>\n<p><script src=\"https:\/\/apis.google.com\/_\/scs\/apps-static\/_\/js\/k=oz.gapi.en_GB.u6Fn0i2IZ7I.O\/m=gapi_iframes_style_slide_menu\/exm=gapi_iframes,gapi_iframes_style_bubble,plusone,profile\/rt=j\/sv=1\/d=1\/ed=1\/am=AQ\/rs=AGLTcCMrAcTPuE6kJJL2kgkme477adtFXA\/cb=gapi.loaded_3\" async=\"\"><\/script><script src=\"https:\/\/apis.google.com\/_\/scs\/apps-static\/_\/js\/k=oz.gapi.en_GB.u6Fn0i2IZ7I.O\/m=profile\/exm=gapi_iframes,gapi_iframes_style_bubble,plusone\/rt=j\/sv=1\/d=1\/ed=1\/am=AQ\/rs=AGLTcCMrAcTPuE6kJJL2kgkme477adtFXA\/cb=gapi.loaded_2\" async=\"\"><\/script><script src=\"http:\/\/www.gstatic.com\/pub-config\/ca-pub-7217973922249714.js\" async=\"\" type=\"text\/javascript\"><\/script><script src=\"https:\/\/apis.google.com\/_\/scs\/apps-static\/_\/js\/k=oz.gapi.en_GB.u6Fn0i2IZ7I.O\/m=gapi_iframes,gapi_iframes_style_bubble\/exm=plusone\/rt=j\/sv=1\/d=1\/ed=1\/am=AQ\/rs=AGLTcCMrAcTPuE6kJJL2kgkme477adtFXA\/cb=gapi.loaded_1\" async=\"\"><\/script><script src=\"https:\/\/apis.google.com\/_\/scs\/apps-static\/_\/js\/k=oz.gapi.en_GB.u6Fn0i2IZ7I.O\/m=plusone\/rt=j\/sv=1\/d=1\/ed=1\/am=AQ\/rs=AGLTcCMrAcTPuE6kJJL2kgkme477adtFXA\/cb=gapi.loaded_0\" async=\"\"><\/script><script type=\"text\/javascript\">\/\/ <![CDATA[\n(function() { var b=window,f=\"chrome\",g=\"tick\",k=\"jstiming\";(function(){function d(a){this.t={};this.tick=function(a,d,c){var e=void 0!=c?c:(new Date).getTime();this.t[a]=[e,d];if(void 0==c)try{b.console.timeStamp(\"CSI\/\"+a)}catch(h){}};this[g](\"start\",null,a)}var a;b.performance&#038;&#038;(a=b.performance.timing);var n=a?new d(a.responseStart):new d;b.jstiming={Timer:d,load:n};if(a){var c=a.navigationStart,h=a.responseStart;0<c&#038;&#038;h>=c&&(b[k].srt=h-c)}if(a){var e=b[k].load;0<c&#038;&#038;h>=c&&(e[g](\"_wtsrt\",void 0,c),e[g](\"wtsrt_\",\"_wtsrt\",h),e[g](\"tbsd_\",\"wtsrt_\"))}try{a=null,\nb[f]&&b[f].csi&&(a=Math.floor(b[f].csi().pageT),e&&0<c&#038;&#038;(e[g](\"_tbnd\",void 0,b[f].csi().startE),e[g](\"tbnd_\",\"_tbnd\",c))),null==a&#038;&#038;b.gtbExternal&#038;&#038;(a=b.gtbExternal.pageT()),null==a&#038;&#038;b.external&#038;&#038;(a=b.external.pageT,e&#038;&#038;0<c&#038;&#038;(e[g](\"_tbnd\",void 0,b.external.startE),e[g](\"tbnd_\",\"_tbnd\",c))),a&#038;&#038;(b[k].pt=a)}catch(p){}})();b.tickAboveFold=function(d){var a=0;if(d.offsetParent){do a+=d.offsetTop;while(d=d.offsetParent)}d=a;750>=d&&b[k].load[g](\"aft\")};var l=!1;function m(){l||(l=!0,b[k].load[g](\"firstScrollTime\"))}b.addEventListener?b.addEventListener(\"scroll\",m,!1):b.attachEvent(\"onscroll\",m);\n })();\n\/\/ ]]><\/script><!-- [if IE]><script type=\"text\/javascript\" src=\"https:\/\/www.blogger.com\/static\/v1\/jsbin\/3204238090-ieretrofit.js\"><\/script>\n<![endif]--> <!-- [if IE]> <script> (function() { var html5 = (\"abbr,article,aside,audio,canvas,datalist,details,\" + \"figure,footer,header,hgroup,mark,menu,meter,nav,output,\" + \"progress,section,time,video\").split(','); for (var i = 0; i < html5.length; i++) { document.createElement(html5[i]); } try { document.execCommand('BackgroundImageCache', false, true); } catch(e) {} })(); <\/script> <![endif]-->websphere-infra: Webspere MQ All<script type=\"text\/javascript\">\/\/ <![CDATA[\nvar a=\"indexOf\",b=\"&#038;m=1\",e=\"(^|&#038;)m=\",f=\"?\",g=\"?m=1\";function h(){var c=window.location.href,d=c.split(f);switch(d.length){case 1:return c+g;case 2:return 0<=d[1].search(e)?null:c+b;default:return null}}var k=navigator.userAgent;if(-1!=k[a](\"Mobile\")&#038;&#038;-1!=k[a](\"WebKit\")&#038;&#038;-1==k[a](\"iPad\")||-1!=k[a](\"Opera Mini\")||-1!=k[a](\"IEMobile\")){var l=h();l&#038;&#038;window.location.replace(l)};\n\/\/ ]]><\/script><script type=\"text\/javascript\">\/\/ <![CDATA[\nif (window.jstiming) window.jstiming.load.tick('headEnd');\n\/\/ ]]><\/script><script src=\"\/\/pagead2.googlesyndication.com\/pagead\/js\/google_top_exp.js\" type=\"text\/javascript\"><\/script><script src=\"http:\/\/www.google.com\/uds\/?file=search&amp;v=1&amp;hl=en&amp;async=2\" type=\"text\/javascript\"><\/script><script src=\"http:\/\/www.google.com\/uds\/api\/search\/1.0\/23952f7483f1bca4119a89c020d13def\/default+en.I.js\" type=\"text\/javascript\"><\/script><\/p>\n<div class=\"content\">\n<div class=\"content-outer\">\n<div class=\"fauxborder-left content-fauxborder-left\">\n<div class=\"content-inner\">\n<div class=\"main-outer\">\n<div class=\"fauxborder-left main-fauxborder-left\">\n<div class=\"region-inner main-inner\">\n<div class=\"columns fauxcolumns\">\n<div class=\"columns-inner\">\n<div class=\"column-center-outer\">\n<div class=\"column-center-inner\">\n<div id=\"main\" class=\"main section\">\n<div id=\"Blog1\" class=\"widget Blog\">\n<div class=\"blog-posts hfeed\">\n<div class=\"date-outer\">\n<div class=\"date-posts\">\n<div class=\"post-outer\">\n<div class=\"post hentry\">\n<h3 class=\"post-title entry-title\"><a href=\"http:\/\/websphere-infra.blogspot.sg\/2010\/02\/logging-in-mq.html\">Logging in MQ<\/a><\/h3>\n<div class=\"post-header\"><\/div>\n<div id=\"post-body-8853457909528863422\" class=\"post-body entry-content\">=&gt; MQ log are also known as transaction logs.<\/p>\n<p>=&gt; MQ logs consists of two parts<br \/>\n&#8211; Data log file (named S0000000.LOG &#8211; S9999999.LOG)<br \/>\n&#8211; Control log file (named amqhlctl.lfh)<\/p>\n<p>=&gt;Transaction logs are created when you create the Queue Manager. When you choose the default locations, the logs will goes to<br \/>\n&#8211; \/var\/mqm\/logs\/Queue_Manager in unix<br \/>\n-c:\/program files\/IBM\/log\/Queue_Manager in windows<br \/>\n=&gt; These MQ logs\/ Transaction logs holds the following information<br \/>\n&#8211; Transaction activity known as Unit Of Work<br \/>\n&#8211; Persistant messages<br \/>\n&#8211; Internan data about queue manager objects<br \/>\n&#8211; Persistant channel status<\/p>\n<p>=&gt; Type of logging<br \/>\nMQ provides 2 type of logging options 1. Circular (default) 2. Linear<\/p>\n<p>Circular Logging<br \/>\n&#8211; Good performance<br \/>\n&#8211; Esay administration<br \/>\nLinear logging<br \/>\n&#8211; Media Recovery<br \/>\n&#8211; Ability to archive\/backup<\/p>\n<p>=&gt; Configuring Logging<br \/>\nLogging configuration will have direct effect on the performance of MQ. Some of the configuration parameters of logging can be changed after creating Queue Manager but some can not be changed.<\/p>\n<p>Primary Logs are the initial and minimum logs.<br \/>\nSecondary logs can be created when the primary logs become full.<\/p>\n<p>Default minimum Max (unix) Max (Win)<br \/>\nPrimary 3 2 510 254<br \/>\nSecondary 2 1 509 253<\/p>\n<p>=&gt; Maximum of primary\/secondary logs have a constraint of 511 on unix and 255 on windows platforms. These are the active logs<\/p>\n<p>=&gt; Log file size is a multiple of 4KB log file page size. This can not be changed after creating the Queue Manager.<\/p>\n<p>=&gt; Log file size details table<br \/>\npages filesize Max<br \/>\nDefault Win 256 1MB 256MB<br \/>\nDefault unix 1024 4MB 2GB<br \/>\nMinimum Win 32 128KB 32MB<br \/>\nMinimum Win 64 256KB 128MB<br \/>\nMaximum 65535 256MB 64GB(win)\/128GB(unix)<\/p>\n<p>=&gt; Log buffer size specifies number of 4KB pages MQ uses to beffer log file writes.<br \/>\n&#8211; Default is 128 which is specified by 0 in MQ configuration file<br \/>\n&#8211; Minimum is 18 and maximum is 4096<\/p>\n<p>=&gt; Log write integrity is the algorithm used to ensure the integrity of the logs.<br \/>\n&#8211; Default algorithm is triple write.<br \/>\n&#8211; This can be changed from QM configuration file<\/p>\n<p>=&gt; Logging Configuration files<br \/>\n&#8211; mqs.ini is the config file for MQ level settings<br \/>\n&#8211; qm.ini is the config file for effective\/QM lelvel settings<\/p>\n<p>Examples:<\/p>\n<p>-mqs.init<br \/>\nLog Defaults:<br \/>\nLogPrimaryFiles=3<br \/>\nLogSecondaryFiles=2<br \/>\nLogFilePages=1024<br \/>\nLogType=CIRCULAR<br \/>\nLogBufferPages=0<br \/>\nLogDefaultPath=\/var\/mqm\/logs<\/p>\n<p>-qm.ini<br \/>\nLogPrimaryFiles=3<br \/>\nLogSecondaryFiles=2<br \/>\nLogFilePages=1024<br \/>\nLogType=CIRCULAR<br \/>\nLogBufferPages=0<br \/>\nLogDefaultPath=\/var\/mqm\/logs<br \/>\nLogWriteIntegrity=TrippleWrite<\/p>\n<p>=&gt; Log Management<br \/>\n&#8211; Circular logging do not need manual log management<br \/>\n&#8211; Linear logging needs manual backup\/cleaning<\/p>\n<p>=&gt; Some logging related MQ codes<br \/>\n&#8211; AMQ7467 Old log file required for queue manager start<br \/>\n&#8211; AMQ7468 old log file required for Queue Manager media recovery<\/p>\n<p>&#8211; AMQ5037 Queue manager task \u2018LOG-FORMAT\u2019 started<br \/>\n&#8211; AMQ5037 Queue Manager task \u2018LOGGEREU\u2019 stared<br \/>\n&#8211; AMQ5037 Queue Manager task \u2018LOGGER-IO\u2019 started<\/p>\n<p>=&gt; Media Recording and Recovery<br \/>\n&#8211; Recording media images<br \/>\nrcdmqimg command will record the image of the queue manager specified.<br \/>\n&#8211; Recovery<br \/>\nis required when a powerloss\/reboot\/QM failure occurs<br \/>\nWhen the recovery is performed<br \/>\n&#8211; Queues are restored to their comitted state at the time of failure<br \/>\n&#8211; Persistant data is not lost<br \/>\n&#8211; non-persistant messages will be discarded<\/p>\n<p>=&gt; Log Recovery scenarios<br \/>\n&#8211; Disk Failures<br \/>\nIn case of circular logging, restore QM and logs from backup<br \/>\nRebuild QM using support pac MS03<br \/>\nIn case of linear logging, restored damaged objects using rcrmqobj<\/p>\n<p>=&gt; Log recovery summary<br \/>\n&#8211; In case of circular logging, no recovery is available<br \/>\n&#8211; In case of linear logging, use rcrmqobj to recover\/recreate the objects fron media image<\/p><\/div>\n<div class=\"post-body entry-content\"><\/div>\n<div class=\"post-body entry-content\"><\/div>\n<div class=\"post-body entry-content\"><script src=\"https:\/\/apis.google.com\/_\/scs\/apps-static\/_\/js\/k=oz.gapi.en_GB.u6Fn0i2IZ7I.O\/m=gapi_iframes_style_slide_menu\/exm=gapi_iframes,gapi_iframes_style_bubble,plusone,profile\/rt=j\/sv=1\/d=1\/ed=1\/am=AQ\/rs=AGLTcCMrAcTPuE6kJJL2kgkme477adtFXA\/cb=gapi.loaded_3\" async=\"\" type=\"mce-mce-mce-mce-mce-mce-mce-no\/type\"><\/script><\/p>\n<div class=\"content\">\n<div class=\"content-outer\">\n<div class=\"fauxborder-left content-fauxborder-left\">\n<div class=\"content-inner\">\n<div class=\"main-outer\">\n<div class=\"fauxborder-left main-fauxborder-left\">\n<div class=\"region-inner main-inner\">\n<div class=\"columns fauxcolumns\">\n<div class=\"columns-inner\">\n<div class=\"column-center-outer\">\n<div class=\"column-center-inner\">\n<div id=\"main\" class=\"main section\">\n<div id=\"Blog1\" class=\"widget Blog\">\n<div class=\"blog-posts hfeed\">\n<div class=\"date-outer\">\n<div class=\"date-posts\">\n<div class=\"post-outer\">\n<div class=\"post hentry\">\n<h3 class=\"post-title entry-title\"><a href=\"http:\/\/websphere-infra.blogspot.sg\/2010\/02\/mq-queue-manager-clusters.html\">MQ Queue Manager Clusters<\/a><\/h3>\n<div class=\"post-header\"><\/div>\n<div id=\"post-body-2196655736507925103\" class=\"post-body entry-content\">=&gt; CLUSTERING<br \/>\n===========<br \/>\nClustering is a way to logically group WebSphere MQ queue managers<br \/>\n&#8211; reduced system administration due to fewer channel, remote queue, and transmission queue definitions<br \/>\n&#8211; increased availability and workload balancing.<\/p>\n<p>=&gt; Basic Cluster setup<br \/>\n===============<br \/>\n&gt; Step-1<br \/>\nDetermine which queue manager should hold full repositories<br \/>\nA full repository contains a complete set of information about every queue manager and object in the cluster<br \/>\nYou will need at least one, preferably two<br \/>\n&gt; Step-2<br \/>\nAlter the queue manager definitions to add repository definitions<br \/>\nALTER QMGR REPOS(cluster_name)<br \/>\n&gt; Step-3<br \/>\nDefine the CLUSRCVR channels<br \/>\nEvery queue manager in the cluster needs a CLUSRCVR with a conname pointing to itself.<br \/>\nDEFINE CHANNEL(channel_name) CHLTYPE(CLUSRCVR) TRTYPE(TCP) CONNAME(\u2018my_ip_name_or_address(port)\u2019) CLUSTER(cluster_name)<br \/>\n&gt; Step-4<br \/>\nDefine the CLUSSDR channels<br \/>\nDefine one CLUSSDR to a full repository queue manager. The channel name must match that of the CLUSRCVR on the full repository<br \/>\nDO NOT define a CLUSSDR to point to a partial repository.<br \/>\nDEFINE CHANNEL(channel_name) CHLTYPE(CLUSSDR) TRPTYP(TCP) CONNAME(\u2018remote_ip_name_or_address(port)\u2019) CLUSTER(cluster_name)<br \/>\n&gt; Step-5<br \/>\nDefine a cluster queue<br \/>\nDEFINE QLOCAL(qname) CLUSTER(cluster_name)<br \/>\nOther queue managers in the cluster can send message to it without making remote-queue definitions for it.<br \/>\nOnly the local queue manager can read messages from an instance of the cluster queue<br \/>\nYou can use a sample program to test putting messages to clustered queues<\/p>\n<p>=&gt; Cluster Commands<br \/>\n===============<br \/>\nDISPLAY QMGR REPOS REPOSNL QMID<br \/>\nAMQ8408: Display Queue Manager details.<br \/>\nQMNAME(QM1) QMID(QM1_2005-07-12_17.14.38) REPOS(QMCLUS)REPOSNL( )<br \/>\nQMID is an internally generated unique name that consists of the queue manager name plus the time the queue manager was created<\/p>\n<p>DISPLAY CLUSQMGR(*) ALL<br \/>\nDisplay cluster Queue managera details<\/p>\n<p>dis chstatus(*) all<br \/>\nDisplay channel status details<\/p>\n<p>DISPLAY QCLUSTER(*) ALL<br \/>\nIt displays information about clustered queues only.<br \/>\nA cluster queue will not be displayed on a partial repository until an application has opened it.<\/p>\n<p>DISPLAY QUEUE(*) CLUSINFO<br \/>\nThis command displays information about queues with TYPE(QCLUSTER)<\/p>\n<p>=&gt; Work load balancing<br \/>\n================<br \/>\nWhen a cluster contains more than one instance of the same queue, workload balancing determines the best queue manager to route a message to<br \/>\n&#8211; At its simplest, workload management results in a round-robin effect<br \/>\nMQ V6 has additional parameters that can be used to influence the results of the algorithm.<br \/>\n&#8211; Queues: CLWLPRTY, CLWLRANK, CLWLUSEQ<br \/>\n&#8211; Queue Managers: CLWLUSEQ, CLWLMRUC<br \/>\n&#8211; Channels: CLWLPRTY, CLWLRANK, CLWLWGHT, NETPRTY<br \/>\nFor workload balancing to occur:<br \/>\n&#8211; open the queue with the MQOO_BIND_NOT_FIXED open option<br \/>\n&#8211; open with the default MQOO_BIND_AS_Q_DEF and with DEFBIND(NOTFIXED) set in the queue definition<br \/>\n&#8211; Leave MQMD.ObjectQMgrName blank to allow the queue manager to chose the queue instance<br \/>\n&#8211; To force the message to a specific instance of the clustered queue, specify that queue manager\u2019s name in ObjectQmgrName<\/p>\n<p>=&gt; Namelists in clusters<br \/>\n================<br \/>\n&#8211; A queue manager may be a member of more than one cluster. List those clusters in a NAMELIST.<br \/>\n&#8211; You can alter a full repository QMGR to use REPOSNL(namelist) rather than REPOS.<br \/>\n&#8211; For channels and queues, you can specify CLUSNL(namelist) rather than specifying the CLUSTER parameter.<\/p>\n<p>=&gt; REFRESH CLUSTER<br \/>\n===============<br \/>\n&#8211; REFRESH CLUSTER removes and rebuilds locally held information about a cluster.<br \/>\n&#8211; REFRESH CLUSTER(clustername) REPOS(NO)<br \/>\n&#8211; REFRESH CLUSTER(clustername) REPOS(YES), also refreshes information about full repository queue managers and may not be issued from a full repository.<br \/>\n&#8211; REFRESH CLUSTER(*)<\/p>\n<p>=&gt; RESET CLUSTER<br \/>\n=============<br \/>\nRESET CLUSTER is issued from a full repository queue manager. It forcibly removes a queue manager or specific QMID from a cluster.<br \/>\n&#8211; RESET CLUSTER(clustername) QMNAME(qmname) ACTION(FORCEREMOVE) QUEUES(NO)<br \/>\n&#8211; RESET CLUSTER(clustername) QMID(qmid) ACTION(FORCEREMOVE) QUEUES(NO)<\/p>\n<p>=&gt; Troubleshooting<br \/>\n=============<br \/>\n&#8211; Is the repository manager still running?<br \/>\nCheck the AMQERRxx.log or CHIN joblog.<br \/>\n&#8211; Are channels able to run in both directions?<br \/>\nDisplay CLUSQMGR and CHSTATUS information.<br \/>\n&#8211; Are the SYSTEM.CLUSTER.* queues enabled?<br \/>\nIssue DISPLAY QUEUE(SYSTEM.C*) ALL<br \/>\n&#8211; Are there messages on<br \/>\nSYSTEM.CLUSTER.COMMAND.QUEUE or<br \/>\nSYSTEM.CLUSTER.TRANSMIT.QUEUE?<br \/>\n&#8211; Are there duplicate QMIDs for a given QMGR?<br \/>\nIssue DISPLAY CLUSQMG(*) QMID.<br \/>\n&#8211; DISPLAY CLUSQMGR may show CLUSQMGR names starting with SYSTEM.TEMP.<br \/>\nThe queue manager has not received all necessary information from the full repository.<\/p><\/div>\n<div class=\"post-body entry-content\"><\/div>\n<div class=\"post-body entry-content\"><\/div>\n<div class=\"post-body entry-content\"><script src=\"https:\/\/apis.google.com\/_\/scs\/apps-static\/_\/js\/k=oz.gapi.en_GB.u6Fn0i2IZ7I.O\/m=gapi_iframes_style_slide_menu\/exm=gapi_iframes,gapi_iframes_style_bubble,plusone,profile\/rt=j\/sv=1\/d=1\/ed=1\/am=AQ\/rs=AGLTcCMrAcTPuE6kJJL2kgkme477adtFXA\/cb=gapi.loaded_3\" async=\"\" type=\"mce-mce-mce-mce-mce-mce-no\/type\"><\/script><\/p>\n<div class=\"content\">\n<div class=\"content-outer\">\n<div class=\"fauxborder-left content-fauxborder-left\">\n<div class=\"content-inner\">\n<div class=\"main-outer\">\n<div class=\"fauxborder-left main-fauxborder-left\">\n<div class=\"region-inner main-inner\">\n<div class=\"columns fauxcolumns\">\n<div class=\"columns-inner\">\n<div class=\"column-center-outer\">\n<div class=\"column-center-inner\">\n<div id=\"main\" class=\"main section\">\n<div id=\"Blog1\" class=\"widget Blog\">\n<div class=\"blog-posts hfeed\">\n<div class=\"date-outer\">\n<div class=\"date-posts\">\n<div class=\"post-outer\">\n<div class=\"post hentry\">\n<h3 class=\"post-title entry-title\"><a href=\"http:\/\/websphere-infra.blogspot.sg\/2010\/02\/websphere-mq-triggering.html\">Websphere MQ Triggering<\/a><\/h3>\n<div class=\"post-header\"><\/div>\n<div id=\"post-body-4748995824944669541\" class=\"post-body entry-content\">MQ Trigering<br \/>\n=========<br \/>\n=&gt; What is Triggering?<br \/>\nWebSphere MQ provides a feature that enables an application or channel to be started automatically when there are messages available to retrieve from a queue.<\/p>\n<p>=&gt; How it works?<br \/>\n&#8211; A message is put to a queue defined as triggered.<br \/>\n&#8211; If a series of conditions are met, the queue manager sends a trigger message to an initiation queue. This is called a trigger event.<br \/>\n&#8211; A trigger monitor reads the trigger message and takes the appropriate action based on the contents of the message, which is typically to start a program to process the triggered queue.<br \/>\n&#8211; Trigger monitors may be built-in, supplied by a SupportPac, or user written.<\/p>\n<p>=&gt; Types of Trigger (TRIGTYPE)<br \/>\n&#8211; FIRST: A trigger event occurs when the current depth of the triggered queue changes from 0 to 1.<br \/>\nUse this type of trigger when the serving program will process all the messages on the queue (i.e. until MQRC_NO_MSG_AVAILABLE).<br \/>\n&#8211; EVERY: A trigger event occurs every time a message arrives on the triggered queue.<br \/>\nUse this type of trigger when the serving program will only process one message at a time.<br \/>\n&#8211; DEPTH: A trigger event occurs when the number of messages on the triggered queue reaches the value of the TRIGDPTH attribute.<br \/>\nUse this type of trigger when the serving program is designed to process a fixed number of messages (i.e. all replies for a certain request).<\/p>\n<p>=&gt; Trigger interval (TRIGINT)<br \/>\n&#8211; TriggerInterval or TRIGINT is a time interval specified on the QMGR definition for use by queues defined as TRIGTYPE=FIRST.<br \/>\n&#8211; Situations may occur when messages are left on the queue. New messages will not cause another trigger message. To help with this situation, a trigger message will be created when the next message is put if TriggerInterval has elapsed since the last trigger message was created for the queue.<\/p>\n<p>=&gt; Trigget setup<br \/>\n&#8211; Create an initiation queue or use the default SYSTEM.CHANNEL.INITQ.<br \/>\n&#8211; Create a process definition (optional). TriggerData may be specified in lieu of a process definition.<br \/>\n&#8211; Create or alter a transmission queue.<br \/>\n&#8211; Associate the initiation queue and the process definition (if applicable) with the transmission queue, and specify the trigger attributes.<br \/>\n=&gt; Triggering Example1<br \/>\n&#8211; DEFINE QLOCAL(QM2) REPLACE USAGE (XMITQ) TRIGGER TRIGTYPE(FIRST) TRIGDATA(QM1.TO.QM2) INITQ (SYSTEM.CHANNEL.INITQ)<br \/>\n&#8211; QM2 is the name of the XMITQ<br \/>\n&#8211; QM1.TO.QM2 is the name of the channel to be started when a message hits the XMITQ<br \/>\n&#8211; SYSTEM.CHANNEL.INITQ is the initq monitored by the channel initiator<br \/>\n=&gt; Triggering Example2<br \/>\n&#8211; DEFINE QLOCAL(QM4) TRIGGER INITQ(SYSTEM.CHANNEL.INITQ) PROCESS(P1) USAGE (XMITQ) ? DEFINE PROCESS(P1) USERDATA(QM3.TO.QM4)<br \/>\n&#8211; The XMITQ definition has PROCESS instead of TRIGDATA<br \/>\n&#8211; The channel name is in USERDATA<\/p>\n<p>=&gt; Application Triggering<br \/>\n&#8211; Create an initiation queue or use the default SYSTEM.DEFAULT.INITIATION.QUEUE.<br \/>\n&#8211; Create a process definition.<br \/>\n&#8211; Create or alter a local or model queue.<br \/>\n&#8211; Associate the initiation queue and process definition with the local queue, and specify the trigger attributes .<br \/>\nAPPLICID is the name of the application executable file, e.g.<br \/>\n&#8211; For APPLTYPE(UNIX):<br \/>\nAPPLICID (\u2019\/u\/admin\/test\/IRMP01?)<br \/>\n&#8211; For APPLTYPE(WINDOWSNT):<br \/>\nAPPLICID(\u2018c:\\appl\\test\\irmp01.exe.\u2019)<br \/>\n&#8211; On UNIX\u00ae systems, ENVRDATA can be set to the ampersand character to make the started application run in the background.<br \/>\n&#8211; The application can receive a parm list with an MQTMC2 containing USRDATA and ENVRDATA.<\/p>\n<p>=&gt; Application Trigger Example1<br \/>\n&#8211; DEFINE QLOCAL (\u2018IQ\u2019) REPLACE<br \/>\n&#8211; DEFINE PROCESS (PROC) REPLACE APPLTYPE (\u2019CICS\u2019) APPLICID (\u2019PAYR\u2019) USERDATA (\u2019Payroll data\u2019)<br \/>\n&#8211; DEFINE QLOCAL (Q1) REPLACE INITQ (\u2018IQ\u2019) PROCESS (\u2018PROC\u2019) TRIGGER TRIGTYPE (FIRST)<br \/>\n&#8211; Note: If using TRIGTYPE(DEPTH) then TRIGDEPTH must also be specified.<br \/>\n=&gt; Application Trigger Example2<br \/>\n&#8211; CRTMQMQ QNAME(initq_name)<br \/>\n&#8211; CRTMQMPRC PRCNAME(proc_name) APPID(lib\/pgm) ENVDATA (\u2018JOBNAME(trigapl) JOBD(lib\/jobd)\u2019)<br \/>\n&#8211; CRTMQMQ QNAME(lclq_name) PRCNAME (proc_name) TRGENBL(*YES) TRGTYPE(*FIRST) INITQNAME(initq_name)<br \/>\n&#8211; Note: If using TRGTYPE(*DEPTH) then TRGDEPTH must also be specified.<\/p>\n<p>=&gt; Trigger Conditions<br \/>\n&#8211; A trigger message is sent to the initiation queue when all of the following conditions are satisfied:<br \/>\n1. A message is put on a transmission or local queue.<br \/>\n2. The message\u2019s priority is greater than or equal to the TriggerMsgPriority of the queue.<br \/>\n3. The number of messages on queue was previously<br \/>\n&#8211; Zero for trigger type FIRST<br \/>\n&#8211; Any number for trigger type EVERY or *ALL<br \/>\n&#8211; TriggerDepth minus 1 for trigger type DEPTH<br \/>\n4. For trigger type FIRST or DEPTH, no program has the trigger queue open for GETs (Open input count=0).<br \/>\n5. The Get enabled attribute is set to YES on the triggered queue.<br \/>\n6. A Process name is specified and exists, or for transmission queues, TriggerData contains the name of a channel.<br \/>\n7. An Initiation queue is specified and exists and GETs and PUTs are enabled for the initiation queue.<br \/>\n8. The trigger monitor has been started and has the initiation queue open for GETs<br \/>\n9. The TriggerControl attribute is set to YES on the triggered queue.<br \/>\n10. The TriggerType attribute is not set to NONE.<br \/>\n11. For Trigger Type FIRST, the queue was not previously empty, but the TriggerInterval set for the QMGR has elapsed.<br \/>\n12. The only application serving the queue issues MQCLOSE and there are still messages on the queue that satisfy Conditions 2 and 6-10.<br \/>\n13. Certain trigger attributes of the triggered queue are changed, such as<br \/>\n&#8211; NOTRIGGER to TRIGGER<br \/>\n&#8211; PUT or GET DISABLED to ENABLED<br \/>\n&#8211; or a trigger monitor opens the Initiation queue.<br \/>\n14. MSGDLVSQ is set correctly relative to the priority of the messages and the TriggerMsgPriority setting.<\/p>\n<p>=&gt; Triggering Problem determination<br \/>\n&#8211; If the setup is brand new or any configuration changes have been made, verify all the definitions are complete and correct.<br \/>\n&#8211; If the setup is brand new or has worked before, verify all the conditions for a trigger event are satisfied.<br \/>\n&#8211; If channel triggering, verify the correct channel name is specified and the channel is not in a STOPPED state.<br \/>\n&#8211; If application triggering<br \/>\n&#8211; verify the application name is correct and exists<br \/>\n&#8211; verify the application is coded correctly<br \/>\n&#8211; verify the correct authorizations are in place.<br \/>\n&#8211; Verify a trigger message can be delivered.<br \/>\n&#8211; Verify a trigger monitor is active.<br \/>\n&#8211; Verify trigger type and application design match.<br \/>\n&#8211; Try manually starting the triggered application to see if it is able to run.<br \/>\n&#8211; Stranded messages may occur when the triggered application fails to remove one or more messages<br \/>\n&#8211; for TriggerType FIRST, use TriggerInteval as a \u201csafety net\u201d, because a trigger event only occurs when depth goes from 0 to 1.<br \/>\n&#8211; for TriggerType EVERY, if the triggered application only does one MQGET, manual intervention will be required to process the messages. Otherwise, the application will only read the oldest message on the next successful trigger and the queue depth will remain non-zero.<br \/>\n&#8211; If there is a loop or high CPU:<br \/>\n&#8211; Change the triggered application to specify a WaitInterval on its MQGET.<br \/>\n&#8211; Check the BackoutCount in the MQMD<\/p>\n<p>=&gt; TIPS<br \/>\n&#8211; For trigger EVERY, if the trigger monitor ends prematurely, no matter how many messages reside on the queue only one trigger message will be created on restart.<br \/>\n&#8211; RUNMQTRM will not get another trigger message until the application completes. To prevent trigger messages from accumulating<br \/>\n&#8211; Run multiple trigger monitors or<br \/>\n&#8211; Run the applications in the background<br \/>\n&#8211; A trigger message is put to the dead letter queue when<br \/>\n&#8211; The queue manager can not put a trigger message on the INITQ<br \/>\n&#8211; RUNMQTRM detects an error in the trigger message structure<br \/>\n&#8211; RUNMQTRM detects an unsupported application type<br \/>\n&#8211; RUNMQTRM can not start the application<br \/>\n&#8211; RUNMQTRM detects a data conversion error<br \/>\n&#8211; Trigger messages are non-persistent.<br \/>\n&#8211; Conditions for a trigger event are \u201cpersistent\u201d, so, if a trigger message is lost a trigger message will be created when the conditions are met.<br \/>\n&#8211; Trigger messages take on the default priority of the INITQ.<br \/>\n&#8211; Trigger monitors can not retrieve messages that are part of a unit of work until the unit of work completes (applies whether it is committed or backed out).<br \/>\n&#8211; The queue manager counts both committed and uncommitted messages on the trigger queue when assessing the conditions for a trigger event.<br \/>\n&#8211; After recycling the queue manager or trigger monitor, a trigger message may be created if the triggered queue has messages on it and provided the trigger conditions are met.<br \/>\n&#8211; When triggering channels, trigger type FIRST or DEPTH is recommended.<br \/>\n&#8211; Disabling triggering is not under syncpoint control so triggering can not be re-enabled by backing out a unit of work. If a program backs out a unit of work or abends, triggering for DEPTH must be reenabled by MQSET, ALTER or CHGMQMQ.<\/p><\/div>\n<div class=\"post-body entry-content\"><\/div>\n<div class=\"post-body entry-content\"><\/div>\n<div class=\"post-body entry-content\"><\/div>\n<div class=\"post-body entry-content\"><\/div>\n<div class=\"post-body entry-content\"><script type=\"mce-mce-mce-mce-mce-text\/javascript\">\/\/ <![CDATA[\nvar a=\"indexOf\",b=\"&#038;m=1\",e=\"(^|&#038;)m=\",f=\"?\",g=\"?m=1\";function h(){var c=window.location.href,d=c.split(f);switch(d.length){case 1:return c+g;case 2:return 0<=d[1].search(e)?null:c+b;default:return null}}var k=navigator.userAgent;if(-1!=k[a](\"Mobile\")&#038;&#038;-1!=k[a](\"WebKit\")&#038;&#038;-1==k[a](\"iPad\")||-1!=k[a](\"Opera Mini\")||-1!=k[a](\"IEMobile\")){var l=h();l&#038;&#038;window.location.replace(l)};\n\/\/ ]]><\/script><script type=\"mce-mce-mce-mce-mce-text\/javascript\">\/\/ <![CDATA[\nif (window.jstiming) window.jstiming.load.tick('headEnd');\n\/\/ ]]><\/script><script src=\"\/\/pagead2.googlesyndication.com\/pagead\/js\/google_top_exp.js\" type=\"mce-mce-mce-mce-mce-text\/javascript\"><\/script><script src=\"http:\/\/www.google.com\/uds\/?file=search&amp;v=1&amp;hl=en&amp;async=2\" type=\"mce-mce-mce-mce-mce-text\/javascript\"><\/script><script src=\"http:\/\/www.google.com\/uds\/api\/search\/1.0\/23952f7483f1bca4119a89c020d13def\/default+en.I.js\" type=\"mce-mce-mce-mce-mce-text\/javascript\"><\/script><\/p>\n<div class=\"content\">\n<div class=\"content-outer\">\n<div class=\"fauxborder-left content-fauxborder-left\">\n<div class=\"content-inner\">\n<div class=\"main-outer\">\n<div class=\"fauxborder-left main-fauxborder-left\">\n<div class=\"region-inner main-inner\">\n<div class=\"columns fauxcolumns\">\n<div class=\"columns-inner\">\n<div class=\"column-center-outer\">\n<div class=\"column-center-inner\">\n<div id=\"main\" class=\"main section\">\n<div id=\"Blog1\" class=\"widget Blog\">\n<div class=\"blog-posts hfeed\">\n<div class=\"date-outer\">\n<div class=\"date-posts\">\n<div class=\"post-outer\">\n<div class=\"post hentry\">\n<h3 class=\"post-title entry-title\"><a href=\"http:\/\/websphere-infra.blogspot.sg\/2010\/02\/mq-problem-determination-queue-manager.html\">MQ Problem determination &#8211; Queue Manager Diagnostics<\/a><\/h3>\n<div class=\"post-header\"><\/div>\n<div id=\"post-body-7085019994425176276\" class=\"post-body entry-content\">Problem determination &#8211; Queue Manager Diagnostics<\/p>\n<p>=&gt; Error Reporting<br \/>\n&#8211; when connected to Queue Manager, all the logs routed to \/var\/mqm\/qmgrs\/QM_NAME\/errors<br \/>\n&#8211; all other messages routed to \/var\/mqm\/errors<\/p>\n<p>=&gt;Error message components<br \/>\n&#8211; message always include an identifier and basic text<br \/>\n&#8211; message contains date\/date\/pid\/user\/program\/exception message\/suggested action\/source file which generated it<br \/>\n=&gt; Log Rollover<br \/>\n&#8211; current message are always appended to the first error log<br \/>\n&#8211; rollover occurs when the log reaches ~256k<br \/>\n&#8211; this size setting can be changed by setting the following<br \/>\n-queue manager<br \/>\nErrorLogSize=1048576 #1Mb error log file<br \/>\n-for System error logs<br \/>\nexport MQMAXERRORLOGSIZE=1048576<\/p>\n<p>=&gt; Suppression of messages<br \/>\n&#8211; Allows non-critical messages to be suppressed<br \/>\n&#8211; can be set using the ini stanza<br \/>\nexample<br \/>\nQMErrorLog:<br \/>\nExcludeMesssage=9001,9002,9999 #don\u2019t write these<br \/>\nSuppressMessage=9508 #only write once<br \/>\nSuppressinterval=30 #in any 30secs<\/p>\n<p>=&gt; Error log Recomandations<br \/>\n&#8211; save all error logs after a serious error occurs as well as the qm.ini<br \/>\n&#8211; be sure to note the time you observed the problem<br \/>\n&#8211; look for related messages before and after the time of the error<br \/>\n&#8211; try to correlate error log message with other diagnostics<\/p>\n<p>=&gt; FFST<br \/>\n&#8211; FFST is first failure support technology<br \/>\n&#8211; FFST are files written to \/var\/mqm\/errors<br \/>\n&#8211; FFST file names format is AMQ[PID].x.FDC<br \/>\n&#8211; all threads in a process will append their FFSTs to the same file<\/p>\n<p>=&gt; FFST layout<br \/>\n-The header<br \/>\nthis includes date\/time\/hostname\/pids\/probeID\/builddate\/user\/program\/process\/thread\/QM\/probetype\/monitcode etc\u2026<br \/>\n-The Function stack<br \/>\nevery thread executing MQ code has a thread control block which contains stack for MQ functions. this stack shows context in which error occured<br \/>\n-The Trace history<br \/>\nthe trace shows sequence of events leading up to a failure<br \/>\n-The component dumps<br \/>\nshows the commom services control blocks<br \/>\n-Environment<br \/>\nincludes all user settings at time of error<\/p>\n<p>=&gt; Base MQ tracing<br \/>\n&#8211; Tracing records the sequence of events in a program<br \/>\n&#8211; MQ supports tracing on all queue managers and clients<br \/>\n&#8211; Trace are binary files which requir formatting<br \/>\n&#8211; MQ shipps programs for starting\/stopiing\/formatting traces<br \/>\n-strmqtrc<br \/>\n-endmqtrc<br \/>\n-dspmqtrc<br \/>\n&#8211; traces are written to \/var\/mqm\/trace<br \/>\n&#8211; trace contains a header with extended process information, then each line of trace contains pid\/tid\/trace data.<\/p><\/div>\n<div class=\"post-body entry-content\"><\/div>\n<div class=\"post-body entry-content\"><\/div>\n<div class=\"post-body entry-content\"><script src=\"https:\/\/apis.google.com\/_\/scs\/apps-static\/_\/js\/k=oz.gapi.en_GB.u6Fn0i2IZ7I.O\/m=gapi_iframes_style_slide_menu\/exm=gapi_iframes,gapi_iframes_style_bubble,plusone,profile\/rt=j\/sv=1\/d=1\/ed=1\/am=AQ\/rs=AGLTcCMrAcTPuE6kJJL2kgkme477adtFXA\/cb=gapi.loaded_3\" async=\"\" type=\"mce-mce-mce-mce-no\/type\"><\/script><\/p>\n<div class=\"content\">\n<div class=\"content-outer\">\n<div class=\"fauxborder-left content-fauxborder-left\">\n<div class=\"content-inner\">\n<div class=\"main-outer\">\n<div class=\"fauxborder-left main-fauxborder-left\">\n<div class=\"region-inner main-inner\">\n<div class=\"columns fauxcolumns\">\n<div class=\"columns-inner\">\n<div class=\"column-center-outer\">\n<div class=\"column-center-inner\">\n<div id=\"main\" class=\"main section\">\n<div id=\"Blog1\" class=\"widget Blog\">\n<div class=\"blog-posts hfeed\">\n<div class=\"date-outer\">\n<div class=\"date-posts\">\n<div class=\"post-outer\">\n<div class=\"post hentry\">\n<h3 class=\"post-title entry-title\"><a href=\"http:\/\/websphere-infra.blogspot.sg\/2010\/02\/migrating-websphere-mq-queue-manager.html\">Migrating WebSphere MQ queue manager clusters<\/a><\/h3>\n<div class=\"post-header\"><\/div>\n<div id=\"post-body-7808326470150446406\" class=\"post-body entry-content\">MQ Migration<br \/>\n========<br \/>\nMigrating queue managers is generally a simple process, because WebSphere MQ is designed to automatically migrate objects and messages, and support mixed version clusters. However, when planning the migration of a cluster, you need to consider a number of issues, which are described below.<\/p>\n<p>Forward migration involves upgrading an existing queue manager to a later version and is supported on all platforms. You may wish to forward migrate in order to take advantage of new features or because the old version is nearing its end-of-service date.<br \/>\nTesting<br \/>\n\u2014\u2014\u2014-<br \/>\nIt is important when making any system changes to test the changes in a test or QA environment before rolling out the changes in production, especially when migrating software from one version to another. Ideally, an identical migration plan would be executed in both test and production to maximise the chance of finding potential problems in test rather than production. In practice, test and production environments are unlikely to be architected or configured identically or to have the same workloads, so it is unlikely that the migration steps carried out in test will exactly match those carried out in production. Whether the plans and environments for test and production differ or not, it is always possible to find problems when migrating the production cluster queue managers<\/p>\n<p>Plan<br \/>\n\u2014\u2013<br \/>\nWhen creating the migration plan, you need to consider general queue manager migration issues, clustering specifics, wider system architecture, and change control policies. Document and test the plan before migrating production queue managers. Here is an example of a basic migration plan for a cluster queue manager:<\/p>\n<p>1. Suspend queue manager from the cluster.<br \/>\n* Issue SUSPEND CLUSTER<br \/>\n* Monitor traffic to the suspended queue manager. The cluster workload algorithm can choose a suspended queue manager if there are no other valid destinations available or an application has affinity with a particular queue manager.<br \/>\n2. Save a record of all cluster objects known by this queue manager. This data will be used after migration to check that objects have been migrated successfully.<br \/>\n* Issue DISPLAY CLUSQMGR(*) to view cluster queue managers.<br \/>\n* Issue DISPLAY QC(*) to view cluster queues.<br \/>\n3. Save a record of the full repositories view of the cluster objects owned by this queue manager. This data will be used after migration to check that objects have been migrated successfully.<br \/>\n* Issue DISPLAY CLUSQMGR on the full repositories.<br \/>\n* Issue DISPLAY QC(*) WHERE(CLUSQMGR EQ ) on the full repositories.<br \/>\n4. Stop queue manager.<br \/>\n5. Take a backup of the queue manager.<br \/>\n6. Install the new version of WebSphere MQ.<br \/>\n7. Restart queue manager.<br \/>\n8. Ensure that all cluster objects have been migrated successfully.<br \/>\n* Issue DISPLAY CLUSQMGR(*) to view cluster queue managers and check output against the data saved before migration.<br \/>\n* Issue DISPLAY QC(*) to view cluster queues and check output against the data saved before migration.<br \/>\n9. Ensure that the queue manager is communicating with the full repositories correctly. Check that cluster channels to full repositories can start.<br \/>\n10. Ensure that the full repositories still know about the migrated cluster queue manager and its cluster queues.<br \/>\n* Issue DISPLAY CLUSQMGR on the full repositories and check output against the data saved before migration.<br \/>\n* Issue DISPLAY QC(*) WHERE(CLUSQMGR EQ ) on the full repositories and check output against the data saved before migration.<br \/>\n11. Test that applications on other queue managers can put messages to the migrated cluster queue manager\u2019s queues.<br \/>\n12. Test that applications on the migrated queue manager can put messages to the other cluster queue manager\u2019s queues.<br \/>\n13. Resume the queue manager.<br \/>\n* Issue RESUME CLUSTER<br \/>\n14. Closely monitor the queue manager and applications in the cluster for a period of time.<\/p>\n<p>Backout plan<br \/>\n\u2014\u2014\u2014\u2014\u2014-<br \/>\nA backout plan should be documented before migrating. It should detail what constitutes a successful migration, the conditions that trigger the backout procedure, and the backout procedure itself. The procedure could involve removing or suspending the queue manager from the cluster, backwards migrating, or keeping the queue manager offline until an external issue is resolved.<\/p><\/div>\n<div class=\"post-body entry-content\"><\/div>\n<div class=\"post-body entry-content\"><\/div>\n<div class=\"post-body entry-content\"><\/div>\n<div class=\"post-body entry-content\"><script src=\"https:\/\/apis.google.com\/_\/scs\/apps-static\/_\/js\/k=oz.gapi.en_GB.u6Fn0i2IZ7I.O\/m=gapi_iframes_style_slide_menu\/exm=gapi_iframes,gapi_iframes_style_bubble,plusone,profile\/rt=j\/sv=1\/d=1\/ed=1\/am=AQ\/rs=AGLTcCMrAcTPuE6kJJL2kgkme477adtFXA\/cb=gapi.loaded_3\" async=\"\" type=\"mce-mce-mce-no\/type\"><\/script><\/p>\n<div class=\"content\">\n<div class=\"content-outer\">\n<div class=\"fauxborder-left content-fauxborder-left\">\n<div class=\"content-inner\">\n<div class=\"main-outer\">\n<div class=\"fauxborder-left main-fauxborder-left\">\n<div class=\"region-inner main-inner\">\n<div class=\"columns fauxcolumns\">\n<div class=\"columns-inner\">\n<div class=\"column-center-outer\">\n<div class=\"column-center-inner\">\n<div id=\"main\" class=\"main section\">\n<div id=\"Blog1\" class=\"widget Blog\">\n<div class=\"blog-posts hfeed\">\n<div class=\"date-outer\">\n<div class=\"date-posts\">\n<div class=\"post-outer\">\n<div class=\"post hentry\">\n<h3 class=\"post-title entry-title\"><a href=\"http:\/\/websphere-infra.blogspot.sg\/2010\/02\/websphere-mq-ffst.html\">Websphere MQ FFST<\/a><\/h3>\n<div class=\"post-header\"><\/div>\n<div id=\"post-body-3361303940715842833\" class=\"post-body entry-content\">What is FFST?<br \/>\nFFST stands for First Failure Support Technology, and is technology within WebSphere MQ designed to create detailed reports for IBM Service with information about the current state of a part of a queue manager together with historical data.<br \/>\nWhat are they for?<br \/>\nThey are used to report unexpected events or states encountered by WebSphere MQ. (Alternatively, they can be generated upon request). <\/p>\n<p>Note that return codes are used for application programmers to inform them of expected states or errors in a WebSphere MQ application. There are exceptions to this rule, but as a rule of thumb, FFSTs are used to report something that will need to be actioned by:<br \/>\n\u2022 system administrators &#8211; such as where FFSTs report resource issues such as running low on disk space<br \/>\n\u2022 IBM &#8211; where FFSTs report a potential code error in WebSphere MQ that (unless already identified and corrected in existing maintenance) may need correcting<br \/>\nWhere are they?<br \/>\nOn UNIX systems, they are written to \/var\/mqm\/errors<br \/>\nThey are contained in files with the extension .FDC<br \/>\nThe file name will begin with AMQ followed by the process id for the process which reported the error. e.g \/var\/mqm\/errors\/AMQ12345.0.FDC &#8211; is the first FFST file produced by a process with ID 12345<\/p>\n<p>What do they contain?<br \/>\nFFST files are text files containing error reports for a single process.<br \/>\nIf a single process produces more than one error report, these are all included within the same FFST file for that process, in the order in which they were generated.<br \/>\nHow should I look at these files?<br \/>\nFFST files are just text files, so your favorite text editor is normally the best place to start.<br \/>\nThe tool ffstsummary is also useful &#8211; it produces a summary of FFST reports in the current directory, sorted into time order. This can be a good place to start to see the errors reported in your errors directory.<br \/>\nFor example:<br \/>\n[mqm@test~]$ cd \/var\/mqm\/errors<br \/>\n[mqm@test errors]$ ffstsummary<br \/>\nAMQ21433.0.FDC 2007\/04\/10 10:05:45 amqzdmaa 21433 2 XC338001 xehAsySignalHandler xecE_W_UNEXPECTED_ASYNC_SIGNAL OK<br \/>\nAMQ21429.0.FDC 2007\/04\/10 10:05:45 amqzmur0 21429 2 XC338001 xehAsySignalHandler xecE_W_UNEXPECTED_ASYNC_SIGNAL OK<br \/>\nAMQ21469.0.FDC 2007\/04\/10 10:05:45 runmqlsr 21469 2 XC338001 xehAsySignalHandler xecE_W_UNEXPECTED_ASYNC_SIGNAL OK<br \/>\nAMQ21422.0.FDC 2007\/04\/10 10:05:45 amqzfuma 21422 2 XC338001 xehAsySignalHandler xecE_W_UNEXPECTED_ASYNC_SIGNAL OK<br \/>\nAMQ21424.0.FDC 2007\/04\/10 10:05:45 amqzmuc0 21424 2 XC338001 xehAsySignalHandler xecE_W_UNEXPECTED_ASYNC_SIGNAL OK<br \/>\nAMQ21431.0.FDC 2007\/04\/10 10:05:45 amqrrmfa 21431 2 XC338001 xehAsySignalHandler xecE_W_UNEXPECTED_ASYNC_SIGNAL OK<br \/>\nAMQ21449.0.FDC 2007\/04\/10 10:05:45 amqzlaa0 21449 2 XC338001 xehAsySignalHandler xecE_W_UNEXPECTED_ASYNC_SIGNAL OK<br \/>\nAMQ21434.0.FDC 2007\/04\/10 10:05:45 amqzmgr0 21434 2 XC338001 xehAsySignalHandler xecE_W_UNEXPECTED_ASYNC_SIGNAL OK<br \/>\nAMQ21452.0.FDC 2007\/04\/10 10:05:45 runmqchi 21452 2 XC338001 xehAsySignalHandler xecE_W_UNEXPECTED_ASYNC_SIGNAL OK<br \/>\nAMQ21417.0.FDC 2007\/04\/10 10:05:45 amqzxma0 21417 4 XC338001 xehAsySignalHandler xecE_W_UNEXPECTED_ASYNC_SIGNAL OK<br \/>\n[mqm@testerrors]$<br \/>\nThe columns in the output above show:<br \/>\n\u2022 filename &#8211; which FDC file contains the FFST report<br \/>\n\u2022 time and date of the report<br \/>\n\u2022 process name &#8211; name of the process which produced the report<br \/>\n\u2022 process and thread ids &#8211; for the process which produced the report<br \/>\n\u2022 probe id<br \/>\n\u2022 component &#8211; part of WebSphere MQ where the report was produced<br \/>\n\u2022 error code &#8211; major errorcode and minor code<br \/>\nWhat does an FFST report contain?<br \/>\nI\u2019ve added some numbers on the left to mark out points worth noting\u2026<br \/>\nSample FFST Report:<br \/>\n+\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2013+<br \/>\n| |<br \/>\n| WebSphere MQ First Failure Symptom Report |<br \/>\n| ========================================= |<br \/>\n| |<br \/>\n(1) | Date\/Time :- Wednesday Feb 02 13:25:56 IST 2008 |<br \/>\n(2) | Host Name :- joseph.joseph.com (Linux 2.6.9-42.0.10.EL) |<br \/>\n| PIDS :- 5724H7207 |<br \/>\n(3) | LVLS :- 6.0.2.0 |<br \/>\n| Product Long Name :- WebSphere MQ for Linux (POWER platform) |<br \/>\n| Vendor :- IBM |<br \/>\n(4) | Probe Id :- XC338001 |<br \/>\n| Application Name :- MQM |<br \/>\n(5) | Component :- xehAsySignalHandler |<br \/>\n(6) | SCCS Info :- lib\/cs\/unix\/amqxerrx.c, 1.214.1.4 |<br \/>\n| Line Number :- 737 |<br \/>\n| Build Date :- Sep 21 2007 |<br \/>\n| CMVC level :- p600-200-060921 |<br \/>\n| Build Type :- IKAP &#8211; (Production) |<br \/>\n(7) | UserID :- 00011243 (mqm ) |<br \/>\n( | Program Name :- runmqlsr |<br \/>\n| Addressing mode :- 64-bit |<br \/>\n(9) | Process :- 16337 |<br \/>\n| Thread-Process :- 16337 |<br \/>\n(10) | Thread :- 2 |<br \/>\n| ThreadingModel :- PosixThreads |<br \/>\n(11) | Major Errorcode :- xecE_W_UNEXPECTED_ASYNC_SIGNAL |<br \/>\n| Minor Errorcode :- OK |<br \/>\n| Probe Type :- MSGAMQ6209 |<br \/>\n| Probe Severity :- 3 |<br \/>\n(12) | Probe Description :- AMQ6209: An unexpected asynchronous signal (2 : |<br \/>\n| SIGINT) has been received and ignored. |<br \/>\n| FDCSequenceNumber :- 0 |<br \/>\n| Arith1 :- 2 2 |<br \/>\n(13) | Comment1 :- SIGINT |<br \/>\n| Comment2 :- Signal sent by pid 0 |<br \/>\n| |<br \/>\n+\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2014\u2013+<\/p>\n<p>(14) MQM Function Stack<br \/>\nxehAsySignalMonitor<br \/>\nxehHandleAsySignal<br \/>\nxcsFFST<\/p>\n<p>(15) MQM Trace History<br \/>\n{ xppInitialiseDestructorRegistrations<br \/>\n} xppInitialiseDestructorRegistrations rc=OK<br \/>\n{ xehAsySignalMonitor<br \/>\n-{ xcsGetEnvironmentInteger<br \/>\n\u2013{ xcsGetEnvironmentString<br \/>\n\u2013} xcsGetEnvironmentString rc=xecE_E_ENV_VAR_NOT_FOUND<\/p>\n<p>(16) Process Control Block<br \/>\n0\u00d780006ad890 58494850 000029E8 00003FD1 00000004 XIHP..)\u2026?\u2026..<br \/>\n0\u00d780006ad8a0 00000000 10029F70 00000000 10033A50 \u2026\u2026.p\u2026\u2026<br \/>\n0\u00d780006ad8b0 00000000 00000000 00000000 00000000 \u2026\u2026\u2026\u2026\u2026.<br \/>\n0\u00d780006ad8c0 to 0\u00d780006ad900 suppressed, 5 lines same as above<br \/>\n0\u00d780006ad910 00000000 00000001 00000000 00000000 \u2026\u2026\u2026\u2026\u2026.<br \/>\n0\u00d780006ad920 00000000 00000000 00000000 00000000 \u2026\u2026\u2026\u2026\u2026.<br \/>\n0\u00d780006ad930 to 0\u00d780006ad9d0 suppressed, 11 lines same as above<br \/>\n0\u00d780006ad9e0 00000000 00000000 00000001 00568001 \u2026\u2026\u2026\u2026.V..<br \/>\n0\u00d780006ad9f0 00FB8000 00000000 00000080 00760000 \u2026\u2026\u2026\u2026.v..<br \/>\n0\u00d780006ada00 00000000 00000000 00000000 00000000 \u2026\u2026\u2026\u2026\u2026.<br \/>\n0\u00d780006ada10 to 0\u00d780006ae9f0 suppressed, 255 lines same as above<br \/>\n0\u00d780006aea00 00000000 FFFFFFFF FFFFFFFF 00000000 \u2026\u2026\u2026\u2026\u2026.<br \/>\n0\u00d780006aea10 00000000 00000000 00000001 FFFFFFFE \u2026\u2026\u2026\u2026\u2026.<br \/>\n0\u00d780006aea20 00000001 00000000 00000000 00000000 \u2026\u2026\u2026\u2026\u2026.<br \/>\n0\u00d780006aea30 00000080 0069A380 00000000 00000000 \u2026..i\u2026\u2026\u2026.<br \/>\n0\u00d780006aea40 00000000 00000000 00000000 00000000 \u2026\u2026\u2026\u2026\u2026.<\/p>\n<p>etc<\/p>\n<p>(17) Environment Variables:<br \/>\nMANPATH=\/opt\/csm\/man:<br \/>\nHOSTNAME=joseph.joseph.com<br \/>\nTERM=xterm<br \/>\nSHELL=\/bin\/bash<br \/>\nHISTSIZE=1000<br \/>\nSSH_CLIENT=::ffff:9.20.94.90 2625 22<br \/>\nQTDIR=\/usr\/lib\/qt-3.3<br \/>\nOLDPWD=\/root<br \/>\nSSH_TTY=\/dev\/pts\/1<br \/>\nUSER=root<br \/>\nLS_COLORS=no=00:fi=00:di=00;34:ln=00;36:pi=40;33:so=00;35:bd=40;33;01:cd=40\u2026<br \/>\nKDEDIR=\/usr<br \/>\nMAIL=\/var\/spool\/mail\/root<br \/>\nPATH=\/usr\/kerberos\/sbin:\/usr\/kerberos\/bin:\/opt\/csm\/bin:\/usr\/local\/sbin:\/usr\/local\/bin:\/sbin:\/bin:\u2026<br \/>\nINPUTRC=\/etc\/inputrc<br \/>\nPWD=\/var\/mqm\/errors<br \/>\nLANG=en_GB.UTF-8<br \/>\nSSH_ASKPASS=\/usr\/libexec\/openssh\/gnome-ssh-askpass<br \/>\nSHLVL=1<br \/>\nHOME=\/root<br \/>\nLOGNAME=root<br \/>\nSSH_CONNECTION=::ffff:9.20.94.90 2625 ::ffff:9.20.63.20 22<br \/>\nLESSOPEN=|\/usr\/bin\/lesspipe.sh %s<br \/>\nG_BROKEN_FILENAMES=1<br \/>\n_=\/usr\/bin\/runmqlsr<br \/>\n1. Date and time that this report was produced<br \/>\nFor many problems, this is the most useful piece of information &#8211; allowing an error report to be correlated with other known events.<br \/>\n2. hostname for the machine where this report was produced<br \/>\n3. Version and maintenance level for WebSphere MQ<br \/>\nThis is useful when comparing an error report against a documented known problem.<br \/>\n4. Probe ID<br \/>\nThis is an internal method of identifying the error report. It identifies a single point in the WebSphere MQ source code where the report was produced (consisting of two letters giving a component code, a three digit function code, and a three digit probe identifier).<br \/>\nThis often makes it the best way to uniquely identify the error that the report is describing. More on this a bit later\u2026<br \/>\n5. Component<br \/>\nthis is the bit of WebSphere MQ which produced the report. As with the source information below, it is generally more useful to us than it is to users, although the name can sometimes give a useful hint as to the nature of the error report. For example, in this case where the report is the result of my using Control-C to generate an interrupt signal, you can see that the component which produced the report was a signal handler.<br \/>\n6. source information<br \/>\nAlthough this isn\u2019t information isn\u2019t useful to users, I thought it might be interesting to highlight that an FFST will identify exactly where it was produced, down to the source code file, line number and version<br \/>\n7. User id that was running the process which produced the report This is useful to confirm whether a problem was the result of insufficient user privileges.<br \/>\n8. process name of process which produced the report<br \/>\n9. process id for the process which produced the report<br \/>\n10. thread id for the process which produced the report<br \/>\n11. error codes for the report<br \/>\n12. a longer description of the error code for the report<br \/>\nThis is a textual (English) description containing information that a WebSphere MQ developer thought might be helpful if the situation were to occur. Sometimes this information may be useful to users, such as messages identifying an operating system function which has failed and what the error code was. Other times, it will only useful to IBM Service.<br \/>\n13. additional comment information<br \/>\n14. function stack for the process at the time of the report<br \/>\n15. a history of function calls made by the process leading up to the report<br \/>\n16. A series of dumps<\/p>\n<p>In the WebSphere MQ source code, functions can register data items that may be of interest. If it has something that could be useful (such as in diagnosing or debugging a problem), it can register it with the engine that produces FFST reports. This means that in the event of an FFST being produced, this data will be included. These items are deregistered when a function completes.<br \/>\nThis is normally of more use to IBM Service than users, however there may be times &#8211; such as when some message data is included &#8211; when you will recognise some of the data here.<br \/>\n17. environment variables for the the environment of the process which produced the report<\/p>\n<p>What can I do if I have an FFST report?<br \/>\nMonitoring for the production of FDC files is an important part of handling the occurrence of errors in a WebSphere MQ system. Prompt handling of a problem can be key to a timely resolution.<br \/>\nIf an FDC file is created, the next step is probably to determine if this is something that requires you to take an action, and if so how urgent is it. A number of factors will influence this, including:<br \/>\n\u2022 Are queue managers running?<br \/>\n\u2022 Are applications still working?<br \/>\n\u2022 Does the probe description give any insight into why the FFST was generated?<br \/>\n\u2022 Does the time and date of the FFST correspond with any other known events or occurrences at the same time which may explain the error?<br \/>\nIf the FFST identifies a resource issue, such as low disk space, then this will normally give enough information for a system administrator to identify and correct the source of the problem.<br \/>\nIf you are unable to determine an explanation for the FFST, then a useful next step is to look to see if others have seen this FFST before, and if so what they found it to mean and needed to do.<br \/>\nThis is where the probe id from the FFST is very useful. In the majority of cases (for one notable exception, see my discussion on signals below), this will be a unique eye-catcher for the issue being reported. This means that you can search for this short string on the WebSphere MQ support site on ibm.com or in the IBM Support Assistant. Often, this will reveal cases where someone has encountered this FFST before and the fix that resulted.<br \/>\nBeyond this point, you will most likely need to raise a PMR with IBM Service. It is useful to send all FFSTs from your system (rather than just the one that you believe to be of interest), as following the history can be key to resolving an issue. It is also useful to send the WebSphere MQ system (\/var\/mqm\/errors\/AMQ*.LOG) and queue manager (\/var\/mqm\/qmgrs\/errors\/AMQ*.LOG) error logs, together with a clear description of what you are seeing and the impact on the system and your business.<br \/>\nSignal handling<br \/>\nGenerally find the probe id to be a unique identifier for a specific problem. While this is usually true, one notable exception is FFSTs produced by the signal and exception handlers.<br \/>\nThe signal handler component produces FFSTs to report signals sent to WebSphere MQ processes. This means that the information in the FFST (such as the probe id and source code file, line number, etc.) is about the signal handler which caught the signal, not whatever it was that caused or created the signal.<br \/>\nThis is less of a problem if the signal was generated externally to WebSphere MQ, such as the SIGINT that I generated with Ctrl-C in the example above. The FFST contains information about the process which was sent the signal and the time and date of the signal.<br \/>\nIt can be more complex if the signal is generated from elsewhere within WebSphere MQ, such as a SIGSEGV from a segmentation fault in another WebSphere MQ process. The exception handler will generate an FFST to record the SIGSEGV, however it is important to bear in mind that any such FFST contains a report about where the SIGSEGV was caught, not where it was generated. This doesn\u2019t mean that the cause cannot be found, but it does mean that the FFST information such as the probe id is not necessarily the sort of unique eye-catcher described above.<br \/>\nGenerating FFSTs on request<br \/>\nI mentioned above that it is possible to generate FFSTs manually. This can be done using the following commands:<br \/>\namqldbgn -p PID (on Windows)<br \/>\nor<br \/>\nkill -USR2 PID (on UNIX platforms)<br \/>\nwhere PID is the process ID for a WebSphere MQ process. FFST reports generated in this way will have a probe id that ends in 255.<\/p><\/div>\n<div class=\"post-body entry-content\"><\/div>\n<div class=\"post-body entry-content\"><\/div>\n<div class=\"post-body entry-content\"><\/div>\n<div class=\"post-body entry-content\"><a href=\"http:\/\/websphere-infra.blogspot.sg\/2010\/02\/qs-operations.html\">Q&#8217;s operations<\/a><\/div>\n<div class=\"post-body entry-content\">\n<div class=\"content\">\n<div class=\"content-outer\">\n<div class=\"fauxborder-left content-fauxborder-left\">\n<div class=\"content-inner\">\n<div class=\"main-outer\">\n<div class=\"fauxborder-left main-fauxborder-left\">\n<div class=\"region-inner main-inner\">\n<div class=\"columns fauxcolumns\">\n<div class=\"columns-inner\">\n<div class=\"column-center-outer\">\n<div class=\"column-center-inner\">\n<div id=\"main\" class=\"main section\">\n<div id=\"Blog1\" class=\"widget Blog\">\n<div class=\"blog-posts hfeed\">\n<div class=\"date-outer\">\n<div class=\"date-posts\">\n<div class=\"post-outer\">\n<div class=\"post hentry\">\n<div class=\"post-header\"><\/div>\n<div id=\"post-body-901436596441782688\" class=\"post-body entry-content\"><strong>&#8211; Remote Queue Operations<\/strong><br \/>\nNew Remore Queue<br \/>\n=================<br \/>\nDEFINE QREMOTE (\u2019RQ_NAME\u2019) +<br \/>\nDESCR(\u2019Description\u2019) +<br \/>\nPUT(ENABLED) +<br \/>\nEFPSIST(NO) +<br \/>\nMAXDEPTH(200000) +<br \/>\nMSGDLVSQ(PRIORITY) +<br \/>\nXMITQ(\u2019XQ_NAME\u2019) +<br \/>\nTRIGTYPE (FIRST) +<br \/>\nRNAME(\u2019RLQ_NAME\u2019) +<br \/>\nRQMNAME(\u2019RQM_NAME\u2019) +<br \/>\nQDEPTHHI (80) +<br \/>\nQDEPTHLO (20) +<br \/>\nREPLACEDEFPSIST(NO) -&gt; Persistant YES\/NO<br \/>\nTRIGTYPE (FIRST) -&gt; Trigger type (if present)<br \/>\nMAXDEPTH(20000) -&gt; Max depth<br \/>\nMSGDLVSQ(PRIORITY) -&gt; Message delivery meth<br \/>\nPUT -&gt; Put (enable\/disable)<br \/>\nXMITQ -&gt; Transmit Queue name<br \/>\nRNAME -&gt; Remore local queue name<br \/>\nRQNAME -&gt; Remote Queue Manager name<br \/>\nQDEPTHHI -&gt; High Queue depth<br \/>\nQDEPTHLO -&gt; Low Queue Depth<br \/>\nREPLACE -&gt; Replace if existing<\/p>\n<p>Change the Queue properties<br \/>\n============================<br \/>\nalter qremote RQ_NAME [property]<\/p>\n<p>Display Queue properties<br \/>\n========================<br \/>\ndisplay qremote RQ_NAME<\/p>\n<p>Give permissions to Queue<br \/>\n==========================<br \/>\nsetmqaut -m RQ_NAME -n QM_NAME -t queue -g group\/user [+browse +get +dsp +put]<\/p>\n<p>Display existing permissions<br \/>\n=============================<br \/>\ndspmqaut -m LQ_NAME -n QM_NAME -t queue -g group\/user<\/p>\n<p><strong>Websphere MQ &#8211; Transmit Queue Operations<\/strong><\/p>\n<p>New Transmit Queue<br \/>\n==================<br \/>\nDEFINE QLOCAL(\u2019XQ_NAME\u2019) +<br \/>\nDESCR (\u2019Description\u2019) +<br \/>\nDEFPSIST(NO) +<br \/>\nTRIGTYPE (FIRST) +<br \/>\nMAXDEPTH(200000) +<br \/>\nMSGDLVSQ(PRIORITY) +<br \/>\nUSAGE(XMITQ) +<br \/>\nQDEPTHHI (80) +<br \/>\nQDEPTHLO (20) +<br \/>\nREPLACEDEFPSIST(NO) -&gt; Persistant YES\/NO<br \/>\nTRIGTYPE (FIRST) -&gt; Trigger type (if present)<br \/>\nMAXDEPTH(20000) -&gt; Max depth<br \/>\nMSGDLVSQ(PRIORITY) -&gt; Message delivery meth<br \/>\nUSAGE(XMITQ) -&gt; Queue usage (XMITQ)<br \/>\nQDEPTHHI (80) -&gt; High Queue depth<br \/>\nQDEPTHLO (20) -&gt; Low queue depth<br \/>\nREPLACE -&gt; Replace if existing<\/p>\n<p>Change the Queue properties<br \/>\n============================<br \/>\nalter qlocal XQ_NAME [property]<\/p>\n<p>Display Queue properties<br \/>\n========================<br \/>\ndisplay qlocal LQ_NAME<\/p>\n<p>Give permissions to Queue<br \/>\n==========================<br \/>\nsetmqaut -m XQ_NAME -n QM_NAME -t queue -g group\/user [+browse +get +dsp +put]<\/p>\n<p>Display existing permissions<br \/>\n=============================<br \/>\ndspmqaut -m LQ_NAME -n QM_NAME -t queue -g group\/user<\/p>\n<p><strong>Websphere MQ &#8211; Local Queue Operations<\/strong><\/p>\n<p>New Local Queue<br \/>\n================<br \/>\nDEFINE QLOCAL(\u2019LQ_NAME\u2019) +<br \/>\nDESCR (\u2019description\u2019) +<br \/>\nDEFPSIST(NO) +<br \/>\nTRIGTYPE (FIRST) +<br \/>\nMAXDEPTH(200000) +<br \/>\nMSGDLVSQ(PRIORITY) +<br \/>\nUSAGE(NORMAL) +<br \/>\nQDEPTHHI (80) +<br \/>\nQDEPTHLO (20) +<br \/>\nREPLACE<\/p>\n<p>DEFPSIST(NO) -&gt; Persistant YES\/NO<br \/>\nTRIGTYPE (FIRST) -&gt; Trigger type<br \/>\nMAXDEPTH(20000) -&gt; Max depth<br \/>\nMSGDLVSQ(PRIORITY) -&gt; Message delivery meth<br \/>\nUSAGE(NORMAL) -&gt; Queue usage (NORMAL\/XMITQ)<br \/>\nQDEPTHHI (80) -&gt; High Queue depth<br \/>\nQDEPTHLO (20) -&gt; Low queue depth<br \/>\nREPLACE -&gt; Replace if existing<\/p>\n<p>Change the Queue properties<br \/>\n============================<br \/>\nalter qlocal LQ_NAME [property]<\/p>\n<p>Display Queue properties<br \/>\n========================<br \/>\ndisplay qlocal LQ_NAME<\/p>\n<p>Give permissions to Queue<br \/>\n==========================<br \/>\nsetmqaut -m LQ_NAME -n QM_NAME -t queue -g group\/user [+browse +get +dsp +put]<\/p>\n<p>Display existing permissions<br \/>\n=============================<br \/>\ndspmqaut -m LQ_NAME -n QM_NAME -t queue -g group\/user<\/p>\n<p><strong>Websphere MQ &#8211; Queue Manager Operations<br \/>\n<\/strong><br \/>\nCreate new Queue manager<br \/>\ncrtmqm QM_NAME<\/p>\n<p>Display all Queue manages<br \/>\ndspmq<\/p>\n<p>starting Queue Manager<br \/>\nsrtmqm QM_NAME<\/p>\n<p>Stopping Queue Manager<br \/>\nendmqm QM_NAME<\/p>\n<p>Connect to Queue Manager<br \/>\nrunmqsc QM_NAME<\/p>\n<p>Delete Queue manager<br \/>\ndltmqm Queue_Manager<\/p><\/div>\n<div class=\"post-body entry-content\"><\/div>\n<div class=\"post-body entry-content\"><\/div>\n<div class=\"post-body entry-content\"><script src=\"https:\/\/apis.google.com\/_\/scs\/apps-static\/_\/js\/k=oz.gapi.en_GB.u6Fn0i2IZ7I.O\/m=gapi_iframes_style_slide_menu\/exm=gapi_iframes,gapi_iframes_style_bubble,plusone,profile\/rt=j\/sv=1\/d=1\/ed=1\/am=AQ\/rs=AGLTcCMrAcTPuE6kJJL2kgkme477adtFXA\/cb=gapi.loaded_3\" async=\"\" type=\"mce-no\/type\"><\/script><\/p>\n<div class=\"content\">\n<div class=\"content-outer\">\n<div class=\"fauxborder-left content-fauxborder-left\">\n<div class=\"content-inner\">\n<div class=\"main-outer\">\n<div class=\"fauxborder-left main-fauxborder-left\">\n<div class=\"region-inner main-inner\">\n<div class=\"columns fauxcolumns\">\n<div class=\"columns-inner\">\n<div class=\"column-center-outer\">\n<div class=\"column-center-inner\">\n<div id=\"main\" class=\"main section\">\n<div id=\"Blog1\" class=\"widget Blog\">\n<div class=\"blog-posts hfeed\">\n<div class=\"date-outer\">\n<div class=\"date-posts\">\n<div class=\"post-outer\">\n<div class=\"post hentry\">\n<h3 class=\"post-title entry-title\"><a href=\"http:\/\/websphere-infra.blogspot.sg\/2010\/02\/websphere-mq-listener-operations.html\">Websphere MQ &#8211; Listener Operations<\/a><\/h3>\n<div class=\"post-header\"><\/div>\n<div id=\"post-body-2179625196023774004\" class=\"post-body entry-content\">New Listner<br \/>\n===========<br \/>\ndef listener(LISTENER_NAME) trptype(tcp) port(PORT_NUMBER)<\/p>\n<p>Start listener<br \/>\n===============<br \/>\nstart listener (LISTENER_NAME)<\/p>\n<p>Stop Listener<br \/>\n==============<br \/>\nstop listener (LISTENER_NAME)<\/p>\n<p>Listener Status<br \/>\n===============<br \/>\ndisplay lsstatus (LISTENER_NAME)<\/p><\/div>\n<div class=\"post-body entry-content\"><\/div>\n<div class=\"post-body entry-content\"><\/div>\n<div class=\"post-body entry-content\"><script src=\"https:\/\/apis.google.com\/_\/scs\/apps-static\/_\/js\/k=oz.gapi.en_GB.u6Fn0i2IZ7I.O\/m=gapi_iframes_style_slide_menu\/exm=gapi_iframes,gapi_iframes_style_bubble,plusone,profile\/rt=j\/sv=1\/d=1\/ed=1\/am=AQ\/rs=AGLTcCMrAcTPuE6kJJL2kgkme477adtFXA\/cb=gapi.loaded_3\" async=\"\"><\/script><\/p>\n<div class=\"content\">\n<div class=\"content-outer\">\n<div class=\"fauxborder-left content-fauxborder-left\">\n<div class=\"content-inner\">\n<div class=\"main-outer\">\n<div class=\"fauxborder-left main-fauxborder-left\">\n<div class=\"region-inner main-inner\">\n<div class=\"columns fauxcolumns\">\n<div class=\"columns-inner\">\n<div class=\"column-center-outer\">\n<div class=\"column-center-inner\">\n<div id=\"main\" class=\"main section\">\n<div id=\"Blog1\" class=\"widget Blog\">\n<div class=\"blog-posts hfeed\">\n<div class=\"date-outer\">\n<div class=\"date-posts\">\n<div class=\"post-outer\">\n<div class=\"post hentry\">\n<h3 class=\"post-title entry-title\"><a href=\"http:\/\/websphere-infra.blogspot.sg\/2010\/02\/websphere-mq-receiver-channel.html\">Websphere MQ &#8211; Receiver Channel Operations<\/a><\/h3>\n<div class=\"post-header\"><\/div>\n<div id=\"post-body-6129413179916601462\" class=\"post-body entry-content\">New Receiver Channel<br \/>\n===================<br \/>\nDEFINE CHANNEL(CHANNEL_NAME) CHLTYPE(RCVR) REPLACE<\/p>\n<p>Starting Channel<br \/>\n================<br \/>\nstart channel (CHANNEL_NAME)<\/p>\n<p>Stopping Channek<br \/>\n================<br \/>\nstop channel (CHANNEL_NAME)<\/p>\n<p>Status of channel<br \/>\n=================<br \/>\ndisplay chs (CHANNEL_NAME)<\/p>\n<p>Display channel properties<br \/>\n==========================<br \/>\ndisplay channel (CHANNEL_NAME)<\/p><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>\/\/ =c&#038;&#038;(b[k].srt=h-c)}if(a){var e=b[k].load;0=c&#038;&#038;(e[g](&#8220;_wtsrt&#8221;,void 0,c),e[g](&#8220;wtsrt_&#8221;,&#8221;_wtsrt&#8221;,h),e[g](&#8220;tbsd_&#8221;,&#8221;wtsrt_&#8221;))}try{a=null, b[f]&#038;&#038;b[f].csi&#038;&#038;(a=Math.floor(b[f].csi().pageT),e&#038;&#038;0 websphere-infra: Webspere MQ All\/\/ \/\/ <\/p>\n<p> MQSC: indicates a runmqsc command, which can be executed while in runmqsc [QmgrName] or as one line command using: echo command runmqsc [QmgrName] on Unix platforms add double quotes: echo \u201ccommand\u201d runmqsc [QmgrName] MQ Display commands<\/p>\n<p>MQ start-Stop commands<\/p>\n<p>MQ status verification commands <\/p>\n<p> [&#8230;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[57],"tags":[],"_links":{"self":[{"href":"https:\/\/mohan.sg\/index.php?rest_route=\/wp\/v2\/posts\/3993"}],"collection":[{"href":"https:\/\/mohan.sg\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mohan.sg\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mohan.sg\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mohan.sg\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3993"}],"version-history":[{"count":1,"href":"https:\/\/mohan.sg\/index.php?rest_route=\/wp\/v2\/posts\/3993\/revisions"}],"predecessor-version":[{"id":3995,"href":"https:\/\/mohan.sg\/index.php?rest_route=\/wp\/v2\/posts\/3993\/revisions\/3995"}],"wp:attachment":[{"href":"https:\/\/mohan.sg\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3993"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mohan.sg\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3993"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mohan.sg\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3993"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}