<?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>Wed, 25 Oct 2006 10:30:24 +0800</lastBuildDate>
<generator>http://www.movabletype.org/?v=3.33</generator>
<docs>http://blogs.law.harvard.edu/tech/rss</docs> 

<item>
<title>Oracle11g的新特性-11g New Features</title>
<description><![CDATA[<p>随着这几天<a href="http://www.oracle.com/openworld/index.html">Oracle OpenWorld</a>大会的召开，Oracle11g的新特性越来越多的被展现出来。</p>

<p>此前，我曾经介绍过<a href="http://www.eygle.com/archives/2006/07/oracle11g_is_coming.html">Oracle11g</a>将可能在10月份的这个大会上推出，当时关于Alpha版的信息已经可以见到，现在出现的已经是Beta版，离Oracle11g的正式版已经不远。</p>

<p><a href="http://laurentschneider.blogspot.com/">Laurent Schneider </a>在他的Blog中提到，关于<a href="http://laurentschneider.blogspot.com/2006/10/11g-new-features.html">Oracle11g的名字</a>还没有最后确定，就像10g推出时一样，Oracle可能给11版的数据库一个新的名字。可是据我估计，更改的可能性不大，因为Grid技术在10g中还并不成熟，推广和使用也极为有限，Oracle应该会沿着这个方向至少再走1~2个版本才对。</p>

<p>那么11g中将会出现哪些激动人心的新特性(new features)呢?<br />
<a href="http://blogs.oracle.com/otn/">Justin Kestelyn</a> 在他的Blog中提到了很多Beta版中引入的新特性：</p>

<blockquote>1.如果说10g着重于降低所有者成本，那么11g将着重降低变更管理成本(也可以被称为提供变更保证)

<p>2.DataGuard将引入一个新特性-Flashback Standby<br />
这个新特性可以使得备用数据库可以创建一个快照，从而能够重演主库的所有负载变化，使得通过备用数据库研究主库的负载变化等成为可能，而且通过闪回功能，备用库仍然可以和主库保持一致。<br />
eygle注:在我看来，这一新特性是丰富了DataGuard的功能，使得DataGuard可以发挥更大的作用。</p>

<p>3.在变更管理增强方面，Oracle提供在线的升级(Upgrade)和补丁应用(hot Patching)，从而实现无当机(no downtime)的系统维护.<br />
eygle注:这真是一个激动人心的特性，减少Down机时间的问题修复显然已经被期待已久。<br />
<a href="http://www.flickr.com/photos/eygle/278765176/" title="Photo Sharing"><img src="http://static.flickr.com/113/278765176_44d5c8e454_o.jpg" width="640" height="480" alt="Online.Patching" /></a></p>

<p>4.快速的故障解决<br />
这一特性是通过引入自动收集故障相关信息来完成的，同时数据库提供修复建议(repair Advisor)等工具协助快速故障诊断。</p>

<p>5.关于分区的增强<br />
实现了通过逻辑对象分区，同时实现了自动分区创建的功能。<br />
eygle注:自动分区的创建，一直以来我们都是通过自己编写的过程来实现的，现在Oracle将这个过程内置在数据库中，这只能算得上一个易用性方面的小增强吧。</p>

<p>6.其它<br />
新的高性能LOB基础架构<br />
本地Java & PL/SQL编译器<br />
新的PHP驱动</blockquote></p>

<p>让我们一起期待11g的来临吧！</p>

<p>-The End-</p>]]></description>
<link>http://www.eygle.com/archives/2006/10/oracle11g_new_features.html</link>
<guid>http://www.eygle.com/archives/2006/10/oracle11g_new_features.html</guid>
<category>OraNews</category>
<pubDate>Wed, 25 Oct 2006 10:30:24 +0800</pubDate>
</item>
<item>
<title>Tom的法则:当你开发数据库软件时...</title>
<description><![CDATA[<p>今天在Tom的Blog上看到一则日记<a href="http://tkyte.blogspot.com/2006/10/slow-by-slow.html">Slow by Slow</a>,其中提到了在开发基于Oracle的应用软件时，他推荐遵循的原则。<br />
很有意思，也非常值得借鉴，Tom在文中说到：<br />
<blockquote>My mantra, that I'll be sticking with thank you very much, is:</p>

<p>1.You should do it in a single SQL statement if at all possible.<br />
2.If you cannot do it in a single SQL Statement, then do it in PL/SQL.<br />
3.If you cannot do it in PL/SQL, try a Java Stored Procedure.<br />
4.If you cannot do it in Java, do it in a C external procedure.<br />
5.If you cannot do it in a C external routine, you might want to seriously think about why it is you need to do it…</p>

<p>think in sets...</blockquote></p>

<p>同样在AskTom的网站<a href="http://asktom.oracle.com/pls/ask/f?p=4950:8:::::F4950_P8_DISPLAYID:73891904732164">回复</a>中，Tom也提到了这个观点。</p>

<p>让我尝试简单翻译过来给大家参考:<br />
<blockquote>1.我们应该尽量使用单个SQL语句来实现应用需求<br />
2.如果单个SQL无法实现，考虑使用PL/SQL来实现<br />
3.如果PL/SQL无法实现，接下来可以尝试使用Java存储过程来实现<br />
4.如果Java过程也不行，尝试使用C的外部存储过程来解决<br />
5.如果以上都不能实现，那么你应该认真考虑你为什么要实现这个需求...</blockquote></p>

<p>这些规则也许还可以有不同的理解、阐释和分析，但是作为一个DBA和开发人员，脑海中应该具有这样一条主线，当然在实际中，还要加入具体的分析和自己的延伸....</p>

<p>-The End-</p>]]></description>
<link>http://www.eygle.com/archives/2006/10/tom_five_rules.html</link>
<guid>http://www.eygle.com/archives/2006/10/tom_five_rules.html</guid>
<category>FAQ</category>
<pubDate>Thu, 19 Oct 2006 14:19:55 +0800</pubDate>
</item>
<item>
<title>在AUM下如何获取回滚段名称</title>
<description><![CDATA[<p>有时候在数据库崩溃后的恢复尝试中，我们需要获得回滚段的名称。</p>

<p>在AUM(auto undo management)模式下，由于回滚段是自动管理的，我们无法从参数文件中得到回滚段名称，这时需要一点技巧来获得回滚段名称。</p>

<p>其实也很简单，UNDO段的名称存储在系统表空间，我们可以从系统表空间获得。<br />
以下一句脚本可以作为辅助:<br />
<blockquote>strings system01.dbf | grep _SYSSMU | cut -d $ -f 1 | sort -u </blockquote></p>

<p>在Linux/Unix下没什么特殊的，在Windows上，如果你安装过类似的Unix工具，则可以同样获得正确的输入，看看我的笔记本上的输出：</p>

<blockquote>D:\oradata\EYGLE\DATAFILE>

<p>strings O1_MF_SYSTEM_2G8OHFX6_.DBF|grep _SYSSMU | cut -d $ -f 1 | sort -u<br />
_SYSSMU1<br />
_SYSSMU10<br />
_SYSSMU2<br />
_SYSSMU3<br />
_SYSSMU4<br />
_SYSSMU5<br />
_SYSSMU6<br />
_SYSSMU7<br />
_SYSSMU8<br />
_SYSSMU9<br />
</blockquote></p>

<p>我安装的MKS工具是我觉得最好用的Unix工具包。<br />
<blockquote>D:\oradata\EYGLE\DATAFILE>which strings<br />
e:\PROGRA~1\MKSTOO~1\mksnt/strings.exe</p>

<p>D:\oradata\EYGLE\DATAFILE>which cut<br />
e:\PROGRA~1\MKSTOO~1\mksnt/cut.exe</p>

<p>D:\oradata\EYGLE\DATAFILE>which sort<br />
e:\PROGRA~1\MKSTOO~1\mksnt/sort.exe</blockquote></p>

<p>-The End-<br />
</p>]]></description>
<link>http://www.eygle.com/archives/2006/09/get_undo_segment_name.html</link>
<guid>http://www.eygle.com/archives/2006/09/get_undo_segment_name.html</guid>
<category>FAQ</category>
<pubDate>Mon, 25 Sep 2006 16:57:41 +0800</pubDate>
</item>
<item>
<title>Tools:在Windows上命令行如何手工起停Oracle</title>
<description><![CDATA[<p>在命令行我们可以用net命令手工启动Oracle服务:&nbsp;</p>
<table>
    <tbody>
        <tr>
            <td width="500" bgcolor="#999999">C:\&gt;net start oracleserviceeygle<br />OracleServiceEYGLE 服务正在启动 ..............<br />OracleServiceEYGLE 服务已经启动成功。</td>
        </tr>
    </tbody>
</table>
<p>&nbsp;在正常情况下，数据库即可随之启动，如果数据库不能启动，则可以通过sysdba身份连接进入数据库，手工mount并Open数据库</p>
<table>
    <tbody>
        <tr>
            <td width="500" bgcolor="#999999">
            <p>C:\&gt;sqlplus &quot;/ as sysdba&quot;</p>
            <p>SQL*Plus: Release 10.2.0.1.0 - Production on 星期五 8月 18 11:17:16 2006</p>
            <p>Copyright (c) 1982, 2005, Oracle.&nbsp; All rights reserved.</p>
            <p><br />连接到:<br />Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production<br />With the Partitioning, OLAP and Data Mining options</p>
            <p>SQL&gt; select instance_name from v$instance;</p>
            <p>INSTANCE_NAME<br />----------------<br />eygle</p>
            <p>SQL&gt; exit<br />从 Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production<br />With the Partitioning, OLAP and Data Mining options 断开</p>
            </td>
        </tr>
    </tbody>
</table>
<p>&nbsp;停止同样很简单，net命令，一行即可:</p>
<table>
    <tbody>
        <tr>
            <td width="500" bgcolor="#999999">C:\&gt;net stop oracleserviceeygle<br />OracleServiceEYGLE 服务正在停止......<br />OracleServiceEYGLE 服务已成功停止。</td>
        </tr>
    </tbody>
</table>
<p>在Windows上，使用net命令能否启动数据库，还受到一个注册表参数的影响，这个参数是:ORA_&lt;SID&gt;_AUTOSTART</p>
<p>对于我的Oracle10g数据库，这个键值位于HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_Ora10g，我的数据库SID为eygle，这个参数就是:ORA_EYGLE_AUTOSTART</p>
<p>当这个参数设置为True时，当我们启动服务时，Oracle数据库就会随之启动；反之，数据库就不会启动。</p>
<p>测试1，ORA_EYGLE_AUTOSTART=true时:&nbsp;</p>
<table>
    <tbody>
        <tr>
            <td width="500" bgcolor="#999999">
            <p>C:\&gt;net start oracleserviceeygle<br />OracleServiceEYGLE 服务正在启动 .....................<br />OracleServiceEYGLE 服务已经启动成功。</p>
            <p><br />C:\&gt;sqlplus &quot;/ as sysdba&quot;</p>
            <p>SQL*Plus: Release 10.2.0.1.0 - Production on 星期二 8月 22 09:27:35 2006</p>
            <p>Copyright (c) 1982, 2005, Oracle.&nbsp; All rights reserved.</p>
            <p><br />连接到:<br />Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production<br />With the Partitioning, OLAP and Data Mining options</p>
            <p>SQL&gt; select instance_name from v$instance;</p>
            <p>INSTANCE_NAME<br />----------------<br />eygle</p>
            </td>
        </tr>
    </tbody>
</table>
<p>测试2，ORA_EYGLE_AUTOSTART=FALSE时:&nbsp;&nbsp;</p>
<table>
    <tbody>
        <tr>
            <td width="500" bgcolor="#999999">
            <p>C:\&gt;net start oracleserviceeygle<br />OracleServiceEYGLE 服务正在启动 .<br />OracleServiceEYGLE 服务已经启动成功。</p>
            <p><br />C:\&gt;sqlplus &quot;/ as sysdba&quot;</p>
            <p>SQL*Plus: Release 10.2.0.1.0 - Production on 星期二 8月 22 09:30:03 2006</p>
            <p>Copyright (c) 1982, 2005, Oracle.&nbsp; All rights reserved.</p>
            <p>已连接到空闲例程。</p>
            <p>SQL&gt;</p>
            </td>
        </tr>
    </tbody>
</table>
<p>&nbsp;</p>
<p>-The End-</p>
<p>&nbsp;</p>]]></description>
<link>http://www.eygle.com/archives/2006/08/net_start_oracle_on_windows.html</link>
<guid>http://www.eygle.com/archives/2006/08/net_start_oracle_on_windows.html</guid>
<category>FAQ</category>
<pubDate>Mon, 21 Aug 2006 12:16:58 +0800</pubDate>
</item>
<item>
<title>Oracle入门书籍推荐</title>
<description><![CDATA[<p>很多朋友要我帮忙推荐一下Oracle的入门书籍，能够了解Oracle的基本概念、基本知识的那种。<br />我就免为其难，推荐几本。</p>
<p>首先我想强调的一点是，任何一本系统的Oracle书籍只要认真读下来，都会有不错的收获，读书最忌讳的是虎头蛇尾，浅尝则止。</p>
<p>1.第一本要推荐给大家的是<strong>Oracle的概念手册</strong>，这本手册是无数DBA学习的起点：Database Concepts<br />这是Oracle的官方文档，详尽的介绍了Oracle的基本概念，是DBA经常需要翻阅的参考书，也是最好的入门学习资料，如果大家阅读英文不存在问题，请先阅读本书，这本书可以在Oracle的官方文档站点Tahiti找到：<br /><a href="http://www.oracle.com/pls/db102/homepage?remark=tahiti">http://www.oracle.com/pls/db102/homepage?remark=tahiti</a></p>
<p>Oracle10gR2的下载地址为：<br /><a href="http://download-west.oracle.com/docs/cd/B19306_01/server.102/b14220.pdf">http://download-west.oracle.com/docs/cd/B19306_01/server.102/b14220.pdf</a></p>
<p>下载之前你可能需要注册一个OTN的免费帐号。</p>
<p><br />2.第二本要推荐的是<strong>Thomas Kyte的《Expert One on One: Oracle》</strong>,这本书的中译本，被称为《Oracle专家高级编程》。<br />毋庸多说，这本书是Oracle界的经典之作，最初是基于Oracle8i进行写作的，现在Tom已经出版了基于Oracle9i/Oracle10g的升级版，书名为《Oracle Database Architecture 9i and 10g Programming Techniques and Solutions》，现在中文译本也已经<strike>快要</strike>出版了。</p>
<p>这本书的前几章以介绍Oracle的基础知识为主，后几章则以介绍开发相关的内容为主，侧重于管理DBA的朋友可以着重阅读一下该书的前几章。</p>
<p>Expert One on One: Oracle 这本书中文版大家可以参考:<br /><a href="http://www.itpub.net/showthread.php?threadid=224536">http://www.itpub.net/showthread.php?threadid=224536</a><br />其英文版本参考:<br /><a href="http://www.itpub.net/showthread.php?threadid=316444">http://www.itpub.net/showthread.php?threadid=316444</a></p>
<p>Oracle Database Architecture 9i and 10g Programming Techniques and Solutions 这本书的英文版参考:<br /><a href="http://www.itpub.net/showthread.php?threadid=486715">http://www.itpub.net/showthread.php?threadid=486715</a></p>
<p>我强烈推荐大家仔细阅读本书。</p>
<p>3.另外要推荐给大家的一个系列图书是，<strong>Oracle OCP官方培训教材</strong></p>
<p>这套官方教材无论从结构还是体系上来说都是非常不错的入门及学习参考资料，虽然其中也存在一些错误和含混之处，但是仍然不失为经典，每个考过OCP认证的人都曾经深入阅读过该系列教材。</p>
<p>我可以负责任的说：每个全面深入阅读和理解该系列教材的人，都无愧于OCP认证，虽然现在的Paper OCP是那么的多。</p>
<p>另外一个值得推荐之处是，该系列教材拥有不同版本Oracle8i/Oracle9i/Oracle10g，而且大部分都有中文版本，大家可以对照学习。</p>
<p>这些教材大都可以从ITPUB上找到，恕我不能一一查出其具体链接：）</p>
<p><br />4.最后一本推荐给大家可以用来做参考书的是<strong>《ORACLE8i数据库管理员手册》</strong></p>
<p>这本书也出过Oracle9i的版本，对于一些基本概念本书可以用来翻看。在ITPUB上大家可以参考以下链接:<br /><a href="http://www.itpub.net/showthread.php?threadid=238615">http://www.itpub.net/showthread.php?threadid=238615</a></p>
<p><br />书不在多，精读则灵，希望大家能够静下心来认真阅读，然后一定会有所收获的。</p>
<p>最后要提醒大家的是，Oracle的英文资料众多，要想真正深入学习Oracle，必须克服英文阅读的障碍。</p>
<p>-The End-</p>
<p>&nbsp;</p>]]></description>
<link>http://www.eygle.com/archives/2006/08/oracle_fundbook_recommand.html</link>
<guid>http://www.eygle.com/archives/2006/08/oracle_fundbook_recommand.html</guid>
<category>Books</category>
<pubDate>Sat, 19 Aug 2006 19:33:26 +0800</pubDate>
</item>
<item>
<title>Tools:使用oradim恢复windows上的数据库</title>
<description><![CDATA[<p>很多朋友都问过这样的问题：<br />在Windows上如果系统崩溃了，数据文件、控制文件、日志文件等都还在，怎样来恢复Oracle数据库?</p>
<p>前几天重新安装了系统，正好需要恢复一下数据库。<br />如果软件也损失了，那么需要重新安装一下数据库软件,以恢复Windows相关环境变量等信息。</p>
<p>很多人抱怨我的新书很少关于Windows的内容，实际上，Windows和Linux/Unix上的操作没有什么不同，Windows本身就是一个仿Unix的系统。<br />那么好吧，我还是用一个系列的文章介绍一下我所使用的Windows系统，以及我所认为的数据库系统无关性。</p>
<p>大家可以跟随我看一下这样一个过程。<br />首先开启一个cmd命令行窗口。<br />开始-&gt;运行-&gt;cmd</p>
<p>我的Oracle软件安装在D:\oracle :</p>
<table>
    <tbody>
        <tr>
            <td width="500" bgcolor="#999999">
            <p>D:\&gt;dir oracle<br />&nbsp;驱动器 D 中的卷是 PRIVAT<br />&nbsp;卷的序列号是 94B0-FD3B</p>
            <p>&nbsp;D:\oracle 的目录</p>
            <p>2006-08-16&nbsp; 14:14&nbsp;&nbsp;&nbsp; &lt;DIR&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .<br />2006-08-16&nbsp; 14:14&nbsp;&nbsp;&nbsp; &lt;DIR&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ..<br />2006-08-16&nbsp; 14:14&nbsp;&nbsp;&nbsp; &lt;DIR&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ora10gR2<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0 个文件&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0 字节<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3 个目录&nbsp;&nbsp;&nbsp; 941,744,128 可用字节</p>
            </td>
        </tr>
    </tbody>
</table>
<p>&nbsp;我的数据文件位于D:\oradata下:</p>
<table>
    <tbody>
        <tr>
            <td width="500" bgcolor="#999999">
            <p>D:\&gt;dir d:\oradata<br />&nbsp;驱动器 D 中的卷是 PRIVAT<br />&nbsp;卷的序列号是 94B0-FD3B</p>
            <p>&nbsp;d:\oradata 的目录</p>
            <p>2006-08-16&nbsp; 14:25&nbsp;&nbsp;&nbsp; &lt;DIR&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .<br />2006-08-16&nbsp; 14:25&nbsp;&nbsp;&nbsp; &lt;DIR&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ..<br />2005-09-12&nbsp; 16:40&nbsp;&nbsp;&nbsp; &lt;DIR&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; flash_recovery_area<br />2005-09-12&nbsp; 16:40&nbsp;&nbsp;&nbsp; &lt;DIR&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; EYGLE<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0 个文件&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0 字节<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4 个目录&nbsp;&nbsp;&nbsp; 941,744,128 可用字节</p>
            </td>
        </tr>
    </tbody>
</table>
<p>&nbsp;现在让我们用oradim创建一个实例，实际上也就是创建一个Windows服务:</p>
<table>
    <tbody>
        <tr>
            <td width="500" bgcolor="#999999">C:\&gt;oradim -new -sid eygle<br />实例已创建。</td>
        </tr>
    </tbody>
</table>
<p>&nbsp;我们用net命令可以查看系统启动了哪些服务,我们看到Oracle的服务已经启动:</p>
<table>
    <tbody>
        <tr>
            <td width="500" bgcolor="#999999">
            <p>C:\&gt;net start<br />已经启动以下 Windows 服务:</p>
            <p>...............<br />&nbsp;&nbsp; O&amp;O Defrag<br />&nbsp;&nbsp; OracleServiceeygle<br />&nbsp;&nbsp; Plug and Play<br />&nbsp;&nbsp; Print Spooler<br />...............</p>
            <p>命令成功完成。</p>
            </td>
        </tr>
    </tbody>
</table>
<p>&nbsp;如果你的系统装了一些Unix增强工具，那么可以通过grep过滤一下:</p>
<table>
    <tbody>
        <tr>
            <td width="500" bgcolor="#999999">C:\&gt;net start |grep Oracle<br />&nbsp;&nbsp; OracleServiceeygle</td>
        </tr>
    </tbody>
</table>
<p>Unix命令工具可以在Sourceforge (<a href="http://sourceforge.net/projects/gnuwin32/">http://sourceforge.net/projects/gnuwin32/</a>) 下载.</p>
<p>&nbsp;此时我们就可以通过启动实例，挂接原有数据库，启动Oracle数据库了。当然你可能还有一些其他工作需要完成，比如重建口令文件等。</p>
<p>如果你想删除这个服务，那么也很简单:</p>
<table>
    <tbody>
        <tr>
            <td width="500" bgcolor="#999999">C:\&gt;oradim -delete -sid eygle<br />实例已删除。</td>
        </tr>
    </tbody>
</table>
<p>当然做好备份仍然是最重要的，我见过有的企业将文件分散在很多逻辑分区上，结果随系统崩溃丢失了部分文件，损失也是相当惨重的。</p>
<p>在Linux/Unix上不需要服务来启动实例，也就不存在这样类似的操作。不过在命令行操作，一切都是类似的。</p>
<p>系列文章参考:<br /><a href="http://www.eygle.com/archives/2006/08/oracle10g_on_windows.html">http://www.eygle.com/archives/2006/08/oracle10g_on_windows.html</a></p>
<p>&nbsp;</p>]]></description>
<link>http://www.eygle.com/archives/2006/08/oradim_on_windows.html</link>
<guid>http://www.eygle.com/archives/2006/08/oradim_on_windows.html</guid>
<category>FAQ</category>
<pubDate>Fri, 18 Aug 2006 10:27:30 +0800</pubDate>
</item>
<item>
<title>在Windows上安装Oracle10gR2</title>
<description><![CDATA[<p>因为《<a href="http://www.eygle.com/archives/2006/08/the_third_of_computer_book.html">深入浅出Oracle</a>》一书中，多数以Linux/Unix平台为写作依据，前几天在ITPUB上遭到了<a href="http://www.itpub.net/showthread.php?threadid=613504">读者的指责</a>，虽然该读者的观点有所偏激，但是我仍然决定开始写一个系列的文章，陈述在不同平台上管理Oracle的异同，目的在于消弭不同平台之间管理和学习Oracle的差异。</p>
<p>算是对部分读者的一点补偿，也算是对Windows平台内容的一个补充。</p>
<p>为了这个目的，今天在Windows上开始装了一套Oracle10g，已经很久没在笔记本上安装Oracle了，想不到还遇到了一系列的问题，还好最后还是装上去了：）</p>
<p>查看日志文件，看到一些和以前不同的地方，在安装数据库之前，alert文件中记录了一段系统信息：&nbsp;</p>
<table>
    <tbody>
        <tr>
            <td width="500" bgcolor="#999999">ORACLE V10.2.0.1.0 - Production vsnsta=0<br />vsnsql=14 vsnxtr=3<br />Windows XP Version V5.1 Service Pack 2<br />CPU&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; : 1 - type 586<br />Process Affinity&nbsp;&nbsp;&nbsp; : 0x00000000<br />Memory (Avail/Total): Ph:560M/1023M, Ph+PgF:1574M/1949M, VA:1940M/2047M</td>
        </tr>
    </tbody>
</table>
<p>包括了系统的内存和CPU等信息。</p>
<p>从明天开始要写一点Windows上的东西了：）</p>
<p>&nbsp;</p>]]></description>
<link>http://www.eygle.com/archives/2006/08/oracle10g_on_windows.html</link>
<guid>http://www.eygle.com/archives/2006/08/oracle10g_on_windows.html</guid>
<category>FAQ</category>
<pubDate>Thu, 17 Aug 2006 22:20:08 +0800</pubDate>
</item>
<item>
<title>关于新书中Dirty Buffer的问答</title>
<description><![CDATA[今天有朋友在<a href="http://www.itpub.net/showthread.php?postid=5131995">ITPUB上提问</a>，问到新书中提及的一个说法:<br>
<blockquote>P165页：一个buffer要么在LRU上要么在Dirty list，不能同时在多个list上。</blockquote><br>
问题是这样的:<br>
<blockquote>如果一个block被移到Dirty list(=checkpoint queue？)，Oracle怎么判断这个block到底是hot还是cold？</blockquote><br>
这个问题我是这样回答的:<br>
所有Dirty Buffer，首先要被移动到Dirty List上去，然后从Dirty List上被写出。<br><br>

一旦Buffer变得Dirty，在被写出之前都不能被重用。<br>
<br>
也就是不存在Hot/Cold之说了。<br>
Hot/Cold是针对LRU List，并非Dirty List。<br>
<br>
Biti也就此问题作出了回答，具体可以参考ITPUB的链接。<br>]]></description>
<link>http://www.eygle.com/archives/2006/08/dirty_buffer_question.html</link>
<guid>http://www.eygle.com/archives/2006/08/dirty_buffer_question.html</guid>
<category>FAQ</category>
<pubDate>Tue, 15 Aug 2006 22:00:16 +0800</pubDate>
</item>
<item>
<title>Oracle的TNS-12502 错误原因及解决</title>
<description><![CDATA[<p>前几天收到一位读者朋友的来信，询问以下问题：</p>
<blockquote dir="ltr" style="MARGIN-RIGHT: 0px">
<p>在我的监听日志中出现错误TNS-12502: TNS:listener received no CONNECT_DATA from client<br />经过查找资料了解到这种错误应该是客户端tnsnames.ora中没有写 CONNECT_DATA的原因，我检查过客户端的机器没有发现问题。<br />目前的现象：<br />1、每几分钟出现一次该错误（见附件），即使是在凌晨的时候也是，这段时间我们没有开发人员在凌晨时候使用Oracle。<br />2、到目前为止也没有发现客户端机器不能正常连接数据库的情况。 </p>
</blockquote>
<p dir="ltr">今天才有时间研究一下，对于TNS-12502错误，Oracle的解释如下：</p>
<blockquote dir="ltr" style="MARGIN-RIGHT: 0px">
<p dir="ltr">Error:&nbsp;ORA-12502 / TNS-12502<br />Text:&nbsp;TNS:listener received no CONNECT_DATA from client <br />---------------------------------------------------------------------------<br />Cause:&nbsp;No CONNECT_DATA was passed to the listener. <br />Action:&nbsp;Check that the service name resolved from TNSNAMES.ORA has the <br />&nbsp;CONNECT_DATA component of the connect descriptor.</p>
</blockquote>
<p dir="ltr">也就是说只有在TNSNAMES.ORA文件中不包含CONNECT_DATA时会出现此问题。</p>
<p dir="ltr">那么当通过一些网络工具或HA工具等检测监听器端口时，日志中就可能记录如上错误。我们可以简单模拟一下，在客户端通过telnet数据库服务器的1521端口测试连通性：</p>
<blockquote dir="ltr" style="MARGIN-RIGHT: 0px">
<p dir="ltr">C:\&gt;telnet 172.16.30.11 1521</p>
</blockquote>
<p dir="ltr">此时在日志中就会记录如下信息：</p>
<table>
    <tbody>
        <tr>
            <td width="500" bgcolor="#999999">TNS-12502: TNS:listener received no CONNECT_DATA from client<br />09-AUG-2006 16:21:03 * 12502<br />TNS-12502: TNS:listener received no CONNECT_DATA from client<br />09-AUG-2006 16:21:13 * 12502<br />TNS-12502: TNS:listener received no CONNECT_DATA from client<br />09-AUG-2006 16:21:22 * 12502<br />TNS-12502: TNS:listener received no CONNECT_DATA from client</td>
        </tr>
    </tbody>
</table>
<p>如果客户端都正常的话，此类错误并不会影响应用，当然也可以彻底检查找出根本原因。</p>
<p>&nbsp;</p>]]></description>
<link>http://www.eygle.com/archives/2006/08/oracle_tns_12502.html</link>
<guid>http://www.eygle.com/archives/2006/08/oracle_tns_12502.html</guid>
<category>FAQ</category>
<pubDate>Wed, 09 Aug 2006 16:37:47 +0800</pubDate>
</item>
<item>
<title>Oracle的db_name和instance_name</title>
<description><![CDATA[<p>对于Oracle数据库来说，db_name和instance_name可以不同。<br />我们来看一下Oracle文档中对于db_name的定义:</p>
<blockquote dir="ltr" style="MARGIN-RIGHT: 0px">
<p><strong>DB_NAME必须是一个不超过8个字符的文本串.在数据库创建过程中,db_name被记录在数据文件，日志文件和控制文件中。如果数据库实例启动过程中参数文件中的db_name和控制文件中的数据库名称不一致，则数据库不能启动。</strong></p>
</blockquote>
<p>一个实例可以mount并打开任何数据库，但是同一时间一个实例只能打开一个数据库。<br />一个数据库可以被一个或多个实例所mount并打开（在OPS/RAC环境下，一个数据库可以被多个实例所打开）.</p>
<p>我们看一下我的数据库:</p>
<table>
    <tbody>
        <tr>
            <td width="500" bgcolor="#999999">[oracle@jumper dbs]$ grep name initeygle.ora <br />*.db_name='eygle'<br />*.instance_name='eygle'</td>
        </tr>
    </tbody>
</table>
<p>当前参数设置下的数据库:</p>
<table>
    <tbody>
        <tr>
            <td width="500" bgcolor="#999999">
            <p>SQL&gt; select name from v$datafile;</p>
            <p>NAME<br />-----------------------------------------------------<br />/opt/oracle/oradata/eygle/system01.dbf<br />/opt/oracle/oradata/eygle/undotbs01.dbf<br />/opt/oracle/oradata/eygle/users01.dbf<br />/opt/oracle/oradata/eygle/eygle01.dbf</p>
            <p>SQL&gt; show parameter db_name</p>
            <p>NAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TYPE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; VALUE<br />------------------------------------ ----------- -----------<br />db_name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; eygle<br />SQL&gt; show parameter instance_name</p>
            <p>NAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TYPE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; VALUE<br />------------------------------------ ----------- -----------<br />instance_name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; eygle<br />SQL&gt; create pfile from spfile;</p>
            <p>File created.</p>
            <p>SQL&gt; exit<br />Disconnected from Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production<br />With the Partitioning option<br />JServer Release 9.2.0.4.0 - Production</p>
            </td>
        </tr>
    </tbody>
</table>
<p>我们创建一个新的pfile为julia这个新的实例使用:</p>
<table>
    <tbody>
        <tr>
            <td width="500" bgcolor="#999999">[oracle@jumper oracle]$ cd $ORACLE_HOME/dbs<br />[oracle@jumper dbs]$ cp initeygle.ora initjulia.ora<br />[oracle@jumper dbs]$ ll init*<br />-rw-r--r--&nbsp;&nbsp;&nbsp; 1 oracle&nbsp;&nbsp; dba&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 982 Jul 25 14:03 initeygle.ora<br />-rw-r--r--&nbsp;&nbsp;&nbsp; 1 oracle&nbsp;&nbsp; dba&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 982 Jul 25 14:04 initjulia.ora<br />-rw-r--r--&nbsp;&nbsp;&nbsp; 1 oracle&nbsp;&nbsp; dba&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 8385 Mar&nbsp; 9&nbsp; 2002 init.ora</td>
        </tr>
    </tbody>
</table>
<p>修改这个文件更改:<br />instance_name = julia</p>
<p>修改后的参数设置:</p>
<table>
    <tbody>
        <tr>
            <td width="500" bgcolor="#999999">[oracle@jumper dbs]$ grep name initjulia.ora <br />*.db_name='eygle'<br />*.instance_name='julia'</td>
        </tr>
    </tbody>
</table>
<p>然后我们启动实例名称为julia的instance:</p>
<table>
    <tbody>
        <tr>
            <td width="500" bgcolor="#999999">
            <p>[oracle@jumper dbs]$ export ORACLE_SID=julia<br />[oracle@jumper dbs]$ sqlplus &quot;/ as sysdba&quot;</p>
            <p>SQL*Plus: Release 9.2.0.4.0 - Production on Tue Jul 25 14:04:15 2006</p>
            <p>Copyright (c) 1982, 2002, Oracle Corporation.&nbsp; All rights reserved.</p>
            <p>Connected to an idle instance.</p>
            <p>SQL&gt; startup mount;<br />ORACLE instance started.</p>
            <p>Total System Global Area&nbsp; 139531744 bytes<br />Fixed Size&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 452064 bytes<br />Variable Size&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 121634816 bytes<br />Database Buffers&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 16777216 bytes<br />Redo Buffers&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 667648 bytes<br />ORA-01102: cannot mount database in EXCLUSIVE mode</p>
            <p>SQL&gt; exit<br />Disconnected from Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production<br />With the Partitioning option<br />JServer Release 9.2.0.4.0 - Production</p>
            </td>
        </tr>
    </tbody>
</table>
<p>注意，此时试图加载数据库时出现错误，因为当前数据库被另外一个实例(instance)加载。在非并行模式(Ops/RAC)下，一个数据库同时只能被一个实例加载。</p>
<p>此时已经启动了两个数据库实例，从后台进程可以看出：</p>
<table>
    <tbody>
        <tr>
            <td width="500" bgcolor="#999999">[oracle@jumper dbs]$ ps -ef|grep ora<br />oracle&nbsp;&nbsp; 27321&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp; 0 Jul14 ?&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 00:00:00 ora_pmon_eygle<br />oracle&nbsp;&nbsp; 27323&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp; 0 Jul14 ?&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 00:00:00 ora_dbw0_eygle<br />oracle&nbsp;&nbsp; 27325&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp; 0 Jul14 ?&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 00:00:00 ora_lgwr_eygle<br />oracle&nbsp;&nbsp; 27327&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp; 0 Jul14 ?&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 00:00:00 ora_ckpt_eygle<br />oracle&nbsp;&nbsp; 27329&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp; 0 Jul14 ?&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 00:00:32 ora_smon_eygle<br />oracle&nbsp;&nbsp; 27331&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp; 0 Jul14 ?&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 00:00:00 ora_reco_eygle<br />oracle&nbsp;&nbsp; 27333&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp; 0 Jul14 ?&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 00:00:00 ora_cjq0_eygle<br />root&nbsp;&nbsp;&nbsp;&nbsp; 15388&nbsp;&nbsp; 656&nbsp; 0 14:02 ?&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 00:00:00 sshd: oracle [priv]<br />oracle&nbsp;&nbsp; 15390 15388&nbsp; 0 14:02 ?&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 00:00:00 sshd: oracle@pts/2<br />oracle&nbsp;&nbsp; 15391 15390&nbsp; 0 14:02 pts/2&nbsp;&nbsp;&nbsp; 00:00:00 -bash<br />oracle&nbsp;&nbsp; 15445&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp; 0 14:04 ?&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 00:00:00 ora_pmon_julia<br />oracle&nbsp;&nbsp; 15447&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp; 0 14:04 ?&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 00:00:00 ora_dbw0_julia<br />oracle&nbsp;&nbsp; 15449&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp; 0 14:04 ?&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 00:00:00 ora_lgwr_julia<br />oracle&nbsp;&nbsp; 15451&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp; 0 14:04 ?&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 00:00:00 ora_ckpt_julia<br />oracle&nbsp;&nbsp; 15453&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp; 0 14:04 ?&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 00:00:00 ora_smon_julia<br />oracle&nbsp;&nbsp; 15455&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp; 0 14:04 ?&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 00:00:00 ora_reco_julia<br />oracle&nbsp;&nbsp; 15457&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp; 0 14:04 ?&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 00:00:00 ora_cjq0_julia<br />oracle&nbsp;&nbsp; 15459 15391&nbsp; 0 14:04 pts/2&nbsp;&nbsp;&nbsp; 00:00:00 ps -ef<br />oracle&nbsp;&nbsp; 15460 15391&nbsp; 0 14:04 pts/2&nbsp;&nbsp;&nbsp; 00:00:00 grep ora</td>
        </tr>
    </tbody>
</table>
<p>我们关闭eygle这个数据库实例:</p>
<table>
    <tbody>
        <tr>
            <td width="500" bgcolor="#999999">
            <p>[oracle@jumper dbs]$ export ORACLE_SID=eygle<br />[oracle@jumper dbs]$ sqlplus &quot;/ as sysdba&quot;</p>
            <p>SQL*Plus: Release 9.2.0.4.0 - Production on Tue Jul 25 14:04:39 2006</p>
            <p>Copyright (c) 1982, 2002, Oracle Corporation.&nbsp; All rights reserved.</p>
            <p><br />Connected to:<br />Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production<br />With the Partitioning option<br />JServer Release 9.2.0.4.0 - Production</p>
            <p>SQL&gt; shutdown immediate;<br />Database closed.<br />Database dismounted.<br />ORACLE instance shut down.<br />SQL&gt; exit<br />Disconnected from Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production<br />With the Partitioning option<br />JServer Release 9.2.0.4.0 - Production</p>
            </td>
        </tr>
    </tbody>
</table>
<p>此时就可以通过实例julia加载并打开db_name=eygle的数据库了:&nbsp;</p>
<table>
    <tbody>
        <tr>
            <td width="500" bgcolor="#999999">
            <p>[oracle@jumper dbs]$ export ORACLE_SID=julia<br />[oracle@jumper dbs]$ sqlplus &quot;/ as sysdba&quot;</p>
            <p>SQL*Plus: Release 9.2.0.4.0 - Production on Tue Jul 25 14:05:06 2006</p>
            <p>Copyright (c) 1982, 2002, Oracle Corporation.&nbsp; All rights reserved.</p>
            <p><br />Connected to:<br />Oracle9i Enterprise Edition Release 9.2.0.4.0 - Production<br />With the Partitioning option<br />JServer Release 9.2.0.4.0 - Production</p>
            <p>SQL&gt; alter database mount;<br />alter database mount<br />*<br />ERROR at line 1:<br />ORA-01990: error opening password file '/opt/oracle/product/9.2.0/dbs/orapw'<br />ORA-27037: unable to obtain file status<br />Linux Error: 2: No such file or directory<br />Additional information: 3</p>
            <p><br />SQL&gt; alter database open;</p>
            <p>Database altered.</p>
            <p>SQL&gt; select name from v$datafile;</p>
            <p>NAME<br />----------------------------------------------------------------------------<br />/opt/oracle/oradata/eygle/system01.dbf<br />/opt/oracle/oradata/eygle/undotbs01.dbf<br />/opt/oracle/oradata/eygle/users01.dbf<br />/opt/oracle/oradata/eygle/eygle01.dbf</p>
            <p>SQL&gt; ! ps -ef|grep ora<br />root&nbsp;&nbsp;&nbsp;&nbsp; 15388&nbsp;&nbsp; 656&nbsp; 0 14:02 ?&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 00:00:00 sshd: oracle [priv]<br />oracle&nbsp;&nbsp; 15390 15388&nbsp; 0 14:02 ?&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 00:00:00 sshd: oracle@pts/2<br />oracle&nbsp;&nbsp; 15391 15390&nbsp; 0 14:02 pts/2&nbsp;&nbsp;&nbsp; 00:00:00 -bash<br />oracle&nbsp;&nbsp; 15445&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp; 0 14:04 ?&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 00:00:00 ora_pmon_julia<br />oracle&nbsp;&nbsp; 15447&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp; 0 14:04 ?&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 00:00:00 ora_dbw0_julia<br />oracle&nbsp;&nbsp; 15449&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp; 0 14:04 ?&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 00:00:00 ora_lgwr_julia<br />oracle&nbsp;&nbsp; 15451&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp; 0 14:04 ?&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 00:00:00 ora_ckpt_julia<br />oracle&nbsp;&nbsp; 15453&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp; 0 14:04 ?&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 00:00:00 ora_smon_julia<br />oracle&nbsp;&nbsp; 15455&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp; 0 14:04 ?&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 00:00:00 ora_reco_julia<br />oracle&nbsp;&nbsp; 15457&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp; 0 14:04 ?&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 00:00:00 ora_cjq0_julia<br />oracle&nbsp;&nbsp; 15513 15391&nbsp; 0 14:05 pts/2&nbsp;&nbsp;&nbsp; 00:00:00 sqlplus&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />oracle&nbsp;&nbsp; 15514 15513&nbsp; 3 14:05 ?&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 00:00:01 oraclejulia (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))<br />oracle&nbsp;&nbsp; 15515 15513&nbsp; 0 14:05 pts/2&nbsp;&nbsp;&nbsp; 00:00:00 /bin/bash -c&nbsp; ps -ef|grep ora<br />oracle&nbsp;&nbsp; 15516 15515&nbsp; 0 14:05 pts/2&nbsp;&nbsp;&nbsp; 00:00:00 ps -ef</p>
            <p>SQL&gt; show parameter instance_name</p>
            <p>NAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TYPE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; VALUE<br />------------------------------------ ----------- ------------------------------<br />instance_name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; julia<br />SQL&gt; show parameter db_name</p>
            <p>NAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TYPE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; VALUE<br />------------------------------------ ----------- ------------------------------<br />db_name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; eygle</p>
            </td>
        </tr>
    </tbody>
</table>
<p>&nbsp;我们再看看如果参数文件中的db_name和控制文件中的db_name不一致会出现什么错误.<br />修改参数db_name:</p>
<table>
    <tbody>
        <tr>
            <td width="500" bgcolor="#999999">[oracle@jumper dbs]$ grep name initjulia.ora <br />*.db_name='julia'<br />*.instance_name='julia'</td>
        </tr>
    </tbody>
</table>
<p>在启动过程中，我们看到，在mount阶段，数据库会对参数文件和控制文件进行比较，如果两者记录的db_name不一致，则数据库无法启动:</p>
<table>
    <tbody>
        <tr>
            <td width="500" bgcolor="#999999">
            <p>SQL&gt; startup nomount;<br />ORACLE instance started.</p>
            <p>Total System Global Area&nbsp; 139531744 bytes<br />Fixed Size&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 452064 bytes<br />Variable Size&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 121634816 bytes<br />Database Buffers&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 16777216 bytes<br />Redo Buffers&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 667648 bytes<br />SQL&gt; alter database mount;<br />alter database mount<br />*<br />ERROR at line 1:<br />ORA-01103: database name 'EYGLE' in controlfile is not 'JULIA'<br /></p>
            </td>
        </tr>
    </tbody>
</table>
<p>另外的一个区别是，db_name通常限制在8个字符之内；instance_name最多应该支持21个字符。通常我们都是设置db_name和instance_name一致。需要注意的是如果db_name设置过长，则会被Oracle截断为8个字符，而instance_name仍然会保留在21个字符之内，如果你的环境变量设置的instance_name=db_name，则启动时就会出现问题，你需要重建pfile/spfile并且修改环境变量才能启动实例，加载数据库。</p>
<p>这个问题可以参考Itpub曾经出现的案例:</p>
<p><a href="http://www.itpub.net/showthread.php?threadid=604507">http://www.itpub.net/showthread.php?threadid=604507</a></p>
<p>本文通过实例来介绍instance_name和db_name的区别，希望大家能对这两个参数以及instance和database有进一步的认识。</p>
<p>&nbsp;</p>]]></description>
<link>http://www.eygle.com/archives/2006/08/instance_name_and_db_name.html</link>
<guid>http://www.eygle.com/archives/2006/08/instance_name_and_db_name.html</guid>
<category>FAQ</category>
<pubDate>Wed, 09 Aug 2006 10:48:17 +0800</pubDate>
</item>
<item>
<title>见识了一次Oracle9i标准版</title>
<description><![CDATA[<p>说起来，学习Oracle这么多年，还从来没有安装过Oracle的标准版(Oracle Standard Edition)，前几天，帮一个朋友诊断数据库问题，发现居然是一个标准版，活生生的标准版啊!</p>
<p>这是我第一次看到标准版的Oracle数据库，记录一下:</p>
<table>
    <tbody>
        <tr>
            <td width="500" bgcolor="#999999">
            <p>[oracle@st ~]$ sqlplus &quot;/ as sysdba&quot;</p>
            <p>SQL*Plus: Release 9.0.1.0.0 - Production on Mon Jul 24 10:40:25 2006</p>
            <p>(c) Copyright 2001 Oracle Corporation.&nbsp; All rights reserved.</p>
            <p><br />Connected to:<br />Oracle9i Release 9.0.1.0.0 - Production<br />JServer Release 9.0.1.0.0 - Production</p>
            <p>SQL&gt; select * from v$version;</p>
            <p>BANNER<br />----------------------------------------------------------------<br />Oracle9i Release 9.0.1.0.0 - Production<br />PL/SQL Release 9.0.1.0.0 - Production<br />CORE&nbsp;&nbsp;&nbsp; 9.0.1.0.0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Production<br />TNS for Linux: Version 9.0.1.0.0 - Production<br />NLSRTL Version 9.0.1.0.0 - Production</p>
            </td>
        </tr>
    </tbody>
</table>
<p>看一下Oracle的标准版支持的选件,为True的还真不多:</p>
<table>
    <tbody>
        <tr>
            <td width="500" bgcolor="#999999">
            <p>SQL&gt; set linesize 120<br />SQL&gt; col value for a5<br />SQL&gt; select * from v$option where value='TRUE';</p>
            <p>PARAMETER&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; VALUE<br />---------------------------------------------------------------- -----<br />Objects&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TRUE<br />Connection multiplexing&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TRUE<br />Connection pooling&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TRUE<br />Proxy authentication/authorization&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TRUE<br />OLAP Window Functions&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TRUE<br />Parallel load&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TRUE<br />Instead-of triggers&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TRUE<br />Database queuing&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TRUE</p>
            <p>8 rows selected.</p>
            </td>
        </tr>
    </tbody>
</table>
<p>高级复制都是不支持的。以下是全部选件列表:</p>
<div id="a001007more">
<div id="more">
<table>
    <tbody>
        <tr>
            <td width="500" bgcolor="#999999">
            <p>SQL&gt; select * from v$option order by value;</p>
            <p>PARAMETER&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; VALUE<br />---------------------------------------------------------------- -----<br />Partitioning&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FALSE<br />Real Application Clusters&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FALSE<br />Advanced replication&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FALSE<br />Parallel backup and recovery&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FALSE<br />Incremental backup and recovery&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FALSE<br />Bit-mapped indexes&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FALSE<br />Parallel execution&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FALSE<br />Point-in-time tablespace recovery&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FALSE<br />Fine-grained access control&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FALSE<br />Spatial&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FALSE<br />Database resource manager&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FALSE</p>
            <p>PARAMETER&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; VALUE<br />---------------------------------------------------------------- -----<br />Materialized view warehouse refresh&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FALSE<br />Materialized view rewrite&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FALSE<br />Managed Standby&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FALSE<br />Coalesce Index&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FALSE<br />Online Index Build&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FALSE<br />Plan Stability&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FALSE<br />Function-based indexes&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FALSE<br />Enterprise User Security&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FALSE<br />Application Role&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FALSE<br />Fine-grained Auditing&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FALSE<br />Block Media Recovery&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FALSE</p>
            <p>PARAMETER&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; VALUE<br />---------------------------------------------------------------- -----<br />Java&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FALSE<br />Duplexed backups&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FALSE<br />Sample Scan&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FALSE<br />Fast-Start Fault Recovery&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FALSE<br />Transparent Application Failover&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FALSE<br />Export transportable tablespaces&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FALSE<br />Visual Information Retrieval&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FALSE<br />Objects&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TRUE<br />Connection multiplexing&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TRUE<br />Connection pooling&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TRUE<br />Proxy authentication/authorization&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TRUE</p>
            <p>PARAMETER&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; VALUE<br />---------------------------------------------------------------- -----<br />OLAP Window Functions&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TRUE<br />Parallel load&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TRUE<br />Instead-of triggers&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TRUE<br />Database queuing&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TRUE</p>
            <p>37 rows selected.<br /></p>
            </td>
        </tr>
    </tbody>
</table>
<p>其实对于很多客户标准版</strong>也是足够的，只不过在国内很多商业应用都是未经授权的，所以企业版才被滥用吧。</p>
<p>&nbsp;</p>
</div>
</div>]]></description>
<link>http://www.eygle.com/archives/2006/07/oracle9i_standard_edition.html</link>
<guid>http://www.eygle.com/archives/2006/07/oracle9i_standard_edition.html</guid>
<category>FAQ</category>
<pubDate>Thu, 27 Jul 2006 15:04:41 +0800</pubDate>
</item>
<item>
<title>Oracle的大表,小表与全表扫描</title>
<description><![CDATA[<p>通常对于小表，Oracle建议通过全表扫描进行数据访问，对于大表则应该通过索引以加快数据查询，当然如果查询要求返回表中大部分或者全部数据，那么全表扫描可能仍然是最好的选择。<br />从V$SYSSTAT视图中，我们可以查询得到关于全表扫描的系统统计信息：</p>
<table>
    <tbody>
        <tr>
            <td width="500" bgcolor="#999999">
            <p>SQL&gt; col name for a30 <br />SQL&gt; select name,value from v$sysstat<br />2 where name in ('table scans (short tables)','table scans (long tables)');</p>
            <p>NAME VALUE<br />------------------------------ ----------<br />table scans (short tables) 828<br />table scans (long tables) 101</p>
            </td>
        </tr>
    </tbody>
</table>
<p>其中table scans (short tables)指对于小表的全表扫描的此时；table scans (long tables)指对于大表的全表扫描的次数。<br />从Statspack的报告中，我们也可以找到这部分信息：</p>
<table>
    <tbody>
        <tr>
            <td width="500" bgcolor="#999999">Instance Activity Stats for DB: CELLSTAR Instance: ora8i Snaps: 20 - <br /><br />Statistic Total per Second per Trans <br />--------------------------------- ---------------- ------------ ------------ <br />。。。。。。<br />table scan blocks gotten 38,228,349 37.0 26.9 <br />table scan rows gotten 546,452,583 528.9 383.8 <br />table scans (direct read) 5,784 0.0 0.0 <br />table scans (long tables) 5,990 0.0 0.0 <br />table scans (rowid ranges) 5,850 0.0 0.0 <br />table scans (short tables) 1,185,275 1.2 0.8 </td>
        </tr>
    </tbody>
</table>
<p>通常，如果一个数据库的table scans (long tables)过多，那么db file scattered read等待事件可能同样非常显著，和以上数据来自同一个report的Top5等待事件就是如此：</p>
<table>
    <tbody>
        <tr>
            <td width="500" bgcolor="#999999">Top 5 Wait Events <br />~~~~~~~~~~~~~~~~~ Wait % Total<br />Event Waits Time (cs) Wt Time<br />-------------------------------------------- ------------ ------------ -------<br />log file parallel write 1,436,993 1,102,188 10.80<br />log buffer space 16,698 873,203 8.56<br />log file sync 1,413,374 654,587 6.42<br />control file parallel write 329,777 510,078 5.00<br />db file scattered read 425,578 132,537 1.30</td>
        </tr>
    </tbody>
</table>
<p>数据库内部，很多信息和现象都是紧密相关的，只要我们加深对于数据库的了解，在优化和诊断数据库问题时就能够得心应手。</p>
<p>Oracle通过一个内部参数_small_table_threshold来定义大表和小表的界限。缺省的该参数等于2%的Buffer数量，如果表的大小小于该参数定义，Oracle认为该表为小表，否则Oracle认为该表为大表。<br />我们看一下Oracle9iR2中的情况：</p>
<table>
    <tbody>
        <tr>
            <td width="500" bgcolor="#999999">
            <p>SQL&gt; @@GetParDescrb.sql<br />Enter value for par: small<br />old 6: AND x.ksppinm LIKE '%&amp;par%'<br />new 6: AND x.ksppinm LIKE '%small%'</p>
            <p>NAME VALUE DESCRIB<br />------------------------------ -------------------- ------------------------------------------------------------<br />_small_table_threshold 200 threshold level of table size for direct reads<br /></p>
            </td>
        </tr>
    </tbody>
</table>
<p>以上数据库中，200正好约为Buffer数量的2%:</p>
<table>
    <tbody>
        <tr>
            <td width="500" bgcolor="#999999">
            <p>SQL&gt; show parameter db_cache_size</p>
            <p>NAME TYPE VALUE<br />------------------------------------ ----------- ------------------------------<br />db_cache_size big integer 83886080<br />SQL&gt; select (83886080/8192)*2/100 from dual;</p>
            <p>(83886080/8192)*2/100<br />---------------------<br />204.8</p>
            </td>
        </tr>
    </tbody>
</table>
<p>所以要区分大小表（Long/Short）是因为全表扫描可能引起Buffer Cache的抖动，缺省的大表的全表扫描会被置于LRU的末端，以期尽快老化，减少Buffer的占用。从Oracle8i开始，Oracle的多缓冲池管理技术（Default/Keep/Recycle池）给了我们另外一个选择，对于不同大小、不同使用频率的数据表，从建表之初就可以指定其存储Buffer，以使得内存使用更加有效。</p>
<p>&nbsp;</p>]]></description>
<link>http://www.eygle.com/archives/2006/05/oracle_long_short_table.html</link>
<guid>http://www.eygle.com/archives/2006/05/oracle_long_short_table.html</guid>
<category>FAQ</category>
<pubDate>Sun, 14 May 2006 10:09:54 +0800</pubDate>
</item>
<item>
<title>使用RMAN启动Oracle默认实例</title>
<description><![CDATA[<p>昨天在<a href="http://www.eygle.com/archives/2006/05/intance_nomount_parameter.html"><font color="#0000cc">Oracle创建实例的最少参数需求</font></a>中,我提到,启动一个实例需要的最少参数仅为db_name.</p>
<p>实际上,我们可以通过rman,在不存在参数文件的情况下,启动一个默认DUMMY实例.</p>
<p>请看如下测试:</p>
<table>
    <tbody>
        <tr>
            <td width="500" bgcolor="#999999">
            <p>[oracle@jumper dbs]$ rman target /</p>
            <p>Recovery Manager: Release 9.2.0.4.0 - Production</p>
            <p>Copyright (c) 1995, 2002, Oracle Corporation. All rights reserved.</p>
            <p>connected to target database (not started)</p>
            <p>RMAN&gt; startup nomount;</p>
            <p>startup failed: ORA-01078: failure in processing system parameters<br />LRM-00109: could not open parameter file '/opt/oracle/product/9.2.0/dbs/initconner.ora'</p>
            <p><strong>trying to start the Oracle instance without parameter files ...</strong><br />Oracle instance started</p>
            <p>Total System Global Area 97588504 bytes</p>
            <p>Fixed Size 451864 bytes<br />Variable Size 46137344 bytes<br />Database Buffers 50331648 bytes<br />Redo Buffers 667648 bytes<br /></p>
            </td>
        </tr>
    </tbody>
</table>
<p>此时Oracle使用的db_name为DUMMY:</p>
<table>
    <tbody>
        <tr>
            <td width="500" bgcolor="#999999">
            <p>SQL&gt; show parameter db_name</p>
            <p>NAME TYPE VALUE<br />------------------------------------ ----------- ------------------------------<br />db_name string DUMMY</p>
            </td>
        </tr>
    </tbody>
</table>
<p>如果我们丢失了所有的参数文件,那么用这种方法可以对自动备份的spfile进行恢复:</p>
<table>
    <tbody>
        <tr>
            <td width="500" bgcolor="#999999">
            <p>[oracle@jumper log]$ rman target /</p>
            <p>Recovery Manager: Release 9.2.0.4.0 - Production</p>
            <p>Copyright (c) 1995, 2002, Oracle Corporation. All rights reserved.</p>
            <p>connected to target database: <strong>DUMMY </strong>(not mounted)</p>
            <p>RMAN&gt; restore spfile to '/tmp/spfile.ora' from 'c-3152029224-20060509-00';</p>
            <p>Starting restore at 09-MAY-06</p>
            <p>using target database controlfile instead of recovery catalog<br />allocated channel: ORA_DISK_1<br />channel ORA_DISK_1: sid=9 devtype=DISK<br />channel ORA_DISK_1: autobackup found: c-3152029224-20060509-00<br />channel ORA_DISK_1: SPFILE restore from autobackup complete<br />Finished restore at 09-MAY-06</p>
            <p>RMAN&gt;</p>
            </td>
        </tr>
    </tbody>
</table>]]></description>
<link>http://www.eygle.com/archives/2006/05/rman_start_default_instance.html</link>
<guid>http://www.eygle.com/archives/2006/05/rman_start_default_instance.html</guid>
<category>FAQ</category>
<pubDate>Tue, 09 May 2006 10:26:06 +0800</pubDate>
</item>
<item>
<title>Oracle创建实例的最少参数需求</title>
<description><![CDATA[<p>我们知道,Oracle在启动过程中,需要读取参数文件(pfile/spfile)来创建实例.Oracle在启动过程中,寻找参数文件的顺序为:spfile<sid></sid>.ora,spfile.ora,init<sid></sid>.ora.</p>
<p>而创建实例的过程中,Oracle需要的最少参数为一个,即db_name参数.</p>
<p>我们来看一个测试,启动一个任意设置的实例,本例ORACLE_SID=julia:</p>
<table>
    <tbody>
        <tr>
            <td width="500" bgcolor="#999999">
            <p>[oracle@jumper dbs]$ export ORACLE_SID=julia<br />[oracle@jumper dbs]$ sqlplus &quot;/ as sysdba&quot;</p>
            <p>SQL*Plus: Release 9.2.0.4.0 - Production on Mon May 8 11:08:36 2006</p>
            <p>Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved.</p>
            <p>Connected to an idle instance.</p>
            <p>SQL&gt; startup nomount;<br />ORA-01078: failure in processing system parameters<br />LRM-00109: could not open parameter file '/opt/oracle/product/9.2.0/dbs/initjulia.ora'</p>
            </td>
        </tr>
    </tbody>
</table>
<p>Oracle最后检查的文件为initjulia.ora,让我们创建这个文件,然后数据库实例即可创建:</p>
<table>
    <tbody>
        <tr>
            <td width="500" bgcolor="#999999">
            <p>SQL&gt; ! echo &quot;db_name=julia&quot; &gt; /opt/oracle/product/9.2.0/dbs/initjulia.ora</p>
            <p>SQL&gt; startup nomount;<br />ORACLE instance started.</p>
            <p>Total System Global Area 97588504 bytes<br />Fixed Size 451864 bytes<br />Variable Size 46137344 bytes<br />Database Buffers 50331648 bytes<br />Redo Buffers 667648 bytes</p>
            </td>
        </tr>
    </tbody>
</table>
<p>我们可以看一下缺省的各类文件的存储地点:</p>
<table>
    <tbody>
        <tr>
            <td width="500" bgcolor="#999999">
            <p>SQL&gt; show parameter dump_dest</p>
            <p>NAME TYPE VALUE<br />------------------------------------ ---------------------- ------------------------------<br />background_dump_dest string ?/rdbms/log<br />core_dump_dest string ?/dbs<br />user_dump_dest string ?/rdbms/log</p>
            <p>SQL&gt; show parameter control_files</p>
            <p>NAME TYPE VALUE<br />------------------------------------ ---------------------- ------------------------------<br />control_files string ?/dbs/cntrl@.dbf</p>
            </td>
        </tr>
    </tbody>
</table>
<p>我们顺便看一下缺省的,警报日志中记录的信息:</p>
<table>
    <tbody>
        <tr>
            <td width="500" bgcolor="#999999">[oracle@jumper dbs]$ cat $ORACLE_HOME/rdbms/log/alert_julia.log<br />Mon May 8 11:09:04 2006<br />Starting ORACLE instance (normal)<br />Mon May 8 11:09:04 2006<br />WARNING: EINVAL creating segment of size 0x0000000006400000<br />fix shm parameters in /etc/system or equivalent<br />LICENSE_MAX_SESSION = 0<br />LICENSE_SESSIONS_WARNING = 0<br />SCN scheme 2<br />Using log_archive_dest parameter default value<br />LICENSE_MAX_USERS = 0<br />SYS auditing is disabled<br />Starting up ORACLE RDBMS Version: 9.2.0.4.0.<br />System parameters with non-default values:<br />db_name = julia<br />PMON started with pid=2<br />DBW0 started with pid=3<br />LGWR started with pid=4<br />CKPT started with pid=5<br />SMON started with pid=6<br />RECO started with pid=7</td>
        </tr>
    </tbody>
</table>]]></description>
<link>http://www.eygle.com/archives/2006/05/intance_nomount_parameter.html</link>
<guid>http://www.eygle.com/archives/2006/05/intance_nomount_parameter.html</guid>
<category>FAQ</category>
<pubDate>Mon, 08 May 2006 10:08:37 +0800</pubDate>
</item>
<item>
<title>解决Restarting死进程QMN0问题一例</title>
<description><![CDATA[<p>一大早被电话吵醒，同事说一个数据库应用升级之后无法启动。<br />后台连续报错：</p>
<table>
    <tbody>
        <tr>
            <td width="500" bgcolor="#999999">Sun Apr 30 10:48:41 <strong style="COLOR: black; BACKGROUND-COLOR: #ff66ff">2006</strong><br />Restarting dead background process QMN0<br />QMN0 started with pid=9<br />Sun Apr 30 10:53:42 <strong style="COLOR: black; BACKGROUND-COLOR: #ff66ff">2006</strong><br />Restarting dead background process QMN0<br />QMN0 started with pid=9</td>
        </tr>
    </tbody>
</table>
<p>那么QMN0是什么进程呢?</p>
<p>Queue Monitor Processes (QMNn)<br />队列监视进程是一个可选的后台进程，为<strong style="COLOR: black; BACKGROUND-COLOR: #99ff99">Oracle</strong> Streams Advanced Queuing所使用。<br />最多可以配置10个队列监视进程。和Job进程一样，该进程的异常不会导致数据库的Crash。</p>
<p>通常这个错误不会导致数据库无法启动，但是在某些平台上会存在Bug,可能会导致数据库无法启动。<br />如果没有用到<strong style="COLOR: black; BACKGROUND-COLOR: #99ff99">Oracle</strong> Streams Advanced Queuing选件，就可以取消该进程，数据库自然就可以启动了：</p>
<table>
    <tbody>
        <tr>
            <td width="500" bgcolor="#999999">
            <p>SQL&gt; show parameter aq</p>
            <p>NAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TYPE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; VALUE<br />------------------------------------ ----------- -----------------<br />aq_tm_processes&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; integer&nbsp;&nbsp;&nbsp;&nbsp; 1<br />SQL&gt; alter system set aq_tm_processes=0 scope=both;</p>
            <p>System altered.</p>
            <p>SQL&gt; alter database open;</p>
            <p>Database altered.</p>
            </td>
        </tr>
    </tbody>
</table>
<p>此案例的数据库版本为9.2.0.3,平台为Sun Solaris:</p>
<table>
    <tbody>
        <tr>
            <td width="500" bgcolor="#999999">
            <p>SQL&gt; select * from v$version;</p>
            <p>BANNER<br />----------------------------------------------------------------<br />Oracle9i Enterprise Edition Release 9.2.0.3.0 - 64bit Production<br />PL/SQL Release 9.2.0.3.0 - Production<br />CORE&nbsp;&nbsp;&nbsp; 9.2.0.3.0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Production<br />TNS for Solaris: Version 9.2.0.3.0 - Production<br />NLSRTL Version 9.2.0.3.0 - Production</p>
            <p>SQL&gt; exit<br />Disconnected from Oracle9i Enterprise Edition Release 9.2.0.3.0 - 64bit Production<br />With the Partitioning, OLAP and <strong style="COLOR: black; BACKGROUND-COLOR: #99ff99">Oracle</strong> Data Mining options<br />JServer Release 9.2.0.3.0 - Production<br /><br />$ isainfo -v<br />64-bit sparcv9 applications<br />32-bit sparc applications</p>
            </td>
        </tr>
    </tbody>
</table>
<p>&nbsp;</p>]]></description>
<link>http://www.eygle.com/archives/2006/04/restarting_dead_qmn0_process.html</link>
<guid>http://www.eygle.com/archives/2006/04/restarting_dead_qmn0_process.html</guid>
<category>FAQ</category>
<pubDate>Sun, 30 Apr 2006 17:18:43 +0800</pubDate>
</item>


</channel>
</rss>