<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-疯狂-随笔分类-database</title><link>http://www.blogjava.net/freeman1984/category/38740.html</link><description>STANDING ON THE SHOULDERS OF GIANTS
</description><language>zh-cn</language><lastBuildDate>Mon, 05 Jun 2017 06:15:04 GMT</lastBuildDate><pubDate>Mon, 05 Jun 2017 06:15:04 GMT</pubDate><ttl>60</ttl><item><title>oracle 索引字段包含date类型，使用spring jdbc更新时不走索引，而是走table access full的问题</title><link>http://www.blogjava.net/freeman1984/archive/2015/11/15/428197.html</link><dc:creator>疯狂</dc:creator><author>疯狂</author><pubDate>Sat, 14 Nov 2015 16:04:00 GMT</pubDate><guid>http://www.blogjava.net/freeman1984/archive/2015/11/15/428197.html</guid><wfw:comment>http://www.blogjava.net/freeman1984/comments/428197.html</wfw:comment><comments>http://www.blogjava.net/freeman1984/archive/2015/11/15/428197.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/freeman1984/comments/commentRss/428197.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/freeman1984/services/trackbacks/428197.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: oracle 索引字段包含date类型，使用spring jdbc更新时不走索引，而是走table access full的问题&nbsp;&nbsp;<a href='http://www.blogjava.net/freeman1984/archive/2015/11/15/428197.html'>阅读全文</a><img src ="http://www.blogjava.net/freeman1984/aggbug/428197.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/freeman1984/" target="_blank">疯狂</a> 2015-11-15 00:04 <a href="http://www.blogjava.net/freeman1984/archive/2015/11/15/428197.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>(转)Oracle数据库如何授权收费（Database Licensing） </title><link>http://www.blogjava.net/freeman1984/archive/2014/10/27/419097.html</link><dc:creator>疯狂</dc:creator><author>疯狂</author><pubDate>Mon, 27 Oct 2014 08:43:00 GMT</pubDate><guid>http://www.blogjava.net/freeman1984/archive/2014/10/27/419097.html</guid><wfw:comment>http://www.blogjava.net/freeman1984/comments/419097.html</wfw:comment><comments>http://www.blogjava.net/freeman1984/archive/2014/10/27/419097.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/freeman1984/comments/commentRss/419097.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/freeman1984/services/trackbacks/419097.html</trackback:ping><description><![CDATA[<p><span style="font-family: Courier New; font-size: 12px;"><br />说白了，Oracle License就是一张纸，一张许可证。这跟许多软件产品是一样的，有没有许可证的产品在功能上是没有区别的，仅仅是一个法律问题。也就是说，随便到网上下的Oracle都可以免费正常使用，只不过这个使用是有区别的，如果是测试或研发，那没关系，随便用；如果是用于商业用途，那就是违法的了，Oracle公司有权起诉！</span></p><p><span style="font-family: Courier New; font-size: 12px;">&nbsp;</span></p><p><span style="font-family: Courier New; font-size: 12px;">与免费的下载版本不同，正式版的Oracle在购买后，用户会得到一个产品服务码，凭此Oracle服务码，可以得到Oracle的在线升级等服务，Oracle的服务分为好多级，不同级别提供相对应的在线或是现场服务。</span></p><p><span style="font-family: Courier New; font-size: 12px;">&nbsp;</span></p><p><span style="font-family: Courier New; font-size: 12px;"><strong>现在Oracle有两种授权方式，按CPU(Process)数和按用户数(NamedUser Plus)。</strong>前一种方式一般用于用户数不确定或者用户数量很大的情况，典型的如互联网环境，而后一种则通常被用于用户数确定或者较少的情况。</span></p><p><span style="font-family: Courier New; font-size: 12px;">&nbsp;</span></p><p><span style="font-family: Courier New; font-size: 12px;"><strong>按CPU：</strong>License数=CPU数*系数。系数来自Oracle的一个参数表，如IBM Power6的处理器为1，AMD和Intel的处理器为0.5，详细情况见下：</span></p><table border="1" cellspacing="0" cellpadding="0"><tbody><tr><td valign="top"><p><span style="font-family: Courier New; font-size: 12px;">参数</span></p></td><td valign="top"><p><span style="font-family: Courier New; font-size: 12px;">处理器型号</span></p></td></tr><tr><td valign="top"><p><span style="font-family: Courier New; font-size: 12px;">0.25</span></p></td><td valign="top"><p><span style="font-family: Courier New; font-size: 12px;">Sun UltraSPARC T1 处理器</span></p></td></tr><tr><td valign="top"><p><span style="font-family: Courier New; font-size: 12px;">0.50</span></p></td><td valign="top"><p><span style="font-family: Courier New; font-size: 12px;">Sun UltraSPARC T1处理器</span></p></td></tr><tr><td valign="top"><p><span style="font-family: Courier New; font-size: 12px;">0.50</span></p></td><td valign="top"><p><span style="font-family: Courier New; font-size: 12px;">Intel、AMD处理器</span></p></td></tr><tr><td valign="top"><p><span style="font-family: Courier New; font-size: 12px;">0.50</span></p></td><td valign="top"><p><span style="font-family: Courier New; font-size: 12px;">Sun UltraSPARC T2+ 处理器</span></p></td></tr><tr><td valign="top"><p><span style="font-family: Courier New; font-size: 12px;">1.00</span></p></td><td valign="top"><p><span style="font-family: Courier New; font-size: 12px;">IBM POWER6、POWER7 处理器</span></p></td></tr><tr><td valign="top"><p><span style="font-family: Courier New; font-size: 12px;">0.75</span></p></td><td valign="top"><p><span style="font-family: Courier New; font-size: 12px;">其他多核处理器</span></p></td></tr><tr><td valign="top"><p><span style="font-family: Courier New; font-size: 12px;">1.00</span></p></td><td valign="top"><p><span style="font-family: Courier New; font-size: 12px;">单核处理器</span></p></td></tr></tbody></table><p><span style="font-family: Courier New; font-size: 12px;">则根据公式可以算出，一个SUN UltraSparc T1的4*8核处理器需要4*8*0.25=8个CPU licenses</span></p><p><span style="font-family: Courier New; font-size: 12px;">&nbsp;</span></p><p><span style="font-family: Courier New; font-size: 12px;"><strong>按用户数：</strong>Oracle数据库按照用户数授权，是指最终端的连接到Oracle数据库的用户数。按照用户数来买的时候只能用于一个系统，不允许在多台机器上安装。每一个访问Oracle数据库的用户，无论是自然人还是设备，都算作一个用户 (Named User)。如果是B/S架构，那么是指连接到中间件上的用户数。</span></p><p><span style="font-family: Courier New; font-size: 12px;">&nbsp;</span></p><p><span style="font-family: Courier New; font-size: 12px;">Named User Plus: is defined as anindividual authorized by you to use the programs which are installed on a singleserver or multiple servers, regardless of whether the individual is activelyusing the programs at any given time. A non human operated device will becounted.</span></p><p><span style="font-family: Courier New; font-size: 12px;">&nbsp;</span></p><p><span style="font-family: Courier New; font-size: 12px;">按用户数购买则对应相应的产品有对应的License的最低购买量限制，如下：</span></p><table border="1" cellspacing="0" cellpadding="0"><tbody><tr><td valign="top"><p><span style="font-family: Courier New; font-size: 12px;">产品</span></p></td><td valign="top"><p><span style="font-family: Courier New; font-size: 12px;">最低License数</span></p></td></tr><tr><td valign="top"><p><span style="font-family: Courier New; font-size: 12px;">Oracle Database Standard Edition ONE</span></p></td><td valign="top"><p><span style="font-family: Courier New; font-size: 12px;">5 Named User Plus licenses</span></p></td></tr><tr><td valign="top"><p><span style="font-family: Courier New; font-size: 12px;">Oracle Database Standard Edition</span></p></td><td valign="top"><p><span style="font-family: Courier New; font-size: 12px;">5 Named User Plus licenses</span></p></td></tr><tr><td valign="top"><p><span style="font-family: Courier New; font-size: 12px;">Oracle Database Enterprise Edition</span></p></td><td valign="top"><p><span style="font-family: Courier New; font-size: 12px;">25 Named User Plus licenses per CPU</span></p></td></tr><tr><td valign="top"><p><span style="font-family: Courier New; font-size: 12px;">Oracle Application Server Standard Edition ONE</span></p></td><td valign="top"><p><span style="font-family: Courier New; font-size: 12px;">5 Named User Plus licenses</span></p></td></tr><tr><td valign="top"><p><span style="font-family: Courier New; font-size: 12px;">All other Oracle Application Server products</span></p></td><td valign="top"><p><span style="font-family: Courier New; font-size: 12px;">10 Named User Plus licenses per CPU</span></p></td></tr></tbody></table><p><span style="font-family: Courier New; font-size: 12px;">当然用户应该根据自己的实际用户数订购，且不少于相应版本所要求的最低用户数。</span></p><p><span style="font-family: Courier New; font-size: 12px;"><strong>一般情况下，1CPU的费用约等于50user的费用，所以如果用户数&gt;CPU数*系数*50，则按CPU订购反而更为经济。</strong></span></p><p><span style="font-family: Courier New; font-size: 12px;"><strong>&nbsp;</strong></span></p><p><span style="font-family: Courier New; font-size: 12px;"><strong>更换服务器，OracleLicense要重新购买吗？</strong></span></p><p><span style="font-family: Courier New; font-size: 12px;">如果用户是按照用户数购买的Oracle，更改硬件不需要重新购买License；</span></p><p><span style="font-family: Courier New; font-size: 12px;">如果是按照CPU个数买，有相应的换算方法，具体请咨询Oracle公司。</span></p><p><span style="font-family: Courier New; font-size: 12px;">&nbsp;</span></p><p><span style="font-family: Courier New; font-size: 12px;"><strong>这里是Oracle 11g企业版的销售价格：</strong></span></p><p><span style="font-family: Courier New; font-size: 12px;">每个License还有有效期的分类（不论是User License还是CPU License），分别为：1年、2年、3年、4年、5年、永久。当然价格也是依次增加。</span></p><p><span style="font-family: Courier New; font-size: 12px;">&nbsp;</span></p><p><span style="font-family: Courier New; font-size: 12px;">当前Oracle 11G的User License无限使用期的价格为人民币3千5左右，按50个User License无限使用期的购买量则价格为17.5万;每个CPU License无限使用期的价格为17万9千，按IBM小机的系数计算，则购买价格为17万9千，和50个User License的价格相近。</span></p><p><span style="font-family: Courier New; font-size: 12px;">&nbsp;</span></p><p><span style="font-family: Courier New; font-size: 12px;">关于服务价格：一般地，购买Oracle的License都包含首年的服务费，以后的费用按每年原价的22%计算。</span></p><p><span style="font-family: Courier New; font-size: 12px;">&nbsp;</span></p><p><span style="font-family: Courier New; font-size: 12px;">更多的产品价格可以访问http://shop.oracle.com查看。</span></p><p><span style="font-family: Courier New; font-size: 12px;"><br /></span></p><p><span style="font-family: Courier New; font-size: 12px;"><strong>这里我们再介绍一下如何查看服务器上物理CPU总数以及核数：</strong></span></p><p><span style="font-family: Courier New; font-size: 12px;">a.如果已安装了数据库实例，那么直接查看V$license视图即可:</span></p><pre><span style="font-family: Courier New; font-size: 12px;">SQL&gt; select cpu_count_current,CPU_CORE_COUNT_CURRENT,CPU_SOCKET_COUNT_CURRENT from v$license;

CPU_COUNT_CURRENT CPU_CORE_COUNT_CURRENT CPU_SOCKET_COUNT_CURRENT
----------------- ---------------------- ------------------------
                2                      2                        1</span></pre><span style="font-family: Courier New; font-size: 12px;">以上通过v$license 视图反应了数据库服务器当前的逻辑CPU总数为2，而总的核数也是2，实际的物理CPU Socket是1，那么说明是1个双核的物理CPU。</span> <p><span style="font-family: Courier New; font-size: 12px;"><br /></span></p><p><span style="font-family: Courier New; font-size: 12px;">b. 如果服务器上尚没有部署实例则不能使用v$license视图，那么可以通过OS 命令来获取必要的信息。</span></p><p><span style="font-family: Courier New; font-size: 12px;">在x86 Linux服务器上：</span></p><p><span style="font-family: Courier New; font-size: 12px;"><br /></span></p><pre><span style="font-family: Courier New; font-size: 12px;">列出当前使用的物理CPU的个数：

grep core\ id /proc/cpuinfo | grep -c \ 0$ | grep ^0$ &gt;&gt; /dev/null &amp;&amp; grep -c processor /proc/cpuinfo || \
grep core\ id /proc/cpuinfo | grep -c \ 0$

列出单个物理CPU的核数

