<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Tanel Poder&#039;s blog: IT &#38; Mobile for Geeks and Pros &#187; Productivity</title>
	<atom:link href="http://blog.tanelpoder.com/category/productivity/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.tanelpoder.com</link>
	<description>Oracle, Exadata, Performance, Troubleshooting - Mobile Life and Productivity.</description>
	<lastBuildDate>Thu, 02 Feb 2012 21:38:55 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Reminder and Public Appearances 2011</title>
		<link>http://blog.tanelpoder.com/2011/04/06/reminder-and-public-appearances-2011/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=reminder-and-public-appearances-2011</link>
		<comments>http://blog.tanelpoder.com/2011/04/06/reminder-and-public-appearances-2011/#comments</comments>
		<pubDate>Wed, 06 Apr 2011 19:37:45 +0000</pubDate>
		<dc:creator>Tanel Poder</dc:creator>
				<category><![CDATA[Cool stuff]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[Internals]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[Training]]></category>
		<category><![CDATA[Troubleshooting]]></category>
		<category><![CDATA[Tuning]]></category>

		<guid isPermaLink="false">http://blog.tanelpoder.com/?p=936</guid>
		<description><![CDATA[First, a reminder &#8211; my Advanced Oracle Troubleshooting v2.0 online seminar starts next week already. Last chance to sign up, I can accept registrations until Sunday :-) I won&#8217;t do another AOT seminar before Oct (or Nov) this year. More details and sign-up here: http://tech.e2sn.com/oracle-training-seminars I have rescheduled my Advanced SQL Tuning and Partitioning &#38; [...]]]></description>
			<content:encoded><![CDATA[<p>First, a reminder &#8211; my <a href="http://blog.tanelpoder.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3RlY2guZTJzbi5jb20vb3JhY2xlLXRyYWluaW5nLXNlbWluYXJz" target=\"_blank\">Advanced Oracle Troubleshooting v2.0 online seminar</a> starts next week already. Last chance to sign up, I can accept registrations until Sunday :-)</p>
<p>I won&#8217;t do another AOT seminar before Oct (or Nov) this year. More details and sign-up here:</p>
<ul>
<li><a href="http://blog.tanelpoder.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3RlY2guZTJzbi5jb20vb3JhY2xlLXRyYWluaW5nLXNlbWluYXJz" target=\"_blank\">http://tech.e2sn.com/oracle-training-seminars</a></li>
</ul>
<p>I have rescheduled my <em>Advanced SQL Tuning</em> and <em>Partitioning &amp; Parallel Execution for Performance</em> seminars too. I will do them in September/October. Unfortunately I&#8217;m too busy right now to do them before the summer.</p>
<p><strong>Public Appearances:</strong></p>
<ul>
<li>I will be speaking at the <a href="http://blog.tanelpoder.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy51a291Zy5vcmcvZXZlbnRzL2V4YWRhdGEtc3BlY2lhbC1ldmVudC8=">UKOUG Exadata Special Event</a> in London on 18th April</li>
<li>I have submitted a few papers for <a href="http://blog.tanelpoder.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy5vcmFjbGUuY29tL3VzL29wZW53b3JsZC9pbmRleC5odG1s" target=\"_blank\">Oracle OpenWorld</a> in San Francisco as well (end of Sep/beginning of Oct), all about Exadata. Let&#8217;s see how it goes, but I&#8217;ll be there anyway, which means that I&#8217;ll probably show up at the Oracle Closed World event too!</li>
</ul>
<p>And that&#8217;s all the travel I will do this year&#8230;</p>
<p><strong>Virtual Conferences:</strong></p>
<p>I&#8217;ll soon announce the 2nd EsSN virtual conference too ;-)</p>
<p><strong>Free online stuff:</strong></p>
<p>Perhaps in a month or so I will do another hacking session (I&#8217;ll plan 2 hours this time, 1 hour isn&#8217;t nearly enough for going deep). The topic will probably be about low-level details of SQL plan execution internals&#8230; stay tuned!</p>
 <img src="http://blog.tanelpoder.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=936" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://blog.tanelpoder.com/2011/04/06/reminder-and-public-appearances-2011/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>MOATS: The Mother of All Tuning Scripts!</title>
		<link>http://blog.tanelpoder.com/2011/03/29/moats-the-mother-of-all-tuning-scripts/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=moats-the-mother-of-all-tuning-scripts</link>
		<comments>http://blog.tanelpoder.com/2011/03/29/moats-the-mother-of-all-tuning-scripts/#comments</comments>
		<pubDate>Tue, 29 Mar 2011 23:23:37 +0000</pubDate>
		<dc:creator>Tanel Poder</dc:creator>
				<category><![CDATA[Cool stuff]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[Administration]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Troubleshooting]]></category>
		<category><![CDATA[Tuning]]></category>

		<guid isPermaLink="false">http://blog.tanelpoder.com/?p=898</guid>
		<description><![CDATA[People talk about the Oracle SQL Developer 3 being out, which is cool, but I have something even cooler for you today ;-) I finally figured out how to convert my screen-recordings to uploadable videos, so that the text wouldn&#8217;t get unreadable and blurry. So, here&#8217;s the first video, about a tool called MOATS, which [...]]]></description>
			<content:encoded><![CDATA[<p>People talk about the <a href="http://blog.tanelpoder.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy5vcmFjbGUuY29tL3RlY2huZXR3b3JrL2RldmVsb3Blci10b29scy9zcWwtZGV2ZWxvcGVyL2Rvd25sb2Fkcy9pbmRleC5odG1s" target=\"_blank\">Oracle SQL Developer 3</a> being out, which is cool, but I have something even cooler for you today ;-)</p>
<p>I finally figured out how to convert my screen-recordings to uploadable videos, so that the text wouldn&#8217;t get unreadable and blurry.</p>
<p>So, here&#8217;s the first video, about a tool called MOATS, which we have built together with fellow OakTable Network member and a PL/SQL wizard Adrian Billington (of <a href="http://blog.tanelpoder.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy5vcmFjbGUtZGV2ZWxvcGVyLm5ldA==" target=\"_blank\">oracle-developer.net</a>).</p>
<p>Here&#8217;s the video, it&#8217;s under 3 minutes long. Play the video in full screen for best results (and if it&#8217;s too slow loading, change it to lower resolution from HD mode):</p>
<p><iframe width="660" height="495" src="http://www.youtube.com/embed/InSeupwHHoY?fs=1&#038;feature=oembed" frameborder="0" allowfullscreen></iframe></p>
<p>Check it out and if you like MOATS, you can download it from Adrian&#8217;s website site (current version 1.05) and make sure you read the README.txt file in the zip!</p>
<ul>
<li><a href="http://blog.tanelpoder.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy5vcmFjbGUtZGV2ZWxvcGVyLm5ldC91dGlsaXRpZXMucGhw" target=\"_blank\">http://www.oracle-developer.net/utilities.php</a></li>
</ul>
<p>Also thanks to Randolf Geist for finding and fixing some bugs in our alpha code&#8230; Note that MOATS is still kind of beta right now&#8230;</p>
<p>P.S. I will post my ORA-4031 and shared pool hacking video real soon now, too! :-)</p>
<p>P.P.S. Have you already figured out how it works?! ;-)</p>
<p>Update: Now you can suggest new features and improvement requests here:</p>
<ul>
<li><a href="http://blog.tanelpoder.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2dvby5nbC9tb2QvMEFObA==" target=\"_blank\">http://goo.gl/mod/0ANl</a></li>
</ul>
 <img src="http://blog.tanelpoder.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=898" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://blog.tanelpoder.com/2011/03/29/moats-the-mother-of-all-tuning-scripts/feed/</wfw:commentRss>
		<slash:comments>47</slash:comments>
		</item>
		<item>
		<title>An index of my TPT scripts</title>
		<link>http://blog.tanelpoder.com/2011/03/24/an-index-of-my-tpt-scripts/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=an-index-of-my-tpt-scripts</link>
		<comments>http://blog.tanelpoder.com/2011/03/24/an-index-of-my-tpt-scripts/#comments</comments>
		<pubDate>Thu, 24 Mar 2011 14:10:05 +0000</pubDate>
		<dc:creator>Tanel Poder</dc:creator>
				<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[Administration]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Troubleshooting]]></category>
		<category><![CDATA[Tuning]]></category>

		<guid isPermaLink="false">http://blog.tanelpoder.com/2011/03/24/an-index-of-my-tpt-scripts/</guid>
		<description><![CDATA[A lot of people have asked me whether there&#8217;s some sort of index or &#8220;table of contents&#8221; of my TPT scripts (there&#8217;s over 500 scripts in the tpt_public.zip file &#8211; http://tech.e2sn.com/oracle-scripts-and-tools ) I have planned to create such index for years, but never got to it. I probably never will :) So a good way [...]]]></description>
			<content:encoded><![CDATA[<p>A lot of people have asked me whether there&#8217;s some sort of index or &#8220;table of contents&#8221; of my TPT scripts (there&#8217;s over 500 scripts in the tpt_public.zip file &#8211; <a href="http://blog.tanelpoder.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3RlY2guZTJzbi5jb20vb3JhY2xlLXNjcmlwdHMtYW5kLXRvb2xz" target=\"_blank\">http://tech.e2sn.com/oracle-scripts-and-tools</a> )</p>
<p>I have planned to create such index for years, but never got to it. I probably never will :) So a good way to extract the descriptions of some scripts is this (run the command in the directory where you extracted my scripts to):</p>
<p><em><strong>Note:</strong> the single and double-quotes may get messed up when the browser tries to be smart and replace them with nicer looking characters (which Unix doesn&#8217;t recognize then). When copying &amp; pasting this command, make sure that the single &amp; double-quotes are the regular ones Unix shell can accept):</em></p>
<div><span style="font-family: 'courier new', monospace;">$<span class="Apple-converted-space"> </span><strong>grep -i Purpose: *.sql | awk -F: &#8216;{ printf(&#8220;%20s %-50s\n&#8221;, $1, $3) }&#8217;</strong></span></div>
<div><span style="font-family: 'courier new', monospace;">            bhla.sql      Report which blocks are in buffer cache, protected by a cache</span></div>
<div><span style="font-family: 'courier new', monospace;">         bufprof.sql      Display buffer gets done by a session and their reason</span></div>
<div><span style="font-family: 'courier new', monospace;">            calc.sql      Basic calculator and dec/hex converter       </span></div>
<div><span style="font-family: 'courier new', monospace;">        channels.sql      Report KSR channel message counts by channel endpoints</span></div>
<div><span style="font-family: 'courier new', monospace;">        curheaps.sql      Show main cursor data block heap sizes and their contents</span></div>
<div><span style="font-family: 'courier new', monospace;">             dba.sql      Convert Data Block Address (a 6 byte hex number) to file#, block#</span></div>
<div><span style="font-family: 'courier new', monospace;">             ddl.sql      Extracts DDL statements for specified objects</span></div>
<div><span style="font-family: 'courier new', monospace;">              df.sql  Show Oracle tablespace free space in Unix df style</span></div>
<div><span style="font-family: 'courier new', monospace;">        diag_sid.sql      Display current Session Wait info            </span></div>
<div><span style="font-family: 'courier new', monospace;">        diag_sid.sql      An easy to use Oracle session-level performance snapshot utility</span></div>
<div><span style="font-family: 'courier new', monospace;">           disco.sql      Generates commands for disconnecting selected sessions</span></div>
<div><span style="font-family: 'courier new', monospace;">     getplusparm.sql      get sqlplus parameter value (such linesize, pagesize, sqlcode,</span></div>
<div><span style="font-family: 'courier new', monospace;">            grpn.sql      Quick group by query for aggregating Numeric columns</span></div>
<div><span style="font-family: 'courier new', monospace;">            hash.sql      Show the hash value, SQL_ID and child number of previously</span></div>
<div><span style="font-family: 'courier new', monospace;">             i2h.sql      Advanced Oracle Troubleshooting Seminar demo script</span></div>
<div><span style="font-family: 'courier new', monospace;">              im.sql      Display In-Memory Undo (IMU) buffer usage    </span></div>
<div><span style="font-family: 'courier new', monospace;">            init.sql<span class="Apple-converted-space"> </span>Initializes sqlplus variables for 156 character terminal</span></div>
<div><span style="font-family: 'courier new', monospace;">       kglbroken.sql                                                   </span></div>
<div><span style="font-family: 'courier new', monospace;">       kglbroken.sql      Report broken kgl locks for an object this can be used for </span></div>
<div><span style="font-family: 'courier new', monospace;">            kill.sql      Generates commands for killing selected sessions</span></div>
<div><span style="font-family: 'courier new', monospace;">              la.sql      Show which latch occupies a given memory address and its stats</span></div>
<div><span style="font-family: 'courier new', monospace;">     lastchanged.sql      Detect when a datablock in table was last changed</span></div>
<div><span style="font-family: 'courier new', monospace;">       latchprof.sql      Perform high-frequency sampling on V$LATCHHOLDER</span></div>
<div><span style="font-family: 'courier new', monospace;">   latchprof_old.sql      Perform high-frequency sampling on V$LATCHHOLDER</span></div>
<div><span style="font-family: 'courier new', monospace;">      latchprofx.sql      Perform high-frequency sampling on V$LATCHHOLDER</span></div>
<div><span style="font-family: 'courier new', monospace;">              lh.sql      Show latch holding SIDs and latch details from V$LATCHHOLDER</span></div>
<div><span style="font-family: 'courier new', monospace;">             lhp.sql      Perform high-frequency sampling on V$LATCHHOLDER</span></div>
<div><span style="font-family: 'courier new', monospace;">            lhpx.sql      Perform high-frequency sampling on V$LATCHHOLDER</span></div>
<div><span style="font-family: 'courier new', monospace;">     lotshparses.sql      Generate Lots of hard parses and shared pool activity </span></div>
<div><span style="font-family: 'courier new', monospace;">    lotshparses2.sql      Generate Lots of hard parses and shared pool activity </span></div>
<div><span style="font-family: 'courier new', monospace;">        lotslios.sql      Generate Lots of Logical IOs for testing purposes</span></div>
<div><span style="font-family: 'courier new', monospace;">        lotspios.sql      Generate Lots of Physical IOs for testing purposes</span></div>
<div><span style="font-family: 'courier new', monospace;">     lotssparses.sql      Generate Lots of soft parses and library cache/mutex activity </span></div>
<div><span style="font-family: 'courier new', monospace;">    lotssparses2.sql      Generate Lots of soft parses and library cache/mutex activity </span></div>
<div><span style="font-family: 'courier new', monospace;">       mutexprof.sql      Display KGX mutex sleep history from v$mutex_sleep_history</span></div>
<div><span style="font-family: 'courier new', monospace;">       nonshared.sql      Print reasons for non-shared child cursors from v$sql_shared_cursor</span></div>
<div><span style="font-family: 'courier new', monospace;">      nonshared2.sql      Show the reasons why more child cursors were created instead of</span></div>
<div><span style="font-family: 'courier new', monospace;">      ostackprof.sql      Take target process stack samples and show an execution profile</span></div>
<div><span style="font-family: 'courier new', monospace;">            pmem.sql      Show process memory usage breakdown &#8211; lookup by process SPID</span></div>
<div><span style="font-family: 'courier new', monospace;">     pmem_detail.sql      Show process memory usage breakdown details &#8211; lookup by process SPID</span></div>
<div><span style="font-family: 'courier new', monospace;">        prefetch.sql      Show KCB layer prefetch                      </span></div>
<div><span style="font-family: 'courier new', monospace;">          pvalid.sql      Show valid parameter values from V$PARAMETER_VALID_VALUES</span></div>
<div><span style="font-family: 'courier new', monospace;">        rowcache.sql      Show parent rowcache entries mathcing an object name</span></div>
<div><span style="font-family: 'courier new', monospace;">              rs.sql      Display available Redo Strands               </span></div>
<div><span style="font-family: 'courier new', monospace;">               s.sql      Display current Session Wait and SQL_ID info (10g+)</span></div>
<div><span style="font-family: 'courier new', monospace;">          sample.sql      Sample any V$ view or X$ table and display aggregated results</span></div>
<div><span style="font-family: 'courier new', monospace;">      sampleaddr.sql      High-frequency sampling of contents of a SGA memory address</span></div>
<div><span style="font-family: 'courier new', monospace;">             ses.sql      Display Session statistics for given sessions, filter by</span></div>
<div><span style="font-family: 'courier new', monospace;">            ses2.sql      Display Session statistics for given sessions, filter by</span></div>
<div><span style="font-family: 'courier new', monospace;">        sgastatx.sql      Show shared pool stats by sub-pool from X$KSMSS</span></div>
<div><span style="font-family: 'courier new', monospace;">            smem.sql      Show process memory usage breakdown &#8211; lookup by session ID</span></div>
<div><span style="font-family: 'courier new', monospace;">     smem_detail.sql      Show process memory usage breakdown details &#8211; lookup by session ID</span></div>
<div><span style="font-family: 'courier new', monospace;">         snapper.sql      An easy to use Oracle session-level performance snapshot utility</span></div>
<div><span style="font-family: 'courier new', monospace;">     snapper3.15.sql      An easy to use Oracle session-level performance snapshot utility</span></div>
<div><span style="font-family: 'courier new', monospace;">      snapper_v1.sql      An easy to use Oracle session-level performance snapshot utility</span></div>
<div><span style="font-family: 'courier new', monospace;">      snapper_v2.sql      An easy to use Oracle session-level performance snapshot utility</span></div>
<div><span style="font-family: 'courier new', monospace;">            stat.sql      Execute SQL statement in script argument and report basic</span></div>
<div><span style="font-family: 'courier new', monospace;">              sw.sql      Display current Session Wait info            </span></div>
<div><span style="font-family: 'courier new', monospace;">             sw2.sql      Display current Session Wait info            </span></div>
<div><span style="font-family: 'courier new', monospace;">             swg.sql      Display given Session Wait info grouped by state and event</span></div>
<div><span style="font-family: 'courier new', monospace;">             swo.sql      Display current Session Wait info            </span></div>
<div><span style="font-family: 'courier new', monospace;">          topsql.sql      Show TOP SQL ordered by user-provided criteria</span></div>
<div><span style="font-family: 'courier new', monospace;">            usql.sql      Show another session&#8217;s SQL directly from library cache</span></div>
<div><span style="font-family: 'courier new', monospace;">           usqlx.sql      Show another session&#8217;s SQL directly from library cache</span></div>
<div><span style="font-family: 'courier new', monospace;">        waitprof.sql      Sample V$SESSION_WAIT at high frequency and show resulting </span></div>
<div><span style="font-family: 'courier new', monospace;">              xb.sql      Explain a SQL statements execution plan with execution </span></div>
<div><span style="font-family: 'courier new', monospace;">            xde2.sql      Describe X$ tables, column offsets and report indexed fixed table</span></div>
<div><span style="font-family: 'courier new', monospace;">              xm.sql      Explain a SQL statements execution plan directly from library cache</span></div>
<div><span style="font-family: 'courier new', monospace;">             xma.sql      Explain a SQL statements execution plan directly from library cache</span></div>
<div><span style="font-family: 'courier new', monospace;">            xmai.sql      Explain a SQL statements execution plan with execution </span></div>
<div><span style="font-family: 'courier new', monospace;">             xms.sql      Explain your last SQL statements execution plan with execution </span></div>
<div><span style="font-family: 'courier new', monospace;">            xmsh.sql      Explain a SQL statements execution plan with execution </span></div>
<div><span style="font-family: 'courier new', monospace;">            xmsi.sql      Explain a SQL statements execution plan with execution </span></div>
<p>&nbsp;</p>
 <img src="http://blog.tanelpoder.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=896" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://blog.tanelpoder.com/2011/03/24/an-index-of-my-tpt-scripts/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Another (secret) hacking session with me &#8211; using Oracle Session Snapper for flexible troubleshooting (and fun)</title>
		<link>http://blog.tanelpoder.com/2010/10/25/another-secret-hacking-session-with-me-using-oracle-session-snapper-for-flexible-troubleshooting-and-fun/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=another-secret-hacking-session-with-me-using-oracle-session-snapper-for-flexible-troubleshooting-and-fun</link>
		<comments>http://blog.tanelpoder.com/2010/10/25/another-secret-hacking-session-with-me-using-oracle-session-snapper-for-flexible-troubleshooting-and-fun/#comments</comments>
		<pubDate>Mon, 25 Oct 2010 22:26:14 +0000</pubDate>
		<dc:creator>Tanel Poder</dc:creator>
				<category><![CDATA[Cool stuff]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[Internals]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Training]]></category>
		<category><![CDATA[Troubleshooting]]></category>

		<guid isPermaLink="false">http://blog.tanelpoder.com/?p=788</guid>
		<description><![CDATA[And this time we have audio !!! (Wow!) Following the huge success of my last hacking session, planned while drinking beer at Graham Woods OOW pre-party and delivered from Miracle&#8217;s massive Oracle Closed World event in Thirsty Bear (between drinking beers), I&#8217;m announcing another hacking session: What: Using Session Snapper for flexible Oracle Performance Troubleshooting [...]]]></description>
			<content:encoded><![CDATA[<p><strong>And this time we have audio !!! (Wow!)</strong></p>
<p>Following the huge success of my last hacking session, planned while drinking beer at Graham Woods OOW pre-party and delivered from Miracle&#8217;s massive Oracle Closed World event in Thirsty Bear (between drinking beers), I&#8217;m announcing another hacking session:</p>
<p>What: <strong>Using Session Snapper for flexible Oracle Performance Troubleshooting</strong></p>
<p>When: Wednesday 27th Oct 9:00-10:00 AM PDT (US West coast / California time). Check <a href="http://blog.tanelpoder.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy50aW1lYW5kZGF0ZS5jb20vd29ybGRjbG9jay9maXhlZHRpbWUuaHRtbD9tb250aD0xMCZhbXA7ZGF5PTI3JmFtcDt5ZWFyPTIwMTAmYW1wO2hvdXI9MTYmYW1wO21pbj0wJmFtcDtzZWM9MCZhbXA7cDE9MA==" target=\"_blank\">what&#8217;s this in your time zone here</a></p>
<p>Where: Internet! -&gt; Sign up here: <a href="http://blog.tanelpoder.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3RlY2guZTJzbi5jb20vc2VjcmV0" target=\"_blank\">http://tech.e2sn.com/secret</a></p>
<p>You&#8217;ll need to register fast and be &#8220;there&#8221; on time as my current GotoWebinar account only allow 100 attendees to log on&#8230; last time over 100 people signed up, but &#8220;luckily&#8221; less actually showed up, so nobody got left outside!</p>
<p>BTW, I have figured out what went wrong with audio last time and caused my voice in the end of presentation disappear). A program, which I accidentally launched via a keyboard shortcut, grabbed my Mic input to itself, so gotowebinar&#8217;s app couldn&#8217;t access it anymore.</p>
<ul>
<li>People who will attend my <a href="http://blog.tanelpoder.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3RlY2guZTJzbi5jb20vb3JhY2xlLXRyYWluaW5nLXNlbWluYXJz" target=\"_blank\">Advanced Oracle Troubleshooting online class</a> or the <a href="http://blog.tanelpoder.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=dGVjaC5lMnNuLmNvbS92aXJ0dWFsLWNvbmZlcmVuY2VzL3N5c3RlbWF0aWMtb3JhY2xlLXNxbC1vcHRpbWl6YXRpb24taW4tcmVhbC1saWZl" target=\"_blank\">Virtual Conference</a> I&#8217;m organizing with Jonathan, Cary and Kerry &#8211; you can also log on to make sure that the (gotomeeting) technology works out OK for you.</li>
</ul>
<p>See you soon!</p>
 <img src="http://blog.tanelpoder.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=788" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://blog.tanelpoder.com/2010/10/25/another-secret-hacking-session-with-me-using-oracle-session-snapper-for-flexible-troubleshooting-and-fun/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>A million kilometers in two years&#8230;</title>
		<link>http://blog.tanelpoder.com/2010/09/27/a-million-kilometers-in-two-years/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=a-million-kilometers-in-two-years</link>
		<comments>http://blog.tanelpoder.com/2010/09/27/a-million-kilometers-in-two-years/#comments</comments>
		<pubDate>Mon, 27 Sep 2010 10:25:01 +0000</pubDate>
		<dc:creator>Tanel Poder</dc:creator>
				<category><![CDATA[Cool stuff]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[Administration]]></category>

		<guid isPermaLink="false">http://blog.tanelpoder.com/?p=749</guid>
		<description><![CDATA[I&#8217;ve been tracking my business travel with Tripit.com&#8216;s awesome service for about 2 years now. After getting back from my Tallinn-&#62;Helsinki-&#62;New York-&#62;Detroit-&#62;New York-&#62;San Francisco-&#62;New York-&#62;Helsinki-&#62;Tallinn trip yesterday, Tripit reported that I have flown 1 007 509 km during my business trips (American readers, that&#8217;s about 42 miles ;) Check yourself below :) Tripit says I&#8217;ve visited [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been tracking my business travel with <a href="http://blog.tanelpoder.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy50cmlwaXQuY29t" target=\"_blank\">Tripit.com</a>&#8216;s awesome service for about 2 years now.</p>
<p>After getting back from my Tallinn-&gt;Helsinki-&gt;New York-&gt;Detroit-&gt;New York-&gt;San Francisco-&gt;New York-&gt;Helsinki-&gt;Tallinn trip yesterday, Tripit reported that I have flown <strong>1 007 509 km</strong> during my business trips (American readers, that&#8217;s about 42 miles ;)</p>
<p>Check yourself below :)</p>
<p><a href="http://blog.tanelpoder.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2Jsb2cudGFuZWxwb2Rlci5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMTAvMDkvU2NyZWVuLXNob3QtMjAxMC0wOS0yNy1hdC1QTS0xMi41MS4xNS5wbmc="><img class="alignnone size-full wp-image-750" title="Million km" src="http://blog.tanelpoder.com/wp-content/uploads/2010/09/Screen-shot-2010-09-27-at-PM-12.51.15.png" alt="" width="474" height="214" /></a></p>
<p>Tripit says I&#8217;ve visited 71 different cities in 27 countries within the last two years.</p>
<p>Here&#8217;s the map of places where I&#8217;ve visited my clients, done training or spoken at conferences:</p>
<p><a href="http://blog.tanelpoder.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2Jsb2cudGFuZWxwb2Rlci5jb20vd3AtY29udGVudC91cGxvYWRzLzIwMTAvMDkvU2NyZWVuLXNob3QtMjAxMC0wOS0yNy1hdC1QTS0xMi41Mi4wNC5wbmc="><img class="alignnone size-full wp-image-751" title="Tanel's travel map" src="http://blog.tanelpoder.com/wp-content/uploads/2010/09/Screen-shot-2010-09-27-at-PM-12.52.04.png" alt="" width="306" height="174" /></a></p>
<p>Actually there&#8217;s probably couple of more cities where I&#8217;ve been in the last two years, for some reason Tripit doesn&#8217;t recognize my trip to Melbourne (but it does show the visit to Sydney which I did during the same trip).</p>
<p>Anyway, the conclusion here is that I think I&#8217;ve done enough flying for now. Now I plan to stay at home for a loooong time (I mean at least 3-4, maybe even 5 weeks in a row!!! ;)</p>
<p>But seriously, what I&#8217;ve decided is that:</p>
<ol>
<li>I won&#8217;t do any more public on-site seminars (with only few exceptions).</li>
<li>I will move all my public seminar offering to web-based online seminars (using Citrix gotomeeting.com&#8217;s service), which I&#8217;ll deliver in person.</li>
<li>I will still do private corporate training <strong>on-site</strong> occasionally, which offers flexibility of customizing the content and focus areas of the seminar to match the customer&#8217;s needs</li>
<li>I will also offer private corporate <strong>online</strong> training, which gives much greater flexibility for choosing the seminar duration and times etc (it&#8217;s possible to spread a seminar to 1-day sections, each day delivered on a separate week, to reduce the impact of people being away from their work)</li>
<li>I will still do consulting &amp; advanced troubleshooting where I usually solve even the most complex problems in matter of couple of days (like <a href="http://blog.tanelpoder.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2Jsb2cudGFuZWxwb2Rlci5jb20vMjAxMC8wNC8yMS9jdXJzb3ItcGluLXMtd2FpdHMtc3BvcmFkaWMtY3B1LXNwaWtlcy1hbmQtc3lzdGVtYXRpYy10cm91Ymxlc2hvb3Rpbmcv" target=\"_blank\">explained here</a> for example)</li>
</ol>
<p>Ok, enough of self-promotion and advertising, back to work ;-)</p>
<p>P.S. I will publish my online seminar schedule &#8220;very soon now&#8221;!!!</p>
<p>P.P.S. I&#8217;m not affiliated with <a href="http://blog.tanelpoder.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3d3dy50cmlwaXQuY29t" target=\"_blank\">Tripit.com</a> by any means business-wise, but if you travel frequently, then I recommend you to check out their awesome service (and iPhone app). The basic version is free, but I just decided to upgrade to Pro after couple of years of using it!</p>
 <img src="http://blog.tanelpoder.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=749" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://blog.tanelpoder.com/2010/09/27/a-million-kilometers-in-two-years/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Flexible Sqlplus command line history with RLWRAP</title>
		<link>http://blog.tanelpoder.com/2010/05/07/flexible-sqlplus-command-line-history-with-rlwrap/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=flexible-sqlplus-command-line-history-with-rlwrap</link>
		<comments>http://blog.tanelpoder.com/2010/05/07/flexible-sqlplus-command-line-history-with-rlwrap/#comments</comments>
		<pubDate>Fri, 07 May 2010 22:49:26 +0000</pubDate>
		<dc:creator>Tanel Poder</dc:creator>
				<category><![CDATA[Cool stuff]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[Administration]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://blog.tanelpoder.com/?p=690</guid>
		<description><![CDATA[At Hotsos Symposium Training Day I used rlwrap with sqlplus &#8211; which gives nice command line editing and history capabilities for tools like sqlplus. Additionally I pre-generated commonly used Oracle keywords, data dictionary view and package names into rlwrap wordfile, so I got nice tab-completion too. Sqlplus sucks much less with rlwrap ;-) It&#8217;s relatively [...]]]></description>
			<content:encoded><![CDATA[<p>At Hotsos Symposium Training Day I used rlwrap with sqlplus &#8211; which gives nice command line editing and history capabilities for tools like sqlplus. Additionally I pre-generated commonly used Oracle keywords, data dictionary view and package names into rlwrap wordfile, so I got nice tab-completion too. Sqlplus sucks much less with rlwrap ;-)</p>
<p>It&#8217;s relatively easy to install rlwrap on Unix (there are rlwrap RPMs out there, Solaris freeware packages and I installed it on Mac via macports.org). Just google around&#8230;</p>
<p>You can have rlwrap on Windows too &#8211; As rlwrap has been coded for Unix flavors, then on Windows you need to run it on a Unix library environment emulator &#8211; like Cygwin.</p>
<p>Dave Herring and Michael Paddock have both written an article about how to get rlwrap &amp; sqlplus running on Windows, check out the articles here. It&#8217;s worth reading both as they have different additions&#8230;</p>
<p>So, if you want command line history, search and tab completion for sqlplus on Unix flavors or Windows, check these articles out!</p>
<p><a href="http://blog.tanelpoder.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2RhdmVoZXJyaW5nc2RiYWJsb2cuYmxvZ3Nwb3QuY29tLzIwMTAvMDMvc3FscGx1cy1jb21tYW5kLWhpc3Rvcnktd2l0aC1jeWd3aW4uaHRtbA==">http://daveherringsdbablog.blogspot.com/2010/03/sqlplus-command-history-with-cygwin.html</a></p>
<p><a href="http://blog.tanelpoder.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2Jsb2cuZW5raXRlYy5jb20vMjAxMC8wNC8yOS91c2luZy1zcWxwbHVzLXdpdGgtcmx3cmFwLW9uLW1zLXdpbmRvd3Mv">http://blog.enkitec.com/2010/04/29/using-sqlplus-with-rlwrap-on-ms-windows/</a></p>
 <img src="http://blog.tanelpoder.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=690" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://blog.tanelpoder.com/2010/05/07/flexible-sqlplus-command-line-history-with-rlwrap/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>My new website tech.e2sn.com and a new application</title>
		<link>http://blog.tanelpoder.com/2010/01/18/my-new-website-tech-e2sn-com-and-a-new-application/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=my-new-website-tech-e2sn-com-and-a-new-application</link>
		<comments>http://blog.tanelpoder.com/2010/01/18/my-new-website-tech-e2sn-com-and-a-new-application/#comments</comments>
		<pubDate>Mon, 18 Jan 2010 18:45:40 +0000</pubDate>
		<dc:creator>Tanel Poder</dc:creator>
				<category><![CDATA[Cool stuff]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[Administration]]></category>
		<category><![CDATA[Internals]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://blog.tanelpoder.com/?p=574</guid>
		<description><![CDATA[In early January I wrote that I&#8217;m gonna start organizing the more serious and practical Oracle content into my new website and I&#8217;ll leave my blog for Oracle hacks, my (IT) observations and philosophy, general thoughts and just fun. It&#8217;s time to publish the newsite now with an application demo rototype which gives some clue [...]]]></description>
			<content:encoded><![CDATA[<p>In early January I wrote that I&#8217;m gonna start organizing the more serious and practical Oracle content into my new website and I&#8217;ll leave my blog for Oracle hacks, my (IT) observations and philosophy, general thoughts and just fun.</p>
<p>It&#8217;s time to publish the newsite now with an application <em>demo rototype</em> which gives some clue of what kind of features will there be in the secret project I&#8217;ve been working on for several months with my friend and business partner.</p>
<p>The website is located here:</p>
<h3><a href="http://blog.tanelpoder.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3RlY2guZTJzbi5jb20=" target=\"_blank\">http://tech.e2sn.com</a></h3>
<p>E2SN <em>does</em> have a meaning, but I&#8217;ll leave it a secret for now ( you are free to guess ;-)</p>
<p>So, there&#8217;s not much technical content at the site yet, but there&#8217;s a cool online app which you should check if you deal with SQL tuning and execution plan analysis much.</p>
<p>It&#8217;s called PlanViz, Oracle Execution Plan Visualization app, you can check it out here:</p>
<h3></h3>
<h3><a href="http://blog.tanelpoder.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL3RlY2guZTJzbi5jb20vYXBwcy9wbGFudml6Lw==" target=\"_blank\">http://tech.e2sn.com/apps/planviz</a></h3>
<p>Oh, I&#8217;ve also created something called a &#8220;Living Book&#8221; into my website, where I will write about Oracle, performance, troubleshooting, etc. There is also a place where people can request what I should write about there!</p>
<p>And that&#8217;s all for today!</p>
 <img src="http://blog.tanelpoder.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=574" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://blog.tanelpoder.com/2010/01/18/my-new-website-tech-e2sn-com-and-a-new-application/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Sometimes things are easy (Part 1): How to fix wrapped execution plan text?</title>
		<link>http://blog.tanelpoder.com/2010/01/18/sometimes-things-are-easy-part-1-how-to-fix-wrapped-execution-plan-text/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=sometimes-things-are-easy-part-1-how-to-fix-wrapped-execution-plan-text</link>
		<comments>http://blog.tanelpoder.com/2010/01/18/sometimes-things-are-easy-part-1-how-to-fix-wrapped-execution-plan-text/#comments</comments>
		<pubDate>Mon, 18 Jan 2010 16:26:33 +0000</pubDate>
		<dc:creator>Tanel Poder</dc:creator>
				<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[Administration]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Unix/Linux]]></category>

		<guid isPermaLink="false">http://blog.tanelpoder.com/?p=568</guid>
		<description><![CDATA[What you see below is a common problem. Someone sends you (or posts to a forum) a wide execution plan, which is unreadable because of wrapped lines. For example, this one below: -------------------------------------------------------------------------------- ------------------- &#124; Id  &#124; Operation                   &#124; Name                    &#124; E-Rows &#124;  OMem &#124; 1Mem &#124; Used-Mem &#124; -------------------------------------------------------------------------------- ------------------- &#124;   0 &#124; SELECT [...]]]></description>
			<content:encoded><![CDATA[<p>What you see below is a common problem. Someone sends you (or posts to a forum) a wide execution plan, which is unreadable because of wrapped lines. For example, this one below:</p>
<pre>--------------------------------------------------------------------------------
-------------------

| Id  | Operation                   | Name                    | E-Rows |  OMem |
 1Mem | Used-Mem |

--------------------------------------------------------------------------------
-------------------

|   0 | SELECT STATEMENT            |                         |        |       |
 |          |

|   1 |  SORT AGGREGATE             |                         |      1 |       |
 |          |

|*  2 |   HASH JOIN                 |                         |     13 |  1102K|
 1102K|  355K (0)|

|*  3 |    HASH JOIN                |                         |     13 |   988K|
 988K|  367K (0)|

|*  4 |     HASH JOIN               |                         |     13 |   921K|
 921K|  621K (0)|

|*  5 |      HASH JOIN OUTER        |                         |     13 |   836K|
 836K| 1224K (0)|

|*  6 |       HASH JOIN             |                         |     13 |   821K|
 821K|  501K (0)|

|*  7 |        HASH JOIN            |                         |     13 |  1102K|
 1102K|  501K (0)|

|   8 |         MERGE JOIN CARTESIAN|                         |      1 |       |
 |          |

|*  9 |          TABLE ACCESS FULL  | PROFILE$                |      1 |       |
 |          |

|  10 |          BUFFER SORT        |                         |      1 | 73728 |
 73728 |          |

|* 11 |           TABLE ACCESS FULL | PROFILE$                |      1 |       |
 |          |

|* 12 |         TABLE ACCESS FULL   | USER$                   |     36 |       |
 |          |

|  13 |        TABLE ACCESS FULL    | PROFNAME$               |      1 |       |
 |          |

|* 14 |       TABLE ACCESS FULL     | RESOURCE_GROUP_MAPPING$ |      1 |       |
 |          |

|  15 |      TABLE ACCESS FULL      | TS$                     |      7 |       |
 |          |

|  16 |     TABLE ACCESS FULL       | TS$                     |      7 |       |
 |          |

|  17 |    TABLE ACCESS FULL        | USER_ASTATUS_MAP        |      9 |       |
 |          |

--------------------------------------------------------------------------------
-------------------
</pre>
<p>So now you either try to manually edit and fix the execution plan text so you could read it or ask the developer to send the execution plan again. Both approaches take time.</p>
<p>Well, sometimes things are easy &#8211; in this particular case I saved the above into a file called /tmp/x and ran the following command:</p>
<pre>$ cat /tmp/x | <strong>awk '{ printf "%s", $0 ; if (NR % 3 == 0) print } END { print }'</strong>
---------------------------------------------------------------------------------------------------
| Id  | Operation                   | Name                    | E-Rows |  OMem | 1Mem | Used-Mem |
---------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT            |                         |        |       | |          |
|   1 |  SORT AGGREGATE             |                         |      1 |       | |          |
|*  2 |   HASH JOIN                 |                         |     13 |  1102K| 1102K|  355K (0)|
|*  3 |    HASH JOIN                |                         |     13 |   988K| 988K|  367K (0)|
|*  4 |     HASH JOIN               |                         |     13 |   921K| 921K|  621K (0)|
|*  5 |      HASH JOIN OUTER        |                         |     13 |   836K| 836K| 1224K (0)|
|*  6 |       HASH JOIN             |                         |     13 |   821K| 821K|  501K (0)|
|*  7 |        HASH JOIN            |                         |     13 |  1102K| 1102K|  501K (0)|
|   8 |         MERGE JOIN CARTESIAN|                         |      1 |       | |          |
|*  9 |          TABLE ACCESS FULL  | PROFILE$                |      1 |       | |          |
|  10 |          BUFFER SORT        |                         |      1 | 73728 | 73728 |          |
|* 11 |           TABLE ACCESS FULL | PROFILE$                |      1 |       | |          |
|* 12 |         TABLE ACCESS FULL   | USER$                   |     36 |       | |          |
|  13 |        TABLE ACCESS FULL    | PROFNAME$               |      1 |       | |          |
|* 14 |       TABLE ACCESS FULL     | RESOURCE_GROUP_MAPPING$ |      1 |       | |          |
|  15 |      TABLE ACCESS FULL      | TS$                     |      7 |       | |          |
|  16 |     TABLE ACCESS FULL       | TS$                     |      7 |       | |          |
|  17 |    TABLE ACCESS FULL        | USER_ASTATUS_MAP        |      9 |       | |          |
---------------------------------------------------------------------------------------------------</pre>
<p>All I did here was that I stripped out line feeds from all lines except every 3rd line (which is the real end of the original line).</p>
<p>Note that if your linesize is very wide (and trimspool/trimout settings are ON) then this script would need some adjustment&#8230;</p>
<p>I&#8217;m sure this trivial approach doesn&#8217;t work in all situations, but with this article I wanted to illustrate that sometimes things which seem hard can be made much easier with a little scripting knowledge. If you are thinking which technology you should learn next &#8211; then better check out a Perl, Python or some shell+AWK book :)</p>
<p>By the way, if you want real flexibility displaying your execution plans (from library cache), then check this out:</p>
<p><a href="http://blog.tanelpoder.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2Jsb2cudGFuZWxwb2Rlci5jb20vMjAwOS8wNS8yNi9zY3JpcHRzLWZvci1zaG93aW5nLWV4ZWN1dGlvbi1wbGFucy12aWEtcGxhaW4tc3FsLWFuZC1hbHNvLWluLW9yYWNsZS05aS8=">http://blog.tanelpoder.com/2009/05/26/scripts-for-showing-execution-plans-via-plain-sql-and-also-in-oracle-9i/</a></p>
 <img src="http://blog.tanelpoder.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=568" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://blog.tanelpoder.com/2010/01/18/sometimes-things-are-easy-part-1-how-to-fix-wrapped-execution-plan-text/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Measuring what matters</title>
		<link>http://blog.tanelpoder.com/2009/12/22/measuring-what-matters/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=measuring-what-matters</link>
		<comments>http://blog.tanelpoder.com/2009/12/22/measuring-what-matters/#comments</comments>
		<pubDate>Wed, 23 Dec 2009 00:58:39 +0000</pubDate>
		<dc:creator>Tanel Poder</dc:creator>
				<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[Troubleshooting]]></category>

		<guid isPermaLink="false">http://blog.tanelpoder.com/?p=511</guid>
		<description><![CDATA[Cary Millsap&#8217;s recent post prompted me to write down some of the related thoughts in my head. Here are few of my mantras for systematic troubleshooting and performance tuning, which have materialized in my head over the years of work: Picking the right starting point to troubleshooting and performance tuning is the most important decision [...]]]></description>
			<content:encoded><![CDATA[<p>Cary Millsap&#8217;s <a href="http://blog.tanelpoder.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2NhcnltaWxsc2FwLmJsb2dzcG90LmNvbS8yMDA5LzEyL215LXdob2xlLXN5c3RlbS1pcy1zbG93LW5vdy13aGF0Lmh0bWw=" target=\"_blank\">recent post</a> prompted me to write down some of the related thoughts in my head.</p>
<p>Here are few of my mantras for systematic troubleshooting and performance tuning, which have materialized in my head over the years of work:</p>
<ul>
<li>Picking the right starting point to troubleshooting and performance tuning is the most important decision in that process.</li>
<li>Pick the wrong starting point and you end up going in circles.</li>
<li>The scope of your performance data needs to match the scope of your problem, otherwise you end up going in circles.</li>
<li>If you don&#8217;t measure what matters, you may end up fixing what doesn&#8217;t matter.</li>
<li>If you&#8217;re not systematic in your troubleshooting, you may get lucky, but you don&#8217;t want to be dependent on luck! Moreover, you wont&#8217;t <em>need</em> to be lucky if you are systematic in your work!</li>
<li>Performance tuning is overrated. Fixing fundamental design and coding flaws via changing a magic configuration parameter is a dream just like is getting slim and healthy via eating magic diet pills bought from TV shop.</li>
<li>Your response times are too long for only two reasons:</li>
</ul>
<blockquote>
<ol>
<li>You are doing too much work</li>
<li>You are waiting for too much</li>
</ol>
</blockquote>
<p style="padding-left: 30px;">&#8230;both of the above things can be measured in Oracle&#8230;</p>
<ul>
<li>There&#8217;s no such thing as slow database or slow system. How can it be slow independently, without anyone experiencing this slowness?
<ul>
<li>If users say that a database is slow, they must be experiencing that somehow! The only way to experience database slowness is via a connection to it, in which case you&#8217;ll have a session (to measure).</li>
<li>If a monitoring system says that a database is slow, then it must be running and measuring response time of some task just like users do, otherwise it can not reliably say something is slow.</li>
</ul>
</li>
<li>Performance is about one thing and one thing only &#8211; <strong>time</strong>. And time is measured in seconds, not in CPU utilization, number of physical IOs or looks of an execution plan.</li>
</ul>
<p>Here&#8217;s a link to a Cary Millsap&#8217;s awesome post, read it!</p>
<ul>
<li><a href="http://blog.tanelpoder.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2NhcnltaWxsc2FwLmJsb2dzcG90LmNvbS8yMDA5LzEyL215LXdob2xlLXN5c3RlbS1pcy1zbG93LW5vdy13aGF0Lmh0bWw=" target=\"_blank\">http://carymillsap.blogspot.com/2009/12/my-whole-system-is-slow-now-what.html</a></li>
</ul>
<p>By the way, as far as database design and writing SQL is concerned here&#8217;s a good chance to learn how to write SQL right from C. J. Date:</p>
<ul>
<li><a href="http://blog.tanelpoder.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL21ldGhvZC1yLmNvbS9lZHVjYXRpb24vMTA3LWNqLWRhdGUtY291cnNl">http://method-r.com/education/107-cj-date-course</a></li>
</ul>
 <img src="http://blog.tanelpoder.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=511" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://blog.tanelpoder.com/2009/12/22/measuring-what-matters/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>What&#8217;s a good way to learn some Oracle internals every day?</title>
		<link>http://blog.tanelpoder.com/2009/10/26/whats-a-good-way-to-learn-some-oracle-internals-every-day/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=whats-a-good-way-to-learn-some-oracle-internals-every-day</link>
		<comments>http://blog.tanelpoder.com/2009/10/26/whats-a-good-way-to-learn-some-oracle-internals-every-day/#comments</comments>
		<pubDate>Mon, 26 Oct 2009 16:11:10 +0000</pubDate>
		<dc:creator>Tanel Poder</dc:creator>
				<category><![CDATA[Cool stuff]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[Administration]]></category>
		<category><![CDATA[Internals]]></category>
		<category><![CDATA[Performance]]></category>
		<category><![CDATA[Troubleshooting]]></category>

		<guid isPermaLink="false">http://blog.tanelpoder.com/?p=474</guid>
		<description><![CDATA[Sometimes when an attendee describes me some totally weird problem during a seminar, I am immediately able to answer something like &#8220;Hey this looks like a bug related to this Oracle configuration and can be influenced by xyz&#8221;. And then people ask me &#8220;How the hell do you know all this stuff?&#8221; Well, I haven&#8217;t [...]]]></description>
			<content:encoded><![CDATA[<p>Sometimes when an attendee describes me some totally weird problem during a seminar, I am immediately able to answer something like &#8220;Hey this looks like a bug related to this Oracle configuration and can be influenced by xyz&#8221;.</p>
<p>And then people ask me &#8220;How the hell do you know all this stuff?&#8221;</p>
<p>Well, I haven&#8217;t been bitten by all of these bugs myself, but I have been doing something for many years, almost every day&#8230; reading my email!</p>
<p>Oh, and additionally I have configured Metalink to send me daily updates about new/updated notes, forum articles and&#8230; <strong><em>bug descriptions</em></strong>!</p>
<p>The last part is very important. Bug descriptions tell you something about new bugs found (and old bugs rediscovered) and sometimes their details tell you an interesting piece or two about Oracle internals related to them.</p>
<p><span id="more-474"></span></p>
<p>And if these descriptions come to your mailbox every day, you catch a detail or two every day. Of course this assumes you are interested enough learning this stuff and take the time to actually open and read the bug descriptions you see interesting enough.</p>
<p>And if you do this for months or years, you will slowly start putting all these details together in your brain (without even noticing it yourself). Things will start to make sense to you over time, thanks to learning a little detail here and there every day. That way you also learn from other people&#8217;s experiences and when this bug (or something similar) happens to you, you can recognize it more easily.</p>
<p>I&#8217;m not saying here that all you need to do is read Metalink, but keeping an eye of the current bugs + their internal explanations by support people provides icing on the cake. Note that the bug descriptions often contain interesting information which you don&#8217;t see documented elsewhere, such some function names and their meanings, undocumented x$ table information and of course new undocumented parameters (which I don&#8217;t set anywhere, but do further research on).</p>
<p>I&#8217;ve had the habit of reading the bug descriptions for so much time so I haven&#8217;t even remembered to mention this to anyone if people ask where to learn internals. But <a href="http://blog.tanelpoder.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL29yYXN0b3J5LndvcmRwcmVzcy5jb20vMjAwOS8wOS8xNi9tZXRhbGluay1oZWFkbGluZXMv" target=\"_blank\">Dominic Brooks</a> and <a href="http://blog.tanelpoder.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?url=aHR0cDovL2Nvc2thbi53b3JkcHJlc3MuY29tLzIwMDkvMDQvMzAvd2hhdC1pLWxlYXJuZWQtZnJvbS1hb3QtYnktdGFuZWwtcG9kZXIv" target=\"_blank\">Coskan Gundogar</a> have recently written about this so I thought I should share this with my blog audience too!</p>
<p>You can configure this by going to Settings page in Metalink and configuring the &#8220;Headlines/Hot topics via E-Mail&#8221; setting.</p>
 <img src="http://blog.tanelpoder.com/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=474" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://blog.tanelpoder.com/2009/10/26/whats-a-good-way-to-learn-some-oracle-internals-every-day/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
	</channel>
</rss>

