<?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>OS与Oracle &#187; Excel</title>
	<atom:link href="http://www.os2ora.com/tag/excel/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.os2ora.com</link>
	<description>专注于现实世界Oracle数据库的高性能，高可扩展性与新一代数据库Exadata架构</description>
	<lastBuildDate>Fri, 16 Jul 2010 02:55:51 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Linux性能分析工具重点推荐 – nmon analyser</title>
		<link>http://www.os2ora.com/linux-performance-analysis-tool-recommend-nmon-analyser-2/</link>
		<comments>http://www.os2ora.com/linux-performance-analysis-tool-recommend-nmon-analyser-2/#comments</comments>
		<pubDate>Sat, 21 Nov 2009 15:20:00 +0000</pubDate>
		<dc:creator>Kaya</dc:creator>
				<category><![CDATA[Linux性能调优]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[数据库性能调优]]></category>
		<category><![CDATA[cluster]]></category>
		<category><![CDATA[Excel]]></category>
		<category><![CDATA[Linux 性能监控]]></category>
		<category><![CDATA[monitor]]></category>
		<category><![CDATA[nmon]]></category>
		<category><![CDATA[nmon analyser]]></category>
		<category><![CDATA[VBA]]></category>
		<category><![CDATA[性能监控]]></category>

		<guid isPermaLink="false">http://www.os2ora.com/linux-performance-analysis-tool-recommend-nmon-analyser-2/</guid>
		<description><![CDATA[除了上一篇文章提到的collectl, IBM出品的nmon其实也是一个不错的Linux上的性能监控工具，在写这篇文章时顺带google了nmon一把，惊喜地发现nmon也open source了。还是以sourceforge为根据地，网址是http://nmon.sourceforge.net.

nmon在监控数据与易用性方面几乎与collectl不相上下，对监控单台机器的系统性能还是不错的选择的。

不过，nmon却做出了另一个突出贡献。这就是推出了一个nmon analyser，而且以开放源代码的形式提供，它的目的是实现对nmon产生的历史性能数据的分析，产生一系列的图表。nmon analyser其实就是一个Excel文件，里面嵌套了VBA脚本用来分析nmon产生的文本文件并产生一系列的图形报表。深入地分析这些脚本，你会发现，这个analyser其实是一个极好的框架，很容易利用这个analyser来分析自己的数据，而不局限于nmon产生的文件......]]></description>
			<content:encoded><![CDATA[<p>Kaya 发表于 <a href="http://www.os2ora.com">os2ora.com</a></p>
<p>除了<a href="http://www.os2ora.com/linux-performance-monitoring-tool-recommend-collectl/">上一篇文章</a>提到的collectl, IBM出品的nmon其实也是一个不错的Linux上的性能监控工具，在写这篇文章时顺带google了nmon一把，惊喜地发现nmon也open source了。还是以sourceforge为根据地，网址是<a title="http://nmon.sourceforge.net" href="http://nmon.sourceforge.net">http://nmon.sourceforge.net</a>.</p>
<p>nmon在监控数据与易用性方面几乎与collectl不相上下，对监控单台机器的系统性能还是不错的选择的。不过，nmon没有如collectl一样的网络接口，如果用来它实时监控几十台机器，可能要开几十个窗口，这基本上是不可能的事情。</p>
<p>下面是nmon官方网站最新版本的一个截图：</p>
<div><a href="http://www.os2ora.com/wp-content/uploads/2009/11/image11.png"><img style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" title="image" src="http://www.os2ora.com/wp-content/uploads/2009/11/image_thumb10.png" border="0" alt="image" width="483" height="296" /></a></div>
<div> </div>
<p>不过，nmon却做出了另一个突出贡献。这就是推出了一个nmon analyser，而且以开放源代码的形式提供，它的目的是实现对nmon产生的历史性能数据的分析，产生一系列的图表。</p>
<p>以图表分析性能数据的作用是很明显的。密密麻麻的数字，也许只有经过一定的聚合计算，人们才能大致地了解数据的含义，说得忽悠人一点，那就是数据挖掘。不过，聚合计算有个问题，就是会把系统可能出现的瓶颈掩盖掉，举个<a href="http://jonathanlewis.wordpress.com">Jonathan Lewis</a>打过的比方，一个人头部放在寒冰里，脚放在烈火中，按平均值理论，这个人会感觉得很舒服。而利用图形的方式对数据进行描述，就不会导致数据的丢失，而且会使数据特征一目了然。</p>
<p>还是一个来自官方网站上nmon analyser分析结果的一个截图：</p>
<p><a href="http://www.os2ora.com/wp-content/uploads/2009/11/image12.png"><img style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" title="image" src="http://www.os2ora.com/wp-content/uploads/2009/11/image_thumb11.png" border="0" alt="image" width="400" height="242" /></a></p>
<p>nmon analyser其实就是一个Excel文件，里面嵌套了VBA脚本用来分析nmon产生的文本文件并产生一系列的图形报表。深入地分析这些脚本，你会发现，这个analyser其实是一个极好的框架，很容易利用这个analyser来分析自己的数据，而不局限于nmon产生的文件。举个例子，可以用nmon analyser来产生由collectl产生的文件。这当然需要对nmon analyser的脚本做一定的改写，下面是一个例子：</p>
<p><a href="http://www.os2ora.com/wp-content/uploads/2009/11/image13.png"><img style="border-top-width: 0px; display: inline; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" title="image" src="http://www.os2ora.com/wp-content/uploads/2009/11/image_thumb12.png" border="0" alt="image" width="804" height="226" /></a></p>
<p>这里可能要做更深一步的说明，无论是nmon或者collectl，都提供了一种把它们做为后台daemon进程对系统进行监控并产生监控日志的功能。这些监控日志就可以被用于对系统的历史性能的分析。collectl甚至还做了一个功能，根据用户指定的时间跨度，自动地从日志里面抽取出这段时间里的历史数据。analyser的作用就在于分析这些日志，并产生相应的分析报告和图表。</p>
<p>因此，从某种程度上说，nmon anlayser为我们提供了一个框架，利用这个框架，我们可以利用起Excel强大的数据分析与绘图功能，实现对文本文件数据的自动处理。这才是本文要说明的最终结论。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.os2ora.com/linux-performance-analysis-tool-recommend-nmon-analyser-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Linux操作系统资源监控工具重点推荐 &#8212; collectl</title>
		<link>http://www.os2ora.com/linux-performance-monitoring-tool-recommend-collectl/</link>
		<comments>http://www.os2ora.com/linux-performance-monitoring-tool-recommend-collectl/#comments</comments>
		<pubDate>Fri, 20 Nov 2009 05:57:44 +0000</pubDate>
		<dc:creator>Kaya</dc:creator>
				<category><![CDATA[Linux性能调优]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[数据库性能调优]]></category>
		<category><![CDATA[cluster]]></category>
		<category><![CDATA[Excel]]></category>
		<category><![CDATA[Linux 性能监控]]></category>
		<category><![CDATA[linux系统监控工具]]></category>
		<category><![CDATA[monitor]]></category>
		<category><![CDATA[nmon]]></category>
		<category><![CDATA[nmon analyser]]></category>
		<category><![CDATA[VBA]]></category>
		<category><![CDATA[性能监控]]></category>

		<guid isPermaLink="false">http://www.os2ora.com/linux-performance-monitoring-tool-recommend-collectl/</guid>
		<description><![CDATA[对系统资源的监控，是系统管理者一个必备的任务。从OS角度讲，包括CPU/IO/Network/FS等等，从Database的角度讲，包括Active Sessions/ON CPU/Disks/Top Segments/Top SQL等等。而Database对资源的利用也反映在OS一级上，对OS计算资源的充分均衡利用是我们的目标。那么，如何有效的掌握OS的资源利用情况就成为了一个System Administrator，Database Administrator日常工作的一个重点。
Linux上的常规监控工具主要有top, vmstat, iostat, netstat, sar这些。对这些工具的熟练运用应该能解决大部分问题，不过，这些工具也太散了，学习周期是一个很大的问题。有没有一个包揽所有这些工具的一个超级命令呢？
这就是本文要推荐的一个工具了，collectl，一个开源的sourceforge上的项目，http://collectl.sourceforge.net......]]></description>
			<content:encoded><![CDATA[<p>Kaya 发表于 <a href="http://www.os2ora.com">os2ora.com</a></p>
<p>对系统资源的监控，是系统管理者一个必备的任务。从OS角度讲，包括CPU/IO/Network/FS等等，从Database的角度讲，包括Active Sessions/ON CPU/Disks/Top Segments/Top SQL等等。而Database对资源的利用也反映在OS一级上，对OS计算资源的充分均衡利用是我们的目标。那么，如何有效的掌握OS的资源利用情况就成为了一个System Administrator，Database Administrator日常工作的一个重点。</p>
<p>Linux上的常规监控工具主要有top, vmstat, iostat, netstat, sar这些。对这些工具的熟练运用应该能解决大部分问题，不过，这些工具也太散了，学习周期是一个很大的问题。有没有一个包揽所有这些工具的一个超级命令呢？</p>
<p>这就是本文要推荐的一个工具了，collectl，一个开源的sourceforge上的项目，<a href="http://collectl.sourceforge.net">http://collectl.sourceforge.net</a>。</p>
<p>先摆摆架构图</p>
<p><img src="http://collectl.sourceforge.net/Architecture.jpg" alt="" width="716" height="375" /></p>
<p>三种模式：</p>
<p>Interactive Mode: This is the default and in this mode data is read from /proc and passes through analyze.</p>
<p>Record Mode: Data passes from /proc the same way as Interactive Mode but instead of going through the Analyze function it written it to a file.</p>
<p>Playback Mode: Here collectl works virtually identical to Interactive Mode except instead of reading data from /proc it reads it from a file.</p>
<p>另一个摩登的，独此一家的，现成的特性是支持socket发送数据，这对于一个有几十台以上机器的cluster来说简直就是一个福音。可以通过另一个命令接收整个cluster里面所有机器实时发送过来的数据，通过一个屏幕显示出来，这对于掌握整个cluster的工作状态是极其方便的。</p>
<p>对于一般的机房来说，虽然机房里的所有机器不是一般意义上的cluster，但是也可以在所有机器上安装collectl,然后把性能信息实时发送到一个监控机器，实现grid control。当然，这里指的是安装了Linux操作系统的机器。</p>
<p>collectl支持的性能数据种类应该是最全的一个，包括IO/CPU/Network/NFS/Infiniband/Lustre/Process/Slabs等等。</p>
<p>最后贴一个collectl在Exadata上的一个应用，监控所有的8个数据库节点还有14个cell节点。</p>
<p><a href="http://www.os2ora.com/wp-content/uploads/2009/11/image6.png"><img style="border-right: 0px; border-top: 0px; display: inline; border-left: 0px; border-bottom: 0px" title="image" src="http://www.os2ora.com/wp-content/uploads/2009/11/image_thumb6.png" border="0" alt="image" width="804" height="360" /></a></p>
<p>看起来Exadata V1的IO已经很强劲，对否？</p>
<p>collectl有一个工具<a href="http://collectl-utils.sourceforge.net/colmux.html">colmux</a>可以实现上面的类似功能，是collectl作者的另一个开源项目，叫Collectl Utilities(<a href="http://collectl-utils.sourceforge.net/">http://collectl-utils.sourceforge.net/</a>)。</p>
<p>如果对上图监控方式感兴趣的朋友可以用邮件的方式和我进一步联系。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.os2ora.com/linux-performance-monitoring-tool-recommend-collectl/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>用Oracle实现ASH的数据透视图</title>
		<link>http://www.os2ora.com/ash-pivot-by-oracle/</link>
		<comments>http://www.os2ora.com/ash-pivot-by-oracle/#comments</comments>
		<pubDate>Mon, 15 Jun 2009 17:45:25 +0000</pubDate>
		<dc:creator>Kaya</dc:creator>
				<category><![CDATA[数据库性能调优]]></category>
		<category><![CDATA[active session history]]></category>
		<category><![CDATA[ASH]]></category>
		<category><![CDATA[Excel]]></category>
		<category><![CDATA[pivot]]></category>
		<category><![CDATA[unpivot]]></category>
		<category><![CDATA[数据透视图]]></category>

		<guid isPermaLink="false">http://www.os2ora.com/ash-pivot-by-oracle/</guid>
		<description><![CDATA[11g里面有个很有用的新特性，对数据透视图的支持。简单而言，它可以实现宽表和窄表之间的转化。举一个例子，有一张表记录了全校所有班级所有学生的成绩(A,B,C,D,E)，现在想统计每个班级里每个分数级别对应的学生人数......]]></description>
			<content:encoded><![CDATA[<p>Kaya 发表于 <a href="http://www.os2ora.com">os2ora.com</a></p>
<p>11g里面有个很有用的新特性，对数据透视图的支持。</p>
<p>简单而言，它可以实现宽表和窄表之间的转化。举一个例子，有一张表记录了全校所有班级所有学生的成绩(A,B,C,D,E)，现在想统计每个班级里每个分数级别对应的学生人数。当然，一个SQL就可以实现：</p>

<div class="wp_syntax"><div class="code"><pre class="sql" style="font-family:monospace;"><span style="color: #993333; font-weight: bold;">SELECT</span> class<span style="color: #66cc66;">,</span> score<span style="color: #66cc66;">,</span> count<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">*</span><span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">FROM</span> score_table
<span style="color: #993333; font-weight: bold;">GROUP</span> <span style="color: #993333; font-weight: bold;">BY</span> class<span style="color: #66cc66;">,</span> score;</pre></div></div>

<p>结果的格式如下：</p>
<pre>班级      分数 人数
一年一班     A  10
一年一班     B  16
一年一班     C  16
一年一班     D  16
一年一班     E  16
一年二班     A  15
一年二班     B  14
一年二班     C  15
一年二班     D  14
一年二班     E  15</pre>
<p>不过，很多人更想要下面的格式</p>
<pre>班级        A    B   C   D   E
一年一班   10   16  16  16  16
一年二班   15   14  15  14  15</pre>
<p>第二种格式显然简单明了多了。</p>
<p>用Oracle的新语法，可以实现如下</p>

<div class="wp_syntax"><div class="code"><pre class="sql" style="font-family:monospace;"><span style="color: #993333; font-weight: bold;">SELECT</span> <span style="color: #66cc66;">*</span>
<span style="color: #993333; font-weight: bold;">FROM</span>
<span style="color: #66cc66;">&#40;</span>
<span style="color: #993333; font-weight: bold;">SELECT</span> class<span style="color: #66cc66;">,</span>score<span style="color: #66cc66;">,</span>count<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">*</span><span style="color: #66cc66;">&#41;</span> cnt
<span style="color: #993333; font-weight: bold;">FROM</span> score_table
<span style="color: #993333; font-weight: bold;">GROUP</span> <span style="color: #993333; font-weight: bold;">BY</span> class<span style="color: #66cc66;">,</span>score
<span style="color: #66cc66;">&#41;</span>
pivot
<span style="color: #66cc66;">&#40;</span>
sum<span style="color: #66cc66;">&#40;</span>cnt<span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">FOR</span> score <span style="color: #993333; font-weight: bold;">IN</span> <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'A'</span><span style="color: #66cc66;">,</span><span style="color: #ff0000;">'B'</span><span style="color: #66cc66;">,</span><span style="color: #ff0000;">'C'</span><span style="color: #66cc66;">,</span><span style="color: #ff0000;">'D'</span><span style="color: #66cc66;">,</span><span style="color: #ff0000;">'E'</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#41;</span>
;</pre></div></div>

<p>一个更实用的场合是对ASH(active session history)数据的处理上。</p>
<p>一般而言，我们需要一段时间内Top 10的wait event，并掌握其在每个时间片(例如10 seconds)里的分布。这些信息可以通过下面的SQL进行获取:</p>

<div class="wp_syntax"><div class="code"><pre class="sql" style="font-family:monospace;"><span style="color: #993333; font-weight: bold;">SELECT</span>
    to_char<span style="color: #66cc66;">&#40;</span>to_date<span style="color: #66cc66;">&#40;</span>trunc<span style="color: #66cc66;">&#40;</span>to_char<span style="color: #66cc66;">&#40;</span>sample_time<span style="color: #66cc66;">,</span><span style="color: #ff0000;">'SSSSS'</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">/</span><span style="color: #cc66cc;">10</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">*</span><span style="color: #cc66cc;">10</span><span style="color: #66cc66;">,</span><span style="color: #ff0000;">'SSSSS'</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span><span style="color: #ff0000;">'hh24:mi:ss'</span><span style="color: #66cc66;">&#41;</span> start_time
  <span style="color: #66cc66;">,</span> decode<span style="color: #66cc66;">&#40;</span>ash<span style="color: #66cc66;">.</span>session_state<span style="color: #66cc66;">,</span><span style="color: #ff0000;">'ON CPU'</span><span style="color: #66cc66;">,</span><span style="color: #ff0000;">'ON CPU'</span><span style="color: #66cc66;">,</span>ash<span style="color: #66cc66;">.</span>event<span style="color: #66cc66;">&#41;</span>     event
  <span style="color: #66cc66;">,</span> count<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">/</span><span style="color: #cc66cc;">10</span> total
<span style="color: #993333; font-weight: bold;">FROM</span>
   v$active_session_history ash
<span style="color: #993333; font-weight: bold;">WHERE</span>
          sample_time &amp;gt; sysdate<span style="color: #66cc66;">-</span><span style="color: #cc66cc;">1</span><span style="color: #66cc66;">/</span><span style="color: #cc66cc;">24</span>
<span style="color: #993333; font-weight: bold;">GROUP</span> <span style="color: #993333; font-weight: bold;">BY</span>  trunc<span style="color: #66cc66;">&#40;</span>to_char<span style="color: #66cc66;">&#40;</span>sample_time<span style="color: #66cc66;">,</span><span style="color: #ff0000;">'SSSSS'</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">/</span><span style="color: #cc66cc;">10</span><span style="color: #66cc66;">&#41;</span>
       <span style="color: #66cc66;">,</span>  decode<span style="color: #66cc66;">&#40;</span>ash<span style="color: #66cc66;">.</span>session_state<span style="color: #66cc66;">,</span><span style="color: #ff0000;">'ON CPU'</span><span style="color: #66cc66;">,</span><span style="color: #ff0000;">'ON CPU'</span><span style="color: #66cc66;">,</span>ash<span style="color: #66cc66;">.</span>event<span style="color: #66cc66;">&#41;</span>
;</pre></div></div>

<p>同样的，我们更习惯将这个结果进行倒置。这同样可以通过pivot来实现:</p>

<div class="wp_syntax"><div class="code"><pre class="sql" style="font-family:monospace;"><span style="color: #993333; font-weight: bold;">SELECT</span> <span style="color: #66cc66;">*</span> <span style="color: #993333; font-weight: bold;">FROM</span>
<span style="color: #66cc66;">&#40;</span><span style="color: #993333; font-weight: bold;">SELECT</span>
    to_char<span style="color: #66cc66;">&#40;</span>to_date<span style="color: #66cc66;">&#40;</span>trunc<span style="color: #66cc66;">&#40;</span>to_char<span style="color: #66cc66;">&#40;</span>sample_time<span style="color: #66cc66;">,</span><span style="color: #ff0000;">'SSSSS'</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">/</span><span style="color: #cc66cc;">10</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">*</span><span style="color: #cc66cc;">10</span><span style="color: #66cc66;">,</span><span style="color: #ff0000;">'SSSSS'</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">,</span><span style="color: #ff0000;">'hh24:mi:ss'</span><span style="color: #66cc66;">&#41;</span> start_time
  <span style="color: #66cc66;">,</span> decode<span style="color: #66cc66;">&#40;</span>ash<span style="color: #66cc66;">.</span>session_state<span style="color: #66cc66;">,</span><span style="color: #ff0000;">'ON CPU'</span><span style="color: #66cc66;">,</span><span style="color: #ff0000;">'ON CPU'</span><span style="color: #66cc66;">,</span>ash<span style="color: #66cc66;">.</span>event<span style="color: #66cc66;">&#41;</span>     event
  <span style="color: #66cc66;">,</span> count<span style="color: #66cc66;">&#40;</span><span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">/</span><span style="color: #cc66cc;">10</span> total
<span style="color: #993333; font-weight: bold;">FROM</span>
   v$active_session_history ash
<span style="color: #993333; font-weight: bold;">WHERE</span>
          sample_time &amp;gt;  sysdate<span style="color: #66cc66;">-</span><span style="color: #cc66cc;">1</span><span style="color: #66cc66;">/</span><span style="color: #cc66cc;">24</span>
<span style="color: #993333; font-weight: bold;">GROUP</span> <span style="color: #993333; font-weight: bold;">BY</span>  trunc<span style="color: #66cc66;">&#40;</span>to_char<span style="color: #66cc66;">&#40;</span>sample_time<span style="color: #66cc66;">,</span><span style="color: #ff0000;">'SSSSS'</span><span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">/</span><span style="color: #cc66cc;">10</span><span style="color: #66cc66;">&#41;</span>
       <span style="color: #66cc66;">,</span>  decode<span style="color: #66cc66;">&#40;</span>ash<span style="color: #66cc66;">.</span>session_state<span style="color: #66cc66;">,</span><span style="color: #ff0000;">'ON CPU'</span><span style="color: #66cc66;">,</span><span style="color: #ff0000;">'ON CPU'</span><span style="color: #66cc66;">,</span>ash<span style="color: #66cc66;">.</span>event<span style="color: #66cc66;">&#41;</span>
<span style="color: #66cc66;">&#41;</span> ash
pivot <span style="color: #66cc66;">&#40;</span>sum<span style="color: #66cc66;">&#40;</span>total<span style="color: #66cc66;">&#41;</span> <span style="color: #993333; font-weight: bold;">FOR</span> event <span style="color: #993333; font-weight: bold;">IN</span> <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'ON CPU'</span> <span style="color: #993333; font-weight: bold;">AS</span> TOP1<span style="color: #66cc66;">,</span><span style="color: #ff0000;">'PX Deq: Slave Session Stats'</span> <span style="color: #993333; font-weight: bold;">AS</span> TOP2<span style="color: #66cc66;">&#41;</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #993333; font-weight: bold;">ORDER</span> <span style="color: #993333; font-weight: bold;">BY</span> <span style="color: #cc66cc;">1</span>;</pre></div></div>

<p>下面是一个ASH的例子，系统的工作状态已经一目了然了！</p>
<pre>TOP   EVENT
----- ----------------------------------------------------------------
TOP1  cell smart table scan
TOP2  ASM file metadata operation
TOP3  control file sequential read
TOP4  ON CPU
TOP5  enq: XL - fault extent map
TOP6  DFS lock handle
TOP7  cell single block physical read
TOP8  reliable message
TOP9  read by other session
TOP10 latch: shared pool

TIME      TOP1  TOP2  TOP3  TOP4  TOP5  TOP6  TOP7  TOP8  TOP9 TOP10
-------- ----- ----- ----- ----- ----- ----- ----- ----- ----- -----
00:30:50                       1
00:31:30
00:31:40
00:31:50
00:32:10
00:32:30
00:32:50                       1
00:34:10
00:34:30                       1
00:34:40
00:35:10                       1
00:35:40                       1
00:37:50    16    34     5     9     2           1    14     3     9
00:38:00   296    95     7     9     3           6     1     6
00:38:10   478   133    15     4    17           7           1
00:38:20   543    71    21     6     8           7           5
00:38:30   531    81    13     2    14           9     1     2
00:38:40   600    30    17     4     2     1     2
00:38:50   592    36    16     4     5    10     1
00:39:00   609    20    12     6          10           4
00:39:10   620    14    13     4     2    10
00:39:20   628     5    10     4          10     1
00:39:30   248     7     4                 4           4</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.os2ora.com/ash-pivot-by-oracle/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>纸, 计算器, Excel, Database</title>
		<link>http://www.os2ora.com/paper-calculator-excel-database/</link>
		<comments>http://www.os2ora.com/paper-calculator-excel-database/#comments</comments>
		<pubDate>Sun, 07 Jun 2009 16:31:27 +0000</pubDate>
		<dc:creator>Kaya</dc:creator>
				<category><![CDATA[数据库性能调优]]></category>
		<category><![CDATA[Excel]]></category>
		<category><![CDATA[关系型]]></category>
		<category><![CDATA[数据]]></category>
		<category><![CDATA[数据库]]></category>
		<category><![CDATA[数据透视图]]></category>
		<category><![CDATA[曲线图]]></category>

		<guid isPermaLink="false">http://www.os2ora.com/paper-calculator-excel-database/</guid>
		<description><![CDATA[有一天，突然发现，自己的工作大部分就是对一系列数据的操作。CPU利用率，IO吞吐量，Memory利用率，SQL Elapsed Time，Wait Event History…有时是取得它们之间的平衡，如CPU, IO, Memory，有时是尽量缩少SQL的执行时间，有时则是利用它们得知某段时间系统的工作状况。于是，对数据的高效处理就成为了高效工作的瓶颈了......]]></description>
			<content:encoded><![CDATA[<p>Kaya 发表于 <a href="http://www.os2ora.com">os2ora.com</a></p>
<p>有一天，突然发现，自己的工作大部分就是对一系列数据的操作。CPU利用率，IO吞吐量，Memory利用率，SQL Elapsed Time，Wait Event History…有时是取得它们之间的平衡，如CPU, IO, Memory，有时是尽量缩少SQL的执行时间，有时则是利用它们得知某段时间系统的工作状况。</p>
<p>于是，对数据的高效处理就成为了高效工作的瓶颈了。</p>
<p>最基本的工具莫过于一张白纸，一支铅笔，再加上一个计算器，或者更时尚点，一个大触摸屏的iphone</p>
<p>我觉得提升一个档次的应该是使用Excel对数据进行处理。如果能够熟练使用Excel的话，工作效率一定会大幅度提高。一个很好的例子就是某段时间内CPU/IO资源使用情况的曲线图，还有对数据进行聚合统计，或者对数据进行数据透视图分析。</p>
<p>如果再上一个档次呢？我觉得应该是直接使用数据库的引擎进行工作。有时就是这么奇怪，工作对象就是一个专业的对数据进行处理的大家伙，而我们却视它而不见，利用更原始的工具对数据进行处理。这种观念是该改改了。</p>
<p>或者一方面是由于数据库引擎的使用友好性不够，但最重要的原因，我想应该是缺少关系型思维的方式。</p>
<p>如果思维里多点 table, group by, order by，就会减少很多对数据结果在Excel里的手工处理。如果思维里多点sum, avg聚合函数的影子，在Excel就不用手工地对一些行列进行sum和avg了。</p>
<p>如果知道数据库如何实现行列倒置，就不用利用Excel里的行列倒置功能了。</p>
<p>如果知道数据库如果实现数据透视图，就不会去依赖于Excel的这个功能了。</p>
<p>下篇文章打算说说数据库如何实现简单地行列倒置，如果实现数据透视图。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.os2ora.com/paper-calculator-excel-database/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