grep "cpu cores" /proc/cpuinfo |uniq</span></pre><p>&nbsp;</p><p>&nbsp;</p><span style="font-family: Courier New; font-size: 12px;"><p>在Power系列的IBM小机上按照cpu模块方式来购买，在IBM Dual-Core Module（双核模块）的power芯片上，一个双核模块（内含2颗物理cpu）只需要购买1.5个license ， 具体的模块类型可以咨询IBM厂家或者集成商。<br /><br />转自：<a href="http://blog.csdn.net/eurasiaxz/article/details/10699869">http://blog.csdn.net/eurasiaxz/article/details/10699869</a></p></span><p>当然随着cpu计算能力的提高，cpu个数有可能并不需要太多。oracle的收费模式肯定会变化。</p><img src ="http://www.blogjava.net/freeman1984/aggbug/419097.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/freeman1984/" target="_blank">疯狂</a> 2014-10-27 16:43 <a href="http://www.blogjava.net/freeman1984/archive/2014/10/27/419097.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ORA-06548错误</title><link>http://www.blogjava.net/freeman1984/archive/2013/11/28/406952.html</link><dc:creator>疯狂</dc:creator><author>疯狂</author><pubDate>Thu, 28 Nov 2013 08:44:00 GMT</pubDate><guid>http://www.blogjava.net/freeman1984/archive/2013/11/28/406952.html</guid><wfw:comment>http://www.blogjava.net/freeman1984/comments/406952.html</wfw:comment><comments>http://www.blogjava.net/freeman1984/archive/2013/11/28/406952.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/freeman1984/comments/commentRss/406952.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/freeman1984/services/trackbacks/406952.html</trackback:ping><description><![CDATA[ORA-06548: 不再需要更多的行。<br />原因：有可能是通过pl/sql等客户端执行管道输出函数（pipelined）造成，pl/sql客户端一般不会显示全部结果，管道输出挂起。 <img src ="http://www.blogjava.net/freeman1984/aggbug/406952.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/freeman1984/" target="_blank">疯狂</a> 2013-11-28 16:44 <a href="http://www.blogjava.net/freeman1984/archive/2013/11/28/406952.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ora-01031:insufficient privileges</title><link>http://www.blogjava.net/freeman1984/archive/2013/09/04/403674.html</link><dc:creator>疯狂</dc:creator><author>疯狂</author><pubDate>Wed, 04 Sep 2013 12:03:00 GMT</pubDate><guid>http://www.blogjava.net/freeman1984/archive/2013/09/04/403674.html</guid><wfw:comment>http://www.blogjava.net/freeman1984/comments/403674.html</wfw:comment><comments>http://www.blogjava.net/freeman1984/archive/2013/09/04/403674.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/freeman1984/comments/commentRss/403674.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/freeman1984/services/trackbacks/403674.html</trackback:ping><description><![CDATA[<div>如果密码文件存在的话（路径：$ORACLE_HOME/dbs/），去查看密码文件（格式：orapw$ORACLE_SID）里面sid和当前ORACLE_SID大小写是否一致。必须一样才行。<br />不一样是用mv 修改成一样的。即可。<br /><br />相关文章参考。<br /><br /><a href="http://www.xifenfei.com/2025.html">http://www.xifenfei.com/2025.html</a></div><img src ="http://www.blogjava.net/freeman1984/aggbug/403674.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/freeman1984/" target="_blank">疯狂</a> 2013-09-04 20:03 <a href="http://www.blogjava.net/freeman1984/archive/2013/09/04/403674.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>dbcp重连(转) </title><link>http://www.blogjava.net/freeman1984/archive/2013/06/06/400263.html</link><dc:creator>疯狂</dc:creator><author>疯狂</author><pubDate>Thu, 06 Jun 2013 01:38:00 GMT</pubDate><guid>http://www.blogjava.net/freeman1984/archive/2013/06/06/400263.html</guid><wfw:comment>http://www.blogjava.net/freeman1984/comments/400263.html</wfw:comment><comments>http://www.blogjava.net/freeman1984/archive/2013/06/06/400263.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/freeman1984/comments/commentRss/400263.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/freeman1984/services/trackbacks/400263.html</trackback:ping><description><![CDATA[<p>转自：<a href="http://lc87624.iteye.com/blog/1734089">http://lc87624.iteye.com/blog/1734089</a></p>
<p>&nbsp;</p>
<div id="blog_content" class="blog_content">使用数据库连接池时，免不了会遇到断网、数据库挂掉等异常状况，当网络或数据库恢复时，若无法恢复连接池中的连接，那必然会是一场灾难。 <br /><br />关于dbcp的自动重连配置，网上相关的资料也不少，通过以下资料，并对照官方文档中的参数说明，大致能了解各项配置的含义，我就不冗诉了，本文的目的主要是对问题排查的经过做个简单的记录。 <br />参考资料： <br />
<ul><li><a href="http://agapple.iteye.com/blog/791943" target="_blank">解读dbcp自动重连那些事</a></li><li><a href="http://commons.apache.org/dbcp/configuration.html" target="_blank">官方文档</a> </li></ul><br />测试环境： <br />
<ul><li>dbcp版本&#8212;&#8212;1.4</li><li>数据库&#8212;&#8212;postgresSQL 9.10（简称pg）</li><li>本地(以下称为client)操作系统及数据库服务器(以下称为server)操作系统均为linux</li><li>server位于内网环境，client需要通过vpn或网线直连内网才能访问数据库 </li></ul><br /><strong>首先模拟的是断网的情况</strong> <br />在本地测试dbcp的重连配置时，发现断网后，连接池无法重建连接，分别试过testOnBorrow和testWhileIdle两种validate方式，都没能解决，现象如下： <br />1. 正常启动应用，在server端通过"select * from pg_stat_activity"查看连接数，会有initialSize个来自client的IDLE连接。&#8212;&#8212;正常 <br />2. 在client端执行各种查询操作，连接数保持不变，且在server端的db log中能看到validate query。&#8212;&#8212;正常 <br />3. 手动切断vpn，client与server断开，查询无法返回结果；然后重连，再次查看连接数，连接数仍保持不变，且连接的创建时间为断网前，即是说连接池认为之前的连接仍然有效，没有销毁旧连接&amp;创建新连接。 <br />4. 此时在应用中执行各种查询操作，均无响应，等待一段时间后（分钟级），超时抛出异常： <br />Caused by: org.postgresql.util.PSQLException: An I/O error occured while sending to the backend. <br />Caused by: java.net.SocketException: Connection timed out. <br />5. 继续通过"select * from pg_stat_activity"查看连接数，隔一段时间后，连接消失。 <br /><br /><strong>问题：</strong>断网后，仍留在线程池内的连接是否有效？若有效，为什么网络恢复后查询无响应？若无效，为何线程池没有发现并重新创建有效连接？ <br /><strong>排查过程：</strong> <br />1.重连vpn后，通过netstat查看client至server的连接 <br />
<div class="dp-highlighter">
<div class="bar">
<div class="tools">Java代码 <a title="复制代码" href="http://lc87624.iteye.com/blog/1734089#"></a>&nbsp;<a title="收藏这段代码" href="javascript:void()"></a></div></div>
<ol class="dp-j"><li><span>sudo&nbsp;netstat&nbsp;-antop&nbsp;|&nbsp;grep&nbsp;:</span><span class="number"><font color="#c00000">5432</font></span><span>&nbsp;&nbsp;|&nbsp;grep&nbsp;java&nbsp;&nbsp;</span></li></ol></div><em>注：5432为pg端口，grep java是为了过滤client上的其他形式的连接。</em> <br />发现连接数和在server端看到的连接数一致，且均为ESTABLISH状态。 <br />2. 但在client上执行查询时，通过tcpdump查看client发往server的tcp请求，并无任何请求产生。 <br />
<div class="dp-highlighter">
<div class="bar">
<div class="tools">Java代码 <a title="复制代码" href="http://lc87624.iteye.com/blog/1734089#"></a>&nbsp;<a title="收藏这段代码" href="javascript:void()"></a></div></div>
<ol class="dp-j"><li><span>sudo&nbsp;tcpdump&nbsp;-s&nbsp;</span><span class="number"><font color="#c00000">65535</font></span><span>&nbsp;-X&nbsp;-i&nbsp;eth0&nbsp;host&nbsp;xxx.xxx.xxx&nbsp;&nbsp;</span></li></ol></div>可见当前线程池中的连接实际上已经失效了，但dbcp仍认为它是有效的，因此仍在尝试用旧连接访问数据库，直至网络超时。 <br /><br />于是，开始怀疑是vpn的问题，将client接上网线直连内网后，再次重试上述步骤，只是把断网的方式由切断vpn换成了拔网线，发现这次使用断网前的连接能够正常访问数据库，于是断定是vpn的问题，猜测是重连vpn后，虽然client端ip没有变，但路由的路径已经变了，之前的连接无法复用，但dbcp并不知道。对网络细节不是太熟悉，就不多加揣测了。 <br /><br /><strong>接下来模拟数据库断开client连接的情况</strong> <br />由于pg采用的是进程模型，与数据库建立的每一个连接都是单独的一个进程，故尝试采用kill进程的方式模拟数据库断开连接。 <br />预期的结果是：kill掉一个连接进程后，dbcp通过validate query发现该连接失效，将销毁该连接并重新创建新连接。 <br />但实际情况确是：kill掉一个连接后，所有连接全部被销毁。 <br /><strong>问题：</strong>究竟是数据库还是dbcp销毁了所有连接? <br /><strong>排查过程：</strong> <br />熟悉pg的同事认为pg之所以采用进程模型，就是为了避免连接之间的影响，因此不可能发生kill一个连接，其他连接也被销毁的情况。在这个理论前提下，问题就变得很诡异，因为dbcp的validate肯定是针对一个连接的，也不可能会在validate一个连接失效的情况下销毁所有连接，于是越想越偏，甚至开始怀疑是pg的jdbc driver有问题，最终放弃了深究。 <br />但我总觉得有点不太对劲，于是推翻之前的前提，开始怀疑是pg销毁了所有连接。于是，在使用连接池的应用之外，通过pg的数据库客户端psql连接db，这就建立了一个与dbcp无关的连接，接着继续在server端kill了一个连接池中的连接，继而发现psql创建的连接也被销毁了，这就能确定是pg在销毁连接，因为dbcp不可能控制自身范围之外的连接。 <br />后来才知道，pg之所以会这么做，是因为我们kill连接时使用的是kill -9（简称9杀），9杀太过粗暴，pg会重启很多内部进程，以保证所有进程正常，之前的连接也将会丢失，换用普通的kill命令，则不会发生以上情况。可见9杀很多情况下是十分危险的，试想一个线上db，若是9杀一个连接，后果不堪设想。。。 <br /><br /><strong>总结</strong> <br />说是dbcp问题排查，但大家可以看到最终问题的根源都跟dbcp没有什么关系。实际工作中的很多问题，关联的因素众多，需要有各方面的知识储备才能找到真正问题根源，否则就会把问题归结到一个自己不太了解的领域。 <br />另外，看到<a href="http://agapple.iteye.com/blog/772507" target="_blank">dbcp基本配置和重连配置</a>这篇文章中对连接池重连有两句不错的总结，引用一下： <br />
<div class="quote_title">引用</div>
<div class="quote_div">1. 数据库意外重启后，原先的数据库连接池能自动废弃老的无用的链接，建立新的数据库链接 <br />2. 网络异常中断后，原先的建立的tcp链接，应该能进行自动切换</div><br /><br />最后附上测试使用的dbcp配置。 <br />testOnBorrow配置： <br />
<div class="dp-highlighter">
<div class="bar">
<div class="tools">Xml代码 <a title="复制代码" href="http://lc87624.iteye.com/blog/1734089#"></a>&nbsp;<a title="收藏这段代码" href="javascript:void()"></a></div></div>
<ol class="dp-xml"><li><span><strong><font color="#006699"><span class="tag">&lt;</span><span class="tag-name">bean</span></font></strong><span>&nbsp;</span><span class="attribute"><font color="#ff0000">id</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"dataSource"</font></span><span>&nbsp;</span><span class="attribute"><font color="#ff0000">class</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"org.apache.commons.dbcp.BasicDataSource"</font></span><span>&nbsp;</span><span class="attribute"><font color="#ff0000">destroy-method</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"close"</font></span><span class="tag"><strong><font color="#006699">&gt;</font></strong></span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><strong><font color="#006699"><span class="tag">&lt;</span><span class="tag-name">property</span></font></strong><span>&nbsp;</span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"driverClassName"</font></span><span>&nbsp;</span><span class="attribute"><font color="#ff0000">value</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"${jdbc.driver}"</font></span><span>&nbsp;</span><span class="tag"><strong><font color="#006699">/&gt;</font></strong></span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><strong><font color="#006699"><span class="tag">&lt;</span><span class="tag-name">property</span></font></strong><span>&nbsp;</span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"url"</font></span><span>&nbsp;</span><span class="attribute"><font color="#ff0000">value</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"${jdbc.url}"</font></span><span class="tag"><strong><font color="#006699">/&gt;</font></strong></span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><strong><font color="#006699"><span class="tag">&lt;</span><span class="tag-name">property</span></font></strong><span>&nbsp;</span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"username"</font></span><span>&nbsp;</span><span class="attribute"><font color="#ff0000">value</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"${jdbc.user}"</font></span><span>&nbsp;</span><span class="tag"><strong><font color="#006699">/&gt;</font></strong></span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><strong><font color="#006699"><span class="tag">&lt;</span><span class="tag-name">property</span></font></strong><span>&nbsp;</span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"password"</font></span><span>&nbsp;</span><span class="attribute"><font color="#ff0000">value</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"${jdbc.passwd}"</font></span><span>&nbsp;</span><span class="tag"><strong><font color="#006699">/&gt;</font></strong></span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><strong><font color="#006699"><span class="tag">&lt;</span><span class="tag-name">property</span></font></strong><span>&nbsp;</span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"removeAbandoned"</font></span><span>&nbsp;</span><span class="attribute"><font color="#ff0000">value</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"true"</font></span><span class="tag"><strong><font color="#006699">/&gt;</font></strong></span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><strong><font color="#006699"><span class="tag">&lt;</span><span class="tag-name">property</span></font></strong><span>&nbsp;</span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"initialSize"</font></span><span>&nbsp;</span><span class="attribute"><font color="#ff0000">value</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"10"</font></span><span>&nbsp;</span><span class="tag"><strong><font color="#006699">/&gt;</font></strong></span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><strong><font color="#006699"><span class="tag">&lt;</span><span class="tag-name">property</span></font></strong><span>&nbsp;</span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"maxIdle"</font></span><span>&nbsp;</span><span class="attribute"><font color="#ff0000">value</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"10"</font></span><span>&nbsp;</span><span class="tag"><strong><font color="#006699">/&gt;</font></strong></span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><strong><font color="#006699"><span class="tag">&lt;</span><span class="tag-name">property</span></font></strong><span>&nbsp;</span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"minIdle"</font></span><span>&nbsp;</span><span class="attribute"><font color="#ff0000">value</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"10"</font></span><span>&nbsp;</span><span class="tag"><strong><font color="#006699">/&gt;</font></strong></span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><strong><font color="#006699"><span class="tag">&lt;</span><span class="tag-name">property</span></font></strong><span>&nbsp;</span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"maxActive"</font></span><span>&nbsp;</span><span class="attribute"><font color="#ff0000">value</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"30"</font></span><span>&nbsp;</span><span class="tag"><strong><font color="#006699">/&gt;</font></strong></span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><strong><font color="#006699"><span class="tag">&lt;</span><span class="tag-name">property</span></font></strong><span>&nbsp;</span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"maxWait"</font></span><span>&nbsp;</span><span class="attribute"><font color="#ff0000">value</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"30000"</font></span><span>&nbsp;</span><span class="tag"><strong><font color="#006699">/&gt;</font></strong></span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><strong><font color="#006699"><span class="tag">&lt;</span><span class="tag-name">property</span></font></strong><span>&nbsp;</span><span class="attribute"><font color="#ff0000">name</font></span><span>=&nbsp;</span><span class="attribute-value"><font color="#0000ff">"testWhileIdle"</font></span><span>&nbsp;</span><span class="attribute"><font color="#ff0000">value</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"false"</font></span><span>&nbsp;</span><span class="tag"><strong><font color="#006699">/&gt;</font></strong></span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><strong><font color="#006699"><span class="tag">&lt;</span><span class="tag-name">property</span></font></strong><span>&nbsp;</span><span class="attribute"><font color="#ff0000">name</font></span><span>=&nbsp;</span><span class="attribute-value"><font color="#0000ff">"testOnBorrow"</font></span><span>&nbsp;</span><span class="attribute"><font color="#ff0000">value</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"true"</font></span><span>&nbsp;</span><span class="tag"><strong><font color="#006699">/&gt;</font></strong></span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><strong><font color="#006699"><span class="tag">&lt;</span><span class="tag-name">property</span></font></strong><span>&nbsp;</span><span class="attribute"><font color="#ff0000">name</font></span><span>=&nbsp;</span><span class="attribute-value"><font color="#0000ff">"testOnReturn"</font></span><span>&nbsp;</span><span class="attribute"><font color="#ff0000">value</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"false"</font></span><span>&nbsp;</span><span class="tag"><strong><font color="#006699">/&gt;</font></strong></span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><strong><font color="#006699"><span class="tag">&lt;</span><span class="tag-name">property</span></font></strong><span>&nbsp;</span><span class="attribute"><font color="#ff0000">name</font></span><span>=&nbsp;</span><span class="attribute-value"><font color="#0000ff">"validationQuery"</font></span><span>&nbsp;</span><span class="attribute"><font color="#ff0000">value</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"select&nbsp;1"</font></span><span>&nbsp;</span><span class="tag"><strong><font color="#006699">/&gt;</font></strong></span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comments">&lt;!--&nbsp;&lt;property&nbsp;name=&nbsp;"validationQueryTimeout"&nbsp;value="1"&nbsp;/&gt;&nbsp;配置已失效--&gt;</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><strong><font color="#006699"><span class="tag">&lt;/</span><span class="tag-name">bean</span><span class="tag">&gt;</span></font></strong><span>&nbsp;&nbsp;</span></span></li></ol></div>testWhileIdle配置： <br />
<div class="dp-highlighter">
<div class="bar">
<div class="tools">Xml代码 <a title="复制代码" href="http://lc87624.iteye.com/blog/1734089#"></a>&nbsp;<a title="收藏这段代码" href="javascript:void()"></a></div></div>
<ol class="dp-xml"><li><span><strong><font color="#006699"><span class="tag">&lt;</span><span class="tag-name">bean</span></font></strong><span>&nbsp;</span><span class="attribute"><font color="#ff0000">id</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"dataSource"</font></span><span>&nbsp;</span><span class="attribute"><font color="#ff0000">class</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"org.apache.commons.dbcp.BasicDataSource"</font></span><span>&nbsp;</span><span class="attribute"><font color="#ff0000">destroy-method</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"close"</font></span><span class="tag"><strong><font color="#006699">&gt;</font></strong></span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><strong><font color="#006699"><span class="tag">&lt;</span><span class="tag-name">property</span></font></strong><span>&nbsp;</span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"driverClassName"</font></span><span>&nbsp;</span><span class="attribute"><font color="#ff0000">value</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"${jdbc.driver}"</font></span><span>&nbsp;</span><span class="tag"><strong><font color="#006699">/&gt;</font></strong></span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><strong><font color="#006699"><span class="tag">&lt;</span><span class="tag-name">property</span></font></strong><span>&nbsp;</span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"url"</font></span><span>&nbsp;</span><span class="attribute"><font color="#ff0000">value</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"${jdbc.url}"</font></span><span class="tag"><strong><font color="#006699">/&gt;</font></strong></span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><strong><font color="#006699"><span class="tag">&lt;</span><span class="tag-name">property</span></font></strong><span>&nbsp;</span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"username"</font></span><span>&nbsp;</span><span class="attribute"><font color="#ff0000">value</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"${jdbc.user}"</font></span><span>&nbsp;</span><span class="tag"><strong><font color="#006699">/&gt;</font></strong></span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><strong><font color="#006699"><span class="tag">&lt;</span><span class="tag-name">property</span></font></strong><span>&nbsp;</span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"password"</font></span><span>&nbsp;</span><span class="attribute"><font color="#ff0000">value</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"${jdbc.passwd}"</font></span><span>&nbsp;</span><span class="tag"><strong><font color="#006699">/&gt;</font></strong></span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><strong><font color="#006699"><span class="tag">&lt;</span><span class="tag-name">property</span></font></strong><span>&nbsp;</span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"removeAbandoned"</font></span><span>&nbsp;</span><span class="attribute"><font color="#ff0000">value</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"true"</font></span><span class="tag"><strong><font color="#006699">/&gt;</font></strong></span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><strong><font color="#006699"><span class="tag">&lt;</span><span class="tag-name">property</span></font></strong><span>&nbsp;</span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"initialSize"</font></span><span>&nbsp;</span><span class="attribute"><font color="#ff0000">value</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"10"</font></span><span>&nbsp;</span><span class="tag"><strong><font color="#006699">/&gt;</font></strong></span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><strong><font color="#006699"><span class="tag">&lt;</span><span class="tag-name">property</span></font></strong><span>&nbsp;</span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"maxIdle"</font></span><span>&nbsp;</span><span class="attribute"><font color="#ff0000">value</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"10"</font></span><span>&nbsp;</span><span class="tag"><strong><font color="#006699">/&gt;</font></strong></span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><strong><font color="#006699"><span class="tag">&lt;</span><span class="tag-name">property</span></font></strong><span>&nbsp;</span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"minIdle"</font></span><span>&nbsp;</span><span class="attribute"><font color="#ff0000">value</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"10"</font></span><span>&nbsp;</span><span class="tag"><strong><font color="#006699">/&gt;</font></strong></span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><strong><font color="#006699"><span class="tag">&lt;</span><span class="tag-name">property</span></font></strong><span>&nbsp;</span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"maxActive"</font></span><span>&nbsp;</span><span class="attribute"><font color="#ff0000">value</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"30"</font></span><span>&nbsp;</span><span class="tag"><strong><font color="#006699">/&gt;</font></strong></span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><strong><font color="#006699"><span class="tag">&lt;</span><span class="tag-name">property</span></font></strong><span>&nbsp;</span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"maxWait"</font></span><span>&nbsp;</span><span class="attribute"><font color="#ff0000">value</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"30000"</font></span><span>&nbsp;</span><span class="tag"><strong><font color="#006699">/&gt;</font></strong></span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><strong><font color="#006699"><span class="tag">&lt;</span><span class="tag-name">property</span></font></strong><span>&nbsp;</span><span class="attribute"><font color="#ff0000">name</font></span><span>=&nbsp;</span><span class="attribute-value"><font color="#0000ff">"testWhileIdle"</font></span><span>&nbsp;</span><span class="attribute"><font color="#ff0000">value</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"true"</font></span><span>&nbsp;</span><span class="tag"><strong><font color="#006699">/&gt;</font></strong></span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><strong><font color="#006699"><span class="tag">&lt;</span><span class="tag-name">property</span></font></strong><span>&nbsp;</span><span class="attribute"><font color="#ff0000">name</font></span><span>=&nbsp;</span><span class="attribute-value"><font color="#0000ff">"testOnBorrow"</font></span><span>&nbsp;</span><span class="attribute"><font color="#ff0000">value</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"false"</font></span><span>&nbsp;</span><span class="tag"><strong><font color="#006699">/&gt;</font></strong></span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><strong><font color="#006699"><span class="tag">&lt;</span><span class="tag-name">property</span></font></strong><span>&nbsp;</span><span class="attribute"><font color="#ff0000">name</font></span><span>=&nbsp;</span><span class="attribute-value"><font color="#0000ff">"testOnReturn"</font></span><span>&nbsp;</span><span class="attribute"><font color="#ff0000">value</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"false"</font></span><span>&nbsp;</span><span class="tag"><strong><font color="#006699">/&gt;</font></strong></span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><strong><font color="#006699"><span class="tag">&lt;</span><span class="tag-name">property</span></font></strong><span>&nbsp;</span><span class="attribute"><font color="#ff0000">name</font></span><span>=&nbsp;</span><span class="attribute-value"><font color="#0000ff">"validationQuery"</font></span><span>&nbsp;</span><span class="attribute"><font color="#ff0000">value</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"select&nbsp;1"</font></span><span>&nbsp;</span><span class="tag"><strong><font color="#006699">/&gt;</font></strong></span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span class="comments">&lt;!--&nbsp;&lt;property&nbsp;name=&nbsp;"validationQueryTimeout"&nbsp;value="1"&nbsp;/&gt;&nbsp;配置已失效--&gt;</span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><strong><font color="#006699"><span class="tag">&lt;</span><span class="tag-name">property</span></font></strong><span>&nbsp;</span><span class="attribute"><font color="#ff0000">name</font></span><span>=&nbsp;</span><span class="attribute-value"><font color="#0000ff">"timeBetweenEvictionRunsMillis"</font></span><span>&nbsp;</span><span class="attribute"><font color="#ff0000">value</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"30000"</font></span><span>&nbsp;</span><span class="tag"><strong><font color="#006699">/&gt;</font></strong></span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><strong><font color="#006699"><span class="tag">&lt;</span><span class="tag-name">property</span></font></strong><span>&nbsp;</span><span class="attribute"><font color="#ff0000">name</font></span><span>=&nbsp;</span><span class="attribute-value"><font color="#0000ff">"numTestsPerEvictionRun"</font></span><span>&nbsp;</span><span class="attribute"><font color="#ff0000">value</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"30"</font></span><span>&nbsp;</span><span class="tag"><strong><font color="#006699">/&gt;</font></strong></span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><strong><font color="#006699"><span class="tag">&lt;</span><span class="tag-name">property</span></font></strong><span>&nbsp;</span><span class="attribute"><font color="#ff0000">name</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"minEvictableIdleTimeMillis"</font></span><span>&nbsp;</span><span class="attribute"><font color="#ff0000">value</font></span><span>=</span><span class="attribute-value"><font color="#0000ff">"1800000"</font></span><span>&nbsp;</span><span class="tag"><strong><font color="#006699">/&gt;</font></strong></span><span>&nbsp;&nbsp;</span></span></li><li><span>&nbsp;&nbsp;&nbsp;&nbsp;</span><strong><font color="#006699"><span class="tag">&lt;/</span><span class="tag-name">bean</span><span class="tag">&gt;</span></font></strong><span>&nbsp;&nbsp;</span></span></li></ol></div><pre style="display: none" class="xml" title="dbcp重连问题排查" pre_index="3" source_url="http://lc87624.iteye.com/blog/1734089" codeable_type="Blog" codeable_id="1734089" name="code">&nbsp;</pre>注：testOnBorrow只会发现当前连接失效，再创建一个连接供当前查询使用，而testWhileIdle会定时校验numTestsPerEvictionRun个连接，只要发现连接失效，就将其移除再重新创建。 </div>
<p>&nbsp;</p><img src ="http://www.blogjava.net/freeman1984/aggbug/400263.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/freeman1984/" target="_blank">疯狂</a> 2013-06-06 09:38 <a href="http://www.blogjava.net/freeman1984/archive/2013/06/06/400263.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>11g oracle 用户密码过期问题</title><link>http://www.blogjava.net/freeman1984/archive/2013/04/23/398301.html</link><dc:creator>疯狂</dc:creator><author>疯狂</author><pubDate>Tue, 23 Apr 2013 09:25:00 GMT</pubDate><guid>http://www.blogjava.net/freeman1984/archive/2013/04/23/398301.html</guid><wfw:comment>http://www.blogjava.net/freeman1984/comments/398301.html</wfw:comment><comments>http://www.blogjava.net/freeman1984/archive/2013/04/23/398301.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/freeman1984/comments/commentRss/398301.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/freeman1984/services/trackbacks/398301.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 11g oracle 用户密码过期问题&nbsp;&nbsp;<a href='http://www.blogjava.net/freeman1984/archive/2013/04/23/398301.html'>阅读全文</a><img src ="http://www.blogjava.net/freeman1984/aggbug/398301.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/freeman1984/" target="_blank">疯狂</a> 2013-04-23 17:25 <a href="http://www.blogjava.net/freeman1984/archive/2013/04/23/398301.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ERROR 1049 (42000): Unknown database 'root' 处理</title><link>http://www.blogjava.net/freeman1984/archive/2013/03/29/397132.html</link><dc:creator>疯狂</dc:creator><author>疯狂</author><pubDate>Fri, 29 Mar 2013 03:01:00 GMT</pubDate><guid>http://www.blogjava.net/freeman1984/archive/2013/03/29/397132.html</guid><wfw:comment>http://www.blogjava.net/freeman1984/comments/397132.html</wfw:comment><comments>http://www.blogjava.net/freeman1984/archive/2013/03/29/397132.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/freeman1984/comments/commentRss/397132.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/freeman1984/services/trackbacks/397132.html</trackback:ping><description><![CDATA[本地启动mysql:<br />命令：mysql&nbsp; -u root -p root -P 8066 -v -S&nbsp; /opt/app/DataBase/mysql.sock <br />报错：ERROR 1049 (42000): Unknown database 'root'<br />解决办法：<br />命令的密码参数部分：-p root 修改为-proot 中间没有空格。<br /><br />即可！<img src ="http://www.blogjava.net/freeman1984/aggbug/397132.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/freeman1984/" target="_blank">疯狂</a> 2013-03-29 11:01 <a href="http://www.blogjava.net/freeman1984/archive/2013/03/29/397132.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>mysql 1130 错误 处理</title><link>http://www.blogjava.net/freeman1984/archive/2013/03/29/397131.html</link><dc:creator>疯狂</dc:creator><author>疯狂</author><pubDate>Fri, 29 Mar 2013 02:57:00 GMT</pubDate><guid>http://www.blogjava.net/freeman1984/archive/2013/03/29/397131.html</guid><wfw:comment>http://www.blogjava.net/freeman1984/comments/397131.html</wfw:comment><comments>http://www.blogjava.net/freeman1984/archive/2013/03/29/397131.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/freeman1984/comments/commentRss/397131.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/freeman1984/services/trackbacks/397131.html</trackback:ping><description><![CDATA[<p><strong>解决远程连接mysql错误1130代码的方法 <br />转自：<a href="http://hi.baidu.com/qkcan/item/1527cf08663d388803ce1be2">http://hi.baidu.com/qkcan/item/1527cf08663d388803ce1be2</a>。其中加粗的部分必须执行<br /></strong><br />今天在用远程连接Mysql服务器的数据库，不管怎么弄都是连接不到，错误代码是1130，ERROR 1130: Host 192.168.2.159 is not allowed to connect to this MySQL server <br />猜想是无法给远程连接的用户权限问题。结果这样子操作mysql库，即可解决。在本机登入mysql后，更改 &#8220;mysql&#8221; 数据库里的 &#8220;user&#8221; 表里的 &#8220;host&#8221; 项，从&#8221;localhost&#8221;改称'%'。。<br />mysql -u root -p<br />mysql&gt;use mysql;<br />mysql&gt;select 'host' from user where user='root';<br />mysql&gt;update user set host = '%' where user ='root';<br />mysql&gt;<strong>flush privileges;<br /></strong>mysql&gt;select 'host'&nbsp;&nbsp; from user where user='root';<br />第一句是以权限用户root登录<br />第二句：选择mysql库<br />第三句：查看mysql库中的user表的host值（即可进行连接访问的主机/IP名称）<br />第四句：修改host值（以通配符%的内容增加主机/IP地址），当然也可以直接增加IP地址<br />第五句：刷新MySQL的系统权限相关表<br />第六句：再重新查看user表时，有修改。。<br />重起mysql服务即可完成。 </p>
<p>&nbsp;</p>
<p>============================</p>
<p>一、通过MySQL-Front或mysql administrator连接mysql的时候发生的这个错误<br /><br />ERROR 1130: Host ***.***.***.*** is not allowed to connect to this MySQL server<br /><br />说明所连接的用户帐号没有远程连接的权限，只能在本机(localhost)登录。<br /><br />需更改 mysql 数据库里的 user表里的 host项<br />把localhost改称%<br /><br />首先按下面的步骤登录Mysql服务器<br /><br />登录mysql需要切换到dos下的mysql的bin目录，进行如下操作：<br /><br />语法格式：mysql -h host_name -u user_name -p password&nbsp;&nbsp; （本机的话-h 和host_name可省）<br /><br />例如：<br /><br />C:\program files\mysql\mysql server 5.0\bin&gt;mysql -u root -p<br />Enter password:******<br />先输入用户名和密码登陆要求（-p），回车后等出现"Enter password:"，再输入密码回车，这样就可以<br />成功登陆mysql，否则将会登陆失败。<br /><br />登陆成功后会显示如下信息及Mysql标识符：<br /><br />Welcome to the MySQL monitor. Commands end with ; or \g.<br />Your MySQL connection id is 1 to server version: 5.0.1-nt<br /><br />Type 'help;' or '\h' for help. Type '\c' to clear the buffer.<br /><br />mysql&gt;<br /><br /><br />标识符"mysql&gt;"，当你看到这个出现在窗口的最左边的顶格时，这就是告诉你，你可以输入命令进行操作了。<br /><br />mysql&gt; \s 查看版本信息<br />mysql&gt; \q or mysql&gt; quit 退出mysql数据库服务器<br />mysql&gt; \h or mysql&gt; help 查看帮助（其他的数据库服务器相关命令）<br /><br />二、登录成功后可通过以下步骤对用户进行权限更改<br /><br />mysql&gt;use mysql;<br /><br />mysql&gt;update user set host = '%'&nbsp;&nbsp; where user ='root';<br /><br />mysql&gt;flush privileges;<br /><br />mysql&gt;select 'host','user' from user where user='root';<br /><br />mysql&gt;quit<br /><br /><br />退出后会回到DOS正常的提示符状态，此时可以通过远程连接Mysql了！</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>========================================</p>
<p>&nbsp;</p>
<p>&nbsp;</p>MySQL 用户帐号的修改 error 11302007-09-07 09:18 
<p>MySQL上的一个数据库要备份，装了个MySQL的gui工具。打开"MySQL Administrator"工具，填好用户名和密码却登录不了，老是报这个错&#8220;ERROR 1130: Host 'lijuan-' is not allowed to connect to this MySQL server&#8221;。网上查了下，有这两个方法解决： 解决方法：<br />1。 改表法。可能是你的帐号不允许从远程登陆，只能在localhost。这个时候只要在localhost的那台电脑，登入mysql后，更改 "mysql" 数据库里的 "user" 表里的 "host" 项，从"localhost"改称"%" <br />mysql -u root -pvmwaremysql&gt;use mysql;mysql&gt;update user set host = '%' where user = 'root';mysql&gt;select host, user from user; <br />2. 授权法。例如，你想myuser使用mypassword从任何主机连接到mysql服务器的话。 <br />GRANT ALL PRIVILEGES ON *.* TO IDENTIFIED BY 'mypassword' WITH GRANT OPTION; 如果你想允许用户myuser从ip为192.168.1.3的主机连接到mysql服务器，并使用mypassword作为密码 GRANT ALL PRIVILEGES ON *.* TO IDENTIFIED BY 'mypassword' WITH GRANT OPTION; &nbsp;&nbsp;&nbsp;&nbsp; 我的mysql.user里root用户的host果然是localhost，先用改表法给localhost改成&#8220;％&#8221;，还是不行，仍然报1130的错误，又按&#8220;从任何主机连接到mysql服务器&#8221;方法授权，还是报一样的错，最后给自己的ip授权之后，终于登录上了。。。。 
<p>&nbsp;&nbsp;&nbsp;&nbsp; 乎乎。。。</p>
<p>mysql的ERROR 1045 在上面情况后如再出现客户段1045可在服务器执行如下</p>
<p>UPDATE user SET Password=PASSWORD('123456') where USER='myuser';<br />FLUSH PRIVILEGES;</p><img src ="http://www.blogjava.net/freeman1984/aggbug/397131.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/freeman1984/" target="_blank">疯狂</a> 2013-03-29 10:57 <a href="http://www.blogjava.net/freeman1984/archive/2013/03/29/397131.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oracle ORA-39212异常</title><link>http://www.blogjava.net/freeman1984/archive/2013/02/20/395438.html</link><dc:creator>疯狂</dc:creator><author>疯狂</author><pubDate>Wed, 20 Feb 2013 02:10:00 GMT</pubDate><guid>http://www.blogjava.net/freeman1984/archive/2013/02/20/395438.html</guid><wfw:comment>http://www.blogjava.net/freeman1984/comments/395438.html</wfw:comment><comments>http://www.blogjava.net/freeman1984/archive/2013/02/20/395438.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/freeman1984/comments/commentRss/395438.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/freeman1984/services/trackbacks/395438.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: ORA-39212&nbsp;&nbsp;<a href='http://www.blogjava.net/freeman1984/archive/2013/02/20/395438.html'>阅读全文</a><img src ="http://www.blogjava.net/freeman1984/aggbug/395438.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/freeman1984/" target="_blank">疯狂</a> 2013-02-20 10:10 <a href="http://www.blogjava.net/freeman1984/archive/2013/02/20/395438.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Spring jdbc(java类型和oracle类型的转换)</title><link>http://www.blogjava.net/freeman1984/archive/2013/01/06/393854.html</link><dc:creator>疯狂</dc:creator><author>疯狂</author><pubDate>Sun, 06 Jan 2013 03:09:00 GMT</pubDate><guid>http://www.blogjava.net/freeman1984/archive/2013/01/06/393854.html</guid><wfw:comment>http://www.blogjava.net/freeman1984/comments/393854.html</wfw:comment><comments>http://www.blogjava.net/freeman1984/archive/2013/01/06/393854.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/freeman1984/comments/commentRss/393854.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/freeman1984/services/trackbacks/393854.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp; spring在执行sql语句时，会根据用户提供的类型参数来进行sql参数的绑定，例如：Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->public&nbsp;int&nbsp;update(String&nbsp;sql,&nbsp;...&nbsp;&nbsp;<a href='http://www.blogjava.net/freeman1984/archive/2013/01/06/393854.html'>阅读全文</a><img src ="http://www.blogjava.net/freeman1984/aggbug/393854.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/freeman1984/" target="_blank">疯狂</a> 2013-01-06 11:09 <a href="http://www.blogjava.net/freeman1984/archive/2013/01/06/393854.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oracle BEQ类型的进程</title><link>http://www.blogjava.net/freeman1984/archive/2012/12/10/392735.html</link><dc:creator>疯狂</dc:creator><author>疯狂</author><pubDate>Mon, 10 Dec 2012 09:13:00 GMT</pubDate><guid>http://www.blogjava.net/freeman1984/archive/2012/12/10/392735.html</guid><wfw:comment>http://www.blogjava.net/freeman1984/comments/392735.html</wfw:comment><comments>http://www.blogjava.net/freeman1984/archive/2012/12/10/392735.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/freeman1984/comments/commentRss/392735.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/freeman1984/services/trackbacks/392735.html</trackback:ping><description><![CDATA[<br />
<div style="line-height: 1.3" id="detail" class="detail">
<p>
<div>最近有人问我这个问题,我以前在国外的一个认坛上看到这方面的介绍,在sqlplus中输入conn / as sysdba,这时候由sqlplus启动一个服务器进程，通过ps命令查看到这这个服务器进程的protocol=beq 而不是TCP，beq是bequeath protocol的简称，是一个sql*net protocol有点类似于IPC,仅仅是作为本地连接才能使，即客户机和服务器程序在同一个服务器上。beq可以在不需要listener的情况一下，建立一个专用连接。这个时候共享内存和信号灯都没有创建。<br />如下<br />oracle&nbsp;&nbsp;&nbsp; 4574&nbsp; 4573&nbsp; 0 17:05 ?&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 00:00:00 oracleslszy (DESCRIPTION=(LOCAL=YES)(ADDRESS=(PROTOCOL=beq)))<br /></div>
<p>其他远程的连接集成显示如下：<br />oracle&nbsp;&nbsp; 23520&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp; 0 15:25 ?&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 00:00:00 oracleslszy (LOCAL=NO)</p></div><img src ="http://www.blogjava.net/freeman1984/aggbug/392735.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/freeman1984/" target="_blank">疯狂</a> 2012-12-10 17:13 <a href="http://www.blogjava.net/freeman1984/archive/2012/12/10/392735.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle 字符集的查看和修改</title><link>http://www.blogjava.net/freeman1984/archive/2012/10/15/389561.html</link><dc:creator>疯狂</dc:creator><author>疯狂</author><pubDate>Mon, 15 Oct 2012 03:37:00 GMT</pubDate><guid>http://www.blogjava.net/freeman1984/archive/2012/10/15/389561.html</guid><wfw:comment>http://www.blogjava.net/freeman1984/comments/389561.html</wfw:comment><comments>http://www.blogjava.net/freeman1984/archive/2012/10/15/389561.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/freeman1984/comments/commentRss/389561.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/freeman1984/services/trackbacks/389561.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 转自：http://www.cnblogs.com/rootq/articles/2049324.html一、什么是Oracle字符集 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Oracle字符集是一个字节数据的解释的符号集合,有大小之分,有相互的包容关系。ORACLE 支持国家语言的体系结构允许你使用本地化语言来存储，处理，检索数据。它使数据库工具，错误消息，排序...&nbsp;&nbsp;<a href='http://www.blogjava.net/freeman1984/archive/2012/10/15/389561.html'>阅读全文</a><img src ="http://www.blogjava.net/freeman1984/aggbug/389561.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/freeman1984/" target="_blank">疯狂</a> 2012-10-15 11:37 <a href="http://www.blogjava.net/freeman1984/archive/2012/10/15/389561.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在RedHat 5下安装Oracle 10g详解(转)</title><link>http://www.blogjava.net/freeman1984/archive/2012/09/14/387718.html</link><dc:creator>疯狂</dc:creator><author>疯狂</author><pubDate>Fri, 14 Sep 2012 05:26:00 GMT</pubDate><guid>http://www.blogjava.net/freeman1984/archive/2012/09/14/387718.html</guid><wfw:comment>http://www.blogjava.net/freeman1984/comments/387718.html</wfw:comment><comments>http://www.blogjava.net/freeman1984/archive/2012/09/14/387718.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/freeman1984/comments/commentRss/387718.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/freeman1984/services/trackbacks/387718.html</trackback:ping><description><![CDATA[<strong><span style="font-size: small;">一、安装环境</span><br /></strong>我是在vmware里虚拟的RHEL5，分配的内存1G，SWAP分区1G，建议你最好把SWAP分区改成2G。否则安装时，到了测试的步骤会提示监测失败。（当然，如果你强行安装一样没问题）<br /><br /><strong><span style="font-size: small;">二、安装Oracle 10g Release2 前的配置</span></strong><br /><br /><strong>1. 安装Oracle 10g R2所需的软件包</strong><br /><br /><table style="width: 95%;" border="1" cellspacing="0" bordercolor="#999999" cellpadding="0" bgcolor="#f1f1f1"><tbody><tr><td><p><code><span>#</span> cd <span>/</span>mnt<span>/</span>cdrom<span>/</span><span>Server</span><span>/</span><br /><span>#</span> rpm <span>-</span>Uvh setarch<span>-</span>2<span>*</span><br /><span>#</span> rpm <span>-</span>Uvh make<span>-</span>3<span>*</span><br /><span>#</span> rpm <span>-</span>Uvh glibc<span>-</span>2<span>*</span><br /><span>#</span> rpm <span>-</span>Uvh libaio<span>-</span>0<span>*</span><br /><span>#</span> rpm <span>-</span>Uvh compat<span>-</span>libstdc<span>+</span><span>+</span><span>-</span>33<span>-</span>3<span>*</span><br /><span>#</span> rpm <span>-</span>Uvh compat<span>-</span>gcc<span>-</span>34<span>-</span>3<span>*</span><br /><span>#</span> rpm <span>-</span>Uvh compat<span>-</span>gcc<span>-</span>34<span>-</span>c<span>+</span><span>+</span><span>-</span>3<span>*</span><br /><span>#</span> rpm <span>-</span>Uvh gcc<span>-</span>4<span>*</span><br /><span>#</span> rpm <span>-</span>Uvh libXp<span>-</span>1<span>*</span><br /><span>#</span> rpm <span>-</span>Uvh openmotif22<span>-</span><span>*</span><br /><span>#</span> rpm <span>-</span>Uvh compat<span>-</span>db<span>-</span>4<span>*</span><br /></code></p></td></tr></tbody></table><p>其中除了openmotif22-2.2.3-18和compat-db-4.2.52-5.1在第三张盘上，其余的包都在第一张盘上。</p><p><strong>2. 修改/etc/redhat-release文件</strong></p><p>因为Oracle 10g官方只支持到RHEL4为止，所以需要更改版本说明，编辑/etc/redhat-release文件,删除Red Hat Enterprise Linux Server release 5 (Tikanga)，改为redhat-4</p><p><strong>3.修改内核参数</strong></p><p>#vi /etc/sysctl.conf</p><table style="width: 95%;" border="1" cellspacing="0" bordercolor="#999999" cellpadding="0" bgcolor="#f1f1f1"><tbody><tr><td><p><code><span>kernel<span>.</span>shmmni <span>=</span> 4096<br />kernel<span>.</span>sem <span>=</span> 250 32000 100 128<br />fs<span>.</span><span>file</span><span>-</span>max <span>=</span> 65536<br />net<span>.</span>ipv4<span>.</span>ip_local_port_range <span>=</span> 1024 65000<br />net<span>.</span>core<span>.</span>rmem_default<span>=</span>262144<br />net<span>.</span>core<span>.</span>rmem_max<span>=</span>262144<br />net<span>.</span>core<span>.</span>wmem_default<span>=</span>262144<br />net<span>.</span>core<span>.</span>wmem_max<span>=</span>262144</span></code></p></td></tr></tbody></table><p>使更改立即生效，使用下面的命令：</p><p>#sysctl -p</p><p><strong>4.建立安装Oracle需要的用户，组，及目录</strong></p><table style="width: 95%;" border="1" cellspacing="0" bordercolor="#999999" cellpadding="0" bgcolor="#f1f1f1"><tbody><tr><td><p><code><span>#</span>groupadd oinstall<br /><span>#</span>groupadd dba<br /><span>#</span>groupadd oper<br /><span>#</span>useradd <span>-</span>g oinstall <span>-</span>G dba oracle<br /><span>#</span>passwd oracle<br /><br /><span>#</span>mkdir <span>/</span>oracle<br /><span>#</span>chown <span>-</span>R oracle<span>:</span>oinstall <span>/</span>oracle<br /><span>#</span>chmod <span>-</span>R 775 <span>/</span>oracle</code></p></td></tr></tbody></table><p>安装oracle的目录建议安装在一个单独的分区或者磁盘上。</p><p><strong>5.设置oracle用户的shell limit</strong></p><p>#vi /etc/security/limits.conf&nbsp;&nbsp;&nbsp;&nbsp; </p><table style="width: 95%;" border="1" cellspacing="0" bordercolor="#999999" cellpadding="0" bgcolor="#f1f1f1"><tbody><tr><td><p><code><span>oracle soft nproc 2047<br />oracle hard nproc 16384<br />oracle soft nofile 1024<br />oracle hard nofile 65536</span></code></p></td></tr></tbody></table><p>接下来更改/etc/pam.d/login文件，添加下面的内容，使shell limit生效：</p><p>#vi /etc/pam.d/login</p><table style="width: 95%;" border="1" cellspacing="0" bordercolor="#999999" cellpadding="0" bgcolor="#f1f1f1"><tbody><tr><td><p><code><span>session</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; required&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pam_limits<span>.</span>so</code></p></td></tr></tbody></table><p><strong>6.配置IP地址</strong></p><p>安装RHEL的时候最好采用静态IP地址，如果当时选择的是DHCP，现在需要更改/etc/sysconfig/network-scripts/ifcfg-eth0文件</p><p><table style="width: 95%;" border="1" cellspacing="0" bordercolor="#999999" cellpadding="0" bgcolor="#f1f1f1"><tbody><tr><td><p><code><span style="font-family: NSimsun;"><span>[</span>root<span>@</span>TSM54<span>-</span>Test network<span>-</span>scripts<span>]</span><span>#</span> cat ifcfg<span>-</span>eth0<br /><span>#</span> Advanced Micro Devices <span>[</span>AMD<span>]</span> 79c970 <span>[</span>PCnet32 LANCE<span>]</span><br />DEVICE<span>=</span>eth0<br />BOOTPROTO<span>=</span>static<br />HWADDR<span>=</span>00<span>:</span>0C<span>:</span>29<span>:</span>4B<span>:</span>17<span>:</span>C4<br />ONBOOT<span>=</span>yes<br />IPADDR<span>=</span>192.168<span>.</span>68<span>.</span>98<br />NETMASK<span>=</span>255<span>.</span>255<span>.</span>255<span>.</span>0<br />GATEWAY<span>=</span>192.168<span>.</span>68<span>.</span>10</span></code></p></td></tr></tbody></table><p>&nbsp;</p><p><strong>7.配置oracle用户的环境变量</strong></p><p>下面的操作，该用oracle用户登陆执行了。</p><p>为了防止安装oracle时出现乱码，先把语言环境改为英文,在终端里输入:</p><table style="width: 95%;" border="1" cellspacing="0" bordercolor="#999999" cellpadding="0" bgcolor="#f1f1f1"><tbody><tr><td><p><code><span>[</span>oracle<span>@</span>TSM54<span>-</span>TEST <span>~</span><span>]</span><span>$</span>export LC_CTYPE<span>=</span>en_US<span>.</span>UTF<span>-</span>8</code></p></td></tr></tbody></table><p>接下来，编辑/home/oracle目录下的.bash_profile文件，添加如下内容：</p><table style="width: 95%;" border="1" cellspacing="0" bordercolor="#999999" cellpadding="0" bgcolor="#f1f1f1"><tbody><tr><td><p><code><span>export ORACLE_BASE<span>=</span><span>/</span>oracle<br />export ORACLE_HOME<span>=</span><span>$</span>ORACLE_BASE<span>/</span>product<span>/</span>10<span>.</span>2<span>.</span>0<span>/</span>db_1<br />export ORACLE_SID<span>=</span>orcl<br />export PATH<span>=</span><span>$</span>PATH<span>:</span><span>$</span>ORACLE_HOME<span>/</span>bin<br />export LD_LIBRARY_PATH<span>=</span><span>$</span>ORACLE_HOME<span>/</span>lib<span>:</span><span>/</span>lib<span>:</span><span>/</span>usr<span>/</span>lib<br />CLASSPATH<span>=</span><span>$</span>ORACLE_HOME<span>/</span>JRE<span>:</span><span>$</span>ORACLE_HOME<span>/</span>jlib<span>:</span><span>$</span>ORACLE_HOME<span>/</span>rdbms<span>/</span>jlib<br />export CLASSPATH</span></code></p><p><code><span><br />if <span>[</span> $USER <span>=</span> <span>"oracle"</span> <span>]</span><span>;</span> then<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if <span>[</span> $SHELL <span>=</span> <span>"/bin/ksh"</span> <span>]</span><span>;</span> then<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ulimit <span>-</span><span>p</span> 16384<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ulimit <span>-</span>n 65536<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ulimit <span>-</span><span>u</span> 16384 <span>-</span>n 65536<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fi<br />fi<br /></span></code></p></td></tr></tbody></table><p> </p><p><strong><span style="font-size: small;">三.安装Oracle 10g</span></strong></p><p>我把10201_database_linux32.zip放在/opt目录下，并通过</p><p>#unzip 10201_database_linux32.zip解压，现在使用oracle用户到/opt/database目录下执行安装:</p><table style="width: 95%;" border="1" cellspacing="0" bordercolor="#999999" cellpadding="0" bgcolor="#f1f1f1"><tbody><tr><td><p><code><span>[</span>oracle<span>@</span>TSM54<span>-</span>Test opt<span>]</span><span>$</span> cd <span>/</span>opt<span>/</span>database<span>/</span><br /><span>[</span>oracle<span>@</span>TSM54<span>-</span>Test database<span>]</span><span>$</span> ls<br />doc install response runInstaller stage welcome<span>.</span><span>html</span><br /><span>[</span>oracle<span>@</span>TSM54<span>-</span>Test database<span>]</span><span>$</span> <span>.</span><span>/</span>runInstaller<br /></code></p></td></tr></tbody></table><p>1.选择安装类型，这里我选择高级安装,如下图所示：</p><p><img alt="" src="http://blogimg.chinaunix.net/blog/upfile2/080918175012.jpg" width="633" height="329" /></p><p>2.指定证书存放目录，如图所示：</p><p><img alt="" src="http://blogimg.chinaunix.net/blog/upfile2/080918175019.jpg" width="579" height="311" /></p><p>3.选择安装的数据库类型及oracle所支持的语言，这里选择企业版,语言选择英文和简体中文,如下图所示：</p><p><img alt="" src="http://blogimg.chinaunix.net/blog/upfile2/080918175033.jpg" width="563" height="328" /></p><p>4.指定oracle环境变量，安装路径。因为我们在.bash_profile中已经声明，所以这里会自动填充.如下图所示：</p><p><img alt="" src="http://blogimg.chinaunix.net/blog/upfile2/080918175040.jpg" width="577" height="317" /></p><p>5.Oracle开始进行安装前的检查工作，如下图所示：</p><p><img alt="" src="http://blogimg.chinaunix.net/blog/upfile2/080918175048.jpg" width="576" height="320" /></p><div>6.选择配置选项，如下图所示：</div><div><img alt="" src="http://blogimg.chinaunix.net/blog/upfile2/080918175057.jpg" width="573" height="315" /></div><div> </div><div>7.选择创建的数据库模式，如下图所示：</div><div> </div><div><img alt="" src="http://blogimg.chinaunix.net/blog/upfile2/080918175107.jpg" width="577" height="318" /></div><div> </div><div>8.指定数据库配置的相关选项（SID、字符集等），如下图所示：</div><div><img alt="" src="http://blogimg.chinaunix.net/blog/upfile2/080918175115.jpg" width="576" height="315" /></div><div> </div><div>9.选择数据库管理选项，如下图所示：</div><div> </div><div><img alt="" src="http://blogimg.chinaunix.net/blog/upfile2/080918175124.jpg" width="578" height="314" /></div><div> </div><div>10.指定数据库存储选项，如下图所示：</div><div><img alt="" src="http://blogimg.chinaunix.net/blog/upfile2/080918175133.jpg" width="577" height="314" /></div><div> </div><div>11.指定数据库备份回复选项，如下图所示：</div><div> </div><div><img alt="" src="http://blogimg.chinaunix.net/blog/upfile2/080918175143.jpg" width="566" height="308" /></div><div> </div><div>12. 指定数据库相关用户密码,如下图所示：</div><div><img alt="" src="http://blogimg.chinaunix.net/blog/upfile2/080918175151.jpg" width="575" height="309" /></div><div> </div><div>13.显示安装概要，如下图所示：</div><div><img alt="" src="http://blogimg.chinaunix.net/blog/upfile2/080918175203.jpg" width="579" height="310" /></div><div> </div><div>14.开始安装，如下图所示：</div><div><img alt="" src="http://blogimg.chinaunix.net/blog/upfile2/080918175212.jpg" width="569" height="321" /></div><div> </div><div><img alt="" src="http://blogimg.chinaunix.net/blog/upfile2/080918175221.jpg" width="569" height="320" /></div><div> </div><div><img alt="" src="http://blogimg.chinaunix.net/blog/upfile2/080918175231.jpg" width="569" height="313" /></div><div> </div><div>15. 上面的窗口点击OK后，会出现下图显示的内容：</div><div>需要root权限执行</div><div>#/oracle/oraInventory/orainstRoot.sh</div><div>#/oracle/product/10.2.0/db_1/root.sh</div><div> </div><div><img alt="" src="http://blogimg.chinaunix.net/blog/upfile2/080918175240.jpg" width="573" height="315" /></div><div> </div><div>16.安装结束，如下图所示：</div><div><img alt="" src="http://blogimg.chinaunix.net/blog/upfile2/080918175248.jpg" width="565" height="309" /></div><div> </div><div><strong>17.安装完成后，恢复语言环境以及版本信息</strong></div><div>#export <span style="font-family: NSimsun;">LC_CTYPE</span>=zh_CN.UTF-8</div><div>#vi /etc/redhat-release</div><div>Red Hat Enterprise Linux Server release 5 (Tikanga)</div><div> </div><div> </div><div><strong><span style="font-size: small;">四、后续</span></strong></div><div> </div><div><strong>1.安装完成后，首先应该启动监听器。</strong></div><div>监听器接受客户端的连接请求，并在验证证书后创建数据库连接。要使用OEM或iSQL*PLUS，必须先启动监听器。</div><div> </div><table style="width: 95%;" border="1" cellspacing="0" bordercolor="#999999" cellpadding="0" bgcolor="#f1f1f1"><tbody><tr><td><p><code><span>[</span>oracle<span>@</span>TSM54<span>-</span>Test database<span>]</span><span>$</span> lsnrctl <span>start</span><br /><span>[</span>oracle<span>@</span>TSM54<span>-</span>Test database<span>]</span><span>$</span> lsnrctl stop<br /></code></p></td></tr></tbody></table><p><strong>2.使用Oracle Enterprise Manager 10g进行数据库控制</strong></p><p>启动和停止OEM的命令为：</p><p><table style="width: 95%;" border="1" cellspacing="0" bordercolor="#999999" cellpadding="0" bgcolor="#f1f1f1"><tbody><tr><td><p><code><span style="font-family: NSimsun;"><span>[</span>oracle<span>@</span>TSM54<span>-</span>Test database<span>]</span><span>$</span>emctl <span>start</span> dbconsole<br /><span>[</span>oracle<span>@</span>TSM54<span>-</span>Test database<span>]</span><span>$</span>emctl stop dbconsole</span></code></p></td></tr></tbody></table><p>&nbsp;</p><p> </p><p>在web浏览器中，输入：</p><p><a href="http://192.168.68.98:1158/em">http://192.168.68.98:1158/em</a> （如果服务器没有进行DNS解析，则可以用IP地址）</p><p>用户名：<span style="color: rgb(0, 0, 255);">SYS</span></p><p>口令：&lt;<span style="color: rgb(0, 0, 255);">安装过程中建立的口令&gt;</span></p><p>连接为：<span style="color: rgb(0, 0, 255);">SYSDBA</span></p><p> </p><p><strong>3.使用iSQL*Plus访问数据库</strong></p><p>启动和停止iSQL*Plus命令：</p><table style="width: 95%;" border="1" cellspacing="0" bordercolor="#999999" cellpadding="0" bgcolor="#f1f1f1"><tbody><tr><td><p><code><span>[</span>oracle<span>@</span>TSM54<span>-</span>Test database<span>]</span><span>$</span>isqlplusctl <span>start</span><br /><span>[</span>oracle<span>@</span>TSM54<span>-</span>Test database<span>]</span><span>$</span>isqlplusctl stop</code></p></td></tr></tbody></table><p>iSQL*Plus是历史悠久的SQL*Plus交互式工具的基于web的版本，用于访问数据库。要使用iSQL*Plus，请单击OEM控制台相关连接部分中的iSQL*Plus链接，或将浏览器指向安装过程中提供的iSQL*Plus URL。</p><p>在web浏览器中，输入：</p><p><a href="http://192.168.68.98:5560/isqlplus">http://192.168.68.98:5560/isqlplus</a></p><p>用户名：<span style="color: rgb(0, 0, 255);">SYSTEM</span></p><p>口令：&lt;<span style="color: rgb(0, 0, 255);">安装过程中创建的口令&gt;</span></p><p>连接标识：<span style="color: rgb(0, 0, 255);">orcl</span></p><p><strong>4.启动和停止数据库</strong></p><p>启动和停止数据库的最简单方法是从 OEM 控制台启动和停止。要从命令行执行此操作，请在以 oracle 身份登录后使用 SQL*Plus，如下所示：</p><p>启动：</p><pre>$ <span style="color: rgb(0, 0, 255);">sqlplus</span>

