tag:blogger.com,1999:blog-135184402024-03-07T10:52:11.115-08:00TSMAdminThe Missing Links To The Resources You Need!Chad Smallhttp://www.blogger.com/profile/02637281120881655693noreply@blogger.comBlogger348125tag:blogger.com,1999:blog-13518440.post-84497975127622812192020-06-10T06:16:00.004-07:002020-12-03T11:50:01.029-08:00New Version of TSMExplorer<br />
<div style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;">
</div>
<br />
<span face=""arial" , "helvetica" , sans-serif">There is a new version of <a href="https://www.tsmexplorer.com/" target="_blank">TSMExplorer</a> available and it has added support for Spectrum Protect Plus. See can download a trial version of 5.2.3 <a href="https://www.tsmexplorer.com/?page_id=72" target="_blank">here</a>. TSMExplorer has a load of features and provides a great central management console when you have multiple TSM/Spectrum Protect Servers. With the added support of managing Spectrum Protect Plus it's even easier to manage your environment.</span><div><br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://www.tsmexplorer.com/wp-content/uploads/Capto_-2020-10-05_01-38-27_PM-1024x526.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="411" data-original-width="800" height="328" src="https://www.tsmexplorer.com/wp-content/uploads/Capto_-2020-10-05_01-38-27_PM-1024x526.png" width="640" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><br /></div>
<span face="Arial, Helvetica, sans-serif">Here is a video of an older version of TSMExplorer so you can get a feel for the product.</span><br />
<br />
<br />
<iframe allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/ezm12Pb2vGE" width="560"></iframe><br />
<br />
<span face="Arial, Helvetica, sans-serif">Here is a video of the client agent and how it works with the TSMExplorer console to allow access to the client options files and logs for easier management.</span><br />
<br />
<br />
<iframe allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/0vw89nKMyJM" width="560"></iframe></div>Chad Smallhttp://www.blogger.com/profile/02637281120881655693noreply@blogger.com0tag:blogger.com,1999:blog-13518440.post-71329413127706047152020-05-26T15:37:00.000-07:002020-06-02T14:48:25.804-07:00Finally - A Universal Backup Agent!<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEifKuZJG6Q2humDq4PQ7vh-hLSvnfVB1hBvG2g_HtfoVy7zzROIA8PA3FJ2MqE6AMJ7uMSRe7PYfffOk8v8fmDBNVj5sirJEBjseR_YA3kUjTcmRXqwR7SIKLbvQ-hBmXM8SsfAMg/s1600/SPFS-v4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="540" data-original-width="960" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEifKuZJG6Q2humDq4PQ7vh-hLSvnfVB1hBvG2g_HtfoVy7zzROIA8PA3FJ2MqE6AMJ7uMSRe7PYfffOk8v8fmDBNVj5sirJEBjseR_YA3kUjTcmRXqwR7SIKLbvQ-hBmXM8SsfAMg/s640/SPFS-v4.png" width="620" /></a></div>
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">I was contacted by a representative of <a href="http://www.spictera.com/" target="_blank">Spictera </a>about their <a href="http://www.spictera.com/spfs-a-filesystem-for-spectrum-protect/" target="_blank">SPFS tool for Spectrum Protect</a>. This product allows you to use a local mount on your Linux server as a place to save your backup or application dump that is a direct connection to the IBM Spectrum Protect backend storage. It uses Spectrum Protect API calls and allows you to implement versioning and retention policies just as you would normal file system backups or archives. This product can solve your issues with proprietary applications that IBM does not, and probably never will, support. Now you can backup your MongoDB or SAP HANA a lot easier by using the native backup process built into your application. Currently it only supports the following OS's.</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<br />
<div style="background-color: white; border: 0px; color: #333333; font-family: "Trebuchet MS", Arial, sans-serif; font-size: 13px; margin-bottom: 15px; max-width: 100%; overflow-wrap: break-word; padding: 0px; text-shadow: rgb(255, 255, 255) 0px 1px 0px;">
Supported operating systems are:</div>
<ul style="background-color: white; border: 0px; color: #333333; font-family: "Trebuchet MS", Arial, sans-serif; font-size: 13px; list-style-image: initial; list-style-position: initial; margin: 0px 0px 15px; max-width: 100%; overflow-wrap: break-word; padding: 0px;">
<li style="border: 0px; margin: 0px 0px 0px 30px; max-width: 100%; padding: 0px;">CentOS 6 for x86_64</li>
<li style="border: 0px; margin: 0px 0px 0px 30px; max-width: 100%; padding: 0px;">CentOS 7 for x86_64</li>
<li style="border: 0px; margin: 0px 0px 0px 30px; max-width: 100%; padding: 0px;">CentOS 8 for x86_64</li>
<li style="border: 0px; margin: 0px 0px 0px 30px; max-width: 100%; padding: 0px;">Debian 8 for x86_64</li>
<li style="border: 0px; margin: 0px 0px 0px 30px; max-width: 100%; padding: 0px;">Debian 9 for x86_64</li>
<li style="border: 0px; margin: 0px 0px 0px 30px; max-width: 100%; padding: 0px;">Red Hat 6 for x86_64, ppc64 be, s390x (zLinux)</li>
<li style="border: 0px; margin: 0px 0px 0px 30px; max-width: 100%; padding: 0px;">Red Hat 7 for x86_64, ppc64 le, s390x (zLinux)</li>
<li style="border: 0px; margin: 0px 0px 0px 30px; max-width: 100%; padding: 0px;">Red Hat 8 for x86_64, ppc64 le, s390x (zLinux)</li>
<li style="border: 0px; margin: 0px 0px 0px 30px; max-width: 100%; padding: 0px;">SuSE 11 for x86_64, ppc64 be, s390x (zLinux)</li>
<li style="border: 0px; margin: 0px 0px 0px 30px; max-width: 100%; padding: 0px;">SuSE 12 for x86_64, ppc64 le, s390x (zLinux)</li>
<li style="border: 0px; margin: 0px 0px 0px 30px; max-width: 100%; padding: 0px;">SuSE 15 for x86_64, ppc64 le, s390x (zLinux)</li>
<li style="border: 0px; margin: 0px 0px 0px 30px; max-width: 100%; padding: 0px;">Ubuntu 14.04 for x86_64, ppc64 le, s390x (zLinux)</li>
<li style="border: 0px; margin: 0px 0px 0px 30px; max-width: 100%; padding: 0px;">Ubuntu 18.04 for x86_64, ppc64 le, s390x (zLinux)</li>
</ul>
<div>
<span style="color: #333333; font-family: "trebuchet ms" , "arial" , sans-serif;">I would assume if it support CentOS x86_64 you should have no trouble with it on Red Hat. I'll let Spictera confirm that though. I've provided a presentation on the product for your review.</span></div>
<div>
<span style="color: #333333; font-family: "trebuchet ms" , "arial" , sans-serif;"><br /></span></div>
<div>
<span style="color: #333333; font-family: "trebuchet ms" , "arial" , sans-serif;"><br /></span></div>
<iframe frameborder="0" height="367px" src="https://onedrive.live.com/embed?cid=94711D7E22806A1C&resid=94711D7E22806A1C%2156044&authkey=AHt3-_fLSWymsy4&em=2&wdAr=1.7777777777777777" width="610px">This is an embedded <a target="_blank" href="https://office.com">Microsoft Office</a> presentation, powered by <a target="_blank" href="https://office.com/webapps">Office</a>.</iframe>
Chad Smallhttp://www.blogger.com/profile/02637281120881655693noreply@blogger.com1tag:blogger.com,1999:blog-13518440.post-47923635460895577092020-05-13T08:25:00.000-07:002020-05-14T06:46:25.364-07:00HBA Info Script<span style="font-family: "arial" , "helvetica" , sans-serif;">I thought I would pass this script along for anyone needing a way to out HBA info on Linux in a nicely formatted table.</span><br />
<br />
<span style="font-family: "courier new" , "courier" , monospace;">#!/bin/bash</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">echo "FC_HOST | PortID | WWN | State | Speed "</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">echo "------------+------------+--------------------+------------+----------"</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">for hba in `ls -d /sys/class/fc_host/host*`;do</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"> FC_HOST=`basename $hba`</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"> PortID=`cat $hba/port_id`</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"> wwpn=`cat $hba/port_name`</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"> state=`cat $hba/port_state`</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"> speed=`cat $hba/speed`</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"> hba=`cat $hba/symbolic_name`</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"> echo "$FC_HOST| $PortID | $wwpn | $state| $speed" | awk 'BEGIN{OFS=FS="|"}{for(i=1;i<=NF;i++){$i=sprintf("%-12s",$i)};print}'</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">done #|sort -k3n,6</span><br />
<span style="font-family: "courier new" , "courier" , monospace;">echo "------------+------------+--------------------+------------+----------"</span><br />
<div>
<br /></div>
<div>
<br /></div>
<div>
<span style="font-family: "arial" , "helvetica" , sans-serif;">The output looks like this</span></div>
<div>
<br /></div>
<div>
<br /></div>
<div>
<div>
<span style="font-family: "courier new" , "courier" , monospace;">FC_HOST | PortID | WWN | State | Speed </span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace;">------------+------------+--------------------+------------+----------</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace;">host0 | 0xffffffff | 0x20003890a540876c | Linkdown | unknown </span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace;">host11 | 0xffffffff | 0x20003890a540876d | Linkdown | unknown </span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace;">host12 | 0x640000 | 0x100000109b1bbe00 | Online | 32 Gbit </span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace;">host13 | 0xffffffff | 0x20003890a5803461 | Linkdown | 40 Gbit </span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace;">host14 | 0xffffffff | 0x20003890a5803462 | Linkdown | 40 Gbit </span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace;">host15 | 0x640000 | 0x100000109b1bbe01 | Online | 32 Gbit </span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace;">host16 | 0x03eac0 | 0x100000109b1b9a77 | Online | 16 Gbit </span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace;">host17 | 0x04eac0 | 0x100000109b1b9a78 | Online | 16 Gbit </span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace;">------------+------------+--------------------+------------+----------</span><br />
<span style="font-family: "courier new" , "courier" , monospace;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">If you would like more detail I added a couple more columns to show make, model, firmware, and driver version. This is a fixed width column layout and the minimum column width can be adjusted for your needs.</span><br />
<span style="font-family: Courier New, Courier, monospace;"><br /></span>
<span style="font-family: Courier New, Courier, monospace;">#!/bin/bash</span><br />
<span style="font-family: Courier New, Courier, monospace;">echo "FC_HOST | PortID | WWN | State | Speed | Make | Model | Firmware | Driver"</span><br />
<span style="font-family: Courier New, Courier, monospace;">echo "----------------+----------------+--------------------+----------------+----------------+----------------+----------------+----------------+---------------"</span><br />
<span style="font-family: Courier New, Courier, monospace;">for hba in `ls -d /sys/class/fc_host/host*`;do</span><br />
<span style="font-family: Courier New, Courier, monospace;"> FC_HOST=`basename $hba`</span><br />
<span style="font-family: Courier New, Courier, monospace;"> PortID=`cat $hba/port_id`</span><br />
<span style="font-family: Courier New, Courier, monospace;"> wwpn=`cat $hba/port_name`</span><br />
<span style="font-family: Courier New, Courier, monospace;"> state=`cat $hba/port_state`</span><br />
<span style="font-family: Courier New, Courier, monospace;"> speed=`cat $hba/speed`</span><br />
<span style="font-family: Courier New, Courier, monospace;"> hba=`cat $hba/symbolic_name`</span><br />
<span style="font-family: Courier New, Courier, monospace;"> hba_make=`echo $hba | cut -f1 -d ' ' `</span><br />
<span style="font-family: Courier New, Courier, monospace;"> hba_model=`echo $hba | cut -f2 -d ' ' `</span><br />
<span style="font-family: Courier New, Courier, monospace;"> hba_fw=`echo $hba | cut -f3 -d ' ' `</span><br />
<span style="font-family: Courier New, Courier, monospace;"> hba_driver=`echo $hba | cut -f4 -d ' ' `</span><br />
<span style="font-family: Courier New, Courier, monospace;"> echo "$FC_HOST| $PortID | $wwpn | $state| $speed | $hba_make | $hba_model | $hba_fw | $hba_driver " | awk 'BEGIN{OFS=FS="|"}{for(i=1;i<=NF;i++){$i=sprintf("%-16s",$i)};print}'</span><br />
<span style="font-family: Courier New, Courier, monospace;">done #|sort -k3n,6</span><br />
<span style="font-family: Courier New, Courier, monospace;"></span><br />
<span style="font-family: Courier New, Courier, monospace;">echo "----------------+----------------+--------------------+----------------+----------------+----------------+----------------+----------------+---------------"</span><br />
<div>
<br /></div>
<span style="font-family: Arial, Helvetica, sans-serif;">The output looks similar to this:</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<img alt="" height="144" src="data:image/png;base64,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" width="640" /><br />
<br /></div>
</div>
Chad Smallhttp://www.blogger.com/profile/02637281120881655693noreply@blogger.com0tag:blogger.com,1999:blog-13518440.post-51440793158377644682020-04-21T09:06:00.000-07:002020-04-21T09:08:48.915-07:00End of the Road?<span style="font-family: "arial" , "helvetica" , sans-serif;">For those of you who come here periodically and are wondering why content has been lacking, I wanted to let you all know that it is due to my current employment situation. Currently my employer is in the process of replacing Spectrum Protect throughout the company with Commvault. Once the conversion has completed I will be released and so am currently looking for new employment. Since the 8.1.8 upgrade of our servers I have been working steadily on reporting and prepping for the conversion. The initial thought was that I would stay employed and transition to learning Commvault, but that turned out to not be the case. I have enjoyed managing ADSM/TSM/Spectrum Protect environments for the last 22 years but have seen a drop off of its use as IBM has retreated from marketing their products and moved more towards other areas of the IT field. As I have looked for jobs in the Spectrum Protect realm I have noticed that they are rarer than ever, especially with the current situation the world finds itself. I plan to leave the site and up and will post anything you the readers feel will benefit the Spectrum Protect community. Feel free to send me your article for review and if I feel it fits the nature of this website it will be posted. Unfortunately, unless things change I see myself transitioning into a new role with a cloud emphasis and posts here will end unless you all take over the mantle and provide other admins with advice and examples from your own experiences. I have enjoyed posting and helping the community since founding this website and wish you all success going forward.</span>Chad Smallhttp://www.blogger.com/profile/02637281120881655693noreply@blogger.com2tag:blogger.com,1999:blog-13518440.post-10107571774463810932019-08-14T10:40:00.000-07:002019-09-05T12:04:12.839-07:00Error Upgrading to 8.1.8.0I performed an upgrade today on a server going from 8.1.0.0 to 8.1.8.0 and after the upgrade we encountered the following errors in the actlog as the system was starting.<br />
<br />
<blockquote class="tr_bq">
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">08/14/2019 11:59:59 ANR9999D_2835836899 InstGetDB2stmtPass1(instr.c:550)</span><span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> Thread<404>: Error in fetching DB2 statement stats,</span><span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> rc=2359</span><span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">08/14/2019 11:59:59 ANR9999D Thread<404> issued message 9999 from:</span><span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">08/14/2019 11:59:59 ANR9999D Thread<404> 0x00000001000365b4 StdPutText</span><span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">08/14/2019 11:59:59 ANR9999D Thread<404> 0x000000010003784c OutDiagToCons</span><span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">08/14/2019 11:59:59 ANR9999D Thread<404> 0x000000010000cf08 outDiagfExt</span><span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">08/14/2019 11:59:59 ANR9999D Thread<404> 0x000000010019d0d0</span><span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> IPRA.$InstGetDB2stmtPass1</span><span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">08/14/2019 11:59:59 ANR9999D Thread<404> 0x00000001001a15e0 instrumentStart</span><span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">08/14/2019 11:59:59 ANR9999D Thread<404> 0x00000001012d7b98</span><span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> AdmInstrumentBegin</span><span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">08/14/2019 11:59:59 ANR9999D Thread<404> 0x00000001008da68c AdmCommandLocal</span><span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">08/14/2019 11:59:59 ANR9999D Thread<404> 0x00000001008d7af0 admCommand</span><span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">08/14/2019 11:59:59 ANR9999D Thread<404> 0x00000001013fbe68 RunCommand</span><span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">08/14/2019 11:59:59 ANR9999D Thread<404> 0x00000001013f7a48</span><span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> ServerMonTwentyMinThread</span><span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">08/14/2019 11:59:59 ANR9999D Thread<404> 0x0000000100010648 StartThread</span></blockquote>
<div>
<br /></div>
<div>
Although the server started, I wanted to make sure this would not cause issues with the instance. I searched the error <b>ANR9999D_2835836899</b> and found the following <a href="http://www-01.ibm.com/support/docview.wss?crawler=1&uid=swg1IT28430" target="_blank">IBM APAR notice</a>. It appears that after the upgrade you may have to manually upgrade the DB2 version using the DB2 update tool. While it appears to be a minor issue, I would recommend you check your instances after upgrade to verify whether you need to run the manual steps to resolve the errors. I've included them here for your convenience.</div>
<div>
<br />
<b>NOTE:</b> <i>I've added a couple commands (in <b>bold</b>) that we have had to add to the process to make it work.</i><br />
<br />
<b><span style="font-size: large;">Local fix</span></b><br />
<br />
<blockquote>
Even though the db2-level might be updated to the latest version 11.1.4.4, run the below set of commands<br />Stop TSM server and issue the following commands as the instance owner.<br /><ul>
<li><b>db2 start</b></li>
</ul>
<ul>
<li>db2 force application all</li>
</ul>
<ul>
<li>db2 terminate</li>
</ul>
<ul>
<li><b>ipclean</b></li>
</ul>
<br />login as root user and run<br /><ul>
<li>/opt/tivoli/tsm/db2/instance/db2iupdt -d <instance name></li>
</ul>
<br />login as the instance owner ID and issue the command:<br /> <br /><ul>
<li>db2updv111 -d TSMDB1</li>
</ul>
<br />This issue is supposedly fixed in version 8.1.9.0 and higher.</blockquote>
</div>
Chad Smallhttp://www.blogger.com/profile/02637281120881655693noreply@blogger.com0tag:blogger.com,1999:blog-13518440.post-19463518005166503112019-06-18T07:41:00.000-07:002019-06-18T07:41:44.564-07:00Audit Occupancy Issue<span style="font-size: small;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><b style="font-style: italic; text-decoration-line: underline;">2019</b> </span></span><b style="color: red; font-family: arial, helvetica, sans-serif;">Update</b><br />
<span style="font-family: arial, helvetica, sans-serif;">IBM has resolved this issue with version 8.1.6 and higher. As of 8.1.6 the standard AUDIT LICENSE will update all clients whether they use standard or directory storage pools.</span><br />
<span style="font-size: small;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><i><u><b><br /></b></u></i></span></span>
<span style="font-size: small;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><i><u><b>1/24/2018</b></u></i> <span style="color: red;"><b>Update </b></span> </span></span><br />
<span style="font-size: small;"><span style="font-family: "arial" , "helvetica" , sans-serif;">IBM Support contacted me and stated that the developers said the issue was actually a defect (<a href="https://www-01.ibm.com/support/docview.wss?uid=swg1IT23153" target="_blank">APAR IT23153</a>) and that <b>you can fix the issue by logging on the SP server as the instance owner and running the following commands</b>:</span></span><br />
<br />
<ul>
<li><span style="font-size: x-small;"><span style="font-family: "courier new" , "courier" , monospace;"><span style="font-size: x-small;"><span style="font-family: "arial" , "helvetica" , sans-serif;">db2 connect to tsmdb1</span></span></span></span></li>
<li><span style="font-size: x-small;"><span style="font-family: "courier new" , "courier" , monospace;"><span style="font-size: x-small;"><span style="font-family: "arial" , "helvetica" , sans-serif;">db2 set schema tsmdb1</span></span></span></span></li>
<li><span style="font-size: x-small;"><span style="font-family: "courier new" , "courier" , monospace;"><span style="font-size: x-small;"><span style="font-family: "arial" , "helvetica" , sans-serif;">db2 "update tsmdb1.sd_pool_clusters set physoccupancy=1 where physoccupancy=0"</span></span></span></span></li>
<li><span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: x-small;"><span style="font-family: "arial" , "helvetica" , sans-serif;">login as admin to Spectrum Protect instance</span></span></span></li>
<li><span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: x-small;"><span style="font-family: "arial" , "helvetica" , sans-serif;">run <b>AUDIT LICense </b>command</span></span></span></li>
<li><span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-size: x-small;"><span style="font-family: "arial" , "helvetica" , sans-serif;">run <b>Q AUDITOCCupancy</b> command</span></span></span></li>
</ul>
<span style="font-size: small;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><br /><b></b></span></span>
<span style="font-size: small;"><span style="font-family: "arial" , "helvetica" , sans-serif;">You should now see the AUDITOCC table is populated.</span></span><br />
<br />
<br />
<span style="font-size: small;"><span style="font-family: "arial" , "helvetica" , sans-serif;"><i><u><b>1/23/2018</b></u></i> </span></span><br />
<span style="font-size: small;"><span style="font-family: "arial" , "helvetica" , sans-serif;"> We setup a new Spectrum Protect instance with a Directory Container Storage Pool and when we went to gather storage data for billing purposes we discovered that the AUDITOCC table in the database showed no storage data. The first troubleshooting step was to check to see if AUDITSTORAGE option was set to YES which it was. Then we reran the AUDIT LICENSE command to have Spectrum Protect audit the storage and after completing there was still no data in the AUDITOCC table. I contacted IBM and asked for support to tell me why I had no data in my AUDITOCC table and was met with level 1 support unable to provide an answer (which was probably due to them not knowing my servers full configuration). When the PMR was passed up to the chain to level 2 support and they reviewed the log details I sent in, they responded that DIRECTORY CONTAINER storage pools do not provide occupancy data to the AUDITOCC table. To gather the required data that the AUDITOCC table normally would provide you have to run the GENERATE DEDUPSTATS command.</span></span><br />
<br />
<blockquote class="tr_bq">
<b><span style="font-family: "courier new" , "courier" , monospace;">GENERATE DEDUPSTATS <STORAGE POOL> <NODE NAME></span></b></blockquote>
<br />
<span style="font-family: "arial" , "helvetica" , sans-serif;">Please note that there is nothing in the Spectrum Protect manuals that will inform you that DIRECTORY CONTAINER storage pools do not provide AUDITOCC table data. IBM Level 2 support has opened a PMR requesting that the documentation be updated for the QUERY AUDITOCC command. I am not sure if you can use a * with the node name and have GENERATE DEDUPSTATS but will be trying it today and will let you all know the results in the comments below.</span>Chad Smallhttp://www.blogger.com/profile/02637281120881655693noreply@blogger.com0tag:blogger.com,1999:blog-13518440.post-31013987584485093032019-02-20T05:46:00.000-08:002019-02-20T05:46:18.082-08:00IBM Spectrum Protect 8.1.6 Tier to Cloud by State<div class="separator" style="clear: both; text-align: center;">
<iframe width="320" height="266" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/lwxOR2LZxVM/0.jpg" src="https://www.youtube.com/embed/lwxOR2LZxVM?feature=player_embedded" frameborder="0" allowfullscreen></iframe></div>
A coworker recently did a presentation on Amazon S3 with Netbackup and I went searching for the capabilities available with TSM/Spectrum Protect. It appears as of 8.1.6 they have added some additional features that greatly expand the usage of cloud based storage. Check out this informative demo from IBM.Chad Smallhttp://www.blogger.com/profile/02637281120881655693noreply@blogger.com0tag:blogger.com,1999:blog-13518440.post-57383861146020210502019-01-16T13:57:00.001-08:002019-01-16T14:59:03.649-08:00Q STATUS UPDATE!<div data-xf-p="1" style="background-color: #f7fbfe; box-sizing: border-box; color: #141414; font-family: "Segoe UI", "Helvetica Neue", Helvetica, Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", sans-serif; font-size: 15px;">
So it turns out that TSM is calculating Front-End usage automatically when you install Ops Center or have <span style="box-sizing: border-box; font-weight: 700;">SET STATUSMONITOR ON.</span> I had installed Operations Center when I installed the latest SP and wasn't familiar witht he front-end licensing model until now. So lucky me it show's the data our management wants without me having to go to each application server to manually gather the data. Note that it is supposed to show the total in MB but from the command line it appears as if SP didn't calculate correctly. If you go into Ops Center and check licensing then it shows that the </div>
<div data-xf-p="1" style="background-color: #f7fbfe; box-sizing: border-box; color: #141414; font-family: "Segoe UI", "Helvetica Neue", Helvetica, Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", sans-serif; font-size: 15px;">
<br style="box-sizing: border-box;" /></div>
<div data-xf-p="1" style="background-color: #f7fbfe; box-sizing: border-box; color: #141414; font-family: "Segoe UI", "Helvetica Neue", Helvetica, Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", sans-serif; font-size: 15px;">
<span style="box-sizing: border-box; font-weight: 700;"><span style="box-sizing: border-box; color: #e25041; font-family: "courier new";">Front-End Capacity (MB): 148.21</span></span> </div>
<div data-xf-p="1" style="background-color: #f7fbfe; box-sizing: border-box; color: #141414; font-family: "Segoe UI", "Helvetica Neue", Helvetica, Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", sans-serif; font-size: 15px;">
<br style="box-sizing: border-box;" /></div>
<div data-xf-p="1" style="background-color: #f7fbfe; box-sizing: border-box; color: #141414; font-family: "Segoe UI", "Helvetica Neue", Helvetica, Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", sans-serif; font-size: 15px;">
According to the Front-End licensing model this instance ACTIVE DATA is acutally 148TB. If you you want to know the overall ACTIVE DATA the SP instance is protecting then look at the Front-End numbers. When you do a <span style="box-sizing: border-box; font-weight: 700;">Q STATUS, </span>if it's not reporting in TB than it probably is expriencing the bug that needs correcting by IBM, but that value is probably correct but in TB not MB. Ops Center will also tell you how many nodes are not reporting and you can select that and view the list to see if any should be reporting.</div>
Chad Smallhttp://www.blogger.com/profile/02637281120881655693noreply@blogger.com0tag:blogger.com,1999:blog-13518440.post-21355221996983326132019-01-14T08:26:00.000-08:002019-01-14T08:26:42.382-08:00Q STATUS Question<div data-xf-p="1" style="background-color: #f7fbfe; box-sizing: border-box; color: #141414; font-family: "Segoe UI", "Helvetica Neue", Helvetica, Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", sans-serif; font-size: 15px;">
The company to which I am employed was recently acquired by another company that is a heavy Netbackup user. They bill not based on overall occupancy but on the "Front End Usage" of their servers. I don't know how that works for accurate billing but it's what they do and now we are being asked to provide "Front End Capacity" numbers so they can compare. The problem is ADSM/TSM/SP has always had issues with reporting "active only" data. Just recently I was working with an select IBM provided to pull the active for file systems but they also stated we had to go to the individual application servers to pull DB data. Not fun. So when I recently looked at all the detail of the Q STATUS I noticed the following near the bottom.</div>
<div data-xf-p="1" style="background-color: #f7fbfe; box-sizing: border-box; color: #141414; font-family: "Segoe UI", "Helvetica Neue", Helvetica, Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", sans-serif; font-size: 15px;">
<br style="box-sizing: border-box;" /></div>
<div data-xf-p="1" style="background-color: #f7fbfe; box-sizing: border-box; color: #141414; font-family: "Segoe UI", "Helvetica Neue", Helvetica, Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", sans-serif; font-size: 15px;">
<span style="box-sizing: border-box; font-family: "courier new";"> SUR Occupancy (TB): 703 </span></div>
<div data-xf-p="1" style="background-color: #f7fbfe; box-sizing: border-box; color: #141414; font-family: "Segoe UI", "Helvetica Neue", Helvetica, Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", sans-serif; font-size: 15px;">
<span style="box-sizing: border-box; font-family: "courier new";"> SUR Occupancy Date/Time: 2019-01-07, 10:23:18</span></div>
<div data-xf-p="1" style="background-color: #f7fbfe; box-sizing: border-box; color: #141414; font-family: "Segoe UI", "Helvetica Neue", Helvetica, Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", sans-serif; font-size: 15px;">
<span style="box-sizing: border-box; font-family: "courier new";"> <span style="box-sizing: border-box; color: #e25041;"><span style="box-sizing: border-box; font-weight: 700;">Front-End Capacity (MB): 148.21 </span></span></span></div>
<div data-xf-p="1" style="background-color: #f7fbfe; box-sizing: border-box; color: #141414; font-family: "Segoe UI", "Helvetica Neue", Helvetica, Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", sans-serif; font-size: 15px;">
<span style="box-sizing: border-box; font-weight: 700;"><span style="box-sizing: border-box; color: #e25041;"><span style="box-sizing: border-box; font-family: "courier new";"> Front-End Client Count: 408 </span></span></span></div>
<div data-xf-p="1" style="background-color: #f7fbfe; box-sizing: border-box; color: #141414; font-family: "Segoe UI", "Helvetica Neue", Helvetica, Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", sans-serif; font-size: 15px;">
<span style="box-sizing: border-box; color: #e25041; font-family: "courier new";"><span style="box-sizing: border-box; font-weight: 700;"> Front-End Capacity Date: 2019-01-07, 10:23:18</span></span></div>
<div data-xf-p="1" style="background-color: #f7fbfe; box-sizing: border-box; color: #141414; font-family: "Segoe UI", "Helvetica Neue", Helvetica, Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", sans-serif; font-size: 15px;">
<span style="box-sizing: border-box; font-family: "courier new";"> Product Offering: IBM Spectrum Protect</span></div>
<div data-xf-p="1" style="background-color: #f7fbfe; box-sizing: border-box; color: #141414; font-family: "Segoe UI", "Helvetica Neue", Helvetica, Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", sans-serif; font-size: 15px;">
<br style="box-sizing: border-box;" /></div>
<div data-xf-p="1" style="background-color: #f7fbfe; box-sizing: border-box; color: #141414; font-family: "Segoe UI", "Helvetica Neue", Helvetica, Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", sans-serif; font-size: 15px;">
According to IBM these last few statements are:</div>
<div data-xf-p="1" style="background-color: #f7fbfe; box-sizing: border-box; color: #141414; font-family: "Segoe UI", "Helvetica Neue", Helvetica, Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", sans-serif; font-size: 15px;">
<br style="box-sizing: border-box;" /></div>
<div data-xf-p="1" style="background-color: #f7fbfe; box-sizing: border-box; color: #141414; font-family: "Segoe UI", "Helvetica Neue", Helvetica, Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", sans-serif; font-size: 15px;">
<span style="box-sizing: border-box; font-weight: 700;">SUR Occupancy (TB)</span></div>
<div data-xf-p="1" style="background-color: #f7fbfe; box-sizing: border-box; color: #141414; font-family: "Segoe UI", "Helvetica Neue", Helvetica, Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", sans-serif; font-size: 15px;">
If you have an IBM Spectrum Protect Suite (SUR) license, this field specifies the SUR occupancy on the server. The SUR occupancy is the amount of space that is used to store data that is managed by the IBM Spectrum Protect products that are included in the SUR bundle.</div>
<div data-xf-p="1" style="background-color: #f7fbfe; box-sizing: border-box; color: #141414; font-family: "Segoe UI", "Helvetica Neue", Helvetica, Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", sans-serif; font-size: 15px;">
<span style="box-sizing: border-box; font-weight: 700;">SUR Occupancy Date/Time</span></div>
<div data-xf-p="1" style="background-color: #f7fbfe; box-sizing: border-box; color: #141414; font-family: "Segoe UI", "Helvetica Neue", Helvetica, Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", sans-serif; font-size: 15px;">
Specifies the date and time when SUR occupancy data was last collected.</div>
<div data-xf-p="1" style="background-color: #f7fbfe; box-sizing: border-box; color: #141414; font-family: "Segoe UI", "Helvetica Neue", Helvetica, Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", sans-serif; font-size: 15px;">
<span style="box-sizing: border-box; font-weight: 700;">Front-End Capacity (MB)</span></div>
<div data-xf-p="1" style="background-color: #f7fbfe; box-sizing: border-box; color: #141414; font-family: "Segoe UI", "Helvetica Neue", Helvetica, Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", sans-serif; font-size: 15px;">
Specifies the amount of primary data that is reported as being backed up by clients. <span style="box-sizing: border-box; color: #553982;"><em style="box-sizing: border-box;">Clients include applications, virtual machines, and systems</em></span>. This value is used for the front-end licensing model.</div>
<div data-xf-p="1" style="background-color: #f7fbfe; box-sizing: border-box; color: #141414; font-family: "Segoe UI", "Helvetica Neue", Helvetica, Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", sans-serif; font-size: 15px;">
<span style="box-sizing: border-box; font-weight: 700;">Front-End Client Count</span></div>
<div data-xf-p="1" style="background-color: #f7fbfe; box-sizing: border-box; color: #141414; font-family: "Segoe UI", "Helvetica Neue", Helvetica, Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", sans-serif; font-size: 15px;">
Specifies the number of clients that reported capacity usage based on the front-end licensing model.</div>
<div data-xf-p="1" style="background-color: #f7fbfe; box-sizing: border-box; color: #141414; font-family: "Segoe UI", "Helvetica Neue", Helvetica, Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", sans-serif; font-size: 15px;">
<span style="box-sizing: border-box; font-weight: 700;">Front-End Capacity Date</span></div>
<div data-xf-p="1" style="background-color: #f7fbfe; box-sizing: border-box; color: #141414; font-family: "Segoe UI", "Helvetica Neue", Helvetica, Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", sans-serif; font-size: 15px;">
Specifies the date and time when front-end capacity data was last collected.</div>
<div data-xf-p="1" style="background-color: #f7fbfe; box-sizing: border-box; color: #141414; font-family: "Segoe UI", "Helvetica Neue", Helvetica, Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", sans-serif; font-size: 15px;">
<span style="box-sizing: border-box; font-weight: 700;">Product Offering</span></div>
<div data-xf-p="1" style="background-color: #f7fbfe; box-sizing: border-box; color: #141414; font-family: "Segoe UI", "Helvetica Neue", Helvetica, Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", sans-serif; font-size: 15px;">
Specifies a product offering.</div>
<div data-xf-p="1" style="background-color: #f7fbfe; box-sizing: border-box; color: #141414; font-family: "Segoe UI", "Helvetica Neue", Helvetica, Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", sans-serif; font-size: 15px;">
<br style="box-sizing: border-box;" /></div>
<div data-xf-p="1" style="background-color: #f7fbfe; box-sizing: border-box; color: #141414; font-family: "Segoe UI", "Helvetica Neue", Helvetica, Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", sans-serif; font-size: 15px;">
So what exactly is the SUR license and does the EE license cover that? How is the data generated because my server reports front-end data at 148MB but if it is actually TB then that would fit more closely with overall capacity as front-end would be about 21% of overall occupancy. IBM obviously has some function to gather front-end numbers so why do they also have us going down the rabbit hold of gathering the data application data from the clients?</div>
Chad Smallhttp://www.blogger.com/profile/02637281120881655693noreply@blogger.com0tag:blogger.com,1999:blog-13518440.post-46651447230604113832018-12-13T06:22:00.003-08:002018-12-13T06:45:02.326-08:00Active Data Report<span style="background-color: #fefefe; color: #141414; font-family: "segoe ui" , "helvetica neue" , "helvetica" , "roboto" , "oxygen" , "ubuntu" , "cantarell" , "fira sans" , "droid sans" , sans-serif; font-size: 15px;">So me an a coworker have been hounding IBM for a way to generate an active data report for management. For various reasons they want to be able to see how much data a server would require for rebuild/restore and also to guage any growth. As many of you might be aware <a href="https://www.tsmadmin.com/2009/05/calculating-active-data.html" target="_blank">this has been something the TSM/Spectrum Protect community has been requesting for some time</a>. So IBM created a perl script that when analyzed issues the following SQL select:</span><br />
<br style="background-color: #fefefe; box-sizing: border-box; color: #141414; font-family: "Segoe UI", "Helvetica Neue", Helvetica, Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", sans-serif; font-size: 15px;" />
<span style="background-color: #fefefe; color: #141414; font-family: "segoe ui" , "helvetica neue" , "helvetica" , "roboto" , "oxygen" , "ubuntu" , "cantarell" , "fira sans" , "droid sans" , sans-serif; font-size: 15px;">(I've added continuation dashes to make the select more readable)</span><br />
<br />
<span style="color: #141414; font-family: "courier new";"><span style="font-size: 12px;">select -</span></span><br />
<span style="color: #141414; font-family: "courier new";"><span style="font-size: 12px;">(sum(bk.bfsize )/1048576) as front_end_size_mega_byte, -</span></span><br />
<span style="color: #141414; font-family: "courier new";"><span style="font-size: 12px;">count(bk.bfsize ) as number_of_objects -</span></span><br />
<span style="color: #141414; font-family: "courier new";"><span style="font-size: 12px;">from -</span></span><br />
<span style="color: #141414; font-family: "courier new";"><span style="font-size: 12px;"> backups b, backup_objects bk -</span></span><br />
<span style="color: #141414; font-family: "courier new";"><span style="font-size: 12px;">where -</span></span><br />
<span style="color: #141414; font-family: "courier new";"><span style="font-size: 12px;"> b.state='ACTIVE_VERSION' -</span></span><br />
<span style="color: #141414; font-family: "courier new";"><span style="font-size: 12px;"> and -</span></span><br />
<span style="color: #141414; font-family: "courier new";"><span style="font-size: 12px;"> b.object_id=bk.objid -</span></span><br />
<span style="color: #141414; font-family: "courier new";"><span style="font-size: 12px;"> and -</span></span><br />
<span style="color: #141414; font-family: "courier new";"><span style="font-size: 12px;"> b.filespace_id in -</span></span><br />
<span style="color: #141414; font-family: "courier new";"><span style="font-size: 12px;"> ( select f.filespace_id -</span></span><br />
<span style="color: #141414; font-family: "courier new";"><span style="font-size: 12px;"> from filespaces f -</span></span><br />
<span style="color: #141414; font-family: "courier new";"><span style="font-size: 12px;"> where -</span></span><br />
<span style="color: #141414; font-family: "courier new";"><span style="font-size: 12px;"> b.node_name=f.node_name -</span></span><br />
<span style="color: #141414; font-family: "courier new";"><span style="font-size: 12px;"> and -</span></span><br />
<span style="color: #141414; font-family: "courier new";"><span style="font-size: 12px;"> f.filespace_id=b.filespace_id -</span></span><br />
<span style="color: #141414; font-family: "courier new";"><span style="font-size: 12px;"> and -</span></span><br />
<span style="color: #141414; font-family: "courier new";"><span style="font-size: 12px;"> f.filespace_type not like 'API:%' -</span></span><br />
<span style="color: #141414; font-family: "courier new";"><span style="font-size: 12px;"> and -</span></span><br />
<span style="color: #141414; font-family: "courier new";"><span style="font-size: 12px;"> f.filespace_type not like 'TDP%' -</span></span><br />
<span style="color: #141414; font-family: "courier new";"><span style="font-size: 12px;"> ) -</span></span><br />
<span style="color: #141414; font-family: "courier new";"><span style="font-size: 12px;"> and -</span></span><br />
<span style="color: #141414; font-family: "courier new";"><span style="font-size: 12px;"> b.node_name in -</span></span><br />
<span style="color: #141414; font-family: "courier new";"><span style="font-size: 12px;"> ( select node_name -</span></span><br />
<span style="color: #141414; font-family: "courier new";"><span style="font-size: 12px;"> from nodes -</span></span><br />
<span style="color: #141414; font-family: "courier new";"><span style="font-size: 12px;"> where repl_mode not in('RECEIVE','SYNCRECEIVE') -</span></span><br />
<span style="color: #141414; font-family: "courier new";"><span style="font-size: 12px;"> )</span></span><br />
<div>
<br /></div>
<span style="background-color: #fefefe; color: #141414; font-family: "segoe ui" , "helvetica neue" , "helvetica" , "roboto" , "oxygen" , "ubuntu" , "cantarell" , "fira sans" , "droid sans" , sans-serif; font-size: 15px;">You will notice, however, that the select excludes node replicas and any API or TDP data. This is purely for file system backups. Supposedly they have something for TDP/API backups but I have not worked with it yet. I will post it as soon as I have a chance to review it and make it readable.</span><br />
<br style="background-color: #fefefe; box-sizing: border-box; color: #141414; font-family: "Segoe UI", "Helvetica Neue", Helvetica, Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", sans-serif; font-size: 15px;" />
<span style="background-color: #fefefe; box-sizing: border-box; color: #141414; font-family: "segoe ui" , "helvetica neue" , "helvetica" , "roboto" , "oxygen" , "ubuntu" , "cantarell" , "fira sans" , "droid sans" , sans-serif; font-size: 15px; font-weight: 700;">NOTE: This command can take a somewhat considerable amount of time to run. I have seen it take upwards of 10+ minutes to complete when run during our non-backup window times. Be patient!</span>Chad Smallhttp://www.blogger.com/profile/02637281120881655693noreply@blogger.com0tag:blogger.com,1999:blog-13518440.post-3266371608783767322018-08-29T12:26:00.000-07:002018-08-29T12:26:21.318-07:00Win2K & Win2003 - Data Currently Unavailable On Server<span style="font-family: Arial, Helvetica, sans-serif;">This past weekend we performed a DR test on quit a few servers and discovered a situation that was a wake up call for anyone still using Windows 2000 or Windows 2003. The issue is that when we ran a restore the IBM Spectrum Protect 8.1 server issued a warning on all the files for the particular node with the following message type…</span><br />
<br />
<span style="font-family: Courier New, Courier, monospace;">ANE4035W (Session: 79, Node: ODC-WINCS-1-DR) File '\\od-wincs-1\e$\834\c-oh\files-20170823-123000' currently unavailable on server.</span><br />
<br />
<span style="font-family: Arial, Helvetica, sans-serif;">The tape was in a readonly state and accessible by the library so it was not a tape unavailable problem. I then querried the file and ran some tests suggested by IBM in the following link</span><br />
<br />
<a href="http://www-01.ibm.com/support/docview.wss?uid=swg21249032">http://www-01.ibm.com/support/docview.wss?uid=swg21249032</a><br />
<br />
<span style="font-family: Arial, Helvetica, sans-serif;">The data is present and on tape but TSM will not restore it. (<i>See the queries below</i>) IBM would not help us because the OS is unsupported as is the TSM client. We could not restore the System State, System Services, or any of the Data to the DR replica. What we could do is access the data from a supported client level on a supported OS level (<i>i.e. TSM Client 6.4 from a Windows 2008 server</i>). We were unable to recover the Win2K/Win2003 servers during the DR test and unfortunately I know many companies out there still have some of these servers in their environment. <b>It's time to upgrade! Your data is at risk!</b></span><br />
<br />
<span style="font-family: Courier New, Courier, monospace;">tsm: OMATSM02>select * from backups where node_name='ODC-WINCS-1-DR' and FILESPACE_ID=1 and hl_name=upper('\834\c-oh\') and LL_NAME=upper('files-20170823-123000')</span><br />
<span style="font-family: Courier New, Courier, monospace;"><br /></span>
<span style="font-family: Courier New, Courier, monospace;"> NODE_NAME: ODC-WINCS-1-DR</span><br />
<span style="font-family: Courier New, Courier, monospace;">FILESPACE_NAME: \\od-wincs-1\e$</span><br />
<span style="font-family: Courier New, Courier, monospace;"> FILESPACE_ID: 1</span><br />
<span style="font-family: Courier New, Courier, monospace;"> STATE: ACTIVE_VERSION</span><br />
<span style="font-family: Courier New, Courier, monospace;"> TYPE: DIR</span><br />
<span style="font-family: Courier New, Courier, monospace;"> HL_NAME: \834\C-OH\</span><br />
<span style="font-family: Courier New, Courier, monospace;"> LL_NAME: FILES-20170823-123000</span><br />
<span style="font-family: Courier New, Courier, monospace;"> OBJECT_ID: 11926208445</span><br />
<span style="font-family: Courier New, Courier, monospace;"> BACKUP_DATE: 2018-08-10 03:04:37.000000</span><br />
<span style="font-family: Courier New, Courier, monospace;">DEACTIVATE_DATE:</span><br />
<span style="font-family: Courier New, Courier, monospace;"> OWNER:</span><br />
<span style="font-family: Courier New, Courier, monospace;"> CLASS_NAME: WIN-DR-MC</span><br />
<span style="font-family: Courier New, Courier, monospace;"> ACTUAL_SIZE:</span><br />
<span style="font-family: Courier New, Courier, monospace;"><br /></span>
<span style="font-family: Courier New, Courier, monospace;">tsm: OMATSM02>show bfo 11926208445</span><br />
<span style="font-family: Courier New, Courier, monospace;"><br /></span>
<span style="font-family: Courier New, Courier, monospace;">Bitfile Object: 11926208445</span><br />
<span style="font-family: Courier New, Courier, monospace;"> Active</span><br />
<span style="font-family: Courier New, Courier, monospace;">**Sub-bitfile 11926208445 is stored in the following aggregate(s)</span><br />
<span style="font-family: Courier New, Courier, monospace;">Super-bitfile: 11926199674, Offset: 26157087, Length 735, Deduped: F</span><br />
<span style="font-family: Courier New, Courier, monospace;"><br /></span>
<span style="font-family: Courier New, Courier, monospace;"><br /></span>
<span style="font-family: Courier New, Courier, monospace;">tsm: OMATSM02>show bfo 11926199674</span><br />
<span style="font-family: Courier New, Courier, monospace;"><br /></span>
<span style="font-family: Courier New, Courier, monospace;">Bitfile Object: 11926199674</span><br />
<span style="font-family: Courier New, Courier, monospace;">**Super-bitfile 11926199674 contains following aggregated bitfiles,</span><br />
<span style="font-family: Courier New, Courier, monospace;">Bitfile Id, offset, length, active state or owner, link bfid</span><br />
<span style="font-family: Courier New, Courier, monospace;">11926199674 0 8732 Active</span><br />
<span style="font-family: Courier New, Courier, monospace;">11926199676 8732 1527 Active</span><br />
<span style="font-family: Courier New, Courier, monospace;">.</span><br />
<span style="font-family: Courier New, Courier, monospace;">.</span><br />
<span style="font-family: Courier New, Courier, monospace;">.</span><br />
<span style="font-family: Courier New, Courier, monospace;">11926208946 26573407 5510 Active</span><br />
<span style="font-family: Courier New, Courier, monospace;">11926208947 26578917 49168 Active</span><br />
<span style="font-family: Courier New, Courier, monospace;"><br /></span>
<span style="font-family: Courier New, Courier, monospace;">**Sub-bitfile 11926199674 is stored in the following aggregate(s)</span><br />
<span style="font-family: Courier New, Courier, monospace;"> Super-bitfile: 11926199674, Offset: 0, Length 8732, Deduped: F</span><br />
<span style="font-family: Courier New, Courier, monospace;"><br /></span>
<span style="font-family: Courier New, Courier, monospace;">**Archival Bitfile Entry</span><br />
<span style="font-family: Courier New, Courier, monospace;"> Bitfile Type: PRIMARY Storage Format: 22</span><br />
<span style="font-family: Courier New, Courier, monospace;"> Bitfile Size: 26631381 Number of Segments: 1, flags: 0</span><br />
<span style="font-family: Courier New, Courier, monospace;"> Storage Pool ID: 33 Volume ID: 22903 Volume Name: L42803</span><br />
<span style="font-family: Courier New, Courier, monospace;"><br /></span>
<span style="font-family: Courier New, Courier, monospace;"><br /></span>
<span style="font-family: Courier New, Courier, monospace;">tsm: OMATSM02>q vol L42803 f=d</span><br />
<span style="font-family: Courier New, Courier, monospace;"><br /></span>
<span style="font-family: Courier New, Courier, monospace;"> Volume Name: L42803</span><br />
<span style="font-family: Courier New, Courier, monospace;"> Storage Pool Name: WIN-DR-TAPE</span><br />
<span style="font-family: Courier New, Courier, monospace;"> Device Class Name: IBM-LTO-4</span><br />
<span style="font-family: Courier New, Courier, monospace;"> Estimated Capacity: 4.2 T</span><br />
<span style="font-family: Courier New, Courier, monospace;"> Scaled Capacity Applied:</span><br />
<span style="font-family: Courier New, Courier, monospace;"> Pct Util: 100.0</span><br />
<span style="font-family: Courier New, Courier, monospace;"> Volume Status: Full</span><br />
<span style="font-family: Courier New, Courier, monospace;"> Access: Read-Only</span><br />
<span style="font-family: Courier New, Courier, monospace;"> Pct. Reclaimable Space: 0.0</span><br />
<span style="font-family: Courier New, Courier, monospace;"> Scratch Volume?: Yes</span><br />
<span style="font-family: Courier New, Courier, monospace;"> In Error State?: No</span><br />
<span style="font-family: Courier New, Courier, monospace;"> Number of Writable Sides: 1</span><br />
<span style="font-family: Courier New, Courier, monospace;"> Number of Times Mounted: 227</span><br />
<span style="font-family: Courier New, Courier, monospace;"> Write Pass Number: 1</span><br />
<span style="font-family: Courier New, Courier, monospace;"> Approx. Date Last Written: 08/12/18 16:44:25</span><br />
<span style="font-family: Courier New, Courier, monospace;"> Approx. Date Last Read: 08/25/18 22:06:34</span><br />
<span style="font-family: Courier New, Courier, monospace;"> Date Became Pending:</span><br />
<span style="font-family: Courier New, Courier, monospace;"> Number of Write Errors: 0</span><br />
<span style="font-family: Courier New, Courier, monospace;"> Number of Read Errors: 0</span><br />
<span style="font-family: Courier New, Courier, monospace;"> Volume Location:</span><br />
<span style="font-family: Courier New, Courier, monospace;">Volume is MVS Lanfree Capable : No</span><br />
<span style="font-family: Courier New, Courier, monospace;">Last Update by (administrator): CSMALL</span><br />
<span style="font-family: Courier New, Courier, monospace;"> Last Update Date/Time: 08/25/18 20:29:37</span><br />
<span style="font-family: Courier New, Courier, monospace;"> Begin Reclaim Period:</span><br />
<span style="font-family: Courier New, Courier, monospace;"> End Reclaim Period:</span><br />
<span style="font-family: Courier New, Courier, monospace;"> Drive Encryption Key Manager: IBM Spectrum Protect</span><br />
<span style="font-family: Courier New, Courier, monospace;"> Logical Block Protected: No</span><br />
<span style="font-family: Courier New, Courier, monospace;"><br /></span>
<span style="font-family: Courier New, Courier, monospace;"><br /></span>
<span style="font-family: Courier New, Courier, monospace;"><br /></span>
<span style="font-family: Courier New, Courier, monospace;">tsm: OMATSM02>q libvol dr-libr L42803</span><br />
<span style="font-family: Courier New, Courier, monospace;"><br /></span>
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">Library Name Volume Name Status Owner Last Use Home Device</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;"> Element Type</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">------------ ----------- ---------------- ---------- --------- ------- ------</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: x-small;">DR-LIBR L42803 Private Data 1,089</span><br />
<div>
<br /></div>
Chad Smallhttp://www.blogger.com/profile/02637281120881655693noreply@blogger.com4tag:blogger.com,1999:blog-13518440.post-2393031978562233932018-08-06T06:01:00.002-07:002018-08-06T06:01:42.948-07:00Spectrum Protect Server 8.1.x Paging Space Issue<span style="font-family: "arial" , "helvetica" , sans-serif;">I thought I would pass this along...I have two Spectrum Protect 8.1.4 instances on the same AIX 7 LPAR that since their upgrade to this version has had frequent exhausting of paging space crashes. We reviewed and checked processes and figured it was an AIX issue. Upon deeper investigation I noticed there were some previous APARs for DB2 exhausting paging space due to a 64k block size. Investigating that further led me to the following APAR for Spectrum Protect </span><br />
<br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><a href="https://www-01.ibm.com/support/docview.wss?uid=swg1IT23731" target="_blank">IT23731: SPECTRUM PROTECT SERVER ON AIX MAY RUN INTO PAGING AND OUT OF MEMORY CONDITION</a></span><br />
<div>
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span></div>
<div>
<span style="font-family: "arial" , "helvetica" , sans-serif;">So to check I ran the following shell command to list the top 10 processes using memory/paging</span></div>
<div>
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span></div>
<div>
<div>
<span style="font-family: "courier new" , "courier" , monospace;"><b># svmon -Pt 10 -O summary=basic,unit=MB</b></span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><br /></span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">Unit: MB</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><br /></span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">----------------------------------------------------------------</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> Pid Command Inuse Pin Pgsp Virtual</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> 4391072 db2sysc 74805.10 51.4 15266.27 72775.38</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> 7274744 db2sysc 71323.35 50.2 15579.61 71796.98</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">10486106 db2vend 71164.58 47.6 15084.41 71589.28</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> 4915692 dsmserv 15230.22 49.5 6629.03 20345.98</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> 2490670 dsmserv 1931.09 49.6 299.12 2197.74</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> 5701694 db2sysc 632.43 47.6 42.1 732.73</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> 8126714 db2sysc 569.93 47.6 29.1 665.60</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> 6553630 db2vend 561.76 47.6 37.0 660.47</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> 6422602 db2sysc 559.20 47.6 37.2 657.31</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> 4849682 db2sysc 559.20 47.6 37.2 657.31</span></div>
</div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><br /></span></div>
<div>
<span style="font-family: "arial" , "helvetica" , sans-serif;">So the db2sysc and dsm2vend along with the dsmserv are using up large amounts of paging.</span></div>
<div>
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span></div>
<div>
<span style="font-family: "arial" , "helvetica" , sans-serif;">Here is my using in <b>topas</b></span></div>
<div>
<span style="font-family: "arial" , "helvetica" , sans-serif;"><b><br /></b></span></div>
<div>
<blockquote class="tr_bq" style="font-family: "Courier New", Courier, monospace; font-size: small; font-weight: bold;">
PAGING SPACE<br />
Size,MB 64512<br />
% Used 60<br />
% Free 40</blockquote>
<span style="font-family: "arial" , "helvetica" , sans-serif;">So what's the solution? Restart the TSM instance(s) until you can upgrade to 8.1.5</span><span style="font-family: "courier new" , "courier" , monospace; font-size: x-small; font-weight: bold;"> </span></div>
Chad Smallhttp://www.blogger.com/profile/02637281120881655693noreply@blogger.com1tag:blogger.com,1999:blog-13518440.post-76034252175033845162018-07-27T14:23:00.000-07:002018-07-27T14:26:59.400-07:00DB2 Select Example In TSM/SP<span style="font-family: Arial, Helvetica, sans-serif;">While trying to create a specific report that a manager requested I realized I needed something more powerful. Well now that TSM/Spectrum Protect runs on DB2 we have all the power we need. Here is an example of generating a report with an Inner and Outer Join.</span><br />
<span style="font-family: "courier new", courier, monospace; font-size: x-small;"><br /></span>
<span style="font-family: "courier new", courier, monospace; font-size: x-small;">====================================</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">Inner and Outer Join Example</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">====================================</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><b>Part 1 </b>- <i><span style="color: red;">Will return the columns from two tables into a third temporary table</span></i></span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">Select -</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> varchar(o.node_name,45) ENTITY, -</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> cast(s.SUM_AFFECTED as dec(12,0)) AFFECTED,</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> cast(s.SUM_BYTES/1073741824 as decimal(12,2)) GB_BACKED_UP, -</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> cast(o.SUM_NUM_FILES as dec(15,0)) TOTAL_FILES_STORED, -</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> cast(o.SUM_LOGICAL_MB/1024 as dec(12,2)) GB_TSM_OCCUPANCY -</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> from -</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><b>Part 2</b> - <i><span style="color: red;">Gather two columns from occupancy</span></i></span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">select node_name, -</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> sum(NUM_FILES) SUM_NUM_FILES, -</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> sum(LOGICAL_MB) SUM_LOGICAL_MB -</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> from occupancy -</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> group by node_name</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><b>Part 3</b> - <i><span style="color: red;">Gather three columns from summary for BACKUP and ARCHIVES for last 30 days</span></i></span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">select varchar(entity,45) ENTITY, -</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> sum(bytes/1073741824) SUM_BYTES, -</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> sum(affected) SUM_AFFECTED -</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> from summary -</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> where -</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> end_time>=(current_timestamp - 30 days) -</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> and activity in ('BACKUP','ARCHIVE') -</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> group by entity</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">select -</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> varchar(o.node_name,45) ENTITY, -</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> cast(s.SUM_AFFECTED as dec(12,0)) AFFECTED, -</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> cast(s.SUM_BYTES as decimal(12,2)) GB_BACKED_UP, -</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> cast(o.SUM_NUM_FILES as dec(15,0)) TOTAL_FILES_STORED, -</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> cast(o.SUM_LOGICAL_MB/1024 as dec(12,2)) GB_TSM_OCCUPANCY -</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> from -</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> (select node_name, -</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> sum(NUM_FILES) SUM_NUM_FILES, -</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> sum(LOGICAL_MB) SUM_LOGICAL_MB -</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> from occupancy -</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> group by node_name) o, -</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> (select entity, -</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> sum(bytes/1073741824) SUM_BYTES, -</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> sum(affected) SUM_AFFECTED -</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> from summary -</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> where -</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> end_time>=(current_timestamp - 30 days) -</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> and activity in ('BACKUP','ARCHIVE') -</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> group by entity) s -</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> where ENTITY in (select node_name from nodes where domain_name<>'MN-STD-POL-DOM') -</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> and o.node_name=s.entity -</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"> order by ENTITY</span><br />
<div>
<br />
<span style="font-family: "arial" , "helvetica" , sans-serif;">The generated report shows the total amount of files backed up, GB backed up for the last 30 days while also showing the total files stored in TSM and the nodes current total occupancy in GB.</span><br />
<br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">ENTITY AFFECTED GB_BACKED_UP TOTAL_FILES_STORED GB_TSM_OCCUPANCY</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">---------- --------------- --------------- ------------------- -----------------</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">DORPORA05 920 47513.00 8354 73263.60</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">IXPFLDNAS 60792 27.00 15443947 9434.27</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">ILDNASJ 12680 5.00 1972680 715.60</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">ILDNASK 8 0.00 83004 197.48</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">ILDNASL 10739 4.00 1649434 574.51</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">ILDNASM 45448 25.00 1221367 1722.03</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">ILDNASM 4386 7.00 1122826 557.64</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">ILDNASN 5 0.00 99769 46.52</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">ILDNASO 1688 0.00 459683 138.16</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">ILDNASP 9369 11.00 1402332 1623.92</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">ILDNASR 28787 29.00 462479 457.15</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">ILDNASS 5 0.00 36771 17.51</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">ILDNAST 6329 21.00 982728 1038.08</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">ILDNASU 6848 19.00 1548369 671.68</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">ILDNASV 18197 48.00 999905 1333.92</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">ILDNASW 5 0.00 245366 116.89</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">RSD1W030S 59979 7.00 5207060 547.23</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">RSD1W031S 3444 2.00 5070450 473.15</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">RSD1W241S 6879 47.00 517358 1782.92</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">RSD1W242S 6478 51.00 995006 2109.45</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">RSD1W266S 4377 7.00 492810 184.69</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">RSD1W267S 5700 3.00 328391 100.95</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">RSD1W320C 40881 12.00 2692541 576.50</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">RSD1W341C 8194 55.00 456567 1120.11</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">RSD1W342C 17003 7.00 625487 281.84</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">RSD1W343C 4628 2.00 298699 79.63</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">RSD1W504SV 1941 12.00 42444 551.35</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">RSD1W505SV 1079 105.00 38524 4033.06</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">RSD1W5067S 683 64.00 22389 1343.82</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">RSD1W506SV 489 0.00 14349 4.53</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">RSD1W508SV 2662 31.00 79340 699.12</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">RSD1W509SV 4017 74.00 139073 1617.35</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">RSD1W510SV 698 544.00 18086 9161.23</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">RSD1W511SV 1365 295.00 65303 6588.06</span></div>
Chad Smallhttp://www.blogger.com/profile/02637281120881655693noreply@blogger.com0tag:blogger.com,1999:blog-13518440.post-80601195877197872302018-07-19T11:28:00.001-07:002018-07-19T11:28:51.747-07:00Personal Back Ups!<span style="font-family: Arial, Helvetica, sans-serif;">I have been doing this backup/archive work for almost 20 years and I can't go a week without some acquaintance asking me about backing up their personal data. It used to be large portable USB drives were the best option but as home internet connections have increased there throughput to the point of some offering giga-bit speeds, it makes more sense to use a cloud based backup provider. This article is based off of my experience and I only offer my opinion here so take it for what it is, but I recommend everyone look into a good backup solution or else you could loose all the important memories you have accumulated as life has become more digital. </span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">So what do I use to protect my memories? I used to use Dropbox, then when Google Drive became available I used it, and then I started using Microsoft SkyDrive now known as OneDrive. I began to exclusively use OneDrive several years ago when I was able to get more than the paltry 5 - 10GB that the others allowed. At one point I freely acquired 100GB by using Bing and gathering Bing points. I am cheap and didn't want to pay for my cloud space. I had portable hard drives with my data but knew it wasn't the solution. So when my free OneDrive space was due to expire I was offered an Office365 family plan with 1TB of space for up to 5 people in the family. With my wife and I each having 128GB iphone that my wife has actually filled with video and pictures during trips, I knew it was the best solution for us. Not only did I get 1TB for each of us, it could cover our personal home computer and our daughter phone also. Oh, and did I mention it comes with access to download Office to our home and daughters laptop? All this is good but it would be useless if the OneDrive app was terrible. Truthfully, I find it quite easy to use. Microsoft has continued to fix bugs and add features it has become a great tool I use almost daily. </span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">I write this article because it's important you think about how you will protect memories. Sure you can upload to Google Photo's or put all your items on Facebook, but each has it's own drawbacks. Google Photo's does not keep the photo at its original resolution, and Facebook is not designed to be a backup solution. I have lost personal photos and documents from when I was younger due to losing them during moves or becoming damaged by mishandling. I will never get them back, had I scanned/digitzed them I would have been able to keep them safe. I also understand that nothing is 100% protected or safe, but by putting my files in the cloud they are more safe than on a portable drive or sitting in a drawer. </span>Chad Smallhttp://www.blogger.com/profile/02637281120881655693noreply@blogger.com0tag:blogger.com,1999:blog-13518440.post-83984585294468258592018-07-17T13:14:00.000-07:002018-07-17T13:14:45.409-07:00Spectrum Protect Server 8.1.4 DB IssueRecently we ran into a situation where our Spectrum Protect 8.1.4 server started to crash. We reviewed the db2diag.log file and identified the error as <b>ANR0131E Server DB space exhausted</b>. Upon review of our DB file systems the OS showed 7GB available in the 5 file systems assigned for DB space.<br />
<br />
<div class="MsoNormal">
<span style="color: #1f497d; font-family: Consolas; font-size: 10.0pt;">/dev/tsm20log 111616.00 9784.93
92% 205 1%
/tsmserver/tsm20log<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="color: #1f497d; font-family: Consolas; font-size: 10.0pt;">/dev/tsm20arch 102400.00 66821.52
35% 100 1%
/tsmserver/tsm20arch<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="color: #1f497d; font-family: Consolas; font-size: 10.0pt;">/dev/tsm20fail 101376.00 100964.16
1% 21 1%
/tsmserver/tsm20fail<o:p></o:p></span></div>
<div class="MsoNormal">
<span style="font-family: Consolas; font-size: 10pt;"><span style="color: red;">/dev/tsm20dblv01 101376.00 7622.45
93% 104 1%
/tsmserver/tsm20dblv01<o:p></o:p></span></span></div>
<div class="MsoNormal">
<span style="font-family: Consolas; font-size: 10pt;"><span style="color: red;">/dev/tsm20dblv02 101376.00 7622.48
93% 104 1%
/tsmserver/tsm20dblv02<o:p></o:p></span></span></div>
<div class="MsoNormal">
<span style="font-family: Consolas; font-size: 10pt;"><span style="color: red;">/dev/tsm20dblv03 101376.00 7622.45
93% 104 1%
/tsmserver/tsm20dblv03<o:p></o:p></span></span></div>
<div class="MsoNormal">
<span style="font-family: Consolas; font-size: 10pt;"><span style="color: red;">/dev/tsm20dblv04 101376.00 7622.46
93% 105 1%
/tsmserver/tsm20dblv04<o:p></o:p></span></span></div>
<div class="MsoNormal">
<span style="font-family: Consolas; font-size: 10pt;"><span style="color: red;">/dev/tsm20dblv05 101376.00 7622.45
93% 105 1%
/tsmserver/tsm20dblv05</span><span style="color: #1f497d;"><o:p></o:p></span></span></div>
<br />
<div class="MsoNormal">
<br /></div>
The server had been crashing from the previous night and we had at first thought it was due to the active log filling and not writing out to the archive log fast enough. What was weird is we could bring TSM up and it would run for an hour or two then crash again. When we identified it was not the active log but the DB space (earlier the next morning) we were confused. Why would we get a space notification when the DB has 35GB of space still available. My co-worker created an additional file system of the same size as the other DB file systems and ran the <b><span style="font-family: Courier New, Courier, monospace; font-size: x-small;">dsmserv extend dbspace</span></b> command and the file systems almost immediately jumped to 99% utilized. So it appears Spectrum Protect needed to write 35+GB of DB data and could not due to space available? We also noticed that our offshore people had added tsm20dblv05 a few months back but had used a different disk array (slow SATA) and had not informed us, which we think might have contributed to the performance issues we had been seeing on this server recently and maybe was related to the DB space issue??? Not sure, but be aware that this can occur. I will need to research how DB2 allocates space and in what chunk size it does so.Chad Smallhttp://www.blogger.com/profile/02637281120881655693noreply@blogger.com0tag:blogger.com,1999:blog-13518440.post-30594990334488039312017-12-04T14:48:00.008-08:002020-07-10T07:49:19.499-07:00SystemState Restore Issue with Windows 8.x Client <span style="font-size: small;"><span style="font-family: "helvetica neue", "arial", "helvetica", sans-serif;"><i><u><b>3/7/2017</b></u></i><span style="color: red;"><b> Update</b></span><span style="font-family: "arial", "helvetica", sans-serif;"><i><u><b> </b></u></i></span></span></span><br />
<font size="3"><span style="font-family: "arial", "helvetica", sans-serif;">I have had a number of people request the test flag and one response said it was kicking up errors when used with the CAD service/process. Please note this flag is only needed in the event of a system state restore and you would not (I hope) be using the CAD/Scheduler to restore your system state. So the testflag should only be activated in the dsm.opt in the event you are doing a manual restore of the system state and DO NOT leave it in the dsm.opt as it will affect daily use.</span></font><br />
<br />
<br />
<span style="font-size: small;"><span style="font-family: "helvetica neue", "arial", "helvetica", sans-serif;"><i><u><b>1/24/2018</b></u></i> <span style="color: red;"><b>Update</b></span></span></span><br />
<font size="3"><span><span style="font-family: "helvetica neue", "arial", "helvetica", sans-serif;">After waiting for IBM to post an update to this issue I decided I would let you know that IBM has an undocumented flag for this issue that allows the client to restore the System State online rather than work with the PE. Our Windows admins spoke with Microsoft and they state emphatically that they support online system state restores, so is appears IBM does not starting with the 8.1.x client. Here is the flag to allow the SP client to perform online system state restores.</span></span></font><br />
<br />
<blockquote class="tr_bq">
<span style="font-size: small;"><span style="font-family: "helvetica neue", "arial", "helvetica", sans-serif;"><span style="font-family: "courier new", "courier", monospace;"><b>ONLINE_SYSTEMSTATE_RESTORE_ALLOWED</b></span> </span></span></blockquote>
<br />
<i><u><b><span style="font-size: small;"><span style="font-family: "helvetica neue", "arial", "helvetica", sans-serif;">12/4/2018</span></span></b></u></i><br />
<font size="3"><span><span style="font-family: "helvetica neue", "arial", "helvetica", sans-serif;">I wanted to make everyone aware that starting with the 8.1 Windows Client, IBM has deprecated the System State restore process so that any restore attempt will require the use of a WinPE environment. With the 8.1.x client you can no longer do a
complete restore of a server within the normal windows environment and
will have to make sure you have a compatible WinPE for every Windows
Hardware type or environment. This, in my opinion, is a huge break of
the software. Although IBM stated that Microsoft does not
support online system state restores, Microsoft disagrees. I
say this knowing that if you are on a 7.x or earlier version of the
client IBM will support you with the system state restore, but as of 8.1 you will be directed to build a Windows PE environment and follow a series of stepto create the necessary disc. The support person I spoke with treated this process as if it should be second nature to any Windows Admin.</span></span><br />
<span><br /></span></font><div><font size="3">
<span style="font-family: "calibri", sans-serif;"><span style="font-family: "helvetica neue", "arial", "helvetica", sans-serif;">We recently were migrating a clients server and in the process the disks were corrupted. The client installed on the new machine was 8.1.2 and when the Windows Admins tried to restore the system state they experienced the following error.</span></span></font></div><div><font size="3"><span style="font-family: "calibri", sans-serif;"><span style="font-family: "helvetica neue", "arial", "helvetica", sans-serif;"><br /></span></span></font></div>
<span style="font-family: "calibri", sans-serif; font-size: 11pt;"><span style="font-family: "helvetica neue", "arial", "helvetica", sans-serif; font-size: small;"> </span><img alt="" src="data:image/png;base64,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" /></span><br />
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
<br />
<font size="3"><span><span style="font-family: "helvetica neue", "arial", "helvetica", sans-serif;">After speaking with support we were directed to the following <a href="https://www.ibm.com/developerworks/community/wikis/home?lang=en#/wiki/Tivoli%20Storage%20Manager/page/Best%20Practices%20for%20Recovering%20Windows%20Server%202012%20and%20Windows%208" target="_blank">document by Andrew Raibeck</a> that discussed creating the WinPE disk image with the TSM client code that would allow the offline restore of the System State. We attempted to build the ISO but when the Windows Admin tried to run the dsmc client we experienced the following error:</span></span></font><br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLn85jJqExywtJN4VIvpGtlD_HQO8WdCETQDQNfpC-gw2GGv6HkJ36sSLJE4JxUbC7eK1bDv1HdcmMO2A3J_xMBM3mPDu33r3KawKMbAF8SLKiJByoCY4_iXcGx0p75jwSEY6AoQ/s1600/WinPE+Error.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="307" data-original-width="759" height="257" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiLn85jJqExywtJN4VIvpGtlD_HQO8WdCETQDQNfpC-gw2GGv6HkJ36sSLJE4JxUbC7eK1bDv1HdcmMO2A3J_xMBM3mPDu33r3KawKMbAF8SLKiJByoCY4_iXcGx0p75jwSEY6AoQ/s640/WinPE+Error.jpg" width="640" /></a></div>
<br />
<font size="3"><br />
<span style="font-family: "calibri", sans-serif;"><span><span style="font-family: "helvetica neue", "arial", "helvetica", sans-serif;">Who do we call when we experience an error like this in a WinPE environment? IBM or Microsoft? So you have two choices, have a Windows PE available for each hardware type or try using the testflag but understand IBM may support its use.</span><span style="font-family: "helvetica neue", "arial", "helvetica", sans-serif;"> If you were fully aware of this and took precautions what were they? My thinking is that many admins have no idea this is going to bite them and its better you know now than find out the hard way.</span></span></span></font><br />
<span style="font-family: "calibri", sans-serif; font-size: 11pt;"><span style="font-size: small;"><span style="font-family: "helvetica neue", "arial", "helvetica", sans-serif;"> </span></span></span>Chad Smallhttp://www.blogger.com/profile/02637281120881655693noreply@blogger.com3tag:blogger.com,1999:blog-13518440.post-15985589036535242232017-11-22T09:00:00.000-08:002017-11-22T08:11:06.456-08:00Spectrum Protect 8.1 New DB Functions Supported - UPDATE to the UPDATE!<span style="font-family: "arial" , "helvetica" , sans-serif;"><b>UPDATE </b>(11/22/2017)<b>: </b></span><br />
<br />
<span style="font-family: "arial" , "helvetica" , sans-serif;">I have found another interesting select option I was previously unaware of that coincides with the previous <b>LOCATE </b>option. We have an interesting host naming convention where I work and we use the hostname for the NODE NAME when defining the servers to TSM/SP. It is as follows:</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><b></b></span>
<br />
<blockquote class="tr_bq">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><<i>servername</i>>.<<i>datacenterID</i>>.<<i>OS_type</i>>.<<i>customer</i>>.<<i>domain.net</i>></span></blockquote>
<blockquote class="tr_bq">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><b>Example:</b> CQSDBS01.US01.ULX.BS.US32118.NET </span></blockquote>
<span style="font-family: "arial" , "helvetica" , sans-serif;">The issue I have is with trying to seperate out the data is a report by customer. Of course each customer has their own domains but I wanted a report that broke out the report by the customer ID. I wanted something like this:</span><br />
<blockquote class="tr_bq">
<span style="font-size: x-small;"><span style="font-family: "courier new" , "courier" , monospace;">Customer Occupancy GB<br />---------- ------------<br />UDC2 38144<br />903 33358<br />CFG 30321<br />ULT01 1942<br />MAQ 639<br />MSM 1557<br />MX 9<br />MX3 0<br />ELO 6741<br />GUS 4<br />BFG 11234<br />VS 166<br />PMTX 80<br />POS 14148<br />SAM 8031<br />SUX 18562</span></span></blockquote>
<span style="font-family: "arial" , "helvetica" , sans-serif;">The problem was not with breaking out the customer ID because the <b>LOCATE </b>select worked perfectly for extracting the Customer IDs with their various lengths. The issue was how to sum each customers data without experiencing an error requiring I use <b>GROUP BY</b> which caused more headaches because I could not figure out how to group by the NODE NAME from which I was getting the customer ID. So I googled <b>GROUP BY</b> in <span style="color: blue;"><b>DB2</b></span> with <b>SUBSTR </b>since I was using a <b>SUBSTR </b>to extract the customer IDs. As turns out the <b>GROUP BY</b> is more flexible than I originally thought. Check this out:</span><br />
<br />
<blockquote class="tr_bq">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><span style="font-family: "courier new" , "courier" , monospace;"><span style="font-size: x-small;">Select - <br /> VARCHAR(SUBSTR(NODE_NAME, - <br /> LOCATE('.',NODE_NAME, - <br /> LOCATE('.', NODE_NAME, - <br /> LOCATE('.', NODE_NAME)+1)+1)+1, - <br /> LOCATE('.',NODE_NAME, - <br /> LOCATE('.',NODE_NAME, - <br /> LOCATE('.', NODE_NAME, - <br /> LOCATE('.', NODE_NAME)+1)+1)+1)- - <br /> LOCATE('.',NODE_NAME, - <br /> LOCATE('.', NODE_NAME, - <br /> LOCATE('.', NODE_NAME)+1)+1)-1),8) -<br /> as CUSTOMER, - <br /> sum(TOTAL_MB)/1024 AS TOTAL_GB - <br />from auditocc - <br /> where node_name like '%.%.%.%.%' - <br /><span style="color: red;"><b>group by</b></span> VARCHAR(SUBSTR(NODE_NAME, - <br /> LOCATE('.',NODE_NAME, - <br /> LOCATE('.', NODE_NAME, - <br /> LOCATE('.', NODE_NAME)+1)+1)+1, - <br /> LOCATE('.',NODE_NAME, - <br /> LOCATE('.',NODE_NAME, - <br /> LOCATE('.', NODE_NAME, - <br /> LOCATE('.', NODE_NAME)+1)+1)+1)- - <br /> LOCATE('.',NODE_NAME, - <br /> LOCATE('.', NODE_NAME, - <br /> LOCATE('.', NODE_NAME)+1)+1)-1),8) </span></span></span></blockquote>
<br />
<span style="font-family: "arial" , "helvetica" , sans-serif;">In DB2 I could actually group by the <b>SUBSTR </b>of the value I was extracting, even with it being complex with the <b>LOCATE </b>options in use. <b><span style="color: blue;">MIND BLOWN!</span></b></span><span style="font-family: "arial" , "helvetica" , sans-serif;"><b> </b></span><br />
<br />
<div style="text-align: center;">
<span style="font-family: "arial" , "helvetica" , sans-serif;"><b><img alt="mind blown wat animated GIF" class="tiles__media js-image" src="https://m.popkey.co/ea7a98/k8DQE_f-maxage-0_s-200x150.gif" /> </b></span></div>
<br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><b>UPDATE</b> (5/9/2017)<b>:</b></span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><b><br /></b></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">I posted on StackOverflow (a great developer/scripting/DB) listserv asking how I could get similar output with the functions available in versions prior to DB2 11 and a user was able to help me out with a script that could return the same data as the one below although it's a little more complicated. So as you know the SUBSTR function works like this:</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<br />
<div style="direction: ltr; margin-bottom: 0pt; margin-left: 0in; margin-top: 0pt; unicode-bidi: embed; word-break: normal;">
<span style="font-family: "calibri"; font-size: 12pt;">Select SUBSTR(FILESPACE_NAME, </span><span style="color: #00b050; font-family: "calibri"; font-size: 12.0pt;"><START
POSITION></span><span style="font-family: "calibri"; font-size: 12pt;">,</span><span style="color: red; font-family: "calibri"; font-size: 12.0pt;"><LENGTH></span><span style="font-family: "calibri"; font-size: 12pt;">)</span></div>
<div style="direction: ltr; margin-bottom: 0pt; margin-left: 0in; margin-top: 0pt; unicode-bidi: embed; word-break: normal;">
<span style="font-family: "calibri"; font-size: 12pt;"><br /></span></div>
<div style="direction: ltr; margin-bottom: 0pt; margin-left: 0in; margin-top: 0pt; unicode-bidi: embed; word-break: normal;">
<span style="font-family: "calibri"; font-size: 12pt;">T</span><span style="font-family: "arial" , "helvetica" , sans-serif;">he issue with the earlier DB2 versions is I could only get the LOCATION function to play nice with my script. I was previously only able to figure out a select that got close:</span></div>
<pre class="lang-sql prettyprint prettyprinted" style="background-color: #eff0f1; border: 0px; color: #393318; font-family: Consolas, Menlo, Monaco, "Lucida Console", "Liberation Mono", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Courier New", monospace, sans-serif; font-size: 13px; margin-bottom: 1em; max-height: 600px; overflow: auto; padding: 5px; width: auto; word-wrap: normal;"><code style="border: 0px; font-family: Consolas, Menlo, Monaco, "Lucida Console", "Liberation Mono", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Courier New", monospace, sans-serif; margin: 0px; padding: 0px; white-space: inherit;"><span class="kwd" style="border: 0px; color: #101094; margin: 0px; padding: 0px;">Select</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">-</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">
SUBSTR</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">(</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">FILESPACE_NAME</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">,</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> LOCATE</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">(</span><span class="str" style="border: 0px; color: #7d2727; margin: 0px; padding: 0px;">'\',FILESPACE_NAME, LOCATE('</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">\</span><span class="str" style="border: 0px; color: #7d2727; margin: 0px; padding: 0px;">',FILESPACE_NAME, -
LOCATE('</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">\</span><span class="str" style="border: 0px; color: #7d2727; margin: 0px; padding: 0px;">', FILESPACE_NAME, -
LOCATE('</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">\</span><span class="str" style="border: 0px; color: #7d2727; margin: 0px; padding: 0px;">', FILESPACE_NAME)+1)+1)-1)+1) -
as FSNAME -
from filespaces -
where node_name='</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">TEST-AP-DAG</span><span class="str" style="border: 0px; color: #7d2727; margin: 0px; padding: 0px;">'</span></code></pre>
<span style="font-family: "arial" , "helvetica" , sans-serif;">Which output this:</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">FSNAME </span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">-----------------------------------------------------------------</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">TEST-MB-08\6bc391ef-a370-49a1-8f05-b1bed9e5ad55 </span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">Mailbox Database 1143943276\55ac1670-efc9-4301-ac5c-beb5cd2d77cb </span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">TEST-MB-05\11dedbd4-1757-45c8-8991-f0f7134ef210 </span><span style="font-family: "arial" , "helvetica" , sans-serif;"> </span><span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;"></span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">I could not figure out a way to get the length. So <a href="http://stackoverflow.com/questions/43855833/db2-query-to-extract-data-between-two-delimiters?noredirect=1#comment74747356_43855833" target="_blank">a kind reader at StackOverflow helped me</a> understand how to get the length by subtracting the 4th '\' location from the 3rd '\' -1. This gives the correct length and allows for the length size to vary rather than be fixed.</span><br />
<pre class="lang-sql prettyprint prettyprinted" style="background-color: #eff0f1; border: 0px; color: #393318; font-family: Consolas, Menlo, Monaco, "Lucida Console", "Liberation Mono", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Courier New", monospace, sans-serif; font-size: 13px; margin-bottom: 1em; max-height: 600px; overflow: auto; padding: 5px; width: auto; word-wrap: normal;"><code style="border: 0px; font-family: Consolas, Menlo, Monaco, "Lucida Console", "Liberation Mono", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Courier New", monospace, sans-serif; margin: 0px; padding: 0px; white-space: inherit;"><span class="kwd" style="border: 0px; color: #101094; margin: 0px; padding: 0px;">Select</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">-</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">
SUBSTR</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">(</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">FILESPACE_NAME</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">,</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;"> </span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">-</span><span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">
LOCATE</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">(</span><span class="str" style="border: 0px; color: #7d2727; margin: 0px; padding: 0px;">'\',FILESPACE_NAME, -
LOCATE('</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">\</span><span class="str" style="border: 0px; color: #7d2727; margin: 0px; padding: 0px;">', FILESPACE_NAME, -
LOCATE('</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">\</span><span class="str" style="border: 0px; color: #7d2727; margin: 0px; padding: 0px;">', FILESPACE_NAME)+1)+1)+1, -
LOCATE('</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">\</span><span class="str" style="border: 0px; color: #7d2727; margin: 0px; padding: 0px;">',FILESPACE_NAME, -
LOCATE('</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">\</span><span class="str" style="border: 0px; color: #7d2727; margin: 0px; padding: 0px;">',FILESPACE_NAME, -
LOCATE('</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">\</span><span class="str" style="border: 0px; color: #7d2727; margin: 0px; padding: 0px;">', FILESPACE_NAME, -
LOCATE('</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">\</span><span class="str" style="border: 0px; color: #7d2727; margin: 0px; padding: 0px;">', FILESPACE_NAME)+1)+1)+1)- -
LOCATE('</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">\</span><span class="str" style="border: 0px; color: #7d2727; margin: 0px; padding: 0px;">',FILESPACE_NAME, -
LOCATE('</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">\</span><span class="str" style="border: 0px; color: #7d2727; margin: 0px; padding: 0px;">', FILESPACE_NAME, -
LOCATE('</span><span class="pun" style="border: 0px; color: #303336; margin: 0px; padding: 0px;">\</span><span class="str" style="border: 0px; color: #7d2727; margin: 0px; padding: 0px;">', FILESPACE_NAME)+1)+1)-1) -
as FSNAME -
from filespaces -
</span></code>where node_name='<span class="pln" style="border: 0px; color: #303336; margin: 0px; padding: 0px; white-space: inherit;">TEST-AP-DAG</span><span class="str" style="border: 0px; color: #7d2727; margin: 0px; padding: 0px; white-space: inherit;">'</span></pre>
<span style="font-family: "arial" , "helvetica" , sans-serif;">Here it is color coded:</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;">(</span><span style="font-family: "calibri"; font-size: 12pt;">Select SUBSTR(FILESPACE_NAME, </span><span style="color: #00b050; font-family: "calibri"; font-size: 12pt;"><START POSITION></span><span style="font-family: "calibri"; font-size: 12pt;">,</span><span style="color: red; font-family: "calibri"; font-size: 12pt;"><LENGTH></span><span style="font-family: "calibri"; font-size: 12pt;">)</span><br />
<pre style="background-color: #eff0f1; border: 0px; font-family: Consolas, Menlo, Monaco, "Lucida Console", "Liberation Mono", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Courier New", monospace, sans-serif; font-size: 13px; margin-bottom: 1em; max-height: 600px; overflow: auto; padding: 5px; width: auto; word-wrap: normal;"><code style="border: 0px; font-family: Consolas, Menlo, Monaco, "Lucida Console", "Liberation Mono", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Courier New", monospace, sans-serif; margin: 0px; padding: 0px; white-space: inherit;"><span style="color: #242729;">Select -
SUBSTR(FILESPACE_NAME, </span><span style="color: #00b050;">LOCATE('\',FILESPACE_NAME, LOCATE('\',
FILESPACE_NAME, LOCATE('\', FILESPACE_NAME)+1)+1)+1</span><span style="color: #242729;">, -
</span><span style="color: red;">LOCATE('\',FILESPACE_NAME, LOCATE('\',FILESPACE_NAME, LOCATE('\',
FILESPACE_NAME, LOCATE('\', FILESPACE_NAME)+1)+1)+1)- -
LOCATE('\',FILESPACE_NAME, LOCATE('\', FILESPACE_NAME, -
LOCATE('\', FILESPACE_NAME)+1)+1)-1)</span><span style="color: #242729;"> -
as FSNAME -
from FILESPACES -
where -
NODE_NAME='TEST-AP-DAG'</span></code></pre>
<span style="font-family: "arial" , "helvetica" , sans-serif;">So the final script looks like this</span><br />
<pre style="background-color: #eff0f1; border: 0px; font-family: Consolas, Menlo, Monaco, "Lucida Console", "Liberation Mono", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Courier New", monospace, sans-serif; font-size: 13px; margin-bottom: 1em; max-height: 600px; overflow: auto; padding: 5px; width: auto; word-wrap: normal;"><code style="border: 0px; font-family: Consolas, Menlo, Monaco, "Lucida Console", "Liberation Mono", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Courier New", monospace, sans-serif; margin: 0px; padding: 0px; white-space: inherit;"><span style="color: #242729;">Select -
VARCHAR(NODE_NAME,12) as NODE, -
VARCHAR(SUBSTR(FILESPACE_NAME, -
</span><span style="color: #00b050;">LOCATE('\',FILESPACE_NAME, -
LOCATE('\', FILESPACE_NAME, -
LOCATE('\', FILESPACE_NAME)+1)+1)+1</span><span style="color: #242729;">, -
</span><span style="color: red;">LOCATE('\',FILESPACE_NAME, -
LOCATE('\',FILESPACE_NAME, -
LOCATE('\', FILESPACE_NAME, -
LOCATE('\', FILESPACE_NAME)+1)+1)+1)- -
LOCATE('\',FILESPACE_NAME, -
LOCATE('\', FILESPACE_NAME, -
LOCATE('\', FILESPACE_NAME)+1)+1)-1)</span><span style="color: #242729;">,30) -
as Exch_DB,
date(backup_end) AS LAST_GOOD_BACKUP -
from filespaces -
where -
node_name='TEST-AP-DAG' -
order by Exch_DB, backup_end asc</span></code></pre>
<span style="font-family: "arial" , "helvetica" , sans-serif;">The results are exactly like the script that only works with TSM 8.1.</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif; font-size: x-small;"><br /></span>
<br />
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">NODE EXCH_DB LAST_GOOD_BACKUP</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">------------- ------------------------------- -----------------</span></div>
<div>
<span style="font-size: x-small;"><span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">TEST</span><span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">-AP-DAG \TEST-MB-01 2017-05-08</span></span></div>
<div>
<span style="font-size: x-small;"><span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">TEST</span><span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">-AP-DAG \TEST-MB-02 2017-05-08</span></span></div>
<div>
<span style="font-size: x-small;"><span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">TEST</span><span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">-AP-DAG \TEST-MB-03 2017-05-08</span></span></div>
<div>
<span style="font-size: x-small;"><span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">TEST</span><span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">-AP-DAG \TEST-MB-04 2017-05-08</span></span></div>
<div>
<span style="font-size: x-small;"><span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">TEST</span><span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">-AP-DAG \TEST-MB-05 2017-05-08</span></span></div>
<div>
<span style="font-size: x-small;"><span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">TEST</span><span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">-AP-DAG \TEST-MB-TEMP 2017-05-08</span></span></div>
<div>
<span style="font-size: x-small;"><span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">TEST</span><span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">-AP-DAG \MISC-MB-TEMP 2017-05-08</span></span></div>
<div>
<span style="font-size: x-small;"><span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">TEST</span><span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">-AP-DAG \Mailbox Database 1128394465 2017-05-08</span></span></div>
<div>
<span style="font-size: x-small;"><span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">TEST</span><span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">-AP-DAG \Mailbox Database 1397248650 2017-05-08</span></span></div>
<span style="font-family: "arial" , "helvetica" , sans-serif;"></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;">(4/20/17):</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;">I upgraded some of my 6.3.4 servers to TSM 8.1 recently and have found the newer DB2 version (v11.1) offers some added functions for SQL queries. I have been trying to build a report to track an Exchange DAG servers backups. The problem is that the easiest way to track the backups of DB's is to view the last completed backup for each of nodes file spaces. That's the easy part. The hard part is that the file space name is huge.</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">TEST-AP-DAG\Microsoft Exchange Writer\{76fe1ac4-15f7-4bcd-987e-8e1acb462fb7}\TEST-MB-05\0e41e645-9acf-4b80-bc85-d606e04fe4d8</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace; font-size: x-small;">TEST-AP-DAG\Microsoft Exchange Writer\{76fe1ac4-15f7-4bcd-987e-8e1acb462fb7}\Mailbox Database 1223544393\2bc06db2-1966-4fd7-9545-f667102b0b7d</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif;"><br /></span>
<span style="font-family: "arial" , "helvetica" , sans-serif;">So how to extract the DB name, in this case <i><b>TEST-MB-05</b></i> and <b><i>Mailbox Database 1397248650</i></b> from the name when the length of the DB name changes? After some investigation and trial and error I found that the <b>LOCATE_IN_STRING</b> function works in v8.1. Whether it works in 7.x (DB2 v10.5) I can't say since I don't have a 7.x server to run it against. If any of you out there try this and it works let me know. So here's the script. I think you can read it and see what I am doing. If not let me know in the comments and I'll explain...</span><br />
<br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">tsm: TSMSERV>q script DAG-EXCH-RPT f=raw</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"><br /></span>
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">select -</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"> VARCHAR(NODE_NAME,12) as NODE, -</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"> varchar(substring(filespace_name, LOCATE_IN_STRING(filespace_name, '\', 1, 3), -</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"> LOCATE_IN_STRING(filespace_name, '\', 1, 4) - LOCATE_IN_STRING(filespace_name, '\', 1, 3)),30) as Exch_DB, -</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"> date(backup_end) AS LAST_GOOD_BACKUP -</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">from FILESPACES -</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"> where -</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"> node_name='TEST-AP-DAG' -</span><br />
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;"> order by Exch_DB, backup_end asc</span><br />
<div>
<br /></div>
<div>
<br /></div>
<div>
<span style="font-family: "arial" , "helvetica" , sans-serif;">Here is sample output:</span></div>
<div>
<span style="font-family: inherit;"><br /></span></div>
<div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">NODE EXCH_DB LAST_GOOD_BACKUP</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">------------- ------------------------------- -----------------</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">TEST</span><span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">-AP-DAG \TEST-MB-01 2017-04-18</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">TEST</span><span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">-AP-DAG \TEST-MB-02 2017-04-18</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">TEST</span><span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">-AP-DAG \TEST-MB-03 2017-04-18</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">TEST</span><span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">-AP-DAG \TEST-MB-04 2017-04-18</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">TEST</span><span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">-AP-DAG \TEST-MB-05 2017-04-18</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">TEST</span><span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">-AP-DAG \TEST-MB-TEMP 2017-04-18</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">TEST</span><span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">-AP-DAG \MISC-MB-TEMP 2017-04-18</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">TEST</span><span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">-AP-DAG \Mailbox Database 1128394465 2017-04-18</span></div>
<div>
<span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">TEST</span><span style="font-family: "courier new" , "courier" , monospace; font-size: xx-small;">-AP-DAG \Mailbox Database 1397248650 2017-04-18</span></div>
</div>
<div>
<br /></div>
<div>
<span style="font-family: "arial" , "helvetica" , sans-serif;">If another function would work better feel free to correct the script and leave it for everyone in the comments. Now to go and find more functions I can use to manipulate my data!</span></div>
<div>
<br /></div>
Chad Smallhttp://www.blogger.com/profile/02637281120881655693noreply@blogger.com1tag:blogger.com,1999:blog-13518440.post-28648552167542674032017-10-25T07:04:00.000-07:002017-10-25T07:09:36.166-07:00Spectrum Protect 8.1.0 vs. 8.1.2 Client Issue<span style="font-family: "arial" , "helvetica" , sans-serif;">I just wanted to let everyone know that there is a compatibility issue with the Spectrum Protect 8.1.2 client with the 8.1.0 server. If you upgrade the client to SP 8.1.2 and your server is at 8.1.1 or 8.1.0 your server will be unable to start. The error you will get is</span><br />
<span style="font-family: arial, helvetica, sans-serif;"><br /></span>
<span style="font-family: Courier New, Courier, monospace;">Spectrum Protect ANR0162W Supplemental database diagnostic information: -1:08001:-30082 ([IBM][CLI Driver] SQL30082N Security processing failed with reason "24" ("USERNAME AND/OR PASSWORD INVALID").</span><br />
<span style="font-family: arial, helvetica, sans-serif;"><br /></span>
<span style="font-family: arial, helvetica, sans-serif;">The issue has to do with the GSKit8.gskcrypt64.ppc.rte and GSKit8.gskssl64.ppc.rte in the 8.1.2.0 client. When we rolled back to the 8.1.0 client the SP server started without an issue.</span><br />
<span style="font-family: "arial" , "helvetica" , sans-serif; font-size: xx-small;"><br /></span>Chad Smallhttp://www.blogger.com/profile/02637281120881655693noreply@blogger.com1tag:blogger.com,1999:blog-13518440.post-57229808795660268202017-08-07T10:54:00.000-07:002017-08-07T10:54:16.150-07:00TSM/Spectrum Protect 7.x Client IssueI ran across an issue with the TSM/Spectrum Protect client recently that through investigation showed that the issue has not been patched and the supposed resolution works....sometimes. The issue is that when an AIX backup is running you can experience the following error:<br />
<br />
<span style="color: #0b5394; font-family: Courier New, Courier, monospace; font-size: x-small;"><b>08/02/17 03:24:52 ANS1512E Scheduled event 'CS-FS-U-02.00' failed. Return code = 12.</b></span><br />
<span style="color: #0b5394; font-family: Courier New, Courier, monospace; font-size: x-small;"><b>08/02/17 13:54:36 ANS2820E An interrupt has occurred. The current operation will end and the client will shut down.</b></span><br />
<span style="color: #0b5394; font-family: Courier New, Courier, monospace; font-size: x-small;"><b>08/03/17 03:39:20 calloc() failed: Size 31496 File ../mem/mempool.cpp Line 1090</b></span><br />
<span style="color: #0b5394; font-family: Courier New, Courier, monospace; font-size: x-small;"><b>08/03/17 03:39:20 ANS1999E Incremental processing of '/usr/ibm' stopped.</b></span><br />
<span style="font-family: Courier New, Courier, monospace;"><br /></span>
This is a memory issue and can occur if TSM cannot allocate enough memory during the scheduled backup. The interesting thing is that manual backups run without issue. It is only when a scheduled backup is run that we experience the error. The server in question has only 8GB so we do know that real memory is limited so I followed the troubleshooting tips I saw online and checked the file system for excessive files. Querying the file system determined that was not the issue. I could not exclude the file system and so I added the <b>MEMORYEFFICIENTBACKUP YES</b> option thinking that would resolve the issue. Unfortunately the addition of the <b>MEMORYEFFICIENTBACKUP YES</b> option did not work. Subsequent investigation showed some people had to downgrade their TSM client version to a 6.4 level to resolve the problem. Unwilling to do so I changed the option so it used the disk cache function. So far using disk cache has worked without issue, but it's concerning that a change to the TSM/SP client has created this memory issue. So the fix was to add the following two options to my <b>dsm.sys</b>:<br />
<br />
<span style="font-family: Courier New, Courier, monospace;"><b> memoryefficientbackup DISKCACHEM</b></span><br />
<span style="font-family: Courier New, Courier, monospace;"><b> diskcachelocation /tmp</b></span><br />
<div>
<br /></div>
<div>
<span style="font-family: inherit;">Please note that my <b>/tmp</b> file system is over 2GB in size and only 1% used so make sure you have a sufficiently sized file system you can use if you use the DISKCACHEMETHOD option.</span></div>
Chad Smallhttp://www.blogger.com/profile/02637281120881655693noreply@blogger.com2tag:blogger.com,1999:blog-13518440.post-76712517695574619112017-06-01T10:57:00.003-07:002017-06-01T10:57:56.833-07:00TSM SQL TDP Better Backup ScriptOn a call today I had an admin complain that the TSM SQL TDP was issuing failed backup errors when the script encountered a database that was offline. So I asked if he had searched Google for an alternate script and he had not. I did a quick query and found this nice batch file that appears to do exactly what is needed. The reader on the site commented that the script did not work on his SQL cluster. Does anyone have a similar script that would work on a cluster? Or could you modify this script to work in a cluster environment? The link to the script is provided below.<br />
<br />
<a href="http://www.applepie.se/tivoli-storage-manager-and-sql-backup">http://www.applepie.se/tivoli-storage-manager-and-sql-backup</a><br />
<br />
<br />Chad Smallhttp://www.blogger.com/profile/02637281120881655693noreply@blogger.com0tag:blogger.com,1999:blog-13518440.post-7710196603796667442017-05-05T11:08:00.000-07:002017-05-05T11:08:19.599-07:00TSM Menu - Bash Shell Scripting<span style="font-family: Arial, Helvetica, sans-serif;">For years I have maintained a shell script on our jump server that was a menu for accessing all the TSM servers in our environment. It was a nice interface and great for noobies. It allowed for you to set your password and ID variables before the menu loaded so anyone could run the menu under their ID, then presented them with a nice menu to pick which TSM server they wished to access. It was nice and easy. The only problem was when servers were added or decommissioned. When that occurred I would then have to go out and revise the menu. This was a pain and soon to be more painful as we plan to add a lot more TSM servers in the near future. I remember seeing someone post that they had created a menu system based off of the dsm.sys file so I decided to write my own.</span><br />
<br />
<span style="font-family: Arial, Helvetica, sans-serif;"><b>Before</b></span>:<br />
<br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> ################################################################## </span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> # # </span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> # Infocrossing # </span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> # UNIX ADMINISTRATION # </span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> # TSM MENU # </span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> # # </span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> ################################################################## </span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> Omaha </span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> 0) ouax000 1) ouax001 </span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> 2) ouax002 3) ouax003 </span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> 4) OTSM01 5) OTSM02 </span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> ------------------------------------------------------------------ </span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> Phoenix </span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> 6) puax001 7) puax002 </span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> 8) puax008 9) PTSM01 </span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> 10) PTSM02 11) PTSM20 </span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> ------------------------------------------------------------------ </span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> Singapore </span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> 20) SIN01ZZ 99) STSM01 </span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> ------------------------------------------------------------------ </span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> Germany </span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> 21) DTSM01 22) DTSM02 </span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> 23) DTSM03 24) DTSM20 </span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> ------------------------------------------------------------------ </span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> Kings Mtn </span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> 25) CTSM01 26) CTSM20 </span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> 27) CTSM30 28) CTSM40 </span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> ------------------------------------------------------------------ </span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> </span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> X/x) Cross Server </span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> </span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> S/s) Cmd Prompt </span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> </span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> DD/dd) Data Domain Admin </span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> </span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> Q/q) Return to Main Menu </span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> </span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> </span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> Selection: </span> <br />
<br />
<span style="font-family: Arial, Helvetica, sans-serif;"> <b>After </b><span style="font-size: x-small;"><i>(Notice servers listed here that were not in above menu)</i></span><b>:</b></span><br />
<span style="font-size: xx-small;"><br /></span>
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> ################################################################</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> # #</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> # Infocrossing #</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> # Recovery Services #</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> # TSM MENU #</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> # #</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> ################################################################</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> </span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> 1) C1IF 12) LABTSM 23) PTSM01 </span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> 2) C1KDC2 13) LUAX001 24) PTSM02 </span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> 3) CTSM01 14) LUAX002 25) PTSM20 </span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> 4) CTSM20 15) LTSM01 26) PTSM25-Arch </span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> 5) CTSM30 16) NTSM01 27) SIN01ZZ </span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> 6) CTSM40 17) OUAX003 28) STSM01 </span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> 7) CTSM46-Arch 18) OUAX000 29) Cross Server </span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> 8) DTSM01 19) OUAX001 30) Refresh Menu </span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> 9) DTSM02 20) OTSM01 31) Exit </span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">10) DTSM03 21) OTSM02 </span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">11) DTSM20 22) PESTSM01 </span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> </span><br />
<span style="font-family: Courier New, Courier, monospace;"><span style="font-size: xx-small;"> Please enter your choice: </span> </span><br />
<span style="font-family: Courier New, Courier, monospace;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">Ok, so the <b>Before</b> is more organized by region but as new servers come in I wanted the menu to update dynamically. So this new menu is built around the BASH shell's select menu function. The script pulls all the TSM server names from the dsm.sys and populates an array that the select statement reads and generates this menu. Make sure the variables the script declares work for you and your dsm.sys. My dsm.sys looks like this if I grep <b>servername</b>:</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">SERVERNAME DTSM01 * Germany LIB-MAN</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">SERVERNAME DTSM02 * Germany </span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">SERVERNAME DTSM03 * Germany </span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">SERVERNAME DTSM20 * Germany LIB-MAN</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">SERVERNAME CTSM01 * Kings_Mnt LIB-MAN</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">SERVERNAME C1KDC2 * Kings_Mnt </span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">SERVERNAME C1IF * Kings_Mnt </span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">SERVERNAME CTSM20 * Kings_Mnt </span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">SERVERNAME CTSM30 * Kings_Mnt </span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">SERVERNAME CTSM40 * Kings_Mnt </span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">SERVERNAME CTSM46-Arch * Kings_Mnt </span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">SERVERNAME LUAX001 * Leonia LIB-MAN</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">SERVERNAME LUAX002 * Leonia </span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">SERVERNAME LTSM01 * Leonia </span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">SERVERNAME NTSM01 * Norcross LIB-MAN</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">SERVERNAME OUAX000 * Omaha LIB-MAN</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">SERVERNAME OUAX001 * Omaha </span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">SERVERNAME OUAX003 * Omaha </span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">SErvername OTSM01 * Omaha LIB-MAN</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">SErvername OTSM02 * Omaha </span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">SERVERNAME PESTSM01 * PEST LIB-MAN</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">SERVERNAME PTSM01 * Tempe LIB-MAN</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">SERVERNAME PTSM02 * Tempe </span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">SERVERNAME PTSM20 * Tempe </span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">SERVERNAME PTSM25-Arch * Tempe </span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">SERVERNAME STSM01 * Singapore </span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">SERVERNAME SIN01ZZ * Singapore </span><br />
<br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">SERVERNAME LABTSM </span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">With the dsm.sys file formated this way I can use grep and awk to get specific data. This allows the script to build my menus according to my needs. Especially with the Cross Server sub menu that allows me to run a command across multiple servers at once. In the sub-menu it groups by distinct location which I placed in the <b>servername </b>line. Leave me a comment if you have any comments, questions, or suggestions.</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">See the script below:</span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">#!/bin/bash</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">#set -x</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"><br /></span>
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">### Set Color Variables ###</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"><br /></span>
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">NORMAL=`echo "\033[0m"`</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">WHITE=`echo "\033[37m"` #Blue</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">YELLOW=`echo "\033[33m"` #yellow</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">GREEN=`echo "\033[32m"`</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">RED=`echo "\033[31m"`</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">PURPLE=`echo "\033[35m"`</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"><br /></span>
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">##### Declare Variables & Arrays ############</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"><br /></span>
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">prompt="</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> Please enter your choice: "</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"><br /></span>
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">TSM_SYS="/opt/tivoli/tsm/client/ba/bin/dsm.sys"</span><br />
<span style="font-family: "Courier New", Courier, monospace; font-size: xx-small;">all_servers=(`cat $TSM_SYS | grep -i servername | awk -v OFS='\t' '{print $2}' | sort`)</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">xservers=(`cat $TSM_SYS | grep -i servername | awk -v OFS='\t' '{print $4}' | sort -u`)</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">Germany=(`cat $TSM_SYS | grep -i servername | grep -i germany |awk -v OFS='\t' '{print $2}'`)</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">Omaha=(`cat $TSM_SYS | grep -i servername | grep -i omaha |awk -v OFS='\t' '{print $2}'`)</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">Norcross=(`cat $TSM_SYS | grep -i servername | grep -i norcross |awk -v OFS='\t' '{print $2}'`)</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">Tempe=(`cat $TSM_SYS | grep -i servername | grep -i tempe |awk -v OFS='\t' '{print $2}'`)</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">PEST=(`cat $TSM_SYS | grep -i servername | grep -i pest |awk -v OFS='\t' '{print $2}'`)</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">Leonia=(`cat $TSM_SYS | grep -i servername | grep -i leonia |awk -v OFS='\t' '{print $2}'`)</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">Kings_Mnt=(`cat $TSM_SYS | grep -i servername | grep -i kings_mnt |awk -v OFS='\t' '{print $2}'| sort`)</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">Singapore=(`cat $TSM_SYS | grep -i servername | grep -i singapore |awk -v OFS='\t' '{print $2}'`)</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">lib_man=(`cat $TSM_SYS | grep -i servername | grep -i lib-man | awk -v OFS='\t' '{print $2}'`)</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"><br /></span>
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">export COLUMNS=70</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">########################</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"><br /></span>
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">######################</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">function clearlogin</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">######################</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">{</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">echo "Please wait while I clear all login information."|while read x;do for((i=0;i<${#x};i++));do echo -n "${x:$i:1}";sleep .03;done;echo;done;</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">unset TSMID</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">unset TSMPA</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">unset DDID</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">echo "."|while read x;do for((i=0;i<${#x};i++));do echo -n "${x:$i:1}";sleep .16;done;echo;done;</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">echo "."|while read x;do for((i=0;i<${#x};i++));do echo -n "${x:$i:1}";sleep .16;done;echo;done;</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">echo "Logins have been cleared! "|while read x;do for((i=0;i<${#x};i++));do echo -n "${x:$i:1}";sleep .03;done;echo;done;</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">sleep 1</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">}</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">######################</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"># end clearlogin #</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">######################</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"><br /></span>
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">###############</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">#END MAIN-MENU#</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">###############</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"><br /></span>
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">#########################</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">function tsmadmin</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">#########################</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">{</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">clear</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">if [ -z "${TSMID}" ]; then</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">echo ""</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">echo -e "$YELLOW Enter your TSM Admin ID: $GREEN \c"</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">read TSMID</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">echo ""</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">echo -e "$YELLOW Enter your TSM Admin Password: \c "</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">#stty -echo</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">read -s TSMPA</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">#stty $stty_orig</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">fi</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">clear</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> tsm-menu</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">exit</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">}</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">####################</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"># end tsmadmin #</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">####################</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"><br /></span>
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">#####################</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">function tsm-menu</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">#####################</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">{</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">all_done=0</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">export COLUMNS=70</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">while ((!all_done )); do</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">clear</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">echo -e "$WHITE ################################################################$NORMAL "</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">echo -e "$WHITE # #$NORMAL "</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">echo -e "$WHITE # $YELLOW Infocrossing $WHITE #"</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">echo -e "$WHITE # Recovery Services #"</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">echo -e "$WHITE # $RED TSM MENU $WHITE #"</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">echo -e "$WHITE # #$NORMAL "</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">echo -e "$WHITE ################################################################$NORMAL "</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">echo -e " "</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">length=`echo "$((${#all_servers[@]} + 4))"`</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">PS3="$prompt "</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> select host in "${all_servers[@]}" "Cross Server" "Reset Login" "Refresh Menu" "Exit"; do</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> if [ "$host" = "Exit" ]; then</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> all_done=1; clear; exit</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> elif [ "$host" = "Refresh Menu" ]; then</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> all_done=1; tsm-menu</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> elif [ "$host" = "Reset Login" ]; then</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> all_done=1; clearlogin; tsmadmin</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> elif [ "$host" = "Cross Server" ]; then</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> all_done=1; xmenu</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> elif [ "$REPLY" -gt "$length" ]; then</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> echo ""</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> echo "You chose option $REPLY which is invalid. Try again! "</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> echo ""</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> else</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> clear</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> echo -e "$GREEN "</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> dsmadmc -id=$TSMID -pa=$TSMPA -servern="$host"</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> all_done=1; tsm-menu</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> fi</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> done</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">done</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">}</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">##########################</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"># end function tsm-menu #</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">##########################</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"><br /></span>
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">#####################</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">function xmenu</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">#####################</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">{</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">all_done=0</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">export COLUMNS=50</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">while ((!all_done )); do</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">clear</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">echo -e "$WHITE ################################################################$NORMAL "</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">echo -e "$WHITE # #$NORMAL "</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">echo -e "$WHITE # $YELLOW Infocrossing $WHITE #"</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">echo -e "$WHITE # Recovery Services #"</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">echo -e "$WHITE # $RED TSM Cross Server Command MENU $WHITE # "</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">echo -e "$WHITE # #$NORMAL "</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">echo -e "$WHITE ################################################################$NORMAL "</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">echo -e " "</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">length=`echo "$((${#xservers[@]} + 4))"`</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">PS3="$prompt "</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> select host in "${xservers[@]}" "All Servers" "Library Managers" "Refresh Menu" "Exit"; do</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> if [ "$host" = "Exit" ]; then</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> all_done=1; tsm-menu</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> elif [ "$host" = "Refresh Menu" ]; then</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> all_done=1; xmenu</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> elif [ "$host" = "Library Managers" ]; then</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> clear</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> echo -e "$GREEN "</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> xserver $TSMID $TSMPA lib_man</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> all_done=1; xmenu</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> elif [ "$host" = "All Servers" ]; then</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> clear</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> echo -e "$GREEN "</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> xserver $TSMID $TSMPA all_servers</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> all_done=1; xmenu</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> elif [ "$REPLY" -gt "$length" ]; then</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> echo ""</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> echo "You chose option $REPLY which is invalid. Try again! "</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> echo ""</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> else</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> clear</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> echo -e "$GREEN "</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> xserver $TSMID $TSMPA "$host"</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> all_done=1; xmenu</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> fi</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> done</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">done</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">}</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">##########################</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"># end function xmenu #</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">##########################</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"><br /></span>
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"><br /></span>
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">###################</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">function xserver</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">###################</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">{</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> DC=$3</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> echo -e " "</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> echo -e " $YELLOW Enter the command to process: $NORMAL \c"</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> read CMD</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> echo ""</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> echo -e " $YELLOW Do you want to save the data to a commadelimited csv file? (Yes or No [N]) $NORMAL \c"</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> read ANSWER</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> case $ANSWER</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> in</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> y|Y|YES|Yes|yes)</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> echo ""</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> echo -e " $YELLOW Enter the file name to save the data: $NORMAL \c"</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> read FILE</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> echo ""</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> touch $FILE</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> cat /dev/null > $FILE</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> eval varAlias=\${$DC[@]}</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> for Server in ${varAlias[@]}</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> do</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> echo ""</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> echo -e "Processing TSM server $Server "</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> echo ""</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> dsmadmc -id=$1 -pa=$2 -dataonly=yes -commadelimited -servern=$Server $CMD | grep -v ANR | grep -v ANS >> $FILE</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> echo ""</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> done</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> xmenu</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> ;;</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> n|N|*)</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> echo ""</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> eval varAlias=\${$DC[@]}</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> for Server in ${varAlias[@]}</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> do</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> echo ""</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> echo -e "Processing TSM server $Server "</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> echo ""</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> dsmadmc -id=$1 -pa=$2 -dataonly=yes -servern=$Server $CMD</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> echo ""</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> done</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> sleep 2</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> xmenu</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> ;;</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> *)</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> echo ""</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> eval varAlias=\${$DC[@]}</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> for Server in ${varAlias[@]}</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> do</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> echo ""</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> echo -e "Processing TSM server $Server "</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> echo ""</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> dsmadmc -id=$1 -pa=$2 -dataonly=yes -servern=$Server $CMD</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> echo ""</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> done</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> sleep 2</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> xmenu</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> ;;</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"> esac</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">}</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">########################</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;"># end xserver function #</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">########################</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">clear</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">echo -e "$GREEN"</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">echo "Please Wait Loading Menu....."|while read x;do for((i=0;i<${#x};i++));do echo -n "${x:$i:1}";sleep .03;done;echo;done;</span><br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">sleep 2</span><br />
<br />
<span style="font-family: Courier New, Courier, monospace; font-size: xx-small;">tsmadmin</span><br />
<div>
<br /></div>
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;"> </span><span style="font-family: Courier New, Courier, monospace;"> </span>Chad Smallhttp://www.blogger.com/profile/02637281120881655693noreply@blogger.com2tag:blogger.com,1999:blog-13518440.post-60396873138062114542017-02-22T08:27:00.000-08:002017-02-22T08:27:24.114-08:00Learn From My MistakesWe recently did a DR test and ran into a serious issue with the recovery of the TSM instance. The DR test was to restore the TSM DB from data center A (DC-A) to data center B. The DC-A instance had been created the previous year so we only needed to remove the DB (<b>DSMSERV REMOVEDB TSMDB1</b>) and restore the DB. I followed the steps and restored the DB and after restoring the DB 99% the restore failed. The restore failure error pointed us to the size available being too small for the required. We were off by a couple GB in our DB directory sizes so we had to add another directory to the list. I tried to rerun the format of the space and quickly received and error that the DB was present. I then ran the <b>DSMSERV REMOVEDB TSMDB1</b> command again then tried to rerun the format and received the same results. We tried multiple commands<br />
<br />
<span style="background-color: white; color: #323232; font-family: HelvRegularIBM, "Helvetica Neue", Arial, sans-serif; font-size: 16px;"><a href="http://www-01.ibm.com/support/docview.wss?uid=swg21673848" target="_blank"><b>db2 uncatalog db TSMDB1</b></a></span><br />
<span style="background-color: white; color: #323232; font-family: HelvRegularIBM, "Helvetica Neue", Arial, sans-serif; font-size: 16px;"><b><br /></b></span>
<span style="background-color: white; color: #323232; font-family: HelvRegularIBM, "Helvetica Neue", Arial, sans-serif; font-size: 16px;"><a href="https://www.ibm.com/support/knowledgecenter/SSEPGG_11.1.0/com.ibm.db2.luw.qb.server.doc/doc/t0007433.html" target="_blank"><b>db2idrop serverA</b></a></span><br />
<span style="background-color: white; color: #323232; font-family: HelvRegularIBM, "Helvetica Neue", Arial, sans-serif; font-size: 16px;"><b><br /></b></span>
<a href="http://www-01.ibm.com/support/docview.wss?uid=swg21673848" target="_blank"><span style="font-size: x-small;"><b><span style="background-color: white; color: #323232; font-family: HelvRegularIBM, "Helvetica Neue", Arial, sans-serif;">/opt/tivoli/tsm/db2/bin/db2greg -delinstrec service=db2,version=</span><span style="color: #323232; font-family: HelvRegularIBM, Helvetica Neue, Arial, sans-serif;">9.7.0.9</span><span style="background-color: white; color: #323232; font-family: HelvRegularIBM, "Helvetica Neue", Arial, sans-serif;">,instancename=serverA,instancepath=/drtsmserver/serverA/sqllib</span></b></span></a><br />
<br />
This last command allows you to manually drop the DB from the global registry. When we tried this a couple times the instance would be removed from the global registry and when we would try to rerun the restore we would get the error that the DB was present and the instance would reappear in the global registry. (<i>Notice the instance path....that is going to come play into the final solution.</i>)<br />
<br />
So at this point we went round and round with various commands to drop/remove/delete the instance from DB2 and the commands would fail saying that the instance was not present and then an attempt to restore the DB would fail saying the DB was present. We went round and round and round until I finally restored the DB under a new ID and instance directory which was successful.....BUUUUUUTTTTTT.....there in lies another issue. Once the DB restore was successfully restored it failed to allow us to bring up the TSM instance because the new ID was not the original owner of the DB instance. Immediately I realized my mistake as this had happened to me years ago and I totally forgot this DB2 requirement. You see DB2 does not allow an ID other than those that have been granted permission to bring the DB up. I get it, it's a security thing, but the TSM instances almost all Admins create only has one active ID allowed ownership of the DB2 instance. You can add as many as you like but it's not something IBM or Tivoli openly suggest or recommend. So if the ID you typically use wont allow the restore or for some reason can't be used and you want to use a new ID for the DB your S.O.L. If it's after the fact, IBM cannot provide a way for you to assign an additional owner of the DB2 TSM instance. IBM's recommendation was go back to DC-A and grant the new ID rights to the instance, run a TSM DB backup, copy/replicate the instance to DC-B, then restore the DB and it would work under the new ID.<br />
<br />
By this point in the DR process we were so behind in the recovery of the TSM server we scrapped our portion of the DR test (we were not a significant portion of test, which was to test Recovery Point capabilities and TSM was a fall back). I continued to work with IBM on the restore under the original ID and the looping issue and after a couple attempts, the IBM level 2 DB2 support person identified that the creation of the TSM instance had created DB files in<br />
<br />
<b>/drtsmserver/serverA/serverA/NODE0000</b><br />
<br />
<b></b>and a simple rename of that directory should the the DB present/not present issue. We had repeatedly cleared out the DB and Log file systems but had forgotten about the DB folder and files created in the instance directory. TSM had created that subdirectory with DB related files. We had renamed the /drtsmserver/serverA/sqllib directory more than once, but we had forgotten about the other instance directory as <a href="http://www-01.ibm.com/support/docview.wss?uid=swg21682172" target="_blank">IBM states in this technote</a>. When we renamed the second serverA directory and tried the restore and it ran to completion successfully. HEAD SLAP! This was one of the times where even with another set of eyes we were not seeing the bigger picture. IBM level one support was probably looking at the wrong issue and level two was stumped because we moved away from the initial issue we called about and were now asking them how bring up the TSM DB that we restored under the alternate ID.<br />
<br />
OK at this point I was exhausted and frustrated with myself. So what did I come away with in this situation....<br />
<br />
<br />
<ol>
<li>Triple verify your DB file space size is adequate. (<b>DOH!</b>)</li>
<li>From the instance home directory copy the critical files to an alternate location. </li>
<ul>
<li>This is in case the restore fails and clears them or updates them incorrectly (trust me this happened more than once)</li>
</ul>
<li>If the restore fails or a rerun of the restore is required rename both <b><i><inst home>/<inst name>/<inst name></i></b> and <b><i><inst home>/<inst name>/sqllib</i></b></li>
<li>IMHO I would also create another ID or two on the production server and <a href="http://www-01.ibm.com/support/docview.wss?uid=swg21427232" target="_blank">grant them access to the TSM DB instance</a> just in case you had an issue with the primary ID. </li>
<ul>
<li>This is not required but cant hurt.</li>
</ul>
</ol>
<br />
<br />Chad Smallhttp://www.blogger.com/profile/02637281120881655693noreply@blogger.com0tag:blogger.com,1999:blog-13518440.post-53985344680106084412016-08-25T16:28:00.002-07:002016-08-25T16:56:54.452-07:00Why Are You Not Using Google & YouTube?I had an OS Admin contact me through LinkedIn and G-Mail asking for help on trying to find his archived data. He didn't have much experience with TSM and was looking for information on how to find the long term backups (i.e. Archives). I asked him if he even tried to search Google? Google and YouTube are great resources for all your needs. For example if you want to learn more about the new Operations Center you can see a <a href="https://www.youtube.com/results?search_query=Tivoli+Spectrum+Protect+Operations+Center" target="_blank">plethora of videos</a> by searching YouTube. You can also use google to find all sorts of related documents and pages when it concerns APARs and errors. If you haven't done your due diligence you make yourself look dumb. Shoot, you can even search Google from my website and get my posts and outside relevant web pages!<br />
<br />
So here is a list of YouTube videos you can reference:<br />
<br />
<a href="https://www.youtube.com/results?search_query=Tivoli+Storage+Manager+Backup+and+Archive" target="_blank">Backup and Archive</a><br />
<br />
<a href="http://tivoli%20storage%20manager%20server%20administration/" target="_blank">Server Administration</a><br />
<br />
<a href="https://www.youtube.com/results?search_query=Tivoli+Storage+Manager+dedup" target="_blank">Setup TSM Deduplication</a><br />
<br />
<a href="https://www.youtube.com/results?search_query=Tivoli+Storage+Manager+TDP" target="_blank">Tivoli Data Protection Agents</a><br />
<br />
<a href="https://www.youtube.com/results?search_query=Tivoli+Storage+Manager+for+Virtual+Environments" target="_blank">TDP for Virtual Environments</a><br />
<br />
<br />
<br />
<br />
<br />
<br />Chad Smallhttp://www.blogger.com/profile/02637281120881655693noreply@blogger.com0tag:blogger.com,1999:blog-13518440.post-68249470584458427322016-07-11T10:23:00.002-07:002016-07-11T10:24:26.834-07:00TSM Explorer<div style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8px;">
I've been notified by the developer of TSMExplorer that a more current free edition is available for anyone looking for a GUI based management tool for TSM. Below is a brief note from the developer.</div>
<div style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8px;">
<br /></div>
<div style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8px;">
"TSMExplorer GUI is free application for TSM server management. The solution is a comfortable tool to control and manage from a single sign-on.<span style="font-family: "arial" , "helvetica" , sans-serif; font-size: 13px;"> </span><span style="font-family: "arial" , "helvetica" , sans-serif; font-size: x-small;">This version is free for works with </span><span style="font-size: 12.8px;">version TSM 5.x 6.1 6.2”</span></div>
<div style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8px;">
<br /></div>
<div style="background-color: white; color: #222222; font-family: arial, sans-serif; font-size: 12.8px;">
<span style="color: #888888; font-family: "arial" , "tahoma" , "helvetica" , "freesans" , sans-serif; font-size: x-small;"><span style="background-color: whitesmoke; line-height: 18.48px;"><a data-saferedirecturl="https://www.google.com/url?hl=en&q=http://www.s-iberia.com/download.html&source=gmail&ust=1468343852805000&usg=AFQjCNEhD7IpfCE6hWAqD_T9FyCvnpOdkg" href="http://www.s-iberia.com/download.html" style="color: #1155cc;" target="_blank">http://www.s-iberia.com/<wbr></wbr>download.html</a></span></span></div>
<div>
<span style="color: #888888; font-family: "arial" , "tahoma" , "helvetica" , "freesans" , sans-serif; font-size: x-small;"><br /></span></div>
Chad Smallhttp://www.blogger.com/profile/02637281120881655693noreply@blogger.com0tag:blogger.com,1999:blog-13518440.post-89180873272734341922016-06-21T08:33:00.003-07:002016-06-21T08:33:41.135-07:00Restoring TSM Without A Volhist<span style="font-family: Arial, Helvetica, sans-serif;">Someone in the comments to an old post just asked for directions/instructions on restoring TSM without a volume history or devconfig file. Well, I got some bad news and some not so bad but not fun news. We will start with the not so bad news. If you don't have a devconfig, don't panic! You can recreate the devconfig. That's fairly simple, just a pain. <span style="background-color: white; color: #222222;">TSM has to have a devconfig file to initialize its devices so if the devconfig is not present you'll have to create one. Typically you do this when you rebuild a TSM instance. For example at a DR site you install TSM on the DR server, define the dsmserv.opt, and then you define base devices on the new install. Once that has been done you can bring down TSM and attempt a restore using the newly defined device(s).</span> </span><br />
<span style="font-family: Arial, Helvetica, sans-serif;"><br /></span>
<span style="font-family: Arial, Helvetica, sans-serif;">Now for the bad news. <span style="background-color: white; color: #222222;">Without the volhist, if you don't know what volume(s) were used for DBBAckup your kind of screwed. The old DSMSERV DISPLAY DBBACKUPVOLUME command has been removed/deleted and IBM now says the following</span></span><br />
<br style="background-color: white; color: #222222;" /><span style="background-color: white;"><span style="font-family: Times, Times New Roman, serif;"><b style="color: #222222;">DSMSERV DISPLAY DBBACKUPVOLUME</b><span style="color: #222222;"> - Information about volumes used for database backup is available from the volume history file. </span><b><span style="color: red;">The volume history file is now required to restore the database. </span></b></span></span><div>
<span style="background-color: white; color: #222222;"><span style="font-family: Times, Times New Roman, serif;"><br /></span></span></div>
<div>
<span style="color: #222222; font-family: Arial, Helvetica, sans-serif;"><span style="background-color: white;">You can find a list of <a href="http://www.ibm.com/support/knowledgecenter/SS8TDQ_6.3.0/com.ibm.itsm.srv.upgrd.doc/r_srv_upgrd_cmds_del.html" target="_blank">TSM Server deleted commands, utilities, and options</a> at the following <a href="http://www.ibm.com/support/knowledgecenter/SS8TDQ_6.3.0/com.ibm.itsm.srv.upgrd.doc/r_srv_upgrd_cmds_del.html" target="_blank">link</a>.</span></span></div>
<div>
<span style="color: #222222; font-family: Arial, Helvetica, sans-serif;"><span style="background-color: white;"><br /></span></span></div>
<div>
<br /></div>
Chad Smallhttp://www.blogger.com/profile/02637281120881655693noreply@blogger.com1