<?xml version="1.0" encoding="GB2312"?>
<rss version="2.0">
<channel>
<title>Friends Life and Oracle</title>
<link>http://www.eygle.com/blog/</link>
<description>eygle的Oracle Blog，提供Oracle技术研究及深入探讨，同时记录个人爱好及生活历程。</description>
<copyright>Copyright 2006</copyright>
<lastBuildDate>Fri, 20 Oct 2006 14:32:17 +0800</lastBuildDate>
<generator>http://www.movabletype.org/?v=3.33</generator>
<docs>http://blogs.law.harvard.edu/tech/rss</docs> 

<item>
<title>DBA警世录:备份重于一切</title>
<description><![CDATA[<p>最近在ITPUB上有<a href="http://www.itpub.net/650527.html">一个帖子</a>讨论得很热烈，题目是：怎么老是有这么多不负责任的DBA。</p>

<p>作者提到：<br />
<blockquote>　刚才同事告诉我，以前我的顶头上司，IT经理引咎辞职了，仔细一问，原来是我的继任没有做备份，资料全部损毁<br />
　<br />
　这也是今年我第2次见到这种情况</blockquote></p>

<p>这种情况其实我们已经看到过很多次了。</p>

<p>如果拿这个具体案例来说，其实有很多环节可以避免出现这样的问题，比如:<br />
1.良好的规范管理<br />
2.严格的操作及上线流程<br />
3.DBA的职责界定及监督检查机制<br />
4.系统的日常监控及维护机制...</p>

<p>当然有很多很多可能防止问题出现的方法，可惜最终问题仍然发生了。</p>

<p>这又一次验证了<a href="http://www.eygle.com/digest/2006/04/murphy_law.html">墨菲定律</a>，这个世界上没有永远的侥幸。<br />
在我的新书《<a href="http://www.eygle.com/archives/2008/08/my_book_services.html">深入浅出Oracle</a>》一书的序言中我也曾写到：<br />
<strong>唯一一件会使DBA在梦中惊醒的事情就是：没有备份！</strong></p>

<p>在我曾经授课的岁月里，我总是会在课程的最前面讲到DBA的<a href="http://www.eygle.com/archives/2006/03/the_four_rule_for_dba.html">四大守则</a>，其中第一条就是：<strong>备份重于一切</strong>。</p>

<p>而在我的网站上，这句话已经<a href="http://www.google.com/search?hl=zh-CN&inlang=zh-CN&ie=GB2312&oe=GB2312&newwindow=1&domains=eygle.com&q=%B1%B8%B7%DD%D6%D8%D3%DA%D2%BB%C7%D0&sitesearch=eygle.com">重复</a>了很多次，昨天看Tom的Blog，Tom提到了他的<a href="http://www.eygle.com/archives/2006/10/tom_five_rules.html">法则</a>，在原文中，Tom用了一个词<strong>mantra</strong>，这个词在金山词霸上如下解释：<br />
<blockquote>mantra<br />
颂歌, 咒语(尤指四吠陀经典内作为咒文或祷告唱念的)</blockquote></p>

<p>在昨天的<a href="http://www.eygle.com/archives/2006/10/tom_five_rules.html">文章</a>中，被我翻译成法则，而我觉得如果翻译成咒语也满合适的，如果我一次一次的重复能够让所有的DBA们都记得，那么我仍然愿意重复我的DBA四大守则:</p>

<blockquote>1.备份重于一切
我们必需知道,系统总是要崩溃的，没有有效的备份只是等哪一天死！我经常开玩笑的说,唯一会使DBA在梦中惊醒的就是,没有有效的备份.

<p>2.三思而后行<br />
think thrice before you act</p>

<p>任何时候都要清楚你所做的一切，否则宁可不做！有时候一个回车,一条命令就会造成不可恢复的灾难,所以,你必需清楚确认你所做的一切,并且在必要时保护现场.</p>

<p>3.rm是危险的<br />
  要知道在UNIX/Linux下，这个操作意味着你可能将永远失去后面的东西，所以，确认你的操作！！！<br />
 太多的人在 "rm -rf" 上悲痛欲绝,当年写下这条守则时,是一个凌晨被一个朋友吵醒,他说误操作rm -rf删除掉了200G的数据库,并且没有备份.</p>

<p>我当时能告诉他的只有一句话:要保持冷静.</p>

<p>4.你来制定规范<br />
 良好的规范是减少故障的基础。所以,做为一个DBA,你需要来制订规范,规范开发甚至系统人员,这样甚至可以规避有意或是无意的误操作.减少数据库的风险.</blockquote></p>

<p>最早写下这四大守则时，还受到我们某位国家领导人的影响，在指导防火工作时，他曾经题写过以下名词:<br />
<strong>隐患险于明火，防范胜于救灾，责任重于泰山</strong></p>

<p>这句话对于DBA来说，同样适用。在某种程度上，DBA就是消防队员。：）</p>

<p>最后，我们还可以来看看DCBA对这件事情的<a href="http://www.anysql.net/life/love_after_lost.html">看法</a>。</p>

<p>-The End-</p>]]></description>
<link>http://www.eygle.com/archives/2006/10/backup_backup_backup.html</link>
<guid>http://www.eygle.com/archives/2006/10/backup_backup_backup.html</guid>
<category>Backup&amp;Recovery</category>
<pubDate>Fri, 20 Oct 2006 14:32:17 +0800</pubDate>
</item>
<item>
<title>Oracle初学者入门指南-Oracle的价格</title>
<description><![CDATA[最近有几个朋友向我咨询Oracle产品的价格，很多初学者也经常关心Oracle的产品价格。
我把一份Oracle的报价单放在这里，供大家参考。<br><br>

通常大家都说Oracle很贵，我们来看看到底Oracle贵不贵。<br><br>

<blockquote><pre>
1、Datebase Products        Named User License       Processor Licens
                            美元报价   人民币报价    美元报价     人民币报价 
Standard Edition              $450       ￥3,725     $22,500      ￥186,228 
Enterprise Edition          $1,200       ￥9,932     $60,000      ￥496,608 
Personal Editon               $600       ￥4,966 
Lite                          $150       ￥1,242 
 　 
2、Enterprise Edition Options:    Named User License         Processor License
                                美元报价    人民币报价      美元报价     人民币报价
Real Application Clusters        $600       ￥4,966          $30,000      ￥248,304 
Partitioning                     $300       ￥2,483          $15,000      ￥124,152 
OLAP                             $600       ￥4,966          $30,000      ￥248,304 
Data Minging                     $600       ￥4,966          $30,000      ￥248,304 
Spatial                          $300       ￥2,483          $15,000      ￥124,152 
Advanced  Security               $300       ￥2,483          $15,000      ￥124,152 
Label Security                   $300       ￥2,483          $15,000      ￥124,152 </blockquote><br>

也就是说，如果是企业版，一个CPU的价格在人民币￥496,608 ，当然这个是List Price，一般都能有50%左右的Discount，那么最终价格可能在20多万；当然我们可以按用户数购买，不过最终的价格都是差不多的。<br><br>

这就是Oracle的大致价格。<br>

-The End-<br><br>
]]></description>
<link>http://www.eygle.com/archives/2006/09/the_price_of_oracle.html</link>
<guid>http://www.eygle.com/archives/2006/09/the_price_of_oracle.html</guid>
<category>Beginner</category>
<pubDate>Tue, 19 Sep 2006 15:31:43 +0800</pubDate>
</item>
<item>
<title>DBA语录之：规范的重要</title>
<description><![CDATA[<p>通常在一个企业环境中，都存在大量的数据库环境，这些环境怎样安装、管理和维护是非常重要的。</p>
<p>我们认为，规范非常重要，有了良好的规范才能形成有序高效的管理，这是我在每次讲座中几乎都会强调的。</p>
<p>前几天在<a href="http://roujiaweize.spaces.live.com/">小惠惠</a>的Blog上看到了一则非常有趣的<a href="http://roujiaweize.spaces.live.com/Blog/cns!9745F14B4AEB3B72!1217.entry">语录</a>，在我上次的<a href="http://www.eygle.com/archives/2006/09/lecture_at_it168.html">讲座</a>中也被引用到了，现在收录在这里，算是给初学者们的一点借鉴和警示吧：</p>
<blockquote dir="ltr" style="MARGIN-RIGHT: 0px">
<p><strong>有一次跟朋友吃饭的时候，我们谈到了数据库的规范化，如安装，配置，监控等等。<br />大师说：&ldquo;我们的数据库，除了SID其它都一样。&rdquo;<br />而我只能说：&ldquo;我们的数据库，除了SID其它都不一样。&rdquo;</strong></p>
</blockquote>
<p>我们的所有数据库都是规范化的，此前在ITPUB上也有过一点<a href="http://www.itpub.net/615540.html">讨论</a>，在那里我上传过一个简单的规范化安装文档，大家可以参考。</p>
<p>-The End-</p>
<p>&nbsp;</p>]]></description>
<link>http://www.eygle.com/archives/2006/09/standard_is_very_important.html</link>
<guid>http://www.eygle.com/archives/2006/09/standard_is_very_important.html</guid>
<category>Beginner</category>
<pubDate>Thu, 07 Sep 2006 10:33:40 +0800</pubDate>
</item>
<item>
<title>Oracle初学者入门指南-什么是DUL?</title>
<description><![CDATA[<p>经常有朋友在<a href="http://www.itpub.net/">ITPUB</a>上问到DUL工具，我在这里对这个工具作一个简要介绍。</p>
<p>DUL是Data Unloader的缩写，为Oracle公司工程师 Bernard van Duijnen 开发，以标准C写成，可以直接从Oracle的数据文件中读取数据，转换为DMP或文本格式输出，在特殊情况下可以用来进行数据恢复。<br />这些特殊情况主要指，数据库没有有效备份、或者系统表空间损坏，或者在非归档模式下的不可逆数据损失等等，一旦普通手段失去作用，DUL就可以作为最后一招来最大限度的挽救用户数据。</p>
<p>然而DUL并非一个商业工具，这个工具仅在Oracle内部流通，但是逐渐的，DUL也开始流入民间，被一些资深Oracle工程师所使用。</p>
<p>随着数据库版本的变化，DUL工具也在逐渐升级之中，对应Oracle8 / Oracle8i / Oracle9i / Oracle10g都有其相应版本。</p>
<p>作为DBA们首先应该知道DBA第一守则：<a href="http://www.eygle.com/archives/2006/01/backup_is_most_important.html">备份重于一切</a>。首先应该把备份作为数据恢复的第一手段。<br />如果备份或其他恢复手段不可用，我们就应该知道，DUL是最后可以诉诸的手段。</p>
<p>国内的DBA专家<a href="http://www.anysql.net/">DCBA</a>自行开发了类DUL工具，他称之为 AUL 或 MyDUL，具有同样类似的功能，是非常优秀的一款国产软件。大家可以访问 <a href="http://www.anysql.net/">http://www.anysql.net</a> 获得更多的信息。</p>
<div id="a001011more">
<div id="more">
<p>ITPUB上的讨论链接参考:</p>
<p><a href="http://www.itpub.net/102286.html">http://www.itpub.net/102286.html</a></p>
<p>&nbsp;</p>
</div>
</div>]]></description>
<link>http://www.eygle.com/archives/2006/07/oracleonosseeea.html</link>
<guid>http://www.eygle.com/archives/2006/07/oracleonosseeea.html</guid>
<category>Beginner</category>
<pubDate>Mon, 31 Jul 2006 14:25:50 +0800</pubDate>
</item>
<item>
<title>答读者问:关于Oracle学习</title>
<description><![CDATA[题记:经常有朋友通过邮件向我咨询一些关于Oracle学习的问题，很多非常具有代表性，我在这里把朋友们的一些问题作些整理，并把我的回答公布出来，希望可以给大家做一个参考。<br /><br />这是一位朋友发来的邮件，我的回复穿插在邮件之中，也就原样收录如下:<br /><br /><font color="#0000ff">Q: ...工作在高校，平时虽然也是负责管理Oracle数据库，但&quot;仅仅&quot;做好Oracle的日常维护就OK了，而不象大公司里的DBA还需要与开发人员沟通等等。<br /><br /></font>A: 关于这个&quot;仅仅&quot;我想说一下，我们作事情绝不能停留在&quot;仅仅&quot;上，一定要不断深入，不断学习，不断提高。不一定要在多大的生产环境里才能锻炼出高手。据我所知很多高手都是从个人的简单环境中学习成长起来的，在我没做DBA之前，一直都是靠自学来提高Oracle水平，至今我也没有参加过任何关于Oracle数据库的正式培训（主讲除外），很多朋友也是如此。所以自己学习也一定要深入，多思考，多试验。<br /><br />有朋友说:小库一样练水平。这句话是很有道理的。也有朋友在ITPUB上不断试验和重复别人有价值的试验或测试，说:不是自己的，通过试验动手，变成自己的。也说得非常好。<br /><br />所以关于数据库的学习，一定要多下功夫，准备好了知识之后，才能接受各种挑战和抓住好的机遇。&ldquo;机会总是喜欢光顾有准备的头脑&rdquo;。<br /><br />把自己的学习和经验总结放到网上去和朋友讨论也是一个好的方法，不用怕简单或是其他。成文的东西可以通过投稿或出版来获得认可（在ITPUB都有很多这样的机会），这些都是学习进步的一种方式。<br /><br /><font color="#0000ff">Q: ...我们想请教一下：<br />1. 如果基于长远考虑，我们是否应该也学习一些开发相关的知识呢？比如学习Java，掌握J2EE架构，以便于弥补开发方面的知识漏洞。<br /><br /><font color="#000000">A: 开发的知识，DBA是需要有一些的，完全不懂开发或不介入开发的DBA不会是一个好的DBA。但是不一定要求有多精通或熟练，毕竟不是程序员，个人认为了解基本的就好。如果把数据库作为主业，学好数据库就需要投入相当的精力。有些大的企业的开发DBA和管理DBA是分开的，可见各自侧重也是有所不同。<br /><br /><font color="#0000ff">Q： 2. 如果要做一个合格的DBA，除了数据库知识，还需要学习哪些内容用于辅助DBA的工作呢？例如，一个好的程序员，除了熟悉开发平台和相关语言，还应该认真学习软件工程，以利于架构的组织。那么对于一个DBA，还应该学习哪些辅助知识呢？ <br /><br /><font color="#000000">A： 一个好的DBA，除了具备一些开发相关的素质外，还必须了解系统方面的知识，深入地了解操作系统才能更好的理解数据库，这两者是相辅相成的，OS和DB的结合紧密度最高，所以作为一个DBA应该深入地学习一下OS知识。<br /><br /><a href="http://www.ixora.com.au/">Ixora</a>的 Steve Adams 所以能够将Oracle研究的如此深入，一方面就是因为对于操作系统的知识非常了解。<br /></font></font></font></font>]]></description>
<link>http://www.eygle.com/archives/2006/07/question_answer_of_oracle_study.html</link>
<guid>http://www.eygle.com/archives/2006/07/question_answer_of_oracle_study.html</guid>
<category>Beginner</category>
<pubDate>Sun, 30 Jul 2006 14:29:43 +0800</pubDate>
</item>
<item>
<title>Oracle初学者入门指南-系统与用户数据分离</title>
<description><![CDATA[<p>今天一个朋友的数据库出现问题,请我帮忙查看,其实问题本身很简单:</p>
<table>
    <tbody>
        <tr>
            <td width="500" bgcolor="#999999">Fri Jun 19 10:30:00 2006<br />ORA-1653: unable to extend table CMS.ACCESS_LOG_200606 by 40968 in tablespace SYSTEM</td>
        </tr>
    </tbody>
</table>
<p>ORA-1653错误是指空间不能扩展,我们只要扩展数据文件或者增加数据文件即可.</p>
<p>然而我们可以发现另外一个更为严重的问题,也就是用户表ACCESS_LOG_200606被建立在SYSTEM表空间.</p>
<p>这是Oracle DBA的大忌,通常我们应该将用户数据和系统数据(SYSTEM)分离,避免用户数据频繁变更对于SYSTEM表空间的争用,SYSTEM表空间应该只为存放系统数据而使用.</p>
<p>我们知道,在Oracle10g中,Oracle提供了缺省数据表空间的概念,即使用户不指定,Oracle也不会将用户数据存放在SYSTEM表空间,而且,Oracle还将一些无关紧要的系统数据分离到<a href="http://www.eygle.com/archives/2006/05/oracle10g_sysaux_tablespace.html">SYSAUX表空间</a>,以使得SYSTEM表空间纯净化.</p>
<p>这就是Oracle针对常见的用户失误而做出的不懈改进之一.</p>
<div id="a000939more">
<div id="more">
<p>为了修正这类错误,我们可以通过Exp/Imp的方式来完成.</p>
<p>具体可以参考:<a href="http://www.eygle.com/archives/2005/04/ecineeeeiaeioae.html">如何把数据导入不同的表空间?</a> </p>
<p>&nbsp;</p>
</div>
</div>]]></description>
<link>http://www.eygle.com/archives/2006/06/oracle_system_tablespace.html</link>
<guid>http://www.eygle.com/archives/2006/06/oracle_system_tablespace.html</guid>
<category>Beginner</category>
<pubDate>Mon, 19 Jun 2006 12:42:44 +0800</pubDate>
</item>
<item>
<title>My answer for-9个动态性能视图</title>
<description><![CDATA[<p>之前写过<a href="http://www.eygle.com/archives/2005/12/9_most_important_views.html">一个命题:列举你认为最重要的9个动态性能视图</a>,在<a href="http://www.itpub.net">Itpub</a>上有朋友忽然<a href="http://www.itpub.net/showthread.php?threadid=471751">问</a>这个问题答案.原来是在面试中被问及了这个问题.</p>
<p><font face="Verdana">实际上我提出的只是一个命题,答案肯定因人而异,而且这个问题的答案也无所谓对错.<br />但是通过答案我们的确可以看出一个人对数据库的认识和理解,看出他的侧重点,看出他的知识面.<br /></font><font face="Verdana">进而,面试者可以通过你的回答进行更为深入的提问,从而来考察你的真实水平.在完善的面试下,真实的技术水平肯定是无法隐瞒的.</font></p>
<p><font face="Verdana">在命这个题的时候,我也没有想过自己的答案.</font></p>
<p><font face="Verdana">所以说9,是因为考虑到,<strong>数以1始,以9终,是以为极</strong>.<br />故有9之说</font></p>
<p><font face="Verdana">如果真要我想,大约列了9个,真还不好取舍:</font></p>
<p><font face="Verdana">v$session + v$session_wait (在10g里功能被<a href="http://www.eygle.com/archives/2005/09/10gr2_vsession_change.html">整合</a>,凑合算1个吧.)<br />v$process<br />v$sql<br />v$sqltext<br />v$bh (更宁愿是x$bh)<br />v$lock<br />v$latch_children<br />v$sysstat<br />v$system_event</font></p>
<p><font face="Verdana">这是我的答案,<a href="http://spaces.msn.com/members/roujiaweize/Blog/cns!1pAs65y-bADyc811uXcBBzkQ!508.entry">这里</a>有小惠惠的答案,大家都来列一下,我们取下交集或许可以给彼此一个参考:)</font></p>
<p><font face="Verdana">看到别人的答案我们应该思考:给我这些视图,我能获得哪些信息?我能解决哪些问题? </font></p>
<p><font face="Verdana">然后,如果有机会和答题者讨论沟通,必然有不错的提高,<strong>三人行必有我师</strong>,学习也正是一个不断借鉴交流提升的过程.</font></p>]]></description>
<link>http://www.eygle.com/archives/2005/12/my_answer_for_9_views.html</link>
<guid>http://www.eygle.com/archives/2005/12/my_answer_for_9_views.html</guid>
<category>Beginner</category>
<pubDate>Tue, 27 Dec 2005 22:23:03 +0800</pubDate>
</item>
<item>
<title>一个命题:列举你认为最重要的9个动态性能视图</title>
<description><![CDATA[<p>前几天给<a href="http://spaces.msn.com/members/roujiaweize/">小惠惠</a>出了一个命题:列举你认为最重要的9个动态性能视图(view).</p>
<p>为每个视图写一篇文章(不少于5页Word文档),说明从这个视图你能够获得哪些信息.</p>
<p>最后再写一篇文章(不少于20页Word文档),说明联合这些视图你能够获得哪些重要的数据库信息,并辅助数据库优化与诊断.&nbsp;</p>
<p>其实文章长短我并非在意,关键是你真的对这些知识作了思考,并且能够把这些知识运用到实践中去.</p>
<p>首先要自己思考,看看自己能想到哪些方面,然后再去参考别人的经验,看差距在什么地方. 比较然后学习. 同样的,最忌不作思考,直接去找别人的答案.这就如同我们解数学题一样,如果你偷看了答案,那么就会局限你的思路,很难再做出独立的思考和创新.</p>
<p>这样思考、比较、学习、总结，如是数番,我不相信技术得不到提高.</p>
<p><strong>这个世界并不复杂,最怕你从不认真.</strong></p>
<p>其实这文章、这题目是做给自己看的，而不是别人。</p>]]></description>
<link>http://www.eygle.com/archives/2005/12/9_most_important_views.html</link>
<guid>http://www.eygle.com/archives/2005/12/9_most_important_views.html</guid>
<category>Beginner</category>
<pubDate>Thu, 22 Dec 2005 21:51:56 +0800</pubDate>
</item>
<item>
<title>Oracle初学者入门指南-How to get Oracle Patch?</title>
<description><![CDATA[<p>怎样获得/找到Oracle的Patch，这是一个朋友在<a href="http://www.itpub.net/">Itpub</a>上问到的<a href="http://www.itpub.net/showthread.php?threadid=463786">问题</a>。他还举了一个生动的例子:</p>
<blockquote dir="ltr" style="MARGIN-RIGHT: 0px">
<p><font size="2">比如我要使用oracle的全文检索功能，但是这个全文检索在9201里不支持中文，中文的无法检索，报错。但是在9206里可以，说明得打一些补丁吧？？但是用户不让把整个数据库都升级到9206，说担心稳定性，要单独只打全文检索的补丁，使之支持中文，所以我想知道怎么找到这个全文检索的补丁，这种单独的补丁在metalink里怎么找呢？</font></p>
</blockquote>
<p dir="ltr">我和他分享了一下我的经验，当然Oracle的Patch只能从<a href="javascript:void(0);/*1134476175850*/">Metalink</a>上下载。关于Metalink请参考：<a href="http://www.eygle.com/archives/2005/11/whats_oracle_metalink.html">Oracle初学者入门指南-什么是Metalink?</a> </p>
<ol dir="ltr">
    <li>
    <div>我一般先Search,Search文档库或者Bug,这些能定义非常多的查询选项<br />一般就能找到Patch号</div>
    </li>
    <li>
    <div>可以看具体版本修正的 Bug 列表,这个很容易找到</div>
    </li>
    <li>
    <div>使用Patch的AD Search 功能</div>
    </li>
</ol>
<p dir="ltr">&nbsp;在不知道具体BUG号的情况下，通常方法2最容易和快速。Bug列表类似于:<a href="http://www.eygle.com/Notes/9.2.0.6.PatchSet-List.of.Bug.Fixes.by.Problem.Type.htm">9.2.0.6 Patch Set</a> - List of Bug Fixes by Problem Type，我在网站上摘引了<a href="http://www.eygle.com/index-internal.htm">Oracle不同版本的Bug列表</a>供参考，通过这个列表，你可以很容易的知道Oracle在不同的版本中修正了哪些问题，同时也可以根据问题轻易的找到BUG号，知道了BUG号到Metalink上搜索补丁就易如反掌了。</p>]]></description>
<link>http://www.eygle.com/archives/2005/12/how_to_get_oracle_patch.html</link>
<guid>http://www.eygle.com/archives/2005/12/how_to_get_oracle_patch.html</guid>
<category>Beginner</category>
<pubDate>Thu, 15 Dec 2005 20:01:46 +0800</pubDate>
</item>
<item>
<title>Oracle初学者入门指南-索引是干什么用的?</title>
<description><![CDATA[关于索引是什么的最简单的比喻是，索引之于表数据如同目录之于一本书。<br>
通过目录的页码我们可以快速的定位一个内容，同样通过索引记录的rowid我们可以快速的定位一条数据。<br>
<br>
如同目录很难针对书中每个字词一样，索引也很难针对所有字段。<br>
我们通常索引最能代表章节，记录属性的内容。<br>

索引并非总能带来性能提升，但是通常情况下，索引能加快访问，所以建表的时候，你一定要知道还有索引这样一类对象。<br>
<br>
下面这个案例是我们绝对不应该和不想看到的。<br>
<br>
今天一个部门报数据库巨慢无比，上去看了一下，抓到如下的SQL:<br>
<table><td width="500" bgcolor="#999999"><pre>
SQL> select sql_text
  2  from v$sqltext a
  3  where a.hash_value = (
  4  select sql_hash_value from v$session b
  5  where b.sid='&sid'
  6  )
  7  order by piece asc
  8  /

SQL_TEXT
----------------------------------------------------------------
select * from i_cm_power t WHERE T.SJH='13911xxxxx6'</pre></td></table><br>

检查了一下该查询访问的数据表,居然一个索引都没有:<br>
<table><td width="500" bgcolor="#999999"><pre>
SQL> select index_name from dba_indexes where table_name=upper('i_cm_power');

INDEX_NAME
------------------------------
</pre></td></table><br>
没有索引意味着，即使为了获取这一条记录，Oracle也必须对5.28G的一个表进行全表扫描，如果不慢那就怪了:<br>
<table><td width="500" bgcolor="#999999"><pre>
SQL> col segment_name for a20
SQL> select segment_name,bytes/1024/1024/1024 
     from dba_segments where segment_name=upper('i_cm_power');

SEGMENT_NAME         BYTES/1024/1024/1024
-------------------- --------------------
I_CM_POWER                  5.28173828125</pre></td></table><br>


创建一个索引再说:<br>
<table><td width="500" bgcolor="#999999"><pre>
SQL> create index idx_i_cm_power_sjh on i_cm_power(sjh);

Index created.

Elapsed: 00:20:50.73

SQL> col segment_name for a20
SQL> select segment_name,bytes/1024/1024 MB 
  2  from dba_segments where segment_name=upper('idx_i_cm_power_sjh');

SEGMENT_NAME                 MB
-------------------- ----------
IDX_I_CM_POWER_SJH         1360

SQL> </pre></td></table><br>

无疑这个索引对于这样的简单查询是大有益处的:<br>
<table><td width="500" bgcolor="#999999"><pre>
SQL> select * from i_cm_power t WHERE T.SJH='13911xxxxx6';

Elapsed: 00:00:00.07

Execution Plan
----------------------------------------------------------
   0      SELECT STATEMENT Optimizer=CHOOSE
   1    0   TABLE ACCESS (BY INDEX ROWID) OF 'I_CM_POWER'
   2    1     INDEX (RANGE SCAN) OF 'IDX_I_CM_POWER_SJH' (NON-UNIQUE)


Statistics
----------------------------------------------------------
          0  recursive calls
          0  db block gets
          6  consistent gets
          0  physical reads
          0  redo size
       1022  bytes sent via SQL*Net to client
        503  bytes received via SQL*Net from client
          2  SQL*Net roundtrips to/from client
          0  sorts (memory)
          0  sorts (disk)
          2  rows processed</pre></td></table><br>
          
然而在实际中，你需要考虑更多的因素。<br>
增加索引会占用更多的存储空间；索引的维护会增加数据库的负担，如果有海量的数据加载，可能会极大影响性能...<br>
<br>
所以事实可能总是比你想象的更复杂，你只有知道的更多...          <br>]]></description>
<link>http://www.eygle.com/archives/2005/11/whats_oracle_index.html</link>
<guid>http://www.eygle.com/archives/2005/11/whats_oracle_index.html</guid>
<category>Beginner</category>
<pubDate>Sat, 19 Nov 2005 09:53:34 +0800</pubDate>
</item>
<item>
<title>Oracle初学者入门指南-什么是Metalink?</title>
<description><![CDATA[<p>身为一个Oracle DBA，你必须知道什么是<a href="http://metalink.oracle.com">Metalink</a>.<br />
Metalink是Oracle的官方技术支持站点，其网址为: <a href="http://metalink.oracle.com">http://metalink.oracle.com</a>.</p>

<p>Oracle公司通过该网站来支持全球的客户，据Oracle公司的统计资料，据说80%的技术问题都是通过Metalink网上解决的。</p>

<p>Metalink的注册并非免费。当你购买了Oracle公司的软件以后，可以根据License向Oracle请求<strong>CSI(Customer Support Identifier)</strong>号,通过CSI号你就可以登录Metalink站点注册。<br />
<strong>注意:如果你的供货商没有提供给你CSI号或者你自己无法注册,那么你的购买可能是存在问题的.</strong></p>

<p>在服务期之内，你可以在Metalink上登记<strong>tar(Technical Assistance Requests)</strong>,Oracle公司会专门指定工程师负责处理你的问题，最高级别的case会马上有工程师联系你进行协助解决。</p>

<p>当然，在服务期满以后，你将不再能够报TAR，但是你能够继续使用Metalink的搜索功能，从Metalink的庞大资源库中受益。</p>

<p>每个Oracle DBA都应该学会使用Metalink这个资源宝库。<br />
并且每个DBA都应该学会，<strong>自己尝试找出问题的答案</strong>。</p>

<p>做为一个DBA我还想提醒大家,管理数据库的时候一定要慎重,不能粗心,不能无畏.<br />
在Metalink上曾经有一句话可以做为借鉴:<br />
<strong>Don't believe a customer when they say they didn't do it. Get evidence.</strong></p>

<p>Oracle说不要相信用户,所以我们要学习值得信任,学习严谨,学习认真.<strong>学习对数据负责,对自己的行为负责</strong>.</p>

<p>你也可以从Oracle的官方站点上，找到相应的说明文档，参考以下链接:<br />
<a href="http://www.oracle.com/support/premier/global-support-resolution/metalink.html">Oracle MetaLink—Your Self-Service Portal</a><br />
<a href="http://www.oracle.com/support/collateral/metalinksv.pdf">Data Sheet: Oracle MetaLink (PDF)</a><br />
<a href="http://www.oracle.com/support/seminars.html#metalink">Internet Seminars: Oracle MetaLink</a></p>]]></description>
<link>http://www.eygle.com/archives/2005/11/whats_oracle_metalink.html</link>
<guid>http://www.eygle.com/archives/2005/11/whats_oracle_metalink.html</guid>
<category>Beginner</category>
<pubDate>Fri, 18 Nov 2005 17:34:16 +0800</pubDate>
</item>
<item>
<title>Oracle初学者入门指南-什么是DSI?</title>
<description><![CDATA[<p>很多初学Oralce的朋友经常会问到一系列基础的问题,这些问题有的浅显,有的也许并不为众人周知,但是都曾经困扰过一群求知的朋友们.</p>

<p>从今天起,决定写一些浅显的基础的东西,一方面偷点懒,一方面可以为初学Oracle的朋友提供一些快速入门或粗略了解Oracle的便捷之路.</p>

<p>希望自己可以坚持下去.这个系列都将以:<strong>Oracle初学者入门指南</strong>为名.<br />
新建立了一个分类,就叫做:<strong><a href="http://www.eygle.com/archives/database/beginner/">Beginner</a></strong>.<br />
我自己也正是这样一个Beginner.</p>

<p>开始这个题目是因为今天MSN上有一个朋友问到,<strong>什么是DSI?</strong>.<br />
就把这做为第一个题目.</p>

<p>DSI是<strong>Data Server Internals</strong>的缩写,是Oracle公司内部用来培训Oracle售后工程师使用的教材.<br />
这样的文档上通常都印着:<strong>Oracle Confidential:For internal Use Only</strong>.</p>

<p>所以传播这类文档通常是为Oracle所禁止的,但是因为一些特殊的原因,这些文档在民间也多有流传.<br />
你可以从<a href="http://www.google.com/search?sourceid=navclient&hl=zh-CN&ie=UTF-8&rls=GGLD,GGLD:2005-22,GGLD:zh-CN&q=Oracle+DSI">Google</a>找到一些相关信息.但是关于任何DSI教材的交流,索取都是相当敏感的.</p>

<p>很多人因为文档机密所以趋之若鹜,这也许是不适当的.<br />
对于初学者,这些文档是不适宜的,因为从这里开始相对艰深,这些教材需要阅读者具有相当深厚的技术基础;初学者应该从基础学起,当你打好基础之后,也学有一天,你就可以来阅读这些文档.</p>]]></description>
<link>http://www.eygle.com/archives/2005/11/whats_oracle-dsi.html</link>
<guid>http://www.eygle.com/archives/2005/11/whats_oracle-dsi.html</guid>
<category>Beginner</category>
<pubDate>Thu, 17 Nov 2005 22:02:09 +0800</pubDate>
</item>
<item>
<title>如何学习Oracle-eygle的方法经验谈</title>
<description><![CDATA[<p>很多朋友经常问起学习Oracle的方法，在这里我把写在《<a href="http://www.eygle.com/archives/2005/06/oracleeaoaeueoo_2.html">Oracle数据库性能优化</a>》一书前面的话贴在这里，供大家参考！<br />
-------------------------------------------------------------------------------</p>

<p>经常有朋友会问，应该如何学习Oracle，怎样才能快速提高？我把自己的一点心得写在这里，供大家参考。</p>

<p>其实学习任何东西都是一样，没有太多的捷径可走，必须打好了坚实的基础，才有可以在进一步学习中得到快速提高。<br />
王国维在他的《人间词话》中曾经概括了为学的三种境界，我在这里套用一下：<br />
<blockquote><strong>    古今之成大事业、大学问者，罔不经过三种之境界。<br />
	“昨夜西风凋碧树。独上高楼，望尽天涯路。”此第一境界也。<br />
	“衣带渐宽终不悔，为伊消得人憔悴。”此第二境界也。<br />
	“众里寻他千百度，蓦然回首，那人却在灯火阑珊处。”此第三境界也。</strong></blockquote></p>

<p>学习Oracle，这也是你必须经历的三种境界。<br />
第一层境界是说，学习的路是漫漫的，你必须做好充分的思想准备，如果半途而废还不如不要开始。<br />
这里，注意一个"尽"字，在开始学习的过程中，你必须充分阅读Oracle的基础文档，概念手册、管理手册、备份恢复手册等（这些你都可以在<a href="http://tahiti.oracle.com">http://tahiti.oracle.com</a> 上找到）；OCP认证的教材也值得仔细阅读。打好基础之后你才具备了进一步提升的能力，万丈高楼都是由地而起。</p>

<p>第二层境界是说，尽管经历挫折、打击、灰心、沮丧，也都要坚持不放弃，具备了基础知识之后，你可以对自己感兴趣或者工作中遇到的问题进行深入的思考，由浅入深从来都不是轻而易举的，甚至很多时候你会感到自己停滞不前了，但是不要动摇，学习及理解上的突破也需要时间。</p>

<p>第三次境界是说，经历了那么多努力以后，你会发现，那苦苦思考的问题，那百思不得其解的算法原理，原来答案就在手边，你的思路豁然开朗，宛如拨云见月。这个时候，学习对你来说，不再是个难题，也许是种享受，也许成为艺术。</p>

<p>所以如果你想问我如何速成，那我是没有答案的。<br />
<strong>不经一番寒彻骨，哪得梅花扑鼻香。</strong></p>

<p>当然这三种境界在实际中也许是交叉的，在不断的学习中，不断有蓦然回首的收获。<br />
我自己在学习的过程中，经常是采用"由点及面法"。<br />
当遇到一个问题后，一定是深入下去，穷究根本，这样你会发现，一个简单的问题也必定会带起一大片的知识点，如果你能对很多问题进行深入思考和研究，那么在深处，你会发现，这些面逐渐接合，慢慢的延伸到oracle的所有层面，逐渐的你就能融会贯通。这时候，你会主动的去尝试全面学习Oracle，扫除你的知识盲点，学习已经成为一种需要。<br />
由实践触发的学习才最有针对性，才更能让你深入的理解书本上的知识，正所谓：“<strong>纸上得来终觉浅，绝知此事要躬行</strong>”。实践的经验于我们是至为宝贵的。</p>

<p>如果说有，那么这，就是我的捷径。</p>

<p>想想自己，经常是"每有所获，便欣然忘食"，<strong>兴趣才是我们最好的老师。</strong></p>

<p>Oracle的优化是一门学问，也是一门艺术，理解透彻了，你会知道，优化不过是在各种条件之下做出的均衡与折中。<br />
内存、外存；CPU、IO...对这一切你都需要有充分的认识和相当的了解，管理数据库所需要的知识并不单纯。</p>

<p>作为一个数据库管理人员，你需要做的就是能够根据自己的知识以及经验在各种复杂情况下做出快速正确的判断。当问题出现时，你需要知道使用怎样的手段发现问题的根本；找到问题之后，你需要运用你的知识找到解决问题的方法。<br />
这当然并不容易，举重若轻还是举轻若重，取决于你具备怎样的基础以及经验积累。</p>

<p>在网络上，Howard J. Rogers最近创造了一个新词组:Voodoo Tuning，用以形容那些没有及时更新自己的知识技能的所谓的Oracle技术专家。由于知识的陈旧或者理解的肤浅，他们提供的很多调整建议是错误的、容易使人误解的，甚至是荒诞的。他们提供的某些建议在有些情况下也许是正确的，如果你愿意回到Oracle5版或者6版的年代；但是这些建议在Oracle7.0,8.0 或者 Oracle8i以后往往是完全错误的。<br />
后来基于类似问题触发了互联网内Oracle顶级高手的一系列深入讨论，TOM、Jonathan Lewis、HJR等人都参与其中，在我的网站上( <a href="http://www.eygle.com">www.eygle.com</a> )上对这些内容及相关链接作了简要介绍，有兴趣的可以参考。</p>

<p>HJR给我们提了很好的一个提示:对你所需要调整的内容，你必须具有充分的认识，否则你做出的判断就有可能是错误的。<br />
这也是我想给自己和大家的一个建议:<strong>学习和研究Oracle，严谨和认真必不可少</strong>。<br />
当然<strong>你还需要勤奋</strong>，我所熟悉的在Oracle领域有所成就的技术人员，他们共同的特点就是勤奋。<br />
如果你觉得掌握的东西没有别人多，那么也许就是因为，你不如别人勤奋。</p>

<p>要是你觉得这一切过于复杂了，那我还有一句简单的话送给大家:<strong>不积跬步，无以至千里</strong>。学习正是在逐渐积累过程中的提高。</p>

<p>现在Itpub给我们提供了很好的交流场所，很多问题都可以在这里找到答案，互相讨论，互相学习。这是我们的幸运，我也因此非常感谢这个网络时代。</p>

<p>Itpub的第二本书即将出版，谨以此祝愿Itpub越来越好，也愿我们的书能给大家带来知识和帮助。</p>

<p><br />
</p>]]></description>
<link>http://www.eygle.com/archives/2005/08/ecinieoracleouo.html</link>
<guid>http://www.eygle.com/archives/2005/08/ecinieoracleouo.html</guid>
<category>Books</category>
<pubDate>Mon, 08 Aug 2005 09:40:25 +0800</pubDate>
</item>


</channel>
</rss>