<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:blogger="http://schemas.google.com/blogger/2008" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;CE4GRXo9fyp7ImA9WhBbEE4.&quot;"><id>tag:blogger.com,1999:blog-5585285</id><updated>2013-05-08T18:08:44.467+01:00</updated><category term="sqlserver" /><category term="unix" /><category term="DOS" /><title>Oracle, Sqlserver, Linux. Mainly.</title><subtitle type="html">Just stuff to refer back to (or for other people to Google) from mattypenny</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://mattypenny.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://mattypenny.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/5585285/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>mattypenny</name><uri>http://www.blogger.com/profile/16749912786297665292</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_PZgYw--7Cl4/S3VORdexutI/AAAAAAAAAIM/q3TOEMYGkHc/S220/Matt+Penny.JPG" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>90</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/blogspot/qxOY" /><feedburner:info uri="blogspot/qxoy" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;C0AMRXo6cCp7ImA9WhNXGEQ.&quot;"><id>tag:blogger.com,1999:blog-5585285.post-8773645862839450008</id><published>2012-12-07T14:49:00.000Z</published><updated>2012-12-07T14:49:44.418Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-12-07T14:49:44.418Z</app:edited><title>Mis-spelling in Powershell</title><content type="html">This was spectacularly incompetent even by my high standards of incompetence.

&lt;pre class="brush: ps" name="code"&gt;
PS SQLSERVER:\&gt; get-wmiobject -class win32_operatingsystem -computer rdm016 | 
select __Server, ServicePackMajorVerstion
&lt;/pre&gt;

And got:

&lt;pre class="brush: ps" name="code"&gt;
__SERVER                                ServicePackMajorVerstion
--------                                ------------------------
RDM016
&lt;/pre&gt;

I thought that no service packs had been applied.

This, as more attentive readers will have spotted, was no the case. The null under ServicePackMajorVerstion is because you don't spell 'version' with a 't'.

Two learnings from this:

&lt;ul&gt;
&lt;li&gt;one should test one's code&lt;/li&gt;
&lt;li&gt;if you put something invalid in a 'select' list in Powershell it won't necessarily error&lt;/li&gt;
&lt;/ul&gt;

&lt;img src="http://feeds.feedburner.com/~r/blogspot/qxOY/~4/NKXwspaYegI" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5585285/posts/default/8773645862839450008?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5585285/posts/default/8773645862839450008?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/qxOY/~3/NKXwspaYegI/mis-spelling-in-powershell.html" title="Mis-spelling in Powershell" /><author><name>mattypenny</name><uri>http://www.blogger.com/profile/16749912786297665292</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_PZgYw--7Cl4/S3VORdexutI/AAAAAAAAAIM/q3TOEMYGkHc/S220/Matt+Penny.JPG" /></author><feedburner:origLink>http://mattypenny.blogspot.com/2012/12/mis-spelling-in-powershell.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEAASHg4eSp7ImA9WhNTE0w.&quot;"><id>tag:blogger.com,1999:blog-5585285.post-2427862762254906152</id><published>2012-10-10T18:02:00.003+01:00</published><updated>2012-10-15T16:59:09.631+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-10-15T16:59:09.631+01:00</app:edited><title>4 ways of breaking comment-based help in Powershell</title><content type="html">A quick note on the different ways I've found of breaking the comment basaed help in Powershell. I've only started playing with it today. It's a great feature, but it does perhaps seem a little fussy.

I've not verified all of these - I'll do so when time allows

&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.blogger.com/blogger.g?blogID=5585285#NoDot"&gt;Leave the '.' off of a label&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.blogger.com/blogger.g?blogID=5585285#SameName"&gt;Have a function with the same name as a script&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.blogger.com/blogger.g?blogID=5585285#WrongParam"&gt;Don't name the parameter correctly&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.blogger.com/blogger.g?blogID=5585285#SameName"&gt;Not (re-) sourcing the function!   :)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;a href="http://www.blogger.com/blogger.g?blogID=5585285" name="NoDot"&gt;&lt;/a&gt;&lt;br /&gt;
&lt;h3&gt;
Leave the '.' off of a label&lt;/h3&gt;
If I leave out the full-stop on one of the labels:

&lt;pre class="brush: ps" name="code"&gt;
SYNOPSIS
Lists services on specified server which are set as autostart but are currently stopped
.DESCRIPTION

Uses wmi to get services into&amp;nbsp;&lt;/code&gt;
&lt;br /&gt;&lt;/pre&gt;
It breaks the whole of the help:&lt;br /&gt;
&lt;br /&gt;

&lt;pre class="brush: ps" name="code"&gt;PS C:\&amp;gt; help sstop&lt;br /&gt;
show-stoppedservices [[-MyServer] &lt;string&gt;]
&lt;/pre&gt;




&lt;a href="http://www.blogger.com/blogger.g?blogID=5585285" name="SameName"&gt;&lt;/a&gt;&lt;br /&gt;
&lt;h3&gt;
Have a function with the same name as a script&lt;/h3&gt;
If my function name is kept in a ps1 file with &lt;i&gt;the same name&lt;/i&gt; as the function, then the help subsytem just shows the different items.

If I rename the .ps1 file as follows:&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="brush: ps" name="code"&gt;
move function-show-stoppedservices.ps1 show-stoppedservices.ps1
&lt;/pre&gt;
&lt;br /&gt;
And I try to get help on the function (using the full function name - the alias would be OK):

&lt;code&gt;&amp;nbsp;&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;PS C:\&amp;gt; help show-stoppedservices&amp;nbsp;&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;Name &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;                             Category&amp;nbsp;&amp;nbsp;  Synopsis&amp;nbsp;&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;----&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;                              --------&amp;nbsp;&amp;nbsp;  --------&amp;nbsp;&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;show-stoppedservices&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;              Function&amp;nbsp;&amp;nbsp;  Lists services on specified serv...
show-stoppedservices.ps1          Extern...&amp;nbsp; show-stoppedservices.ps1 ...
&lt;/code&gt;
 