SQL*Plus:Release 10.1.0.2.0 - Production on Sun Jun 13 22:27:48 2004

Copyright (c) 1982, 2004, Oracle.All rights reserved.

Enter user-name:<span style="color: rgb(0, 0, 255);">/ as sysdba</span>
Connected to an idle instance.

SQL&gt; <span style="color: rgb(0, 0, 255);">startup</span>
ORACLE instance started.

Total System Global Area  188743680 bytes
Fixed Size                   778036 bytes
Variable Size             162275532 bytes
Database Buffers           25165824 bytes

Redo Buffers                 524288 bytes
Database mounted.
Database opened.
SQL&gt; <span style="color: rgb(0, 0, 255);">exit</span>
</pre><p>Shutdown:</p><pre>$ <span style="color: rgb(0, 0, 255);">sqlplus</span>

SQL*Plus:Release 10.1.0.2.0 - Production on Sun Jun 13 22:25:55 2004

Copyright (c) 1982, 2004, Oracle.All rights reserved.

Enter user-name:<span style="color: rgb(0, 0, 255);">/ as sysdba</span>

Connected to:
Oracle Database 10g Enterprise Edition Release 10.1.0.2.0 - Production
With the Partitioning, OLAP and Data Mining options

SQL&gt; <span style="color: rgb(0, 0, 255);">shutdown immediate</span>
Database closed.
Database dismounted.
ORACLE instance shut down.
SQL&gt; <span style="color: rgb(0, 0, 255);">exit</span>
</pre><pre>注：本文的图是借用了<a href="http://www.ouyaoxiazai.com/article/24/239.html">http://www.ouyaoxiazai.com/article/24/239.html</a>里的图片。</pre><div><span style="font-size: small;"><strong>五、卸载ORACLE</strong></span></div><div> </div><div>1. 运行 $ORACLE_HOME/bin/localconfig delete<br />2. rm -rf $ORACLE_BASE/*<br />3. rm -f /etc/oraInst.loc /etc/oratab<br />4. rm -rf /etc/oracle<br />5. rm -f /etc/inittab.cssd<br />6. rm -f /usr/local/bin/coraenv /usr/local/bin/dbhome /usr/local/bin/oraenv</div><div>7. 删除oracle用户和组。</div><div> </div><div>注：卸载方法是来自google。我曾用此方法删除oracle 11g（安装11的时候选择的是ASM）。</div><div> </div><div> </div><div><span style="font-size: small;"><strong>六、关于Oracle 11g Release 1 的安装</strong></span></div><div> </div><div>Oracle 11gR1 已经支持RHEL5了，所以不用再更改redhat-release文件。</div><div>另外安装所依赖的包有如下：</div><div> </div><table style="width: 95%;" border="1" cellspacing="0" bordercolor="#999999" cellpadding="0" bgcolor="#f1f1f1"><tbody><tr><td><p><code><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; binutils<span>-</span>2<span>.</span>17<span>.</span>50<span>.</span>0<span>.</span>6<span>-</span>2<span>.</span>el5<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; compat<span>-</span>libstdc<span>+</span><span>+</span><span>-</span>33<span>-</span>3<span>.</span>2<span>.</span>3<span>-</span>61<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; elfutils<span>-</span>libelf<span>-</span>0<span>.</span>125<span>-</span>3<span>.</span>el5<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; elfutils<span>-</span>libelf<span>-</span>devel<span>-</span>0<span>.</span>125<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; glibc<span>-</span>2<span>.</span>5<span>-</span>12<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; glibc<span>-</span>common<span>-</span>2<span>.</span>5<span>-</span>12<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; glibc<span>-</span>devel<span>-</span>2<span>.</span>5<span>-</span>12<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; gcc<span>-</span>4<span>.</span>1<span>.</span>1<span>-</span>52<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; gcc<span>-</span>c<span>+</span><span>+</span><span>-</span>4<span>.</span>1<span>.</span>1<span>-</span>52<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; libaio<span>-</span>0<span>.</span>3<span>.</span>106<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; libaio<span>-</span>devel<span>-</span>0<span>.</span>3<span>.</span>106 <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; libgcc<span>-</span>4<span>.</span>1<span>.</span>1<span>-</span>52<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; libstdc<span>+</span><span>+</span><span>-</span>4<span>.</span>1<span>.</span>1 <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; libstdc<span>+</span><span>+</span><span>-</span>devel<span>-</span>4<span>.</span>1<span>.</span>1<span>-</span>52<span>.</span>e15<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; make<span>-</span>3<span>.</span>81<span>-</span>1<span>.</span>1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sysstat<span>-</span>7<span>.</span>0<span>.</span>0<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; unixODBC<span>-</span>2<span>.</span>2<span>.</span>11<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; unixODBC<span>-</span>devel<span>-</span>2<span>.</span>2<span>.</span>11</span></code></p></td></tr></tbody></table><p>其它的步骤就跟安装Oracle 10gR2 没有什么区别了。</p><img src ="http://www.blogjava.net/freeman1984/aggbug/387718.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/freeman1984/" target="_blank">疯狂</a> 2012-09-14 13:26 <a href="http://www.blogjava.net/freeman1984/archive/2012/09/14/387718.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>xhost: unable to open display linux下安装oracle (转)</title><link>http://www.blogjava.net/freeman1984/archive/2012/05/22/378848.html</link><dc:creator>疯狂</dc:creator><author>疯狂</author><pubDate>Tue, 22 May 2012 08:02:00 GMT</pubDate><guid>http://www.blogjava.net/freeman1984/archive/2012/05/22/378848.html</guid><wfw:comment>http://www.blogjava.net/freeman1984/comments/378848.html</wfw:comment><comments>http://www.blogjava.net/freeman1984/archive/2012/05/22/378848.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/freeman1984/comments/commentRss/378848.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/freeman1984/services/trackbacks/378848.html</trackback:ping><description><![CDATA[<p>1、&nbsp;以root用户登录</p>
<p>输入命令xdpyinfo，记录下里面的name of display：后的字符串，如 name of display：127.0.0.1：1.0 </p>
<p>在执行xhost +命令（使得所有客户都可以访问）</p>
<p>返回信息为： <br />access control disabled,clients can connect from any host </p>
<p>如果xhost +不能执行，可以输入命令export DISPLAY=:0执行一下</p>
<p>再执行xhost +</p>
<p>xhost +&nbsp;ip （name表示那个ip机器可以使用该服务）</p>
<p>2、以oracle用户登录</p>
<p>如果前面root登录下执行xdpyinfo后的name of display:后的字符串是127.0.0.1:1.0</p>
<p>那么在该oracle用户下执行一下export DISPLAY=:1.0</p>
<p>然后再执行xdpyinfo命令，如果能出现信息说明你已经成功了</p>
<p>这样估计就可以解决linux下安装oracle出现的xhost问题</p><br /><br />虚拟机上测试成功<br />转自：<a href="http://blog.csdn.net/lishamao/article/details/6886025">http://blog.csdn.net/lishamao/article/details/6886025</a><img src ="http://www.blogjava.net/freeman1984/aggbug/378848.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/freeman1984/" target="_blank">疯狂</a> 2012-05-22 16:02 <a href="http://www.blogjava.net/freeman1984/archive/2012/05/22/378848.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle局部索引和全局索引</title><link>http://www.blogjava.net/freeman1984/archive/2012/05/08/377616.html</link><dc:creator>疯狂</dc:creator><author>疯狂</author><pubDate>Tue, 08 May 2012 07:35:00 GMT</pubDate><guid>http://www.blogjava.net/freeman1984/archive/2012/05/08/377616.html</guid><wfw:comment>http://www.blogjava.net/freeman1984/comments/377616.html</wfw:comment><comments>http://www.blogjava.net/freeman1984/archive/2012/05/08/377616.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/freeman1984/comments/commentRss/377616.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/freeman1984/services/trackbacks/377616.html</trackback:ping><description><![CDATA[<div class="postText">
<div id="cnblogs_post_body">
<p>表可以按range，hash，list分区，表分区后，其上的索引和普通表上的索引有所不同，oracle对于分区表上的索引分为2类，即局部索引和全局索引，下面分别对这2种索引的特点和局限性做个总结。 <br />局部索引local index <br />1.&nbsp; 局部索引一定是分区索引，分区键等同于表的分区键，分区数等同于表的分区说，一句话，局部索引的分区机制和表的分区机制一样。 <br />2.&nbsp; 如果局部索引的索引列以分区键开头，则称为前缀局部索引。 <br />3.&nbsp; 如果局部索引的列不是以分区键开头，或者不包含分区键列，则称为非前缀索引。 <br />4.&nbsp; 前缀和非前缀索引都可以支持索引分区消除，前提是查询的条件中包含索引分区键。 <br />5.&nbsp; 局部索引只支持分区内的唯一性，无法支持表上的唯一性，因此如果要用局部索引去给表做唯一性约束，则约束中必须要包括分区键列。 <br />6.&nbsp; 局部分区索引是对单个分区的，每个分区索引只指向一个表分区，全局索引则不然，一个分区索引能指向n个表分区，同时，一个表分区，也可能指向n个索引分区， <br />对分区表中的某个分区做truncate或者move，shrink等，可能会影响到n个全局索引分区，正因为这点，局部分区索引具有更高的可用性。 <br />7.&nbsp; 位图索引只能为局部分区索引。 <br />8.&nbsp; 局部索引多应用于数据仓库环境中。 <br />全局索引global index <br />1.&nbsp; 全局索引的分区键和分区数和表的分区键和分区数可能都不相同，表和全局索引的分区机制不一样。 <br />2.&nbsp; 全局索引可以分区，也可以是不分区索引，全局索引必须是前缀索引，即全局索引的索引列必须是以索引分区键作为其前几列。 <br />3.&nbsp; 全局分区索引的索引条目可能指向若干个分区，因此，对于全局分区索引，即使只动，截断一个分区中的数据，都需要rebulid若干个分区甚 <br />至是整个索引。 <br />4.&nbsp; 全局索引多应用于oltp系统中。 <br />5.&nbsp; 全局分区索引只按范围或者散列hash分区，hash分区是10g以后才支持。 <br />6.&nbsp; oracle9i以后对分区表做move或者truncate的时可以用update global indexes语句来同步更新全局分区索引，用消耗一定资源来换取高度的可用性。 <br />7.&nbsp; 表用a列作分区，索引用b做局部分区索引，若where条件中用b来查询，那么oracle会扫描所有的表和索引的分区，成本会比分区更高，此时可以考虑用b做全局分区索引</p>
<p>分区索引字典 <br />DBA_PART_INDEXES 分区索引的概要统计信息，可以得知每个表上有哪些分区索引，分区索引的类新(local/global,) <br />Dba_ind_partitions每个分区索引的分区级统计信息 <br />Dba_indexesminusdba_part_indexes，可以得到每个表上有哪些非分区索引 <br />索引重建 <br />Alter index idx_name rebuild partition index_partition_name [online nologging] <br />需要对每个分区索引做rebuild，重建的时候可以选择online(不会锁定表),或者nologging建立索引的时候不生成日志，加快速度。 <br />Alter index rebuild idx_name [online nologging] <br />对非分区索引，只能整个index重建</p>
<p>本文来自CSDN博客，：<a href="http://blog.csdn.net/rabbitbug/archive/2009/09/15/4556638.aspx">http://blog.csdn.net/rabbitbug/archive/2009/09/15/4556638.aspx</a></p></div></div><img src ="http://www.blogjava.net/freeman1984/aggbug/377616.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/freeman1984/" target="_blank">疯狂</a> 2012-05-08 15:35 <a href="http://www.blogjava.net/freeman1984/archive/2012/05/08/377616.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oracle 在package里面用dba_data_files（字典表）提示(Ora-00942 error:table or view does not exist)问题</title><link>http://www.blogjava.net/freeman1984/archive/2012/04/06/373438.html</link><dc:creator>疯狂</dc:creator><author>疯狂</author><pubDate>Fri, 06 Apr 2012 02:23:00 GMT</pubDate><guid>http://www.blogjava.net/freeman1984/archive/2012/04/06/373438.html</guid><wfw:comment>http://www.blogjava.net/freeman1984/comments/373438.html</wfw:comment><comments>http://www.blogjava.net/freeman1984/archive/2012/04/06/373438.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/freeman1984/comments/commentRss/373438.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/freeman1984/services/trackbacks/373438.html</trackback:ping><description><![CDATA[给当前用户赋予查看字典权限：GRANT SELECT ANY DICTIONARY TO current_user;<br />&nbsp;current_user为你当前的用户<br /><img src ="http://www.blogjava.net/freeman1984/aggbug/373438.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/freeman1984/" target="_blank">疯狂</a> 2012-04-06 10:23 <a href="http://www.blogjava.net/freeman1984/archive/2012/04/06/373438.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oracle exp :EXP-00091 以及sqlplus乱码问题</title><link>http://www.blogjava.net/freeman1984/archive/2012/03/12/371732.html</link><dc:creator>疯狂</dc:creator><author>疯狂</author><pubDate>Mon, 12 Mar 2012 07:47:00 GMT</pubDate><guid>http://www.blogjava.net/freeman1984/archive/2012/03/12/371732.html</guid><wfw:comment>http://www.blogjava.net/freeman1984/comments/371732.html</wfw:comment><comments>http://www.blogjava.net/freeman1984/archive/2012/03/12/371732.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/freeman1984/comments/commentRss/371732.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/freeman1984/services/trackbacks/371732.html</trackback:ping><description><![CDATA[<span style="color: #000000">對一個DBA或需使用exp,imp的普通用戶來說，在我們做exp的過程中可<font color="#ff0000"><span style="color: #000000">能經常會遇到EXP－00091 Exporting questionable statistics.這樣</span></font><font color="#ff0000"><span style="color: #000000">的EXP信息，其實它就是exp的error message，它產生的原因是因為我</span></font><font color="#ff0000"><span style="color: #000000">們exp工具所在的環境變量中的NLS_LANG與DB中的NLS_CHARACTERSET不</span></font><font color="#ff0000"><span style="color: #000000">一致。但需說明的是，exp-91這個error message對所生成的dump檔沒</span></font><font color="#ff0000"><span style="color: #000000">有影響，生成的dump檔還可以正常的imp（個人體會，不知道有沒有</span><br /><span style="color: #000000">錯），雖然它對我們的dump檔沒有影響，我個人還是不想它出現，大家也有同感吧， 。。下面我們就讓它消失吧</span></font><font color="#ff0000"><br /><br /><strong style="color: #000000">step 01</strong> 查看DB中的NLS_CHARACTERSET的值（提供兩種方法）： </font><br /></span><span style="color: #000000">select * from nls_database_parameters t where <br /></span><span style="color: #000000">t.parameter='NLS_CHARACTERSET' <br /></span><span style="color: #000000">or <br /></span><span style="color: #000000">select * from v$nls_parameters&nbsp; where <br /></span><span style="color: #000000">parameter='NLS_CHARACTERSET'; <br /></span><span style="color: #000000">SQL&gt; select * from v$nls_parameters where <br /></span><span style="color: #000000">parameter='NLS_CHARACTERSET'; <br /></span><span style="color: #000000">PARAMETER&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; VALUE <br /></span><span style="color: #000000">-----------------------&nbsp; -------------------------<br /></span><span style="color: #000000">--------------------- <br /></span><span style="color: #000000">NLS_CHARACTERSET&nbsp;&nbsp;&nbsp; AL32UTF8<br /><br /></span><span style="color: #000000"><strong>step 02</strong> 根據step 01查出的NLS_CHARACTERSET（AL32UTF8）來設定<br />exp的環境變量： <br />&nbsp;<br />WINNT&gt; set NLS_LANG=AMERICAN_AMERICA.AL32UTF8 <br />LINUX&gt; export NLS_LANG=AMERICAN_AMERICA.AL32UTF8</span><span style="color: #000000">&nbsp;<br /><br />同样可以解决sqlplus显示乱码问题</span><img src ="http://www.blogjava.net/freeman1984/aggbug/371732.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/freeman1984/" target="_blank">疯狂</a> 2012-03-12 15:47 <a href="http://www.blogjava.net/freeman1984/archive/2012/03/12/371732.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oracle:  prompt,set feedback set define说明</title><link>http://www.blogjava.net/freeman1984/archive/2012/03/09/371570.html</link><dc:creator>疯狂</dc:creator><author>疯狂</author><pubDate>Fri, 09 Mar 2012 03:47:00 GMT</pubDate><guid>http://www.blogjava.net/freeman1984/archive/2012/03/09/371570.html</guid><wfw:comment>http://www.blogjava.net/freeman1984/comments/371570.html</wfw:comment><comments>http://www.blogjava.net/freeman1984/archive/2012/03/09/371570.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/freeman1984/comments/commentRss/371570.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/freeman1984/services/trackbacks/371570.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要:  prompt,set feedback set define说明&nbsp;&nbsp;<a href='http://www.blogjava.net/freeman1984/archive/2012/03/09/371570.html'>阅读全文</a><img src ="http://www.blogjava.net/freeman1984/aggbug/371570.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/freeman1984/" target="_blank">疯狂</a> 2012-03-09 11:47 <a href="http://www.blogjava.net/freeman1984/archive/2012/03/09/371570.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oracle 查看数据块大小</title><link>http://www.blogjava.net/freeman1984/archive/2012/02/06/369486.html</link><dc:creator>疯狂</dc:creator><author>疯狂</author><pubDate>Mon, 06 Feb 2012 08:35:00 GMT</pubDate><guid>http://www.blogjava.net/freeman1984/archive/2012/02/06/369486.html</guid><wfw:comment>http://www.blogjava.net/freeman1984/comments/369486.html</wfw:comment><comments>http://www.blogjava.net/freeman1984/archive/2012/02/06/369486.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/freeman1984/comments/commentRss/369486.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/freeman1984/services/trackbacks/369486.html</trackback:ping><description><![CDATA[<font face="Arial">单个数据块的大小会影响表空文件（4*block_size）等的大小。查看方式如下：<br /></font><br /><br />1、 <span style="line-height: 150%; font-family: 宋体">在sqlplus窗口中执行：</span><span style="line-height: 150%; font-family: Arial" xml:lang="EN-US"><br />SQL&gt; show parameter db_block_size<br />NAME&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> TYPE&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> VALUE<br />------------------------------------ ----------- ------------------------------<br />db_block_size&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> integer&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr> &nbsp;<wbr>&nbsp;<wbr>8192</span> 
<p style="text-align: left; line-height: 150%; text-indent: -18pt; margin: 7.8pt 0cm 0pt;background: white" align="left"><span style="line-height: 150%; font-family: Arial" xml:lang="EN-US">2、 2、</span> <span style="line-height: 150%; font-family: 宋体">在pl/</span><span style="line-height: 150%; font-family: Arial" xml:lang="EN-US">SQL</span><span style="line-height: 150%; font-family: 宋体">窗口中执行：</span><span style="line-height: 150%; font-family: Arial" xml:lang="EN-US"><br /></span><span style="line-height: 150%; font-family: Arial" xml:lang="EN-US">select value from v$parameter where name='db_block_size'<br />-------------------------------<br />单个数据块的大小会影响表空文件等的大小。<br /></span></p><img src ="http://www.blogjava.net/freeman1984/aggbug/369486.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/freeman1984/" target="_blank">疯狂</a> 2012-02-06 16:35 <a href="http://www.blogjava.net/freeman1984/archive/2012/02/06/369486.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oracle 数据类型(转载)</title><link>http://www.blogjava.net/freeman1984/archive/2011/12/01/365314.html</link><dc:creator>疯狂</dc:creator><author>疯狂</author><pubDate>Thu, 01 Dec 2011 09:13:00 GMT</pubDate><guid>http://www.blogjava.net/freeman1984/archive/2011/12/01/365314.html</guid><wfw:comment>http://www.blogjava.net/freeman1984/comments/365314.html</wfw:comment><comments>http://www.blogjava.net/freeman1984/archive/2011/12/01/365314.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/freeman1984/comments/commentRss/365314.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/freeman1984/services/trackbacks/365314.html</trackback:ping><description><![CDATA[<div id="cnblogs_post_body">
<p style="margin: 0in; font-size: 10pt">数据类型（datatype）是列（column）或存储过程中的一个属性。</p>
<p style="margin: 0in; font-size: 10pt">&nbsp;&nbsp;&nbsp; Oracle支持的数据类型可以分为三个基本种类：字符数据类型、数字数据类型以及表示其它数据的数据类型。</p>
<p style="margin: 0in; font-size: 10pt; font-weight: bold">&nbsp;&nbsp;&nbsp; 字符数据类型</p>
<p style="margin: 0in; font-size: 10pt">&nbsp;&nbsp;&nbsp; CHAR CHAR数据类型存储固定长度的子符值。一个CHAR数据类型可以包括1到2000个字符。如果对CHAR没有明确地说明长度，它的默认长度则设置为1.如果对某个CHAR类型变量赋值，其长度小于规定的长度，那么Oracle自动用空格填充。</p>
<p style="margin: 0in; font-size: 10pt">&nbsp;&nbsp;&nbsp; VARCHAR2存储可变长度的字符串。虽然也必须指定一个VARCHAR2数据变量的长度，但是这个长度是指对该变量赋值的的最大长度而非实际赋值长度。不需要用空格填充。最多可设置为4000个字符。</p>
<p style="margin: 0in; font-size: 10pt">&nbsp;&nbsp;&nbsp; 因为VARCHAR2数据类型只存储为该列所赋的字符（不加空格），所以VARCHAR2需要的存储空间比CHAR数据类型要小。</p>
<p style="margin: 0in; font-size: 10pt; font-weight: bold">&nbsp;&nbsp;&nbsp; Oracle推荐使用VARCHAR2</p>
<p style="margin: 0in; font-size: 10pt">&nbsp;&nbsp;&nbsp; NCHAR和NVARCHAR2 NCHAR和NVARCHAR2数据类型分别存储固定长度与可变长度的字符数据，但是它们使用的是和数据库其他类型不同的字符集。在创建数据库时，需要指 定所使用的字符集，以便对数据库中数据进行编码。还可以指定一个辅助的字符集［即本地语言集（National Language Set，简称NLS）］。NCHAR和NVARCHAR2类型的列使用辅助字符集。</p>
<p style="margin: 0in; font-size: 10pt">&nbsp;&nbsp;&nbsp; 在Oracle9i中，可以以字符而不是字节为单位来表示NCHAR和NVARCHAR2列的长度。</p>
<p style="margin: 0in; font-size: 10pt">&nbsp;&nbsp;&nbsp; LONG LONG数据类型可以存放2GB的字符数据，它是从早期版本中继承来的。现在如果想存储大容量的数据，Oracle推荐使用CLOB和NCLOB数据类型。在表和SQL语句中使用LONG类型有许多限制。</p>
<p style="margin: 0in; font-size: 10pt">&nbsp;&nbsp;&nbsp; CLOB和NCLOB CLOB和NCLOB数据类型可以存储多达4GB的字符数据。NCLOB数据类型可存储NLS数据。</p>
<p style="margin: 0in; font-size: 10pt; font-weight: bold">&nbsp;&nbsp;&nbsp; 数字数据类型</p>
<p style="margin: 0in; font-size: 10pt">&nbsp;&nbsp;&nbsp; Oracle使用标准、可变长度的内部格式来存储数字。这个内部格式精度可以高达38位。</p>
<p style="margin: 0in; font-size: 10pt">&nbsp;&nbsp;&nbsp; NUMBER数据类型可以有两个限定符，如：</p>
<p style="margin: 0in; font-size: 10pt">&nbsp;&nbsp;&nbsp; column NUMBER （ precision， scale）</p>
<p style="margin: 0in; font-size: 10pt">&nbsp;&nbsp;&nbsp; precision表示数字中的有效位。如果没有指定precision的话，Oracle将使用38作为精度。</p>
<p style="margin: 0in; font-size: 10pt">&nbsp;&nbsp;&nbsp; scale表示数字小数点右边的位数，scale默认设置为0.　　如果把scale设成负数，Oracle将把该数字取舍到小数点左边的指定位数。</p>
<p style="margin: 0in; font-size: 10pt; font-weight: bold">&nbsp;&nbsp;&nbsp; 日期数据类型</p>
<p style="margin: 0in; font-size: 10pt">&nbsp;&nbsp;&nbsp; Oracle标准日期格式为：DD-MON-YY&nbsp; HH：MI：SS</p>
<p style="margin: 0in; font-size: 10pt">&nbsp;&nbsp;&nbsp; 通过修改实例的参数NLS_DATE_FORMAT，可以改变实例中插入日期的格式。在一个会话期间，可以通过ALTER SESSION SQL命令来修改日期，或者通过使用SQL语句的TO_DATE表达式中的参数来更新一个特定值。</p>
<p style="margin: 0in; font-size: 10pt; font-weight: bold">&nbsp;&nbsp;&nbsp; 其它的数据类型</p>
<p style="margin: 0in; font-size: 10pt">&nbsp;&nbsp;&nbsp; RAW和LONG RAW RAW和LONG RAW数据类型主要用于对数据库进行解释。指定这两种类型时，Oracle以位的形式来存储数据。RAW数据类型一般用于存储有特定格式的对象，如位图。 RAW数据类型可占用2KB的空间，而LONG RAW数据类型则可以占用2GB大小。</p>
<p style="margin: 0in; font-size: 10pt">&nbsp;&nbsp;&nbsp; ROWID ROWID是一种特殊的列类型，称之为伪列（pseudocolumn）。ROWID伪列在SQL SELECT语句中可以像普通列那样被访问。Oracle数据库中每行都有一个伪列。ROWID表示行的地址，ROWID伪列用ROWID数据类型定义。</p>
<p style="margin: 0in; font-size: 10pt">&nbsp;&nbsp;&nbsp; ROWID与磁盘驱动的特定位置有关，因此，ROWID是获得行的最快方法。但是，行的ROWID会随着卸载和重载数据库而发生变化，因此建议不要在事务 中使用ROWID伪列的值。例如，一旦当前应用已经使用完记录，就没有理由保存行的ROWID.不能通过任何SQL语句来设置标准的ROWID伪列的值。</p>
<p style="margin: 0in; font-size: 10pt">&nbsp;&nbsp;&nbsp; 列或变量可以定义成ROWID数据类型，但是Oracle不能保证该列或变量的值是一个有效的ROWID.</p>
<p style="margin: 0in; font-size: 10pt; font-weight: bold">&nbsp;&nbsp;&nbsp; LOB</p>
<p style="margin: 0in; font-size: 10pt">&nbsp;&nbsp;&nbsp; LOB（大型对象）数据类型，可以保存4GB的信息。LOB有以下3种类型：</p>
<p style="margin: 0in; font-size: 10pt">&nbsp;&nbsp;&nbsp; 。CLOB，只能存储字符数据</p>
<p style="margin: 0in; font-size: 10pt">&nbsp;&nbsp;&nbsp; 。NCLOB，保存本地语言字符集数据</p>
<p style="margin: 0in; font-size: 10pt">&nbsp;&nbsp;&nbsp; 。BLOB，以二进制信息保存数据</p>
<p style="margin: 0in; font-size: 10pt">&nbsp;&nbsp;&nbsp; 可以指定将一个LOB数据保存在Oracle数据库内，还是指向一个包含次数据的外部文件。</p>
<p style="margin: 0in; font-size: 10pt">&nbsp;&nbsp;&nbsp; LOB可以参与事务。管理LOB中的数据必须通过DBMS_LOB PL/SQL内置软件包或者OCI接口。</p>
<p style="margin: 0in; font-size: 10pt">&nbsp;&nbsp;&nbsp; 为了便于将LONG数据类型转换成LOB，Oracle9i包含许多同时支持LOB和LONG的函数，还包括一个ALTER TABLE语句的的新选择，它允许将LONG数据类型自动转换成LOB.</p>
<p style="margin: 0in; font-size: 10pt">&nbsp;&nbsp;&nbsp; BFILE</p>
<p style="margin: 0in; font-size: 10pt">&nbsp;&nbsp;&nbsp; BFILE数据类型用做指向存储在Oracle数据库以外的文件的指针。</p>
<p style="margin: 0in; font-size: 10pt">&nbsp;&nbsp;&nbsp; XMLType</p>
<p style="margin: 0in; font-size: 10pt">&nbsp;&nbsp;&nbsp; 作为对XML支持的一部分，Oracle9i包含了一个新的数据类型XMLType.定义为XMLType的列将存储一个在字符LOB列中的XML文档。有许多内置的功能可以使你从文当中抽取单个节点，还可以在XMLType文档中对任何节点创建索引。</p>
<p style="margin: 0in; font-size: 10pt">&nbsp;&nbsp;&nbsp; 用户自定义数据</p>
<p style="margin: 0in; font-size: 10pt">&nbsp;&nbsp;&nbsp; 从Oracle8以后，用户可以定义自己的复杂数据类型，它们由Oracle基本数据类型组合而成。</p>
<p style="margin: 0in; font-size: 10pt">&nbsp;&nbsp;&nbsp; AnyType、AnyData和AnyDataSet</p>
<p style="margin: 0in; font-size: 10pt">&nbsp;&nbsp;&nbsp; Oracle包括3个新的数据类型，用于定义在现有数据类型之外的数据结构。其中每种数据类型必须用程序单元来定义，以便让Oracle9i知道如何处理这些类型的特定实现。</p>
<p style="margin: 0in; font-size: 10pt">&nbsp;&nbsp;&nbsp; 类型转换</p>
<p style="margin: 0in; font-size: 10pt">&nbsp;&nbsp;&nbsp; Oracle会自动将某些数据类型转换成其他的数据类型，转换取决于包括该值的SQL语句。</p>
<p style="margin: 0in; font-size: 10pt">&nbsp;&nbsp;&nbsp; 数据转换还可以通过Oracle的类型转换函数显示地进行。</p>
<p style="margin: 0in; font-size: 10pt">&nbsp;&nbsp;&nbsp; 连接与比较</p>
<p style="margin: 0in; font-size: 10pt">&nbsp;&nbsp;&nbsp; 在大多数平台上Oracle SQL中的连接操作符用两条竖线（||）表示。连接是将两个字符值连接。Oracle的自动类型转换功能使得两个数字值也可以进行连接。</p>
<p style="margin: 0in; font-size: 10pt">&nbsp;&nbsp;&nbsp; NULL</p>
<p style="margin: 0in; font-size: 10pt">&nbsp;&nbsp;&nbsp; NULL值是关系数据库的重要特征之一。实际上，NULL不代表任何值，它表示没有值。如果要创建表的一个列，而这个列必须有值，那么应将它指定为NOT NULL，这表示该列不能包含NULL值。</p>
<p style="margin: 0in; font-size: 10pt">&nbsp;&nbsp;&nbsp; 任何数据类型都可以赋予NULL值。NULL值引入了SQL运算的三态逻辑。如果比较的一方是NULL值，那么会出现3种状态：TURE、FALSE以及两者都不是。</p>
<p style="margin: 0in; font-size: 10pt">&nbsp;&nbsp;&nbsp; 因为NULL值不等于0或其他任何值，所以测试某个数据是否为NULL值只能通过关系运算符IS NULL来进行。</p>
<p style="margin: 0in; font-size: 10pt">&nbsp;&nbsp;&nbsp; NULL值特别适合以下情况：当一个列还未赋值时。如果选择不使用NULL值，那么必须对行的所有列都要赋值。这实际上也取消了某列不需要值的可能性，同时对它赋的值也很容易产生误解。这种情况则可能误导终端用户，并且导致累计操作的错误结果。<br />转自：<a href="http://www.cnblogs.com/cxd4321/archive/2008/04/14/1153201.html">http://www.cnblogs.com/cxd4321/archive/2008/04/14/1153201.html</a></p></div><img src ="http://www.blogjava.net/freeman1984/aggbug/365314.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/freeman1984/" target="_blank">疯狂</a> 2011-12-01 17:13 <a href="http://www.blogjava.net/freeman1984/archive/2011/12/01/365314.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>hibernate，spring管理事务中(transaction，JDBC connection，Hibernate Session的使用研究)（一）</title><link>http://www.blogjava.net/freeman1984/archive/2011/11/18/363984.html</link><dc:creator>疯狂</dc:creator><author>疯狂</author><pubDate>Fri, 18 Nov 2011 03:25:00 GMT</pubDate><guid>http://www.blogjava.net/freeman1984/archive/2011/11/18/363984.html</guid><wfw:comment>http://www.blogjava.net/freeman1984/comments/363984.html</wfw:comment><comments>http://www.blogjava.net/freeman1984/archive/2011/11/18/363984.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/freeman1984/comments/commentRss/363984.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/freeman1984/services/trackbacks/363984.html</trackback:ping><description><![CDATA[如果单独使用hibernate可参考上一篇文章<a href="http://www.blogjava.net/freeman1984/archive/2011/08/04/355808.html">http://www.blogjava.net/freeman1984/archive/2011/08/04/355808.html</a><br /><br /><strong>首先hibernate的Connection release mode有以下几种：<br /></strong>1 after_statement 2 after_transaction 3 on_close 其中after_statement 用在jta中 ，<span style="color: red"><strong>on_close 是3.1之前遗留的（也许是为spring留的-_-），也就是3.1之前默认是on_close ，但3.1之后默认如果单独使用hibernate是after_transaction，</strong></span>如果有第三方事务管理，就用第三方提供的默认值，spring就是默认使用了on_close。<br /><strong>在spring管理事务中我们看看系统启动后默认使用的配置：<br /></strong>1,ransaction strategy: org.springframework.orm.hibernate3.SpringTransactionFactory使用spring事务策略<br />2，hibernate内部 Automatic session close at end of transaction: disabled 因为已经交给spring了<br />3&nbsp;&nbsp; Connection release mode: auto 默认，也就是没有配置hibernate.connection.release_mode的时候，但是这里有地方需要注意：也就是前面提到的使用第三方策略时的问题：看一下代码： 
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /><span style="color: #000000">String&nbsp;releaseModeName&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;PropertiesHelper.getString(&nbsp;Environment.RELEASE_CONNECTIONS,&nbsp;properties,&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">auto</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;);<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log.info(&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">Connection&nbsp;release&nbsp;mode:&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;releaseModeName&nbsp;);<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ConnectionReleaseMode&nbsp;releaseMode;<br /><img id="Codehighlighter1_246_311_Open_Image" onclick="this.style.display='none'; Codehighlighter1_246_311_Open_Text.style.display='none'; Codehighlighter1_246_311_Closed_Image.style.display='inline'; Codehighlighter1_246_311_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif"><img style="display: none" id="Codehighlighter1_246_311_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_246_311_Closed_Text.style.display='none'; Codehighlighter1_246_311_Open_Image.style.display='inline'; Codehighlighter1_246_311_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">auto</span><span style="color: #000000">"</span><span style="color: #000000">.equals(releaseModeName)&nbsp;)&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_246_311_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_246_311_Open_Text"><span style="color: #000000">{<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: red">releaseMode&nbsp;</span><span style="color: red">=</span><span style="color: red">&nbsp;transactionFactory.getDefaultReleaseMode();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" /></span></span><span style="color: #000000"><br /><img id="Codehighlighter1_320_663_Open_Image" onclick="this.style.display='none'; Codehighlighter1_320_663_Open_Text.style.display='none'; Codehighlighter1_320_663_Closed_Image.style.display='inline'; Codehighlighter1_320_663_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif"><img style="display: none" id="Codehighlighter1_320_663_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_320_663_Closed_Text.style.display='none'; Codehighlighter1_320_663_Open_Image.style.display='inline'; Codehighlighter1_320_663_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">else</span><span style="color: #000000">&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_320_663_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_320_663_Open_Text"><span style="color: #000000">{<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;releaseMode&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;ConnectionReleaseMode.parse(&nbsp;releaseModeName&nbsp;);<br /><img id="Codehighlighter1_494_659_Open_Image" onclick="this.style.display='none'; Codehighlighter1_494_659_Open_Text.style.display='none'; Codehighlighter1_494_659_Closed_Image.style.display='inline'; Codehighlighter1_494_659_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_494_659_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_494_659_Closed_Text.style.display='none'; Codehighlighter1_494_659_Open_Image.style.display='inline'; Codehighlighter1_494_659_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(&nbsp;releaseMode&nbsp;</span><span style="color: #000000">==</span><span style="color: #000000">&nbsp;ConnectionReleaseMode.AFTER_STATEMENT&nbsp;</span><span style="color: #000000">&amp;&amp;</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">!</span><span style="color: #000000">connections.supportsAggressiveRelease()&nbsp;)&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_494_659_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_494_659_Open_Text"><span style="color: #000000">{<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log.warn(&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">Overriding&nbsp;release&nbsp;mode&nbsp;as&nbsp;connection&nbsp;provider&nbsp;does&nbsp;not&nbsp;support&nbsp;'after_statement'</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;);<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;releaseMode&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;ConnectionReleaseMode.AFTER_TRANSACTION;<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span></div>其中红色部分就是调用了spring提供的默认值，而spring的默认值：在jta和cmt中都默认使用的是after_statement<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img id="Codehighlighter1_0_328_Open_Image" onclick="this.style.display='none'; Codehighlighter1_0_328_Open_Text.style.display='none'; Codehighlighter1_0_328_Closed_Image.style.display='inline'; Codehighlighter1_0_328_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif"><img style="display: none" id="Codehighlighter1_0_328_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_0_328_Closed_Text.style.display='none'; Codehighlighter1_0_328_Open_Image.style.display='inline'; Codehighlighter1_0_328_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif"><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_0_328_Closed_Text">/**&nbsp;*/</span><span id="Codehighlighter1_0_328_Open_Text"><span style="color: #008000">/**</span><span style="color: #008000"><br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;Sets&nbsp;connection&nbsp;release&nbsp;mode&nbsp;"on_close"&nbsp;as&nbsp;default.<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;&lt;p&gt;This&nbsp;was&nbsp;the&nbsp;case&nbsp;for&nbsp;Hibernate&nbsp;3.0;&nbsp;Hibernate&nbsp;3.1&nbsp;changed<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;it&nbsp;to&nbsp;"auto"&nbsp;(i.e.&nbsp;"after_statement"&nbsp;or&nbsp;"after_transaction").<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;However,&nbsp;for&nbsp;Spring's&nbsp;resource&nbsp;management&nbsp;(in&nbsp;particular&nbsp;for<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*&nbsp;HibernateTransactionManager),&nbsp;"on_close"&nbsp;is&nbsp;the&nbsp;better&nbsp;default.<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000">*/</span></span><span style="color: #000000"><br /><img id="Codehighlighter1_384_428_Open_Image" onclick="this.style.display='none'; Codehighlighter1_384_428_Open_Text.style.display='none'; Codehighlighter1_384_428_Closed_Image.style.display='inline'; Codehighlighter1_384_428_Closed_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockStart.gif"><img style="display: none" id="Codehighlighter1_384_428_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_384_428_Closed_Text.style.display='none'; Codehighlighter1_384_428_Open_Image.style.display='inline'; Codehighlighter1_384_428_Open_Text.style.display='inline';" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ContractedBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;ConnectionReleaseMode&nbsp;getDefaultReleaseMode()&nbsp;</span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_384_428_Closed_Text"><img alt="" src="http://www.blogjava.net/Images/dot.gif" /></span><span id="Codehighlighter1_384_428_Open_Text"><span style="color: #000000">{<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">return</span><span style="color: #000000">&nbsp;ConnectionReleaseMode.ON_CLOSE;<br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/ExpandedBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.blogjava.net/images/OutliningIndicators/None.gif" /></span></div><br />而spring为什么要使用on_close ，而不是用after_transaction ,我们想想opensessioninview的原理也许能明白，session在view成还要使用，所以不能再transactio<span>n使用完后关闭JDBC connection，必须要在session之后，所以要使用on<strong>_close</strong></span><strong><span>（</span><span>也就是在on session(flush.auto，或者flush.Eagerly) 关闭）。这种情况hibernate内部还会在spring关闭JDBC connection后提示(费解，因为after transaction之后session没有关闭，但是&nbsp;Connection release mode配置的是on_close,session的关闭和&nbsp;Connection 的关闭都由spring来管理，hibernate就不知道了)，所以hibernate有好的提示如下(其实session，已经关闭。当然随着session的关闭jdbc链接释放回连接池)：</span><br /><span style="color: red">transaction completed on session with on_close connection release mode; be sure to cl</span></strong>ose the session to release JDBC resources!，<br /><br />。当然我们也可以使用after_transaction ，这种情况对使用编程式事务非常适用。<br />&nbsp;&nbsp;&nbsp;&nbsp;   <img src ="http://www.blogjava.net/freeman1984/aggbug/363984.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/freeman1984/" target="_blank">疯狂</a> 2011-11-18 11:25 <a href="http://www.blogjava.net/freeman1984/archive/2011/11/18/363984.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oracle 无order by , 默认排序问题 以及oracle的问题</title><link>http://www.blogjava.net/freeman1984/archive/2011/10/20/361633.html</link><dc:creator>疯狂</dc:creator><author>疯狂</author><pubDate>Thu, 20 Oct 2011 02:27:00 GMT</pubDate><guid>http://www.blogjava.net/freeman1984/archive/2011/10/20/361633.html</guid><wfw:comment>http://www.blogjava.net/freeman1984/comments/361633.html</wfw:comment><comments>http://www.blogjava.net/freeman1984/archive/2011/10/20/361633.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/freeman1984/comments/commentRss/361633.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/freeman1984/services/trackbacks/361633.html</trackback:ping><description><![CDATA[<div>Oracle会根据具体的数据块的存储返回记录.<br />oracle数据库是没有默认排序的&nbsp;<br />要排序必须加上order&nbsp; by&nbsp;<br />因为oracle是按块进行读取数据的&nbsp;<br />如果数据按顺序存储，则可能使读取出来的数据是按顺序的，给用户误解为默认排序<br />oracle没有进行任何排序操作，rowid表示的是数据存放的数据块内部地址，如果没有要求排序，oracle会顺序的从数据块中读取符合条件的数据返回到客户端，不过看起来好像是按照rowid排序似的<br /><br />如果数据量足够大，即使相同的语句，都有可能不同的结果。<br />一般而言<br />表是堆表<br />所以是无序的<br />他是按照也即物理存放顺序来读取的<br />rowid 是自动随行生成的</div>
<div>&nbsp;</div>
<div>另：</div>
<div>oracle&nbsp;的rowid是啥意思<br />---------------------------------------------------------------<br /><br />rowid是数据库的一个伪列，建立表的时候数据库会自动为每个表建立ROWID列<br />用来唯一标识一行记录。<br />rowid是存储每条记录的实际物理地址，对记录的访问是基于ROWID