&lt;a href="http://www.blogger.com/blogger.g?blogID=5585285" name="WrongParam"&gt;&lt;/a&gt;&lt;br /&gt;
&lt;h3&gt;
Don't name the parameter correctly&lt;/h3&gt;
If you mis-spell the name of the parameter in the Help text, then you'll lose any description that you add in, obviously enough:&lt;br /&gt;
&lt;br /&gt;
.PARAMETER NotMyServer&lt;br /&gt;
Specify the remote server. If null tells you about wherever you are &lt;br /&gt;
running&lt;br /&gt;
&lt;br /&gt;
Code:&lt;br /&gt;
Param ( [String] $MyServer = "." ) &lt;br /&gt;
&lt;br /&gt;
Powershell will still give you the definition of the parameter but you lose the help text.&lt;br /&gt;
&lt;br /&gt;
PS p:\powershell\functions&amp;gt; help show-stoppedservices -parameter MyServer&lt;br /&gt;
&lt;br /&gt;
type&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; parameterValue&lt;br /&gt;
----&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ----&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --------------&lt;br /&gt;
@{name=String}&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MyServer&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; String &lt;br /&gt;
&lt;br /&gt;
Putting this right: &lt;br /&gt;
&lt;br /&gt;
.PARAMETER MyServer &lt;br /&gt;
&lt;br /&gt;
Allows Powershell to use your help:&lt;br /&gt;
PS p:\powershell\functions&amp;gt; help show-stoppedservices -parameter MyServer&lt;br /&gt;
&lt;br /&gt;
type&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; parameterValue&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; description&lt;br /&gt;
----&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ----&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --------------&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -----------&lt;br /&gt;
@{name=String}&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MyServer&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; String&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {@{Text=Specify ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href="http://www.blogger.com/blogger.g?blogID=5585285" name="SameName"&gt;&lt;/a&gt;&lt;br /&gt;
&lt;h3&gt;
Not (re-) sourcing the function!   :)&lt;/h3&gt;
To be completed


&lt;img src="http://feeds.feedburner.com/~r/blogspot/qxOY/~4/r3XjY3Q1pK4" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5585285/posts/default/2427862762254906152?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5585285/posts/default/2427862762254906152?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/qxOY/~3/r3XjY3Q1pK4/ways-of-breaking-comment-based-help-in.html" title="4 ways of breaking comment-based help in Powershell" /><author><name>mattypenny</name><uri>http://www.blogger.com/profile/16749912786297665292</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_PZgYw--7Cl4/S3VORdexutI/AAAAAAAAAIM/q3TOEMYGkHc/S220/Matt+Penny.JPG" /></author><feedburner:origLink>http://mattypenny.blogspot.com/2012/10/ways-of-breaking-comment-based-help-in.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DU4BRX48fip7ImA9WhRXFEo.&quot;"><id>tag:blogger.com,1999:blog-5585285.post-8884421364615166203</id><published>2011-12-21T14:32:00.003Z</published><updated>2011-12-21T14:32:34.076Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-21T14:32:34.076Z</app:edited><title>Create dated folders in Linux</title><content type="html">For reasons too tedious to relate here, I wanted to create a lot of folders in the format:&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: x-small;"&gt;/tmp/20120101_matt&lt;br /&gt;/tmp/20120102_matt&lt;br /&gt;/tmp/20120103_matt&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: x-small;"&gt;/tmp/&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: x-small;"&gt;20120104_matt&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: x-small;"&gt;/tmp/&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: x-small;"&gt;20120105_matt&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: x-small;"&gt;/tmp/&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;20120106_matt&lt;/span&gt; &lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
This does the trick &lt;br /&gt;
&lt;br /&gt;
&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;
&lt;span style="font-size: x-small;"&gt;for i in {0..365}&lt;/span&gt;&lt;/div&gt;
&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;
&lt;span style="font-size: x-small;"&gt;do&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/div&gt;
&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;
&lt;span style="font-size: x-small;"&gt;&amp;nbsp;&amp;nbsp; mkdir /tmp/$(date --date="+$i days" +%Y%m%d)_matt&lt;/span&gt;&lt;/div&gt;
&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;
&lt;span style="font-size: x-small;"&gt;done&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
Happy Christmas! &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/qxOY/~4/E7PloEWW0Zo" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5585285/posts/default/8884421364615166203?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5585285/posts/default/8884421364615166203?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/qxOY/~3/E7PloEWW0Zo/create-dated-folders-in-linux.html" title="Create dated folders in Linux" /><author><name>mattypenny</name><uri>http://www.blogger.com/profile/16749912786297665292</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_PZgYw--7Cl4/S3VORdexutI/AAAAAAAAAIM/q3TOEMYGkHc/S220/Matt+Penny.JPG" /></author><feedburner:origLink>http://mattypenny.blogspot.com/2011/12/create-dated-folders-in-linux.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUMDQX8_cSp7ImA9WhRREU4.&quot;"><id>tag:blogger.com,1999:blog-5585285.post-4122770339501463193</id><published>2011-11-24T11:12:00.001Z</published><updated>2011-11-24T11:17:50.149Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-24T11:17:50.149Z</app:edited><title>Dos code to remove duplicates</title><content type="html">There's probably a much easier way to do this, but this code removes duplicate lines from a file. Only the first occurrence of a line is kept, but the order of the first occurrences is maintained&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;for /F %I in (cfc_scorers.txt) do (findstr&amp;nbsp; %I cfc_order_of_scoring.txt&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;if ERRORLEVEL 1 echo %I &amp;gt;&amp;gt; cfc_order_of_scoring.txt&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
So if cfc_scorers.txt is:&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Anelka&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Malouda&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Boswinga&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Lampard&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Mata&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Mata&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Terry&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Sturridge&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Torres&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Torres&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Ramires&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Ramires&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Lampard&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Sturridge&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Lampard&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Sturridge&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;Then the created file will be:&lt;br /&gt;
&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;
&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Anelka&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Malouda&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Boswinga&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Lampard&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Mata&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Terry&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Sturridge&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Torres&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Ramires&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/qxOY/~4/NhyFrzNZIUg" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5585285/posts/default/4122770339501463193?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5585285/posts/default/4122770339501463193?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/qxOY/~3/NhyFrzNZIUg/dos-code-to-remove-duplicates.html" title="Dos code to remove duplicates" /><author><name>mattypenny</name><uri>http://www.blogger.com/profile/16749912786297665292</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_PZgYw--7Cl4/S3VORdexutI/AAAAAAAAAIM/q3TOEMYGkHc/S220/Matt+Penny.JPG" /></author><feedburner:origLink>http://mattypenny.blogspot.com/2011/11/dos-code-to-remove-duplicates.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkAAR3w9fSp7ImA9WhRTGEk.&quot;"><id>tag:blogger.com,1999:blog-5585285.post-7634822075470233781</id><published>2011-11-09T12:12:00.000Z</published><updated>2011-11-09T12:12:26.265Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-09T12:12:26.265Z</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="sqlserver" /><title>Maintenance Cleanup Task not working</title><content type="html">I set up a&amp;nbsp; Sqlserver Maintenance Cleanup Task, but couldn't get it to delete the appropriate backup files.&lt;br /&gt;
&lt;br /&gt;
The log looked like this:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote class="tr_bq"&gt;
&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Maintenance Cleanup Task (&lt;server name=""&gt;)&lt;/server&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Maintenance Cleanup on Local server connection&lt;/span&gt;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Cleanup Database Backup files&lt;/span&gt;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Age: Older than 5 Weeks&lt;/span&gt;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Task start: 2011-11-09T11:45:01.&lt;/span&gt;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Task end: 2011-11-09T11:45:01.&lt;/span&gt;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Success&lt;/span&gt;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Command:EXECUTE master.dbo.xp_delete_file 0,N''F:\mssql_backup'',N''.bak'',N''2011-10-05T11:45:01'',1&lt;/span&gt;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;GO&lt;/span&gt;&lt;/span&gt; &lt;/blockquote&gt;
&lt;br /&gt;
...which looks reasonable.&lt;br /&gt;
&lt;br /&gt;
It was showing 'Success' &lt;br /&gt;
&lt;br /&gt;
My mistake was that I had entered &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;.bak&lt;/span&gt; rather than just &lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;bak&lt;/span&gt; as the 'File extension'. The '.' is not needed. Presumably it was looking for files called 'whatever..bak'&lt;br /&gt;
&lt;br /&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/qxOY/~4/1F8M10w0etE" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5585285/posts/default/7634822075470233781?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5585285/posts/default/7634822075470233781?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/qxOY/~3/1F8M10w0etE/maintenance-cleanup-task-not-working.html" title="Maintenance Cleanup Task not working" /><author><name>mattypenny</name><uri>http://www.blogger.com/profile/16749912786297665292</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_PZgYw--7Cl4/S3VORdexutI/AAAAAAAAAIM/q3TOEMYGkHc/S220/Matt+Penny.JPG" /></author><feedburner:origLink>http://mattypenny.blogspot.com/2011/11/maintenance-cleanup-task-not-working.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEYAQ3k6eyp7ImA9WhdbFU0.&quot;"><id>tag:blogger.com,1999:blog-5585285.post-7801389282260364457</id><published>2011-10-13T12:42:00.000+01:00</published><updated>2011-10-13T12:42:22.713+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-13T12:42:22.713+01:00</app:edited><title>Sqlserver Management Studio</title><content type="html">I spent a couple of lunchtimes going through Sqlserver Management Studio's 'Object Explorer' panel, typing up all the different elements. This might seem like an odd thing to do, but I thought it might be useful for the following reasons:&lt;br /&gt;
&lt;br /&gt;
- as a reference. A searchable list of where everything is&lt;br /&gt;
&lt;br /&gt;
- as the beginnings of a checklist. Making a system wide change it might be handy to scan through this list and consider whether there's an impact on each element&lt;br /&gt;
&lt;br /&gt;
- to get me blogging again :)&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: x-small;"&gt;&lt;br /&gt;
Databases&lt;br /&gt;
&amp;nbsp; System Databases&lt;br /&gt;
&amp;nbsp; Database Snapshots&lt;br /&gt;
&amp;nbsp; User Databases&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Database Diagrams&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Tables&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Views&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Synonyms&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Programmability&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Stored Procedures&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Functions&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Triggers&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Assemblies&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Types&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Rules&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Defaults&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Plan Guides&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Service Broker&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Message Types&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Contracts&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Queues&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Services&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Routes&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Remote ServiceBindings&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Broker Priorities&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Storage&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Full Text Catalogs&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Partition Schenes&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Patition Functions&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Full Text Stoplists&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Security&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Users&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Roles&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Schemas&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Asymmetric Keys&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Certificates&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Symmetric Keys&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Database Audit Specifications&lt;br /&gt;
Security&lt;br /&gt;
&amp;nbsp; Logins&lt;br /&gt;
&amp;nbsp; Server Roles&lt;br /&gt;
&amp;nbsp; Credentials&lt;br /&gt;
&amp;nbsp; Cryptographic Providers&lt;br /&gt;
&amp;nbsp; Audits&lt;br /&gt;
&amp;nbsp; Server Audit Specifications&lt;br /&gt;
Server Objects&lt;br /&gt;
&amp;nbsp; Backup Devices&lt;br /&gt;
&amp;nbsp; Endpoints&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; System Endpoints&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Database Mirroring&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Service Broker&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SOAP&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TSQL&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dedicated Admin Connection&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TSQL Default TCP&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TSQL Default VIA&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TSQL Local Machine&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TSQL Named Pipes&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Database Mirroring&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Service Broker&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; SOAP&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; TSQL&lt;br /&gt;
&amp;nbsp; Linked Servers&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Providers&lt;br /&gt;
&amp;nbsp; Triggers&lt;br /&gt;
Replication&lt;br /&gt;
&amp;nbsp; Local publications&lt;br /&gt;
&amp;nbsp; Local subscriptions&lt;br /&gt;
Management&lt;br /&gt;
&amp;nbsp; Data-tier Applications&lt;br /&gt;
&amp;nbsp; Policy Management&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Policies&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System Policies&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Conditions&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System Conditions&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Facets&lt;br /&gt;
&amp;nbsp; Data Collection&lt;br /&gt;
&amp;nbsp; Resource Governor&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; Resource Pools&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System Resource Pools&lt;br /&gt;
&amp;nbsp; Maintenance Plans&lt;br /&gt;
SQL Server Logs&lt;br /&gt;
&amp;nbsp; Database Mail&lt;br /&gt;
&amp;nbsp; Distributed Trnasaction Co-ordinator&lt;br /&gt;
Legacy&lt;br /&gt;
&amp;nbsp; Database Maintenance Plans&lt;br /&gt;
&amp;nbsp; Data Transformation Services&lt;br /&gt;
&amp;nbsp; SQL Mail&lt;br /&gt;
SQL Server Agent&lt;br /&gt;
&amp;nbsp; Jobs&lt;br /&gt;
&amp;nbsp; Alerts&lt;br /&gt;
&amp;nbsp; Operators&lt;br /&gt;
&amp;nbsp; Proxies&lt;br /&gt;
&amp;nbsp; Error Logs&lt;br /&gt;
&lt;/span&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/qxOY/~4/IOtxxW01xdA" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5585285/posts/default/7801389282260364457?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5585285/posts/default/7801389282260364457?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/qxOY/~3/IOtxxW01xdA/sqlserver-management-studio.html" title="Sqlserver Management Studio" /><author><name>mattypenny</name><uri>http://www.blogger.com/profile/16749912786297665292</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_PZgYw--7Cl4/S3VORdexutI/AAAAAAAAAIM/q3TOEMYGkHc/S220/Matt+Penny.JPG" /></author><feedburner:origLink>http://mattypenny.blogspot.com/2011/10/sqlserver-management-studio.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DU4BSHc7cCp7ImA9WhdSFko.&quot;"><id>tag:blogger.com,1999:blog-5585285.post-1164929310739982057</id><published>2011-07-26T11:59:00.000+01:00</published><updated>2011-07-26T11:59:19.908+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-26T11:59:19.908+01:00</app:edited><title>Nid(dbnewid) hangs</title><content type="html">I had to run nid (also known as dbnewid) on a database as part of a test refresh at the weekend. This changes the dbid of the database.&lt;br /&gt;
&lt;br /&gt;
Out of sheer laziness I ran it from with sqlplus by using the '!' host command feature.&lt;br /&gt;
&lt;br /&gt;
Nid, quite understandablly doesn't really like this - it hangs. &lt;br /&gt;
&lt;br /&gt;
I ctrl-c'd it, exited to the OS and re-ran and it worked fine.&lt;br /&gt;
&lt;br /&gt;
The 10g doc for nid is here: &lt;a href="http://download.oracle.com/docs/cd/B19306_01/server.102/b14215/dbnewid.htm"&gt;http://download.oracle.com/docs/cd/B19306_01/server.102/b14215/dbnewid.htm&lt;/a&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/qxOY/~4/8aa6lmsvrps" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5585285/posts/default/1164929310739982057?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5585285/posts/default/1164929310739982057?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/qxOY/~3/8aa6lmsvrps/niddbnewid-hangs.html" title="Nid(dbnewid) hangs" /><author><name>mattypenny</name><uri>http://www.blogger.com/profile/16749912786297665292</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_PZgYw--7Cl4/S3VORdexutI/AAAAAAAAAIM/q3TOEMYGkHc/S220/Matt+Penny.JPG" /></author><feedburner:origLink>http://mattypenny.blogspot.com/2011/07/niddbnewid-hangs.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUADRH49fSp7ImA9WxFRE0g.&quot;"><id>tag:blogger.com,1999:blog-5585285.post-2261653679951045536</id><published>2010-04-27T09:42:00.000+01:00</published><updated>2010-04-27T09:42:55.065+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-04-27T09:42:55.065+01:00</app:edited><title>OT: A bit of politics....</title><content type="html">As some will know, there's a General Election happening in the UK next month. It's likely to be the closest for some time.&lt;br /&gt;
&lt;br /&gt;
Anyhow, on "my other blog" I've managed to get the three main candidates for my local constituency, which is Salisbury in Wiltshire, to do an email Question and Answer thing. Some of the questions were dreamt up by me, and others by local Twitterers.&lt;br /&gt;
&lt;br /&gt;
If you're interested the posts are: &lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="http://salisburyandstonehenge.net/salisbury-news/john-glen-conservative-candidate"&gt;John  Glen, Conservative candidate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://salisburyandstonehenge.net/salisbury-news/nick-radford-liberal-democrat-candidate"&gt;Nick  Radford, Liberal Democrat candidate&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://salisburyandstonehenge.net/salisbury-news/tom-gann-labour-candidate-q-and-a"&gt;Tom  Gann, Labour candidate&lt;/a&gt;&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;Back to techie stuff with the next post!&lt;img src="http://feeds.feedburner.com/~r/blogspot/qxOY/~4/gyqKhvTorCI" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5585285/posts/default/2261653679951045536?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5585285/posts/default/2261653679951045536?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/qxOY/~3/gyqKhvTorCI/ot-bit-of-politics.html" title="OT: A bit of politics...." /><author><name>mattypenny</name><uri>http://www.blogger.com/profile/16749912786297665292</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_PZgYw--7Cl4/S3VORdexutI/AAAAAAAAAIM/q3TOEMYGkHc/S220/Matt+Penny.JPG" /></author><feedburner:origLink>http://mattypenny.blogspot.com/2010/04/ot-bit-of-politics.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEMASXo8fSp7ImA9WxFSFkQ.&quot;"><id>tag:blogger.com,1999:blog-5585285.post-7625910857592162284</id><published>2010-04-19T16:45:00.003+01:00</published><updated>2010-04-19T16:54:08.475+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-04-19T16:54:08.475+01:00</app:edited><title>Mucking about with analytic functions</title><content type="html">I've never really used the analytic functions in anger, so consequently I don't really have the skills at my fingertips. By way of re-learning them (using &lt;a href="http://www.amazon.co.uk/gp/product/1861004826?ie=UTF8&amp;amp;tag=httppopplayli-21&amp;amp;linkCode=as2&amp;amp;camp=1634&amp;amp;creative=19450&amp;amp;creativeASIN=1861004826"&gt;this old-ish book by Tom Kyte&lt;/a&gt;&lt;img alt="" border="0" height="1" src="http://www.assoc-amazon.co.uk/e/ir?t=httppopplayli-21&amp;amp;l=as2&amp;amp;o=2&amp;amp;a=1861004826" style="border: medium none ! important; margin: 0px ! important;" width="1" /&gt;) I've been playing about with a list of English Premiership scorers.&lt;br /&gt;
&lt;br /&gt;
The table is:&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
&lt;span style="font-size: xx-small;"&gt;SQL&amp;gt; desc goals&lt;br /&gt;
Name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Null?&amp;nbsp;&amp;nbsp;&amp;nbsp; Type&lt;br /&gt;
----------------------------------------- -------- ------------&lt;br /&gt;
&lt;br /&gt;
DIVISION&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NOT NULL VARCHAR2(20)&lt;br /&gt;
END_DATE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NOT NULL DATE&lt;br /&gt;
PLAYER&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NOT NULL VARCHAR2(40)&lt;br /&gt;
TEAM&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; VARCHAR2(20)&lt;br /&gt;
GOALS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NUMBER&lt;/span&gt; &lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
The third highest scorer for each team, should you want to know that bit of information, is given by:&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
select * &lt;br /&gt;
from (select team, player, goals, &lt;br /&gt;
row_number() over (partition by team order by goals desc) ranking&lt;br /&gt;
from goals)&lt;br /&gt;
where ranking = 3&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
Output is:&lt;br /&gt;
&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;
&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;TEAM&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PLAYER&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GOALS RANKING&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;---------------- --------------------- ----- -------&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Arsenal&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Robin van Persie&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 7&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Aston Villa&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Ashley Young&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Birmingham&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Sebastian Larsson&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Blackburn&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Morten Gamst Pedersen&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Bolton&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Kevin Davies&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Burnley&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; David Nugent&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 6&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Chelsea&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Florent Malouda&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 11&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Everton&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Mikel Arteta&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Fulham&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Damien Duff&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 6&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Hull City&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Deiberson Geovanni&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Liverpool&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Steven Gerrard&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 7&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&lt;/span&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Man Utd&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Antonio Valencia&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Manchester City&amp;nbsp; Craig Bellamy&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 9&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Portsmouth&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Nadir Belhadj&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Stoke City&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Ricardo Fuller&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Sunderland&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Fraizer Campbell&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Tottenham&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Niko Kranjcar&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 6&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;West Ham Utd&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Guillermo Franco&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Wigan Athletic&amp;nbsp;&amp;nbsp; Paul Scharner&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Wolves&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Matthew Jarvis&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;&lt;/code&gt;&lt;br /&gt;
To further develop this query to return a pivot table, you use a decode on the artificial 'ranking' field, as follows:&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
select team,&lt;br /&gt;
max(decode(ranking, 1, player, null)) golden_boot,&lt;br /&gt;
max(decode(ranking, 2, player, null)) silver_boot,&lt;br /&gt;
max(decode(ranking, 3, player, null)) bronze_boot&lt;br /&gt;
from&lt;br /&gt;
(select team, player, goals, row_number()&lt;br /&gt;
over (partition by team order by goals desc) ranking&lt;br /&gt;
from goals)&lt;br /&gt;
where ranking &amp;lt;= 3 group by team &lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
This returns:&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
&lt;span style="font-size: xx-small;"&gt;SQL&amp;gt; /&lt;br /&gt;
&lt;br /&gt;
TEAM&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; GOLDEN_BOOT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SILVER_BOOT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; BRONZE_BOOT&lt;br /&gt;
---------------- ------------------- ------------------- -------------------&lt;br /&gt;
Arsenal&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Francesc Fabregas&amp;nbsp;&amp;nbsp; Andrey Arshavin&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Robin van Persie&lt;br /&gt;
Aston Villa&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Gabriel Agbonlahor&amp;nbsp; John Carew&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Ashley Young&lt;br /&gt;
Birmingham&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Cameron Jerome&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Lee Bowyer&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Sebastian Larsson&lt;br /&gt;
Blackburn&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; David Dunn&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Jason Roberts&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Morten Gamst Peders&lt;br /&gt;
Bolton&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Matthew Taylor&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Ivan Klasnic&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Kevin Davies&lt;br /&gt;
Burnley&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Steven Fletcher&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Graham Alexander&amp;nbsp;&amp;nbsp;&amp;nbsp; David Nugent&lt;br /&gt;
Chelsea&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Didier Drogba&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Frank Lampard&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Florent Malouda&lt;br /&gt;
Everton&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Louis Saha&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Tim Cahill&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Mikel Arteta&lt;br /&gt;
Fulham&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Bobby Zamora&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Clinton Dempsey&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Damien Duff&lt;br /&gt;
Hull City&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Stephen Hunt&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Jimmy Bullard&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Deiberson Geovanni&lt;br /&gt;
Liverpool&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Fernando Torres&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dirk Kuyt&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Steven Gerrard&lt;br /&gt;
Man Utd&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Wayne Rooney&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Dimitar Berbatov&amp;nbsp;&amp;nbsp;&amp;nbsp; Antonio Valencia&lt;br /&gt;
Manchester City&amp;nbsp; Carlos Tevez&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Emmanuel Adebayor&amp;nbsp;&amp;nbsp; Craig Bellamy&lt;br /&gt;
Portsmouth&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Aruna Dindane&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Frederic Piquionne&amp;nbsp; Nadir Belhadj&lt;br /&gt;
Stoke City&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Matthew Etherington Tuncay Sanli&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Ricardo Fuller&lt;br /&gt;
Sunderland&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Darren Bent&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Kenwyne Jones&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Fraizer Campbell&lt;br /&gt;
Tottenham&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Jermain Defoe&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Peter Crouch&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Niko Kranjcar&lt;br /&gt;
West Ham Utd&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Carlton Cole&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Alessandro Diamanti Guillermo Franco&lt;br /&gt;
Wigan Athletic&amp;nbsp;&amp;nbsp; Hugo Rodallega&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Charles N'Zogbia&amp;nbsp;&amp;nbsp;&amp;nbsp; Paul Scharner&lt;br /&gt;
Wolves&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Kevin Doyle&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Jody Craddock&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Matthew Jarvis&lt;br /&gt;
&lt;br /&gt;
20 rows selected.&lt;/span&gt;  &lt;br /&gt;
&lt;/code&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/qxOY/~4/gdyC7ZYTZ5c" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5585285/posts/default/7625910857592162284?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5585285/posts/default/7625910857592162284?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/qxOY/~3/gdyC7ZYTZ5c/mucking-about-with-analytic-functions.html" title="Mucking about with analytic functions" /><author><name>mattypenny</name><uri>http://www.blogger.com/profile/16749912786297665292</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_PZgYw--7Cl4/S3VORdexutI/AAAAAAAAAIM/q3TOEMYGkHc/S220/Matt+Penny.JPG" /></author><feedburner:origLink>http://mattypenny.blogspot.com/2010/04/mucking-about-with-analytic-functions.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DU8NSX4yfip7ImA9WxBaGUs.&quot;"><id>tag:blogger.com,1999:blog-5585285.post-6574019952523177390</id><published>2010-03-30T17:46:00.002+01:00</published><updated>2010-03-30T17:51:38.096+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-03-30T17:51:38.096+01:00</app:edited><title>Using wget, sed and gawk to get a description of the DBA_ views</title><content type="html">I'm studying for Oracle certification, and I thought it would be handy to get a cribsheet list of all of the DBA_ views and what they are for.&lt;br /&gt;
&lt;br /&gt;
Rather than create this manually, I did the following.&lt;br /&gt;
&lt;br /&gt;
Downloaded the top level contents&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
wget -r -l1 -k http://download.oracle.com/docs/cd/B19306_01/server.102/b14237/toc.htm&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
wget gets pages from the web. '-r' says to also retrieve links. '-l1' says to only get one level of links (i.e. get the pages linked to from the first page, but don't get the pages linked to by them). '-k' says to edit the internal links so you can go from one page to another on the downloaded copy.&lt;br /&gt;
&lt;br /&gt;
Next I run the following from the dos prompt:&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
findstr /S DBA_ *.htm |^&lt;br /&gt;
findstr "\&lt;p\&gt;"|^&lt;br /&gt;
sed -e "s/&lt;code&gt;/~/" -e "s/&lt;\/code&gt;/~/" |^&lt;br /&gt;
gawk -F~ "!/same as those/{print $2 \"~\" $3,$4,$5,$6,$7,$8,$9}" |^&lt;br /&gt;
sed -e  "s/&lt;[^&gt;]*&gt;//g" |^&lt;br /&gt;
sort -u&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
I'll go through that line by line.&lt;br /&gt;
&lt;br /&gt;
Find occurences of the string DBA_ in any htm files. The /S on findstr makes it search subdirectories too&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
findstr /S DBA_ *.htm |^&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
Look for the html paragraph tag. This just cut out some of the occurences of DBA_ where it isn't the descriptive line I want&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
findstr "\&lt;p\&gt;"|^&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
This sed command replaces both the code begin and end tags with a '~' (tilda). There are probably ways of avoiding this step by making the following awk do more work, but I don't how!. The 'sed' executable is from the unxutils package.&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
sed -e "s/&lt;code&gt;/~/" -e "s/&lt;\/code&gt;/~/" |^&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
'Same as those' is just another filter. The second field is the name of the DBA_ view.&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
gawk -F~ "!/same as those/{print $2 \"~\" $3,$4,$5,$6,$7,$8,$9}" |^&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
This bit of sed removes html tags from the text. To be honest I'm not entirely sure how it works but I can see that it does. When I tried to sed it myself I found that if there were two tags on a line it would remove both the tages and anything between them. I found the code here: &lt;a href="http://www.tech-recipes.com/rx/330/remove-html-tags-from-a-file/"&gt;remove html tags from a file | UNIX | Tech-Recipes&lt;/a&gt;. One day I'll get out my sed book and work it out !&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
sed -e  "s/&lt;[^&gt;]*&gt;//g" |^&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
This is the Unix sort, also from unxutils.&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
sort -u&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
The output from all of this is like this:&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
DBA_TABLES~ describes all relational tables in the database.&lt;br /&gt;
DBA_TABLESPACE_GROUPS~ describes all tablespace groups in the database.&lt;br /&gt;
DBA_TABLESPACES~ describes all tablespaces in the database.&lt;br /&gt;
DBA_TEMP_FILES~ describes all temporary files (tempfiles) in the database.&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
It needed a little bit of cleaning up. I would post the whole list, but I would assume Oracle wouldn't be pleased. I am assuming that the wget is OK - in principle it's little different to browsing.&lt;br /&gt;
&lt;br /&gt;
You can adapt the technique for the initialization parameters etc&lt;img src="http://feeds.feedburner.com/~r/blogspot/qxOY/~4/_722jOupUPo" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5585285/posts/default/6574019952523177390?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5585285/posts/default/6574019952523177390?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/qxOY/~3/_722jOupUPo/using-wget-sed-and-gawk-to-get.html" title="Using wget, sed and gawk to get a description of the DBA_ views" /><author><name>mattypenny</name><uri>http://www.blogger.com/profile/16749912786297665292</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_PZgYw--7Cl4/S3VORdexutI/AAAAAAAAAIM/q3TOEMYGkHc/S220/Matt+Penny.JPG" /></author><feedburner:origLink>http://mattypenny.blogspot.com/2010/03/using-wget-sed-and-gawk-to-get.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0ABQnk4eCp7ImA9WxBUEE8.&quot;"><id>tag:blogger.com,1999:blog-5585285.post-7731799171087321337</id><published>2010-02-24T16:42:00.000Z</published><updated>2010-02-24T16:42:33.730Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-02-24T16:42:33.730Z</app:edited><title>ORA-01552: cannot use system rollback segment.....</title><content type="html">Another post that's unlikely to be all that useful....but you never know.&lt;br /&gt;
&lt;br /&gt;
As per a couple of my previous posts, I'm re-doing my Oracle certification from the ground up instead of doing the 10G new features only.&lt;br /&gt;
&lt;br /&gt;
I'm using &lt;a href="http://www.amazon.co.uk/gp/product/0072257903?ie=UTF8&amp;tag=httppopplayli-21&amp;linkCode=as2&amp;camp=1634&amp;creative=19450&amp;creativeASIN=0072257903"&gt;Oracle Database 10g OCP Certification by Damir Bersinic and John Watson&lt;/a&gt;&lt;img src="http://www.assoc-amazon.co.uk/e/ir?t=httppopplayli-21&amp;l=as2&amp;o=2&amp;a=0072257903" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /&gt;, which from the bits I've read so far, I would recommend.&lt;br /&gt;
&lt;br /&gt;
Anyhow, the book says: &lt;blockquote&gt;If you are using UNDO_MANAGEMENT=AUTO, you must also specify UNDO_TABLESPACE.&lt;/blockquote&gt;&lt;br /&gt;
I was curious to see how this was enforced, in particular whether you would get an error if you tried to ALTER SYSTEM to nullify the undo tablespace parameter. You don't - you get an error when you try to use the undo, as follows:&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;SQL&gt; @sparam&lt;br /&gt;
Enter value for parameter_name: UNDO&lt;br /&gt;
old   5: where name like lower('%&amp;parameter_name%')&lt;br /&gt;
new   5: where name like lower('%UNDO%')&lt;br /&gt;
undo_management                AUTO                                          F&lt;br /&gt;
undo_retention                 900                                           T&lt;br /&gt;
undo_tablespace                UNDOTBS1                                      F&lt;br /&gt;
&lt;br /&gt;
SQL&gt; alter system set undo_tablespace='' scope =both;&lt;br /&gt;
&lt;br /&gt;
System altered.&lt;br /&gt;
&lt;br /&gt;
SQL&gt; delete from scott.emp;&lt;br /&gt;
delete from scott.emp&lt;br /&gt;
                  *&lt;br /&gt;
ERROR at line 1:&lt;br /&gt;
ORA-01552: cannot use system rollback segment for non-system tablespace 'USERS'&lt;br /&gt;
&lt;/code&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/qxOY/~4/hXBhziWnXEo" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5585285/posts/default/7731799171087321337?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5585285/posts/default/7731799171087321337?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/qxOY/~3/hXBhziWnXEo/ora-01552-cannot-use-system-rollback.html" title="ORA-01552: cannot use system rollback segment....." /><author><name>mattypenny</name><uri>http://www.blogger.com/profile/16749912786297665292</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_PZgYw--7Cl4/S3VORdexutI/AAAAAAAAAIM/q3TOEMYGkHc/S220/Matt+Penny.JPG" /></author><feedburner:origLink>http://mattypenny.blogspot.com/2010/02/ora-01552-cannot-use-system-rollback.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEEAQn48fSp7ImA9WxBWGUQ.&quot;"><id>tag:blogger.com,1999:blog-5585285.post-2892402488013593575</id><published>2010-02-12T12:32:00.009Z</published><updated>2010-02-12T16:37:23.075Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-02-12T16:37:23.075Z</app:edited><title>When does the 'shutdown database' trigger fire?</title><content type="html">The chances of this being useful to anybody are fairly remote, but I was reading through my &lt;a href="http://www.amazon.co.uk/gp/product/0072257903?ie=UTF8&amp;amp;tag=httppopplayli-21&amp;amp;linkCode=as2&amp;amp;camp=1634&amp;amp;creative=19450&amp;amp;creativeASIN=0072257903"&gt;'Bumper Book of Oracle Certification'&lt;/a&gt;&lt;img alt="" border="0" height="1" src="http://www.assoc-amazon.co.uk/e/ir?t=httppopplayli-21&amp;amp;l=as2&amp;amp;o=2&amp;amp;a=0072257903" style="border: medium none ! important; margin: 0px ! important;" width="1" /&gt; and thought I'd check in what circumstances the 'before shutdown' trigger fires. &lt;br /&gt;
&lt;br /&gt;
This summarizes what I found:&lt;br /&gt;
&lt;br /&gt;
&lt;table&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;Shutdown normal&lt;/td&gt;&lt;td&gt;  &lt;/td&gt;&lt;td&gt;Yes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Shutdown immediate&lt;/td&gt;&lt;td&gt;  &lt;/td&gt;&lt;td&gt;Yes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Shutdown transactional&lt;/td&gt;&lt;td&gt;  &lt;/td&gt;&lt;td&gt;Yes&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Shutdown abort&lt;/td&gt;&lt;td&gt;  &lt;/td&gt;&lt;td&gt;No&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Shutdown of a startup-nomounted database   &lt;/td&gt;&lt;td&gt;  &lt;/td&gt;&lt;td&gt;No&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Shutdown of a mounted database&lt;/td&gt;&lt;td&gt;  &lt;/td&gt;&lt;td&gt;No&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;
To be fair, this is exactly what I would have expected. I wasn't entirely sure about shutdown immediate, but you would expect a) a trigger to only fire when the database is open and b) shutdown abort to do nothing other than shutdown.&lt;br /&gt;
&lt;br /&gt;
Demo follows&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Create a trigger&lt;/b&gt;&lt;br /&gt;
First create a table to hold the messages and a trigger&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
SQL&amp;gt; create table my_messages(message_date date, message_text varchar2(1000));&lt;br /&gt;
&lt;br /&gt;
Table created.&lt;br /&gt;
&lt;br /&gt;
SQL&amp;gt; save ctmm&lt;br /&gt;
Created file ctmm.sql&lt;br /&gt;
SQL&amp;gt; host gvim ctrbshut.sql&lt;br /&gt;
&lt;br /&gt;
SQL&amp;gt; @ctrbshut.sql&lt;br /&gt;
&lt;br /&gt;
Trigger created.&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
...where the script is&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
SQL&amp;gt; get ctrbshut.sql&lt;br /&gt;
1  create trigger before_shutdown before shutdown on database&lt;br /&gt;
2  begin&lt;br /&gt;
3    insert into my_messages(message_date, message_text)&lt;br /&gt;
4    select sysdate, 'Database shutting down' from dual;&lt;br /&gt;
5* end;&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Check the shutdown trigger works with a normal shutdown&lt;/b&gt;&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
SQL&amp;gt; set head off&lt;br /&gt;
SQL&amp;gt; col message_text format a30&lt;br /&gt;
SQL&amp;gt; select to_char(message_date, 'DD-MON-YYYY HH:MI:SS'), &lt;br /&gt;
message_text &lt;br /&gt;
from my_messages;&lt;br /&gt;
&lt;br /&gt;
no rows selected&lt;br /&gt;
&lt;br /&gt;
SQL&amp;gt; select to_char(sysdate, 'DD-MON-YYYY HH:MI:SS') from dual;&lt;br /&gt;
&lt;br /&gt;
12-FEB-2010 11:28:30&lt;br /&gt;
&lt;br /&gt;
SQL&amp;gt; shutdown&lt;br /&gt;
Database closed.&lt;br /&gt;
Database dismounted.&lt;br /&gt;
ORACLE instance shut down.&lt;br /&gt;
SQL&amp;gt; startup&lt;br /&gt;
ORACLE instance started.&lt;br /&gt;
Database mounted.&lt;br /&gt;
Database opened.&lt;br /&gt;
SQL&amp;gt; select to_char(message_date, 'DD-MON-YYYY HH:MI:SS'), &lt;br /&gt;
message_text &lt;br /&gt;
from my_messages;&lt;br /&gt;
&lt;br /&gt;
12-FEB-2010 11:29:05 Database shutting down   &amp;lt;---the shutdown normal &lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;
Does the shutdown trigger fire for a shutdown transactional?&lt;/b&gt;&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
SQL&amp;gt; select to_char(sysdate, 'DD-MON-YYYY HH:MI:SS') from dual;&lt;br /&gt;
&lt;br /&gt;
12-FEB-2010 11:30:00&lt;br /&gt;
&lt;br /&gt;
SQL&amp;gt; shutdown transactional&lt;br /&gt;
Database closed.&lt;br /&gt;
Database dismounted.&lt;br /&gt;
ORACLE instance shut down.&lt;br /&gt;
SQL&amp;gt; startup&lt;br /&gt;
ORACLE instance started.&lt;br /&gt;
Database mounted.&lt;br /&gt;
Database opened.&lt;br /&gt;
&lt;br /&gt;
SQL&amp;gt; select to_char(message_date, 'DD-MON-YYYY HH:MI:SS'), &lt;br /&gt;
message_text &lt;br /&gt;
from   my_messages;&lt;br /&gt;
12-FEB-2010 11:29:05 Database shutting down   &amp;lt;---the shutdown normal &lt;br /&gt;
12-FEB-2010 11:30:25 Database shutting down   &amp;lt;---the shutdown transactional &lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;
Does the shutdown trigger fire for a shutdown immediate?&lt;/b&gt;&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
SQL&amp;gt; select to_char(sysdate, 'DD-MON-YYYY HH:MI:SS') from dual;&lt;br /&gt;
&lt;br /&gt;
12-FEB-2010 11:31:44&lt;br /&gt;
&lt;br /&gt;
SQL&amp;gt; shutdown immediate&lt;br /&gt;
Database closed.&lt;br /&gt;
Database dismounted.&lt;br /&gt;
ORACLE instance shut down.&lt;br /&gt;
SQL&amp;gt; startup&lt;br /&gt;
ORACLE instance started.&lt;br /&gt;
Database mounted.&lt;br /&gt;
Database opened.&lt;br /&gt;
SQL&amp;gt; select to_char(message_date, 'DD-MON-YYYY HH:MI:SS'), &lt;br /&gt;
message_text &lt;br /&gt;
from   my_messages;&lt;br /&gt;
12-FEB-2010 11:32:05 Database shutting down   &amp;lt;---the shutdown immediate &lt;br /&gt;
12-FEB-2010 11:29:05 Database shutting down   &amp;lt;---the shutdown normal &lt;br /&gt;
12-FEB-2010 11:30:25 Database shutting down   &amp;lt;---the shutdown transactional &lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;
Does the shutdown trigger fire for a shutdown abort?&lt;/b&gt;&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
SQL&amp;gt; select to_char(sysdate, 'DD-MON-YYYY HH:MI:SS') from dual;&lt;br /&gt;
&lt;br /&gt;
12-FEB-2010 11:32:52&lt;br /&gt;
&lt;br /&gt;
SQL&amp;gt; shutdown abort&lt;br /&gt;
ORACLE instance shut down.&lt;br /&gt;
SQL&amp;gt; startup&lt;br /&gt;
ORACLE instance started.&lt;br /&gt;
Database mounted.&lt;br /&gt;
Database opened.&lt;br /&gt;
SQL&amp;gt; select to_char(message_date, 'DD-MON-YYYY HH:MI:SS'), &lt;br /&gt;
message_text &lt;br /&gt;
from   my_messages;&lt;br /&gt;
12-FEB-2010 11:32:05 Database shutting down   &amp;lt;---the shutdown immediate &lt;br /&gt;
12-FEB-2010 11:29:05 Database shutting down   &amp;lt;---the shutdown normal &lt;br /&gt;
12-FEB-2010 11:30:25 Database shutting down   &amp;lt;---the shutdown transactional &lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
No!&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;
Shutdown to do a startup mount&lt;/b&gt;&lt;br /&gt;
This isn't relevant to the discussion of the shutdown trigger - I did a shutdown here just to get the database down and then up to a nomount state&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
SQL&amp;gt; select to_char(sysdate, 'DD-MON-YYYY HH:MI:SS') from dual;&lt;br /&gt;
&lt;br /&gt;
12-FEB-2010 11:34:23&lt;br /&gt;
&lt;br /&gt;
SQL&amp;gt; shutdown&lt;br /&gt;
Database closed.&lt;br /&gt;
Database dismounted.&lt;br /&gt;
ORACLE instance shut down.&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;
Does the shutdown trigger fire if the database is shutdown from a nomount or mounted state?&lt;/b&gt;&lt;br /&gt;
In this passage, I do a startup nomount and shutdown, then a startup mount and shutdown.&lt;br /&gt;
&lt;br /&gt;
The trigger does not fire.&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
SQL&amp;gt; startup nomount&lt;br /&gt;
ORACLE instance started.&lt;br /&gt;
&lt;br /&gt;
SQL&amp;gt; select to_char(sysdate, 'DD-MON-YYYY HH:MI:SS') from dual;&lt;br /&gt;
&lt;br /&gt;
12-FEB-2010 11:35:15&lt;br /&gt;
&lt;br /&gt;
SQL&amp;gt; shutdown&lt;br /&gt;
ORA-01507: database not mounted&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
ORACLE instance shut down.&lt;br /&gt;
SQL&amp;gt; startup mount&lt;br /&gt;
ORACLE instance started.&lt;br /&gt;
Database mounted.&lt;br /&gt;
SQL&amp;gt; select to_char(sysdate, 'DD-MON-YYYY HH:MI:SS') from dual;&lt;br /&gt;
&lt;br /&gt;
12-FEB-2010 11:36:16&lt;br /&gt;
&lt;br /&gt;
SQL&amp;gt; shutdown&lt;br /&gt;
ORA-01109: database not open&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Database dismounted.&lt;br /&gt;
ORACLE instance shut down.&lt;br /&gt;
SQL&amp;gt; startup&lt;br /&gt;
ORACLE instance started.&lt;br /&gt;
Database mounted.&lt;br /&gt;
Database opened.&lt;br /&gt;
SQL&amp;gt; select to_char(message_date, 'DD-MON-YYYY HH:MI:SS'), &lt;br /&gt;
message_text &lt;br /&gt;
from   my_messages;&lt;br /&gt;
12-FEB-2010 11:32:05 Database shutting down   &amp;lt;---the shutdown immediate &lt;br /&gt;
12-FEB-2010 11:29:05 Database shutting down   &amp;lt;---the shutdown normal &lt;br /&gt;
12-FEB-2010 11:30:25 Database shutting down   &amp;lt;---the shutdown transactional&lt;br /&gt;
12-FEB-2010 11:34:32 Database shutting down   &amp;lt;---from the 2nd normal shutdown  SQL&amp;gt;&lt;br /&gt;
&lt;/code&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;
The 'after shutdown' trigger&lt;/b&gt;&lt;br /&gt;
I couldn't resist seeing whether Oracle would let me create an 'after shutdown' trigger. I was pleased to see there's a special error message for it :)&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;
SQL&amp;gt; create trigger after_shutdown after shutdown on database&lt;br /&gt;
2  begin&lt;br /&gt;
3    insert into my_messages(message_date, message_text)&lt;br /&gt;
4    select sysdate, 'Database shutting down' from dual;&lt;br /&gt;
5  end;&lt;br /&gt;
6  /&lt;br /&gt;
create trigger after_shutdown after shutdown on database&lt;br /&gt;
*&lt;br /&gt;
ERROR at line 1:&lt;br /&gt;
ORA-30501: instance shutdown triggers cannot have AFTER type&lt;br /&gt;
&lt;/code&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/qxOY/~4/WdYueIXbHZ8" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5585285/posts/default/2892402488013593575?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5585285/posts/default/2892402488013593575?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/qxOY/~3/WdYueIXbHZ8/when-does-shutdown-database-trigger.html" title="When does the 'shutdown database' trigger fire?" /><author><name>mattypenny</name><uri>http://www.blogger.com/profile/16749912786297665292</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_PZgYw--7Cl4/S3VORdexutI/AAAAAAAAAIM/q3TOEMYGkHc/S220/Matt+Penny.JPG" /></author><feedburner:origLink>http://mattypenny.blogspot.com/2010/02/when-does-shutdown-database-trigger.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0MAQng4eip7ImA9WxBWGUo.&quot;"><id>tag:blogger.com,1999:blog-5585285.post-88273083697361555</id><published>2010-02-05T11:44:00.003Z</published><updated>2010-02-12T12:57:23.632Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-02-12T12:57:23.632Z</app:edited><title>10G Oracle certification</title><content type="html">I'm studying for my 10G certification, and to add a bit of variety I thought it would be worth typing up some odd bits and pieces here.&lt;br /&gt;
&lt;br /&gt;
I originally did Oracle certification for version 7.3, when you had to do 4 exams.&lt;br /&gt;
&lt;br /&gt;
Since then, I've always done the upgrade exams. I found this very useful in that you have to learn all of the new features - I tend to find that otherwise I concentrate only on the things that I find interesting or useful &lt;i&gt;at the time.&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
Anyhow, this time I've taken a different tack - I'm doing the two exams which would certify you as a DBA 'from scratch'.&lt;br /&gt;
&lt;br /&gt;
A couple of reasons for this:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;it makes a change&lt;/li&gt;
&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;I did a 10G New Features course back in 2008. That, and the passage of time, mean that I think I've got a good enough grasp on the new features&lt;/li&gt;
&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;I thought there would be some value in going 'back to basics' - to revisiting some of the theory I may have forgotten over all these long years of practice :)&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
I'm using the book below - it seems quite good so far:&lt;br /&gt;
&lt;a href="http://www.amazon.co.uk/gp/product/0072257903?ie=UTF8&amp;tag=httppopplayli-21&amp;linkCode=as2&amp;camp=1634&amp;creative=19450&amp;creativeASIN=0072257903"&gt;Bumper Book of Oracle Certification&lt;/a&gt;&lt;img src="http://www.assoc-amazon.co.uk/e/ir?t=httppopplayli-21&amp;l=as2&amp;o=2&amp;a=0072257903" width="1" height="1" border="0" alt="" style="border:none !important; margin:0px !important;" /&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/qxOY/~4/kQVZwktzr00" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5585285/posts/default/88273083697361555?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5585285/posts/default/88273083697361555?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/qxOY/~3/kQVZwktzr00/10g-oracle-certification.html" title="10G Oracle certification" /><author><name>mattypenny</name><uri>http://www.blogger.com/profile/16749912786297665292</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_PZgYw--7Cl4/S3VORdexutI/AAAAAAAAAIM/q3TOEMYGkHc/S220/Matt+Penny.JPG" /></author><feedburner:origLink>http://mattypenny.blogspot.com/2010/02/10g-oracle-certification.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0cCSXkyeCp7ImA9WxBWGUo.&quot;"><id>tag:blogger.com,1999:blog-5585285.post-4750750956538935261</id><published>2009-03-01T16:27:00.000Z</published><updated>2010-02-12T11:44:28.790Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-02-12T11:44:28.790Z</app:edited><title>Convert an html table to excel spreadsheet</title><content type="html">&lt;span style="font-family: courier new;"&gt;A quick and dirty post for a quick and dirty technique that I used to get the Oracle CPU Database Risk Matrix into a spreadsheet. This won't always work (the html table I was interested in happened to have the data in the same line of html as the tag), but it's a start.&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-family: courier new;"&gt;- Do 'View Source' to get the html for the table.&lt;/span&gt;  &lt;span style="font-family: courier new;"&gt;- Find the table&lt;/span&gt;  &lt;span style="font-family: courier new;"&gt;- Cut and paste the table into a text file. I called mine "risk_matrix_raw.txt"&lt;/span&gt;  &lt;span style="font-family: courier new;"&gt;- Create an awk file (mine was called risk_matrix.awk) with the following lines:&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt; &lt;a href="http://2.bp.blogspot.com/_PZgYw--7Cl4/SRBMssS9hlI/AAAAAAAAAB0/0FsRHK_Dx-c/s1600-h/awk+file+to+convert+html+table+to+csv.bmp" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" style="font-family: courier new;"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5264792295084754514" src="http://2.bp.blogspot.com/_PZgYw--7Cl4/SRBMssS9hlI/AAAAAAAAAB0/0FsRHK_Dx-c/s320/awk+file+to+convert+html+table+to+csv.bmp" style="cursor: pointer; height: 27px; width: 198px;" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="font-family: courier new;"&gt;- awk the text file, then pipe into sed to remove some of the tags&lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;a href="http://3.bp.blogspot.com/_PZgYw--7Cl4/SRBPl7BZQXI/AAAAAAAAACc/IdpEeNACQpg/s1600-h/sed+commmands+to+convert+awked+html+table+to+csv.bmp" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5264795477313405298" src="http://3.bp.blogspot.com/_PZgYw--7Cl4/SRBPl7BZQXI/AAAAAAAAACc/IdpEeNACQpg/s320/sed+commmands+to+convert+awked+html+table+to+csv.bmp" style="cursor: pointer; height: 43px; width: 331px;" /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;xmp style="font-family: courier new;"&gt;&lt;/xmp&gt;&lt;span style="font-family: courier new;"&gt;- Open the .txt file in Excel. When I did this, Excel asks whether its a fixed width or a delimited file. I specified that the file was delimited with a '~' and Excel opened it.&lt;/span&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/qxOY/~4/3tzFd3Lh_T8" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5585285/posts/default/4750750956538935261?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5585285/posts/default/4750750956538935261?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/qxOY/~3/3tzFd3Lh_T8/convert-html-table-to-excel-spreadsheet.html" title="Convert an html table to excel spreadsheet" /><author><name>mattypenny</name><uri>http://www.blogger.com/profile/16749912786297665292</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_PZgYw--7Cl4/S3VORdexutI/AAAAAAAAAIM/q3TOEMYGkHc/S220/Matt+Penny.JPG" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_PZgYw--7Cl4/SRBMssS9hlI/AAAAAAAAAB0/0FsRHK_Dx-c/s72-c/awk+file+to+convert+html+table+to+csv.bmp" height="72" width="72" /><feedburner:origLink>http://mattypenny.blogspot.com/2008/11/convert-html-table-to-excel-spreadsheet.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkADQ38_cCp7ImA9WxZWE0w.&quot;"><id>tag:blogger.com,1999:blog-5585285.post-8266731179137069853</id><published>2008-03-12T10:35:00.002Z</published><updated>2008-03-12T10:46:12.148Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-03-12T10:46:12.148Z</app:edited><title>Changing the DOS command prompt</title><content type="html">All the options for changing the command prompt are, logically enough, shown by:&lt;br /&gt;&lt;br /&gt;prompt /?&lt;br /&gt;&lt;br /&gt;My current favorite, especially when my current directory path is quite long is:&lt;br /&gt;&lt;br /&gt;prompt $P$_$T$G&lt;br /&gt;&lt;br /&gt;$P is the path&lt;br /&gt;$_ is a line feed&lt;br /&gt;$T is the time&lt;br /&gt;$G is a '&gt;'&lt;br /&gt;&lt;br /&gt;So my current command prompt would be, for example:&lt;br /&gt;&lt;br /&gt;D:\oracle\product\10.2.0\db_1\OPatch\opatchprereqs\oui&lt;br /&gt;19:44:36.95&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/qxOY/~4/oqGDEt4zTh0" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5585285/posts/default/8266731179137069853?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5585285/posts/default/8266731179137069853?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/qxOY/~3/oqGDEt4zTh0/changing-dos-command-prompt.html" title="Changing the DOS command prompt" /><author><name>mattypenny</name><uri>http://www.blogger.com/profile/16749912786297665292</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_PZgYw--7Cl4/S3VORdexutI/AAAAAAAAAIM/q3TOEMYGkHc/S220/Matt+Penny.JPG" /></author><feedburner:origLink>http://mattypenny.blogspot.com/2008/03/changing-dos-command-prompt.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0QDRX0_fCp7ImA9WxdbFEk.&quot;"><id>tag:blogger.com,1999:blog-5585285.post-464572669646156434</id><published>2008-02-27T10:49:00.004Z</published><updated>2008-08-11T10:02:54.344+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-08-11T10:02:54.344+01:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="DOS" /><title>Creating a timestamp string in DOS</title><content type="html">I found a better way of doing this using the DOS variables %DATE% and %TIME%&lt;br /&gt;&lt;br /&gt;To extract the elements individually you can do:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-family:courier new;"&gt;   set DD=%DATE:~0,2%&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;   set MM=%DATE:~3,2%&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;   set YYYY=%DATE:~6,4%&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;   set HH=%TIME:~0,2%&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;   set MI=%TIME:~3,2%&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;   set SS=%TIME:~6,2%&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;....or to do it in one hit:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-family:courier new;"&gt;   set TIMESTAMP=%DATE:~6,4%%DATE:~3,2%%DATE:~0,2%^&lt;br /&gt;%TIME:~0,2%%TIME:~3,2%%TIME:~6,2%&lt;br /&gt;echo %TIMESTAMP%&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;TIMESTAMP will then look like this:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;   20080811100011&lt;br /&gt;&lt;br /&gt;Note: I only just noticed, somewhat shamefully, that if you do this before 10:00am, you get a space in the timestamp, because the hour is represented as ' 9', rather than '09'. When I figure out a workaround I'll post it.&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/qxOY/~4/Le0w08SUvdw" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5585285/posts/default/464572669646156434?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5585285/posts/default/464572669646156434?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/qxOY/~3/Le0w08SUvdw/creating-timestamp-string-in-dos.html" title="Creating a timestamp string in DOS" /><author><name>mattypenny</name><uri>http://www.blogger.com/profile/16749912786297665292</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_PZgYw--7Cl4/S3VORdexutI/AAAAAAAAAIM/q3TOEMYGkHc/S220/Matt+Penny.JPG" /></author><feedburner:origLink>http://mattypenny.blogspot.com/2008/02/creating-timestamp-string-in-dos.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CE8EQnY7cSp7ImA9WxZSFUk.&quot;"><id>tag:blogger.com,1999:blog-5585285.post-8433723880118855212</id><published>2008-01-25T16:44:00.000Z</published><updated>2008-01-28T17:53:23.809Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-01-28T17:53:23.809Z</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="DOS" /><title>DOS equivalent of unix 'whence' or 'type'</title><content type="html">Found this construct looking in the help for FOR - I can't quite work out how to use it in a batch file, sadly.....&lt;br /&gt;&lt;br /&gt;for %I in ("sqlplus.exe") do echo %~$PATH:I&lt;br /&gt;&lt;br /&gt;gives&lt;br /&gt;&lt;br /&gt;D:\oracle\product\10.2.0\client_1\BIN\sqlplus.exe&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Update:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;With many thanks to my friend Dave....&lt;br /&gt;&lt;br /&gt;To create a whence.bat script, you need to have the following content:&lt;br /&gt;&lt;br /&gt;@echo off&lt;br /&gt;set TO_FIND=%1&lt;br /&gt;for %%I in ("%TO_FIND%") do echo %%~$PATH:I&lt;br /&gt;&lt;br /&gt;...then you can type, for example, 'whence sqlplus.exe' to locate sqlplus.&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/qxOY/~4/38S4feMEOlM" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5585285/posts/default/8433723880118855212?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5585285/posts/default/8433723880118855212?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/qxOY/~3/38S4feMEOlM/dos-equivalent-of-unix-whence-or-type.html" title="DOS equivalent of unix 'whence' or 'type'" /><author><name>mattypenny</name><uri>http://www.blogger.com/profile/16749912786297665292</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_PZgYw--7Cl4/S3VORdexutI/AAAAAAAAAIM/q3TOEMYGkHc/S220/Matt+Penny.JPG" /></author><feedburner:origLink>http://mattypenny.blogspot.com/2008/01/dos-equivalent-of-unix-whence-or-type.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEIDQHg9fCp7ImA9WxZSFUk.&quot;"><id>tag:blogger.com,1999:blog-5585285.post-1246735674464488995</id><published>2008-01-19T12:32:00.000Z</published><updated>2008-01-28T17:49:31.664Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-01-28T17:49:31.664Z</app:edited><title>opatch error: Perl lib version (v5.8.3) doesn't match executable version (v5.6.1) at x:\oracle...</title><content type="html">Got the following error:&lt;br /&gt;&lt;br /&gt;C:\oracle\ora92\OPatch&gt;perl opatch.pl version&lt;br /&gt;Perl lib version (v5.8.3) doesn't match executable version (v5.6.1) at x:\oracle&lt;br /&gt;\10.2.0\perl\5.8.3\lib/MSWin32-x86-multi-thread/Config.pm line 32.&lt;br /&gt;Compilation failed in require at x:\oracle\10.2.0\perl\5.8.3\lib/MSWin32-x86-mul&lt;br /&gt;ti-thread/lib.pm line 6.&lt;br /&gt;BEGIN failed--compilation aborted at x:\oracle\10.2.0\perl\5.8.3\lib/MSWin32-x86&lt;br /&gt;-multi-thread/lib.pm line 6.&lt;br /&gt;Compilation failed in require at opatch.pl line 88.&lt;br /&gt;BEGIN failed--compilation aborted at opatch.pl line 88.&lt;br /&gt;&lt;br /&gt;Kind of obvious, but the fix here is to set your PERL5LIB variable correctly...&lt;br /&gt;&lt;br /&gt;C:\oracle\ora92\OPatch&gt;set PERL5LIB=C:\perl\lib&lt;br /&gt;C:\oracle\ora92\OPatch&gt;perl opatch.pl version&lt;br /&gt;&lt;br /&gt;Oracle Interim Patch Installer version 1.0.0.0.57&lt;br /&gt;Copyright (c) 2007 Oracle Corporation. All Rights Reserved..&lt;br /&gt;&lt;br /&gt;We recommend you refer to the OPatch documentation under&lt;br /&gt;OPatch/docs for usage reference. We also recommend using&lt;br /&gt;the latest OPatch version. For the latest OPatch version&lt;br /&gt;and other support related issues, please refer to document&lt;br /&gt;293369.1 which is viewable from metalink.oracle.com&lt;br /&gt;&lt;br /&gt;OPatch Version: 1.0.0.0.57&lt;img src="http://feeds.feedburner.com/~r/blogspot/qxOY/~4/ZUzr0K4R5L8" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5585285/posts/default/1246735674464488995?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5585285/posts/default/1246735674464488995?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/qxOY/~3/ZUzr0K4R5L8/optach-error-perl-lib-version-v583.html" title="opatch error: Perl lib version (v5.8.3) doesn't match executable version (v5.6.1) at x:\oracle..." /><author><name>mattypenny</name><uri>http://www.blogger.com/profile/16749912786297665292</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_PZgYw--7Cl4/S3VORdexutI/AAAAAAAAAIM/q3TOEMYGkHc/S220/Matt+Penny.JPG" /></author><feedburner:origLink>http://mattypenny.blogspot.com/2008/01/optach-error-perl-lib-version-v583.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C04ER306fyp7ImA9WB9aEU0.&quot;"><id>tag:blogger.com,1999:blog-5585285.post-4601827454350707148</id><published>2007-12-31T11:49:00.000Z</published><updated>2007-12-31T11:51:46.317Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-12-31T11:51:46.317Z</app:edited><title>instType uknown</title><content type="html">Started getting this error from a batch job which was using oradim to do a shutdown.&lt;br /&gt;&lt;br /&gt;instType uknown: db not started; use RDBMS as default&lt;br /&gt;&lt;br /&gt;I think this has just been occurring since we put a 10G install on the same server as the existing 9i and 8i databases.&lt;br /&gt;&lt;br /&gt;Anyhow it was fixed by explicitly setting ORACLE_HOME and prefixing oradim with %ORACLE_HOME%\bin\&lt;img src="http://feeds.feedburner.com/~r/blogspot/qxOY/~4/hEoKOYEdFbk" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5585285/posts/default/4601827454350707148?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5585285/posts/default/4601827454350707148?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/qxOY/~3/hEoKOYEdFbk/insttype-uknown.html" title="instType uknown" /><author><name>mattypenny</name><uri>http://www.blogger.com/profile/16749912786297665292</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_PZgYw--7Cl4/S3VORdexutI/AAAAAAAAAIM/q3TOEMYGkHc/S220/Matt+Penny.JPG" /></author><feedburner:origLink>http://mattypenny.blogspot.com/2007/12/insttype-uknown.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkYCQn84eip7ImA9WB9UEEk.&quot;"><id>tag:blogger.com,1999:blog-5585285.post-497932144532336499</id><published>2007-12-07T14:44:00.000Z</published><updated>2007-12-07T15:09:23.132Z</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-12-07T15:09:23.132Z</app:edited><title>Determining which CPUs have been applied</title><content type="html">The question of how to determine which CPUs have been applied to a database came up at a couple of presentations at the UKOUG, including mine.&lt;br /&gt;&lt;br /&gt;A quick and dirty way (which I didn't think of at the time) would be to look in the CPU directory:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;c:\&gt; dir t:\oracle\ora92\cpu&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style=";font-family:courier new;font-size:85%;"  &gt;&lt;br /&gt;11/06/2007  18:12     .&lt;br /&gt;11/06/2007  18:12     ..&lt;br /&gt;02/05/2006  17:30     CPUApr2006&lt;br /&gt;30/04/2007  19:21     CPUApr2007&lt;br /&gt;28/03/2006  18:51     CPUJan2006&lt;br /&gt;......&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Then to check which databases the catcpu script was run against, you can look in the directories themselves - the spoolfiles have the name of the database in the title:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;c:\&gt; dir t:\oracle\ora92\cpu\CPUAPr2007&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;30/04/2007  19:21            .&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;30/04/2007  19:21            ..&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;30/04/2007  18:19    4,918   APPLY_SID1_30Apr2007_19_19_49.log&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;br /&gt;30/04/2007  18:26       4,918            APPLY_SID2_30Apr2007_19_20_11.log&lt;/span&gt;&lt;/span&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/qxOY/~4/67nz2PuttmE" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5585285/posts/default/497932144532336499?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5585285/posts/default/497932144532336499?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/qxOY/~3/67nz2PuttmE/determining-which-cpus-have-been.html" title="Determining which CPUs have been applied" /><author><name>mattypenny</name><uri>http://www.blogger.com/profile/16749912786297665292</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_PZgYw--7Cl4/S3VORdexutI/AAAAAAAAAIM/q3TOEMYGkHc/S220/Matt+Penny.JPG" /></author><feedburner:origLink>http://mattypenny.blogspot.com/2007/12/determining-which-cpus-have-been.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0YNSXk6eyp7ImA9WB9TFk4.&quot;"><id>tag:blogger.com,1999:blog-5585285.post-6151836505933376993</id><published>2007-09-24T14:03:00.000+01:00</published><updated>2007-09-24T14:06:38.713+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-09-24T14:06:38.713+01:00</app:edited><title>TNS-03505: Failed to resolve name - OID glitch</title><content type="html">We're in the process of migrating from Oracle Names to LDAP, and found the following fairly trivial gotcha.&lt;br /&gt;&lt;br /&gt;If you have a space between the word LDAP and the comma in the DIRECTORY_PATH, as below, then it won't work&lt;br /&gt;&lt;br /&gt;NAMES.DIRECTORY_PATH= ( LDAP , ONAMES, TNSNAMES)&lt;img src="http://feeds.feedburner.com/~r/blogspot/qxOY/~4/wXbdAnfuK3g" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5585285/posts/default/6151836505933376993?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5585285/posts/default/6151836505933376993?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/qxOY/~3/wXbdAnfuK3g/tns-03505-failed-to-resolve-name-oid.html" title="TNS-03505: Failed to resolve name - OID glitch" /><author><name>mattypenny</name><uri>http://www.blogger.com/profile/16749912786297665292</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_PZgYw--7Cl4/S3VORdexutI/AAAAAAAAAIM/q3TOEMYGkHc/S220/Matt+Penny.JPG" /></author><feedburner:origLink>http://mattypenny.blogspot.com/2007/09/tns-03505-failed-to-resolve-name-oid.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUECRns5cSp7ImA9WB9TEUw.&quot;"><id>tag:blogger.com,1999:blog-5585285.post-6406094922215900793</id><published>2007-09-18T13:02:00.000+01:00</published><updated>2007-09-18T13:14:27.529+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-09-18T13:14:27.529+01:00</app:edited><title>Oracle options - update from Niall</title><content type="html">Subsequent to the &lt;a href="http://mattypenny.blogspot.com/2007/09/getting-windows-server-and-oracle.html"&gt;previous post&lt;/a&gt;, I got a note from &lt;a href="http://www.orawin.info/services/index.php"&gt;Niall&lt;/a&gt;, saying that&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;at least in 10g you can query dba_feature_usage_statistics as follows&lt;br /&gt;&lt;br /&gt;SELECT NAME,VERSION,DETECTED_USAGES&lt;br /&gt;FROM DBA_FEATURE_USAGE_STATISTICS&lt;br /&gt;WHERE DETECTED_USAGES &gt; 0;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Thanks, Niall!&lt;img src="http://feeds.feedburner.com/~r/blogspot/qxOY/~4/ofMlqGnw92A" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5585285/posts/default/6406094922215900793?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5585285/posts/default/6406094922215900793?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/qxOY/~3/ofMlqGnw92A/oracle-options-update-from-niall.html" title="Oracle options - update from Niall" /><author><name>mattypenny</name><uri>http://www.blogger.com/profile/16749912786297665292</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_PZgYw--7Cl4/S3VORdexutI/AAAAAAAAAIM/q3TOEMYGkHc/S220/Matt+Penny.JPG" /></author><feedburner:origLink>http://mattypenny.blogspot.com/2007/09/oracle-options-update-from-niall.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUMGQXc4fip7ImA9WB5aFk0.&quot;"><id>tag:blogger.com,1999:blog-5585285.post-2264338663866325343</id><published>2007-09-12T15:22:00.000+01:00</published><updated>2007-09-12T15:30:20.936+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-09-12T15:30:20.936+01:00</app:edited><title>Oracle lifetime support</title><content type="html">I went to the UK Oracle User Group Unix SIG meeting yesterday. There was a lot of good stuff, as usual.&lt;br /&gt;&lt;br /&gt;Something I had missed entirely (I have no idea how, to be honest) was that the 'Oracle Lifetime Support' policy has been published.&lt;br /&gt;&lt;br /&gt;The significant changes from my POV is that 5 years after the General Availability date of Oracle software, CPUs and other software updates will have to be paid for on top of the existing support payments - at least that's my understanding.&lt;br /&gt;&lt;br /&gt;Details are &lt;a href="http://www.oracle.com/support/library/brochure/oracle-lifetime-support.pdf"&gt;here&lt;/a&gt;, and there's also a handy table showing the different support levels &lt;a href="http://www.oracle.com/support/lifetime-support-policy.html"&gt;here&lt;/a&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/qxOY/~4/s2g1Pr8Tolc" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5585285/posts/default/2264338663866325343?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5585285/posts/default/2264338663866325343?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/qxOY/~3/s2g1Pr8Tolc/oracle-lifetime-support.html" title="Oracle lifetime support" /><author><name>mattypenny</name><uri>http://www.blogger.com/profile/16749912786297665292</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_PZgYw--7Cl4/S3VORdexutI/AAAAAAAAAIM/q3TOEMYGkHc/S220/Matt+Penny.JPG" /></author><feedburner:origLink>http://mattypenny.blogspot.com/2007/09/oracle-lifetime-support.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DE8NR3kyeCp7ImA9WB5aFk0.&quot;"><id>tag:blogger.com,1999:blog-5585285.post-4396035536481744797</id><published>2007-09-12T15:02:00.000+01:00</published><updated>2007-09-12T15:21:36.790+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-09-12T15:21:36.790+01:00</app:edited><title>Getting Windows server and Oracle options details from the command line</title><content type="html">I've been asked to retrieve some details on:&lt;br /&gt;- the options in use on our databases and&lt;br /&gt;- the servers they run on.&lt;br /&gt;&lt;br /&gt;Oracle feature usage can be retrieved as follows:&lt;br /&gt;&lt;blockquote&gt;&lt;FONT FACE="Courier"&gt;col parameter format a35&lt;br /&gt;col value format a10&lt;br /&gt;select name, banner from v$version, v$database;&lt;br /&gt;select name,parameter, value from v$option, v$database&lt;br /&gt;where parameter in (&lt;br /&gt;'Partitioning',&lt;br /&gt;'Real Application Clusters',&lt;br /&gt;'Spatial',&lt;br /&gt;'OLAP Window Functions',&lt;br /&gt;'Oracle Label Security',&lt;br /&gt;'OLAP',&lt;br /&gt;'Oracle Data Mining'&lt;br /&gt;)&lt;br /&gt;order by 2,1;&lt;/FONT&gt;&lt;/blockquote&gt;Both of the commands below get server information from the commandline.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;psinfo&lt;/span&gt; is from sysinternals and runs as follows:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;FONT FACE="Courier"&gt;psinfo \\servername&lt;/FONT&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;This gives uptime, service packs, CPUs and memory installed&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;systeminfo&lt;/span&gt; seems to be part of Windows XP but seems to work running it against Windows 2000 servers. It runs as follows:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;FONT FACE="Courier"&gt;systeminfo /S servername /U username /P password&lt;/FONT&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;This gives a lot more than psinfo - it lists all the Windows patches, and a bit more of the basic detail.&lt;br /&gt;&lt;br /&gt;I learnt about systeminfo from &lt;a href="http://www.oreilly.com/catalog/windowsvrckbk/toc.html"&gt;this online version of Robbie Allen's Windows Server Cookbook&lt;/a&gt;, which looks really good.&lt;img src="http://feeds.feedburner.com/~r/blogspot/qxOY/~4/K0kMT4XZid0" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5585285/posts/default/4396035536481744797?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5585285/posts/default/4396035536481744797?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/qxOY/~3/K0kMT4XZid0/getting-windows-server-and-oracle.html" title="Getting Windows server and Oracle options details from the command line" /><author><name>mattypenny</name><uri>http://www.blogger.com/profile/16749912786297665292</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_PZgYw--7Cl4/S3VORdexutI/AAAAAAAAAIM/q3TOEMYGkHc/S220/Matt+Penny.JPG" /></author><feedburner:origLink>http://mattypenny.blogspot.com/2007/09/getting-windows-server-and-oracle.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkMGRnY8fCp7ImA9WBFbF0Q.&quot;"><id>tag:blogger.com,1999:blog-5585285.post-8157235402325408571</id><published>2007-05-10T10:42:00.000+01:00</published><updated>2007-05-10T10:47:07.874+01:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2007-05-10T10:47:07.874+01:00</app:edited><title>Most used tiddlywiki commands for MainMenu</title><content type="html">I put this into my MainMenu tiddler to give me a quick reference for my most used tiddlywiki formatting commands.&lt;br /&gt;&lt;blockquote&gt;!Cheat sheet&lt;br /&gt;|''Bold''|{{{''text''}}}|&lt;br /&gt;|__Uline__|{{{__text__}}}|&lt;br /&gt;|//Italic//|{{{//text//}}}|&lt;br /&gt;|Bullets|{{{*text}}}|&lt;br /&gt;|No.s|{{{#text}}}|&lt;br /&gt;|Heads|{{{!text}}}|&lt;br /&gt;|Table|{{{|t|t|}}}|&lt;br /&gt;|Quote|{{{&lt;&lt;&lt;&lt;text&gt;&gt;&gt;&gt;}}}|&lt;br /&gt;|{{{Mono}}}|{{{{{{text}}}}}}|&lt;br /&gt;|[[Tid]]|{{{[[Text]]}}}|&lt;br /&gt;|[[Help|http://www.blogjones.com/TiddlyWikiTutorial.html#EasyToEdit]]|{{{[[t|url]]}}}|&lt;/text&gt;&lt;/blockquote&gt;&lt;text&gt;&lt;/text&gt;&lt;img src="http://feeds.feedburner.com/~r/blogspot/qxOY/~4/IWS_iHTuRTQ" height="1" width="1"/&gt;</content><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5585285/posts/default/8157235402325408571?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5585285/posts/default/8157235402325408571?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/blogspot/qxOY/~3/IWS_iHTuRTQ/most-used-tiddlywiki-commands-for.html" title="Most used tiddlywiki commands for MainMenu" /><author><name>mattypenny</name><uri>http://www.blogger.com/profile/16749912786297665292</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://2.bp.blogspot.com/_PZgYw--7Cl4/S3VORdexutI/AAAAAAAAAIM/q3TOEMYGkHc/S220/Matt+Penny.JPG" /></author><feedburner:origLink>http://mattypenny.blogspot.com/2007/05/most-used-tiddlywiki-commands-for.html</feedburner:origLink></entry></feed>
