﻿<?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-谈笑有鸿儒，往来无白丁-随笔分类-ORACLE篇章</title><link>http://www.blogjava.net/badboyryan/category/13391.html</link><description>&lt;hr color=red&gt;
&lt;marquee  direction=left bgcolor= aaaaee behavior=scroll scrollamount=2 onmouseover="this.stop();" onmouseout="this.start();" width=500&gt;
&lt;font color=green&gt; 在恰当的时间、地点以恰当的方式表达给恰当的人...&lt;/font&gt;&amp;nbsp;&amp;nbsp;&lt;font color=blue&gt;阅读的时候请注意分类，佛曰我日里面是谈笑文章，其他是各个分类的文章，积极的热情投入到写博的队伍中来，支持blogjava做大做强！向dudu站长致敬&gt;&gt; &gt;  &lt;a href=http://t.qq.com/badboyryan&gt;我的微博敬请收听&lt;/a&gt; &lt;/font&gt;
&lt;/marquee&gt; 
&lt;hr color=blue&gt;</description><language>zh-cn</language><lastBuildDate>Thu, 17 Dec 2015 13:09:49 GMT</lastBuildDate><pubDate>Thu, 17 Dec 2015 13:09:49 GMT</pubDate><ttl>60</ttl><item><title>RAC的RMAN备份需要连接两个实例吗</title><link>http://www.blogjava.net/badboyryan/archive/2015/12/17/428699.html</link><dc:creator>坏男孩</dc:creator><author>坏男孩</author><pubDate>Thu, 17 Dec 2015 01:18:00 GMT</pubDate><guid>http://www.blogjava.net/badboyryan/archive/2015/12/17/428699.html</guid><wfw:comment>http://www.blogjava.net/badboyryan/comments/428699.html</wfw:comment><comments>http://www.blogjava.net/badboyryan/archive/2015/12/17/428699.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/badboyryan/comments/commentRss/428699.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/badboyryan/services/trackbacks/428699.html</trackback:ping><description><![CDATA[<div>归档日志放在ASM上，rman脚本中不用连接2个实例，归档放在ASM上是共享存储，只需要在一个实例备份即可。</div><img src ="http://www.blogjava.net/badboyryan/aggbug/428699.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/badboyryan/" target="_blank">坏男孩</a> 2015-12-17 09:18 <a href="http://www.blogjava.net/badboyryan/archive/2015/12/17/428699.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>AIX修改时间</title><link>http://www.blogjava.net/badboyryan/archive/2015/12/11/428607.html</link><dc:creator>坏男孩</dc:creator><author>坏男孩</author><pubDate>Thu, 10 Dec 2015 21:18:00 GMT</pubDate><guid>http://www.blogjava.net/badboyryan/archive/2015/12/11/428607.html</guid><wfw:comment>http://www.blogjava.net/badboyryan/comments/428607.html</wfw:comment><comments>http://www.blogjava.net/badboyryan/archive/2015/12/11/428607.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/badboyryan/comments/commentRss/428607.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/badboyryan/services/trackbacks/428607.html</trackback:ping><description><![CDATA[<p>linux下用date -s "YYYYmmdd HH:MM:SS"</p><p>AIX &nbsp;date -n mmddHHMMYY，mm表示月分，dd表示日期，HH表示小时，MM表示分钟，YY表示年份。</p><p><br /></p><img src ="http://www.blogjava.net/badboyryan/aggbug/428607.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/badboyryan/" target="_blank">坏男孩</a> 2015-12-11 05:18 <a href="http://www.blogjava.net/badboyryan/archive/2015/12/11/428607.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>While inserting a large BLOB using JDBC, the application fails with：ORA-22990</title><link>http://www.blogjava.net/badboyryan/archive/2015/08/25/426974.html</link><dc:creator>坏男孩</dc:creator><author>坏男孩</author><pubDate>Tue, 25 Aug 2015 05:56:00 GMT</pubDate><guid>http://www.blogjava.net/badboyryan/archive/2015/08/25/426974.html</guid><wfw:comment>http://www.blogjava.net/badboyryan/comments/426974.html</wfw:comment><comments>http://www.blogjava.net/badboyryan/archive/2015/08/25/426974.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/badboyryan/comments/commentRss/426974.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/badboyryan/services/trackbacks/426974.html</trackback:ping><description><![CDATA[<br /><h2>CAUSE</h2><p style="font-family: Simsun; font-size: small; line-height: normal; background-color: #ffffff;">The Oracle oracle.sql.BLOB OutputStream writes the data in chunks. Since autocommit defaults to true, the first chunk is committed. This results in the write operation for the next chunk of the Blob to fail since it appears to be in the next transaction.<br />In those conditions, the ORA-22990 exception will occur with any version of Oracle JDBC driver.<br /><br /></p><h2 class="km" style="font-family: Arial, Helvetica, sans-serif; border-bottom-width: 1px; border-bottom-style: solid; border-bottom-color: #c4d1e6; font-size: 16px; color: #ffffff; text-transform: uppercase; padding-top: 6px; padding-bottom: 6px; padding-left: 8px; line-height: normal; background-color: #777773;">SOLUTION</h2><p style="font-family: Simsun; font-size: small; line-height: normal; background-color: #ffffff;"><br /></p><p style="font-family: Simsun; font-size: small; line-height: normal; background-color: #ffffff;">Issue the setAutoCommit(false) command. Then, explicitly commit the transaction after all of the Blob chunks have been written to the row and the stream.close() method has been executed.<br /><br />If using the Oracle 10g JDBC driver (or greater version), a second solution consists of using the standard JDBC api (setBinaryStream method of java.sql.PreparedStatement interface). And in this case, AutoCommit can be set to true.<br /><br />Here is an example:</p><div style="overflow: auto; border: 1px solid #c4d1e6; padding: 0.5em; margin: 5px 0px 0px; font-family: 'Courier New', Courier, monospace; font-size: 12px; line-height: normal; width: 996.546875px; background-color: #e0eaf1;">PreparedStatement stmt = conn.prepareStatement("INSERT INTO blobTest VALUES (?,?)");&nbsp;<br />File fd = new File(testFile);&nbsp;<br />fis = new FileInputStream(fd);&nbsp;<br />stmt.setInt(1,1);&nbsp;<br />stmt.setBinaryStream(2,fis,(int)fd.length());</div><p style="font-family: Simsun; font-size: small; line-height: normal; background-color: #ffffff;"><br /><br />where blobTest is a table defined as the following:</p><div style="overflow: auto; border: 1px solid #c4d1e6; padding: 0.5em; margin: 5px 0px 0px; font-family: 'Courier New', Courier, monospace; font-size: 12px; line-height: normal; width: 996.546875px; background-color: #e0eaf1;">SQL&gt; create table blobTest (id number (4), data blob);</div><img src ="http://www.blogjava.net/badboyryan/aggbug/426974.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/badboyryan/" target="_blank">坏男孩</a> 2015-08-25 13:56 <a href="http://www.blogjava.net/badboyryan/archive/2015/08/25/426974.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>enq: TX - row lock contention 等待事件</title><link>http://www.blogjava.net/badboyryan/archive/2015/03/20/423679.html</link><dc:creator>坏男孩</dc:creator><author>坏男孩</author><pubDate>Fri, 20 Mar 2015 07:20:00 GMT</pubDate><guid>http://www.blogjava.net/badboyryan/archive/2015/03/20/423679.html</guid><wfw:comment>http://www.blogjava.net/badboyryan/comments/423679.html</wfw:comment><comments>http://www.blogjava.net/badboyryan/archive/2015/03/20/423679.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/badboyryan/comments/commentRss/423679.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/badboyryan/services/trackbacks/423679.html</trackback:ping><description><![CDATA[<p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="font-size: small;"><span style="font-family: arial, helvetica, sans-serif;">OS环境：windows server 2008 64位</span></span></p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="font-size: small;"><span style="font-family: arial, helvetica, sans-serif;">数据库版本：11.2.0</span></span></p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="font-size: small;">&nbsp;</span></p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="font-size: small;"><span style="font-family: arial, helvetica, sans-serif;">今天在使用rman备份的时候随意的查看了一下等待事件，除了了我们现在系统遇到的IO瓶颈外，还额外的发了<span style="color: #ff0000;">enq: TX - row lock contention<span style="color: #000000;">该</span></span><span style="color: #000000;">等待事件</span></span></span></p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="font-size: small;">&nbsp;</span></p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="font-size: small;"><span style="color: #ff0000;"><span style="font-family: arial, helvetica, sans-serif;">1：查询当前系统的等待事件</span></span></span></p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="font-size: small;">&nbsp;</span></p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="font-size: small;"><span style="font-family: arial, helvetica, sans-serif;">select event,sid,p1,p2,p3 from v$session_wait where event not like 'SQL*%' and event not like 'rdbms%';</span></span></p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="font-size: small;"><br /><span style="font-family: arial, helvetica, sans-serif;">EVENT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; P1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;P2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; P3<br />----------------------------------&nbsp;&nbsp;&nbsp;&nbsp; ----&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ----------&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;----------&nbsp;&nbsp;&nbsp; ----------<br /></span><span style="font-family: arial, helvetica, sans-serif;"><span style="color: #ff0000;">enq: TX - row lock contention&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4&nbsp;&nbsp;&nbsp; 1415053318&nbsp;&nbsp;&nbsp;&nbsp; 196638&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 55836<br /></span>RMAN backup &amp; recovery I/O&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 256&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2147483647<br /></span><span style="font-family: arial, helvetica, sans-serif;"><span style="color: #ff0000;">enq: TX - row lock contention&nbsp;&nbsp;&nbsp;&nbsp;12&nbsp;&nbsp;&nbsp; 1415053318&nbsp;&nbsp;&nbsp;&nbsp; 524293&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 51153<br /></span>RMAN backup &amp; recovery I/O&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;25&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 256&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2147483647<br />db file sequential read&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;27&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;16&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2876703&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1<br />pmon timer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 33&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;300&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0<br />db file scattered read&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 39&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 33&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 790536&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 128<br />VKTM Logical Idle Wait&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;49&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0<br />Streams AQ: qmn slave idle wait&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 50&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0<br />asynch descriptor resize&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;53&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4294967295&nbsp;&nbsp;&nbsp; 1237<br />jobq slave wait&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;54&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0</span></span></p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="font-size: small;">&nbsp;</span></p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="font-size: small;"><span style="font-family: arial, helvetica, sans-serif;">EVENT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; P1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;P2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; P3<br />-------------------------------------------&nbsp;&nbsp;&nbsp; -------&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;----------&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ----------<br />db file sequential read&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;170&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 33&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1100519&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1<br />direct path read&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;181&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 44&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 469892&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 124<br /></span><span style="font-family: arial, helvetica, sans-serif;"><span style="color: #ff0000;">enq: TX - row lock contention&nbsp;&nbsp;&nbsp; 212 1415053318&nbsp;&nbsp;&nbsp;&nbsp; 524293&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 51153<br /></span>smon timer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;225&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 300&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0<br /></span><span style="font-family: arial, helvetica, sans-serif;"><span style="color: #ff0000;">enq: TX - row lock contention&nbsp;&nbsp;&nbsp;&nbsp;232 1415053318&nbsp;&nbsp;&nbsp;&nbsp; 524293&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 51153<br /></span>direct path read&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;234&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 16&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1099776&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 128<br />Streams AQ: qmn coordinator idle wait&nbsp; 242&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0</span></span></p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="font-size: small;">&nbsp;</span></p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="font-size: small;">&nbsp;</span></p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="font-size: small;"><span style="font-family: arial, helvetica, sans-serif;"><span style="color: #ff0000;">上面的等待事件说明session4，12，212，232想加锁，但是有别的session占着，所以等待。</span></span></span></p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="font-size: small;">&nbsp;</span></p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="font-size: small;">&nbsp;</span></p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="font-size: small;"><span style="font-size: medium; line-height: normal; font-family: Simsun; color: #000000; border-collapse: separate;"><span style="line-height: 21px; font-family: verdana, sans-serif;"><span style="font-size: small;"><span style="font-family: arial, helvetica, sans-serif;">enq是一种保护共享资源的锁定机制，一个排队机制，先进先出(FIFO)<br /><br />发生TX锁的原因一般有几个<br /><br />1.不同的session更新或删除同一个记录。<br /><br />2.唯一索引有重复索引<br /><br />3.位图索引多次更新<br /><br />4.同时对同一个数据块更新<br /><br />5.等待索引块分裂</span></span></span></span></span></p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="font-size: small;">&nbsp;</span></p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="font-size: small;">&nbsp;</span></p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="font-size: small;"><span style="font-size: medium; line-height: normal; font-family: Simsun; color: #000000; border-collapse: separate; orphans: 2; widows: 2;"><span style="font-size: 14px; line-height: 21px; font-family: verdana, sans-serif;"><span style="color: #ff0000;"><span style="font-size: small;"><span style="font-family: arial, helvetica, sans-serif;">2：下面我们通过enq: TX - row lock contention来看看这些session都在等什么</span></span></span></span></span></span></p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="font-size: small;">&nbsp;</span></p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="font-size: small;"><span style="font-size: medium; line-height: normal; font-family: Simsun; color: #000000; border-collapse: separate; orphans: 2; widows: 2;"><span style="line-height: 21px; font-family: verdana, sans-serif;"><span style="font-size: small;"><span style="font-family: arial, helvetica, sans-serif;">select ROW_WAIT_OBJ#,ROW_WAIT_FILE#,ROW_WAIT_BLOCK#,ROW_WAIT_ROW# from v$session where event='enq: TX - row lock contention';</span></span></span></span></span></p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="font-size: small;">&nbsp;</span></p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="font-size: small;"><span style="font-size: medium; line-height: normal; font-family: Simsun; color: #000000; border-collapse: separate; orphans: 2; widows: 2;"><span style="line-height: 21px; font-family: verdana, sans-serif;"><span style="font-size: small;"><span style="font-family: arial, helvetica, sans-serif;">ROW_WAIT_OBJ# ROW_WAIT_FILE# ROW_WAIT_BLOCK# ROW_WAIT_ROW#<br />------------- -------------- --------------- -------------<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 87556&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 57&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 395&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 88<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 87564&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 57&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 435&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 87564&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 57&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 435&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 87564&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 57&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 435&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 87564&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 57&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 435&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0</span></span></span></span></span></p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="font-size: small;">&nbsp;</span></p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="font-size: small;"></span></p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="font-size: small;">&nbsp;</span></p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="font-size: small;">&nbsp;</span></p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><br /><span style="font-size: small;"><span style="color: #ff0000;"><span style="font-family: arial, helvetica, sans-serif;">3：通过上面sql查找出来的对象编号找到对应的对象名称</span></span></span></p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="font-size: small;">&nbsp;</span></p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="font-size: small;"><span style="font-family: arial, helvetica, sans-serif;">SQL&gt; select object_name from dba_objects where object_id in (87564);</span></span></p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="font-size: small;"><span style="font-family: arial, helvetica, sans-serif;">OBJECT_NAME<br />-----------<br />QRTZ_LOCKS</span></span></p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="font-size: small;">&nbsp;</span></p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="font-size: small;">&nbsp;</span></p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="font-size: small;"><span style="color: #ff0000;"><span style="font-family: arial, helvetica, sans-serif;">4：通过对象名称找出该对象的对应属性，对象属性为TABLE</span></span></span></p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="font-size: small;">&nbsp;</span></p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="font-size: small;"><span style="font-family: arial, helvetica, sans-serif;">SQL&gt; select OWNER,OBJECT_NAME,OBJECT_ID,DATA_OBJECT_ID, OBJECT_TYPE from all_objects where object_name='QRTZ_LOCKS';</span></span></p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="font-size: small;">&nbsp;</span></p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="font-size: small;"><span style="font-family: arial, helvetica, sans-serif;">OWNER&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OBJECT_NAME&nbsp; OBJECT_ID DATA_OBJECT_ID&nbsp;<span style="color: #ff0000;">OBJECT_TYPE</span></span></span></p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="font-size: small;"><span style="font-family: arial, helvetica, sans-serif;">SCHEDULE&nbsp;&nbsp;&nbsp;<span style="color: #ff0000;">QRTZ_LOCKS</span>&nbsp;&nbsp;&nbsp;&nbsp; 87564&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 87564&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #ff0000;">TABLE&nbsp;</span></span></span></p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="font-size: small;">&nbsp;</span></p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="font-size: small;"><span style="font-family: arial, helvetica, sans-serif;"><span style="color: #f90527;">5：通过正在等待的SID查看它们都在执行什么操作</span></span></span></p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"></p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="font-size: small;"><span style="font-family: arial, helvetica, sans-serif;">SQL&gt; select sid,sql_text from v$session a,v$sql b where sid in(4,12,41,212,232) and (b.sql_id=a.sql_id or b.sql_id=a.prev_sql_id);</span></span></p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="font-size: small;"><span style="font-family: arial, helvetica, sans-serif;">&nbsp;SID SQL_TEXT<br />---- ----------------------------------------------------------------------------------------------------<br />&nbsp;&nbsp; 4 UPDATE QRTZ_CRON_TRIGGERS SET CRON_EXPRESSION = :1 WHERE TRIGGER_NAME = :2 AND TRIGGER_GROUP = :3<br />&nbsp; 12 SELECT * FROM QRTZ_LOCKS WHERE LOCK_NAME = :1 FOR UPDATE<br />&nbsp; 41 SELECT * FROM QRTZ_LOCKS WHERE LOCK_NAME = :1 FOR UPDATE<br />&nbsp;212 SELECT * FROM QRTZ_LOCKS WHERE LOCK_NAME = :1 FOR UPDATE<br />&nbsp;232 SELECT * FROM QRTZ_LOCKS WHERE LOCK_NAME = :1 FOR UPDATE<br /></span></span></p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="font-size: small;">&nbsp;</span></p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"></p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"></p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"></p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="color: #ff0000;"><span style="font-size: small;"><span style="font-family: arial, helvetica, sans-serif;">从上面的结果可以看出，SCHEDULE用户下的五个session同时在执行一条相同的sql语句，对应的对象则是QRTZ_LOCKS<span style="color: #000000;">&nbsp;<span style="color: #f90527;">这个表</span>，&nbsp;</span>所以发生了锁，从而产生等待，通过和同事的交流，得知这个一个ETL程序要访问的表，里面只有五条数据，但是却要时时调度。&nbsp;&nbsp;</span></span></span></p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"></p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="color: #ff0000;"></span></p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"></p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="font-size: small;"><span style="color: #ff0000;"><span style="font-family: arial, helvetica, sans-serif;">6：下面我们去找一下对应sid产生的锁</span></span></span></p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="font-size: small;">&nbsp;</span></p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="font-size: small;"><span style="font-family: arial, helvetica, sans-serif;">SQL&gt; select SID,TY,ID1,ID2,LMODE,REQUEST,CTIME,BLOCK from V$lock where block=1 or request&lt;&gt;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SID TY&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ID1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ID2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LMODE&nbsp;&nbsp;&nbsp; REQUEST&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CTIME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BLOCK<br />&nbsp;---------------- ---- -- ---------- ---------- ---------- ---------- ---------- ----------<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 41&nbsp; TX&nbsp;&nbsp;&nbsp;&nbsp; 524293&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 51153&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3846&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 12&nbsp; TX&nbsp;&nbsp;&nbsp;&nbsp; 524293&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 51153&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4190&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 232 TX&nbsp;&nbsp;&nbsp;&nbsp; 524293&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 51153&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4626&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 212 TX&nbsp;&nbsp;&nbsp;&nbsp; 524293&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 51153&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4749&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #ff0000;"><span style="font-family: arial, helvetica, sans-serif;">&nbsp;&nbsp;&nbsp; 4&nbsp; TX&nbsp;&nbsp;&nbsp;&nbsp; 196638&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 55836&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4755&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 44&nbsp; TX&nbsp;&nbsp;&nbsp;&nbsp; 196638&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 55836&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4765&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1</span></span></span></p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="font-size: small;">&nbsp;</span></p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="font-size: small;"><span style="color: #ff0000;"><span style="font-family: arial, helvetica, sans-serif;"><span style="color: #f90514;">由此可以查看，BLOCK=1的sid是该等待事件的根源，其他session则等待该锁被释放。</span></span></span></span></p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="font-size: small;"></span></p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="font-size: small;"><span style="color: #ff0000;"></span></span></p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="font-size: small;"><span style="color: #ff0000;"><span style="color: #000000;"><span style="font-family: arial, helvetica, sans-serif;"><span style="color: #f90514;">解决方法：</span></span></span></span></span></p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="font-size: small;"></span></p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="font-size: small;"><span style="color: #ff0000;"><span style="color: #000000;"><span style="font-family: arial, helvetica, sans-serif;"><span style="color: #f90514;">1：通过v$session找到BLOCK=1的用户，告知用户提交事务</span></span></span></span></span></p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="font-size: small;"><span style="font-family: arial, helvetica, sans-serif;"><span style="color: #f90514;">2：通过sid找到pid，kill掉该进程</span></span></span></p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="font-size: small;"><span style="font-family: arial, helvetica, sans-serif;"><span style="color: #f90514;">3：更改sql语句，SELECT * FROM QRTZ_LOCKS WHERE LOCK_NAME = :1 FOR UPDATE no wait</span></span></span></p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="font-size: small;"><span style="font-family: arial, helvetica, sans-serif;"><span style="color: #f90514;">加nowait的意思是得到或者得不到，不会等待</span></span></span></p><img src ="http://www.blogjava.net/badboyryan/aggbug/423679.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/badboyryan/" target="_blank">坏男孩</a> 2015-03-20 15:20 <a href="http://www.blogjava.net/badboyryan/archive/2015/03/20/423679.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ORA-39097</title><link>http://www.blogjava.net/badboyryan/archive/2015/03/20/423678.html</link><dc:creator>坏男孩</dc:creator><author>坏男孩</author><pubDate>Fri, 20 Mar 2015 07:14:00 GMT</pubDate><guid>http://www.blogjava.net/badboyryan/archive/2015/03/20/423678.html</guid><wfw:comment>http://www.blogjava.net/badboyryan/comments/423678.html</wfw:comment><comments>http://www.blogjava.net/badboyryan/archive/2015/03/20/423678.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/badboyryan/comments/commentRss/423678.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/badboyryan/services/trackbacks/423678.html</trackback:ping><description><![CDATA[<span style="color: #333333; font-family: mceinline; line-height: 26px; background-color: #ffffff;">该报错我并没有查找到根本的原因，去metalink上看到有解决办法，则是加大streams_pool_size即可，导出恢复正常&nbsp;alter system set streams_pool_size = 48M;</span><img src ="http://www.blogjava.net/badboyryan/aggbug/423678.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/badboyryan/" target="_blank">坏男孩</a> 2015-03-20 15:14 <a href="http://www.blogjava.net/badboyryan/archive/2015/03/20/423678.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ORA-39095</title><link>http://www.blogjava.net/badboyryan/archive/2015/03/20/423677.html</link><dc:creator>坏男孩</dc:creator><author>坏男孩</author><pubDate>Fri, 20 Mar 2015 07:13:00 GMT</pubDate><guid>http://www.blogjava.net/badboyryan/archive/2015/03/20/423677.html</guid><wfw:comment>http://www.blogjava.net/badboyryan/comments/423677.html</wfw:comment><comments>http://www.blogjava.net/badboyryan/archive/2015/03/20/423677.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/badboyryan/comments/commentRss/423677.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/badboyryan/services/trackbacks/423677.html</trackback:ping><description><![CDATA[<div style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="color: #ed1c24;"><span style="font-family: mceinline;">出现该报错的原因一般分为两种情况。</span></span></div><div style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="font-family: mceinline;">第一种情况是因为在expdp的时候给才转储空间太小，数据无法写入转储文件内，所以报错，这种报错很好解决，只需要进入交互模式下，可以用add_file来增加转储文件，然后restart该job即可。</span></div><div style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="font-family: mceinline;">第二种情况则是因为设置参数parallel大于转储文件数目引起的，官方文档的解释是parallel io server processes写文件不能同时写一个，如果只有一个dumpfile(或少于parallel)就会影响性能。不但如此，当一个io server process在等待从而不能写dumpfile的时候就会报ORA-39095</span></div><div style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="font-family: mceinline;">解决该问题一共两种办法</span></div><div style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="font-family: mceinline;">1：进入到交互模式，减少parallel的数量，使其等于dmp文件的数量或增加dmp文件，使其与parallel数量相等。</span></div><div style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="font-family: mceinline;">2：在写导出语句的时候指定dumpfile中使用变量 %u(大小写均可)，让其自由分配转储文件即可。</span></div><img src ="http://www.blogjava.net/badboyryan/aggbug/423677.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/badboyryan/" target="_blank">坏男孩</a> 2015-03-20 15:13 <a href="http://www.blogjava.net/badboyryan/archive/2015/03/20/423677.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ORA-00600</title><link>http://www.blogjava.net/badboyryan/archive/2015/03/20/423676.html</link><dc:creator>坏男孩</dc:creator><author>坏男孩</author><pubDate>Fri, 20 Mar 2015 07:08:00 GMT</pubDate><guid>http://www.blogjava.net/badboyryan/archive/2015/03/20/423676.html</guid><wfw:comment>http://www.blogjava.net/badboyryan/comments/423676.html</wfw:comment><comments>http://www.blogjava.net/badboyryan/archive/2015/03/20/423676.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/badboyryan/comments/commentRss/423676.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/badboyryan/services/trackbacks/423676.html</trackback:ping><description><![CDATA[<div style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;">机房环境：</div><div style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;">OS：windows 2008</div><div style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;">数据库版本：oracle 11g</div><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;">事件起因：</p><div style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;">昨天公司运维说机房的HP服务器磁盘坏了，我当时冷汗一下子就出来了，因为这是测试库，没有备份，没有归档，但是里面可是有1.5T的数据啊，<img title="解决ORA-00600:&nbsp;&lt;wbr&gt;internal&nbsp;&lt;wbr&gt;error&nbsp;&lt;wbr&gt;code,&nbsp;&lt;wbr&gt;arguments:&nbsp;&lt;wbr&gt;[kcratr_nab_less_than_odr]错误" src="http://www.sinaimg.cn/uc/myshow/blog/misc/gif/E___6692EN00SIGG.gif" alt="解决ORA-00600:&nbsp;&lt;wbr&gt;internal&nbsp;&lt;wbr&gt;error&nbsp;&lt;wbr&gt;code,&nbsp;&lt;wbr&gt;arguments:&nbsp;&lt;wbr&gt;[kcratr_nab_less_than_odr]错误" style="border: none; max-width: 100%;" />下午他们修了一下午，系统可以进去了，但是数据库在启动到OPEN的时候报错SYSTEM01数据文件缺失一千多个数据块，由于没有备份和归档，所以这个数据库是挂掉了。<img title="解决ORA-00600:&nbsp;&lt;wbr&gt;internal&nbsp;&lt;wbr&gt;error&nbsp;&lt;wbr&gt;code,&nbsp;&lt;wbr&gt;arguments:&nbsp;&lt;wbr&gt;[kcratr_nab_less_than_odr]错误" src="http://www.sinaimg.cn/uc/myshow/blog/misc/gif/E___6706EN00SIGG.gif" alt="解决ORA-00600:&nbsp;&lt;wbr&gt;internal&nbsp;&lt;wbr&gt;error&nbsp;&lt;wbr&gt;code,&nbsp;&lt;wbr&gt;arguments:&nbsp;&lt;wbr&gt;[kcratr_nab_less_than_odr]错误" style="border: none; max-width: 100%;" />（DBA们一定要做好备份，否则最后全是自己的事情），幸好我们还有一个一周前的冷备库，所以我直接物理迁移，把数据库恢复到一周以前了，恢复的过程非常简单，因为数据库必须的那些文件路径都已存在（如参数文件内的DUMP文件等），我只是把参数文件，密码文件，控制文件，数据文件恢复到指定的目录，然后直接STARTUP，在nomount和mount阶段都是比较顺利的，而到open阶段的时候，则报错了让我闹心的ORA-600ORA-00600: internal error code, arguments: [kcratr_nab_less_than_odr]的错误，因为大家都知道，ORA-600是数据库自己内部的BUG，我也是第一次遇到，问了很多人大家都不会，所以只能自己去摸索解决，值得庆幸的是在摸索了一个小时后，我终于把数据库OPEN了，以下就是我恢复的步骤，如果感觉对您有所帮助，那么请支持我一下。<img title="解决ORA-00600:&nbsp;&lt;wbr&gt;internal&nbsp;&lt;wbr&gt;error&nbsp;&lt;wbr&gt;code,&nbsp;&lt;wbr&gt;arguments:&nbsp;&lt;wbr&gt;[kcratr_nab_less_than_odr]错误" src="http://www.sinaimg.cn/uc/myshow/blog/misc/gif/E___7392ZH00SIGG.gif" alt="解决ORA-00600:&nbsp;&lt;wbr&gt;internal&nbsp;&lt;wbr&gt;error&nbsp;&lt;wbr&gt;code,&nbsp;&lt;wbr&gt;arguments:&nbsp;&lt;wbr&gt;[kcratr_nab_less_than_odr]错误" style="border: none; max-width: 100%;" /></div><div style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="color: #ed1c24;">//报错：ORA-00600: internal error code, arguments: [kcratr_nab_less_than_odr], [1], [1770], [779181], [779205], [], [], [], [], [], [], []</span></div><div style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="color: #ed1c24;"><span style="font-family: Calibri, sans-serif;">//因为ORA-600的错误没有具体提示，所以很多人无从下手，别着急，我们可以先去告警日志去看看，</span>以下是我的告警日志信息：</span></div><div style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;">ORA-00600: internal error code, arguments: [kcratr_nab_less_than_odr], [1], [1770], [779181], [779205], [], [], [], [], [], [], [&nbsp;</div><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;">Incident details in: d:/app/administrator/diag/rdbms/ccxe/ccxe/incident/incdir_2570/ccxe_ora_2164_i2570.trc<br />Aborting crash recovery due to error 600<br />Errors in file d:/app/administrator/diag/rdbms/ccxe/ccxe/trace/<span style="color: #ed1c24;">ccxe_ora_2164.trc:<br /></span>ORA-00600: internal error code, arguments: [kcratr_nab_less_than_odr], [1], [1770], [779181], [779205], [], [], [], [], [], [], []<br />Errors in file d:/app/administrator/diag/rdbms/ccxe/ccxe/trace/ccxe_ora_2164.trc:<br />ORA-00600: internal error code, arguments: [kcratr_nab_less_than_odr], [1], [1770], [779181], [779205], [], [], [], [], [], [], []<br />ORA-600 signalled during: alter database open...<br />Tue May 10 10:13:10 2011<br />Trace dumping is performing id=[cdmp_20110510101310]<br />Tue May 10 10:13:11 2011<br />Sweep [inc][2570]: completed<br />Sweep [inc2][2570]: completed<br />Tue May 10 10:29:52 2011<br />Shutting down instance (immediate)<br />Shutting down instance: further logons disabled</p><div style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="color: #ff0000;"><span style="font-family: Calibri, sans-serif;">//我们通过告警日志文件好像也没查到什么有用的信息，别着急，我们还可以再查找对应的TRC文件，我的对应TRC文件则是ccxe_ora_2788_i2164.trc，以下是我的TRC信息</span></span></div><div style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><p><span style="color: #ed1c24;">WARNING! Crash recovery of thread 1 seq 1770 is</span></p><p><span style="color: #ed1c24;">ending at redo block 779181 but should not have ended before</span></p><p><span style="color: #ed1c24;">redo block 779205</span></p><p><span style="color: #ed1c24;">//看，有警告了，意思是我在恢复的时候，丢失了redo日志，当时我很纳闷，怎么会丢失redo呢？</span>最后我把这个问题定位在传输redo的时候可能造成数据块的丢失，因为我以前发生过这类事情，所以我重新拷贝redo日志，再次将数据库启动。</p><p>Incident 3771 created, dump file: d:/app/administrator/diag/rdbms/ccxe/ccxe/incident/incdir_3771/ccxe_ora_2164_i3771.trc</p><p>ORA-00600: internal error code, arguments: [kcratr_nab_less_than_odr], [1], [1770], [779181], [779205], [], [], [], [], [], [], []</p><p>ORA-00600: internal error code, arguments: [kcratr_nab_less_than_odr], [1], [1770], [779181], [779205], [], [], [], [], [], [], []</p><p>ORA-00600: internal error code, arguments: [kcratr_nab_less_than_odr], [1], [1770], [779181], [779205], [], [], [], [], [], [], []</p><p>*** 2011-05-10 10:47:11.138</p><p>Stopping background process MMNL</p><p>*** 2011-05-10 10:47:12.139</p><p>Stopping background process MMON</p><p>*** 2011-05-10 10:47:13.259</p><p>ksukia: Starting kill, flags = 1</p><p>ksukia: killed 0 out of 0 processes.</p><p>*** 2011-05-10 10:47:14.652</p><p>*** 2011-05-10 10:47:14.652 4132 krsh.c</p><p>ARCH: Archival disabled due to shutdown: 1089</p><p>*** 2011-05-10 10:47:15.653</p><p>*** 2011-05-10 10:47:15.653 4132 krsh.c</p><p>ARCH: Archival disabled due to shutdown: 1089</p><div><span style="font-family: Calibri, sans-serif; color: #ff0000;">//重新拷贝redo日志到指定目录，再次启动数据库。</span></div><div><span style="font-family: Calibri, sans-serif;"><br /></span></div><div><p>Total System Global Area 6413680640 bytes</p><p>Fixed Size&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2187728 bytes</p><p>Variable Size&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;754978352 bytes</p><p>Database Buffers&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;5637144576 bytes</p><p>Redo Buffers&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;19369984 bytes</p><p>Database mounted.</p><p><span style="color: #ff0000;">ORA-00338: log 4 of thread 1 is more recent than control file</span></p><p><span style="color: #ff0000;">ORA-00312: online log 4 thread 1:</span></p><p><span style="color: #ff0000;">'D:/APP/ADMINISTRATOR/ORADATA/CCXE/REDO04.LOG'</span></p></div><div><span style="font-family: Calibri, sans-serif; color: #ff0000;">//报错果然不一样了，这次报错的意思是我的日志比我的控制文件新，要我恢复控制文件。</span></div><div></div><div><span style="color: #ed1c24;">SQL&gt;&nbsp;&nbsp;recover database using backup controlfile until cancel; 指定日志文件恢复</span></div><div><p>Specify log: {&lt;RET&gt;=suggested | filename | AUTO | CANCEL}</p><p><span style="color: #ff0000;">D:/app/Administrator/oradata/CCXE/redo04.log</span></p><p>ORA-00279: change 128488612 generated at 05/10/2011 11:13:52 needed for thread</p><p>ORA-00289: suggestion :</p><p>D:/APP/ADMINISTRATOR/FLASH_RECOVERY_AREA/CCXE/ARCHIVELOG/2011_05_10/O1_MF_1_1771_%U_.ARC</p><p>ORA-00280: change 128488612 for thread 1 is in sequence #1771</p><p>ORA-00278: log file 'D:/app/Administrator/oradata/CCXE/redo04.log' no longer</p><p>needed for this recovery</p><p>Specify log: {&lt;RET&gt;=suggested | filename | AUTO | CANCEL}</p><p><span style="color: #ff0000;">D:/app/Administrator/oradata/CCXE/redo05.log</span></p><p>Log applied.</p><p>Media recovery complete.</p><p>SQL&gt; alter database open;&nbsp;<span style="color: #ff0000;">-必须以</span><span style="color: #ff0000;">RESETLOGS方式打开数据库</span></p><p>alter database open</p><p>ERROR at line 1:</p><p>ORA-01589: must use RESETLOGS or NORESETLOGS option for database open</p><p><span style="color: #ff0000;">SQL&gt; alter database open RESETLOGS ;</span></p><p>Database altered.</p><p><br /></p><p>OK，现在数据库起来了，通过这次出错我总结了几点，希望对大家有帮助</p><p>1：数据库不管是不是测试，都尽量备份，否则出问题哭都来不及。</p><p>2：数据库尽量归档，这样就可以恢复数据库在任何时刻。</p><p>3：出错时不要慌，要仔细查看报错信息，分析报错，根据自己所掌握的知识一步一步解决，当你把问题解决</p><p>时，你会发现排错的过程真的是一个非常提升自己的过程。</p><p>4：平常一定要有几个在这方面很强的朋友，因为有的时候并不是自己查资料就能查到的，更多的是需要朋友的</p><p>经验与帮助。</p><p>注：以上就是这次错误的全部过程，过段时间我会把近期所遇到的错误都整理一下，都分享给大家，通过近期的工作我感觉数据库真的是一个非常庞大的系统，每次遇到新错的时候我都会很郁闷的解决，因为我发现我的懂的还是太少了，学习毕竟是一个由点到线，由线到网的过程，一个问题由模糊到清晰，由清晰再模糊，反复来几遍最终都会很明白的。我们要有清晰的理论知识，出错的时候才会找到出题所在，作为一个DBA冷静，清晰的头脑也很重要，通过DBA的这个行业，也是非常锻炼自己的性格，希望大家都可以在DBA的这条职场之路，越走越远，祝大家好运。</p></div></div><img src ="http://www.blogjava.net/badboyryan/aggbug/423676.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/badboyryan/" target="_blank">坏男孩</a> 2015-03-20 15:08 <a href="http://www.blogjava.net/badboyryan/archive/2015/03/20/423676.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title> 解决ORA-01555报错</title><link>http://www.blogjava.net/badboyryan/archive/2015/03/20/423675.html</link><dc:creator>坏男孩</dc:creator><author>坏男孩</author><pubDate>Fri, 20 Mar 2015 07:03:00 GMT</pubDate><guid>http://www.blogjava.net/badboyryan/archive/2015/03/20/423675.html</guid><wfw:comment>http://www.blogjava.net/badboyryan/comments/423675.html</wfw:comment><comments>http://www.blogjava.net/badboyryan/archive/2015/03/20/423675.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/badboyryan/comments/commentRss/423675.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/badboyryan/services/trackbacks/423675.html</trackback:ping><description><![CDATA[<p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="font-size: small;">OS环境：windows2008</span></p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="font-size: small;">数据库版本：oracle 11.2.0</span></p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;">&nbsp;</p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="font-size: small;">今天同事需要执行一个拥有大批量运算的存储过程，当执行的时候报错，报错信息如下：</span></p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;">&nbsp;</p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="font-size: small;">ERROR at line 1:<br /></span><span style="font-size: small;"><span style="color: #ff0000;">ORA-01555: snapshot too old: rollback segment number 18 with name<br />"_SYSSMU18_671080725$" too small<br /></span>ORA-06512: at "TRANUSER.TRAN_ETL_LOAD_J2S_MAIN", line 22<br />ORA-06512: at "TRANUSER.TRAN_ETL_LOAD_JST_PRE", line 5<br />ORA-06512: at line 2<br /></span></p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;">&nbsp;</p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"></p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><strong><span style="font-size: small;">--精彩解释</span></strong></p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="font-size: small;">不知道是从哪里转的了, 假设有张表，叫table1，里面有5000万行数据，假设预计全表扫描1次需要1个小时，我们从过程来看：&nbsp;<br style="line-height: normal;" /><br style="line-height: normal;" />1、在1点钟，有个用户A发出了select * from table1;此时不管将来table1怎么变化，正确的结果应该是用户A会看到在1点钟这个时刻的内容。这个是没有疑问的。&nbsp;<br style="line-height: normal;" />2、在1点30分，有个用户B执行了update命令，更新了table1表中的第4000万行的这条记录，这时，用户A的全表扫描还没有到达第4000万条。毫无疑问，这个时候，第4000万行的这条记录是被写到了回滚段里去了的，我假设是回滚段RBS1，如果用户A的全表扫描到达了第4000万行，是应该会正确的从回滚段RBS1中读取出1点钟时刻的内容的。&nbsp;<br style="line-height: normal;" />3、这时，用户B将他刚才做的操作commit了，但是这时，系统仍然可以给用户A提供正确的数据，因为那第4000万行记录的内容仍然还在回滚段RBS1里，系统可以根据SCN来到回滚段里找到正确的数据，但是大家注意到，这时记录在RBS1里的第4000万行记录已经发生了一点重大的改变：就是这个第4000万行的在回滚段RBS1里的数据有可能随时被覆盖掉，因为这条记录已经被提交了！！！&nbsp;<br style="line-height: normal;" />4、由于用户A的查询时间漫长，而业务在一直不断的进行，RBS1回滚段在被多个不同的tracnsaction使用着，这个回滚段里的extent循环到了第4000万行数据所在的extent，由于这条记录已经被标记提交了，所以这个extent是可以被其他transaction覆盖掉的！&nbsp;<br style="line-height: normal;" />5、到了1点40分，用户A的查询终于到了第4000万行，而这时已经出现了第4条说的情况，需要到回滚段RBS1去找数据，但是已经被覆盖掉了，于是01555就出现了。</span></p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><strong><span style="font-size: small;">--错误提示</span></strong></p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="font-size: small;">数据库报错 ORA-01555 什么回滚段 '_SYSSMU168' is too small.很明显 是可用的回滚段太小了 满足不了那个大事物的需要 具体的sql我就不提供了</span></p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="font-size: small;">还有一种可能,一般伴随着ORA-22924出现就是LOB上的问题</span></p><div id="_mcePaste" style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff; overflow: hidden; padding-left: 30px; left: -10000px; width: 1px; position: absolute; top: 0px; height: 1px;"><span style="font-size: small;">辨别ORA-01555是不是发生在LOB上的,一般来说,普通的01555错误会指明发生01555的rollback segment,而LOB的则没有,而是伴随着ORA-22924出现</span></div><div id="_mcePaste" style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff; overflow: hidden; left: -10000px; width: 1px; position: absolute; top: 0px; height: 1px;"><span style="font-size: small;">http://www.dbafan.com/blog/?p=11</span></div><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff; padding-left: 30px;"><span style="font-size: small;">辨别ORA-01555是不是发生在LOB上的,一般来说,普通的01555错误会指明发生01555的rollback segment,而LOB的则没有,而是伴随着ORA-22924出现</span><a href="http://student.csdn.net/link.php?url=http://www.dbafan.com%2Fblog%2F%3Fp%3D11" target="_blank" style="color: #336699; text-decoration: none;"><span style="color: #770000;"><span style="font-size: small;">http://www.dbafan.com/blog/?p=11</span></span></a></p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;">&nbsp;</p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><strong><span style="font-size: small;">--回滚原理</span></strong></p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="font-size: small;">回退段中存放的信息被称为&#8220;前照&#8221;(pre-image)，也就是说当一个进程对某个表进行了DML操作以后，<br />更改前的纪录信息被存放于回滚段，其作用有两个：</span></p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="font-size: small;">1、当进程要求回滚（ROLLBACK）的时候，使用回滚段中信息是纪录复原；</span></p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="font-size: small;">2、保持数据读的一致性，当一个进程从某个表中读纪录的时候，ORACLE返回的是当读开始或者进程开始时的纪录，如果在读取过程中有其他进程更改了表纪录，ORACLE就会从回滚段中读取当读操作开始时的数据。回滚段中信息并不是持久有效的，<span style="color: #ff0000;">当进程提交（COMMIT）或者回滚（ROLLBACK）的时候，回滚段就被释放了</span>。当一个进程在执行一个大查询的时候，如果在查询的过程中所读取得的表被更改而且更改COMMIT太久，那回滚段中的&#8220;前照&#8221;就有可能会被其他的进程覆盖，从而导致ORA-01555错误。</span></p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;">&nbsp;</p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><strong><span style="font-size: small;">--解决方法</span></strong></p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="font-size: small;">1、增加回滚段的大小，因为ORACLE总是覆盖最旧的回滚段，所以大的回滚段能有效的降低数据被覆盖的可能性。<br />2、检查你的程序，避免在一个大查询的过程中对所查询的表执行太多更新操作。</span></p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff; padding-left: 30px;"><span style="font-size: small;">下面回顾下关于ora-01555的解决方法 10g默认是使用AUM 这里就不说了.&nbsp;下面是几个解决方式来自</span><a href="http://student.csdn.net/link.php?url=http://www.hellodba.com%2F" target="_blank" style="color: #336699; text-decoration: none;"><span style="color: #770000;"><span style="font-size: small;">hellodba&nbsp;</span></span></a><span style="font-size: small;">总结的很不错 大家可用参考下：</span></p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="font-size: small;">1、扩大回滚段:&nbsp;因为回滚段是循环使用的，<span style="color: #ff0000;">如果回滚段足够大，那么那些被提交的数据信息就能保存足够长的时间是那些大事务完成一致性读取</span>。</span></p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="font-size: small;">2、增加undo_retention时间:在undo_retention规定的时间内，任何其他事务都不能覆盖这些数据。</span></p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="font-size: small;">3、优化相关查询语句，减少一致性读:减少查询语句的一致性读，就降低读取不到回滚段数据的风险。这一点非常重要！</span></p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="font-size: small;">4、减少不必要的事务提交:提交的事务越少，产生的回滚段信息就越少。</span></p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="font-size: small;">5、对大事务指定回滚段,通过以下语句可以指定事务的回滚段：<span style="color: #0000ff;">SET TRANSACTION USE ROLLBACK SEGMENT rollback_segment;&nbsp;</span>给大事务指定回滚段，即降低大事务回滚信息覆盖其他事务的回滚信息的几率，又降低了他自身的回滚信息被覆盖的几率。大事务的存在，往往是1555错误产生的诱因。</span></p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff; padding-left: 30px;"><span style="font-size: small;">6、使用游标时尽量使用显式游标，并且只在需要的时候打开游标，同时将所有可以在游标外做的操作从游标循环中拿出。当游标打开时，查询就开始了，直到游标关闭。减少游标的打开时间，就减少了1555错误发生的几率。</span><a href="http://student.csdn.net/link.php?url=http://hi.baidu.com%2Fxu521huan%2Fblog%2Fitem%2F0903ec9b62d85ebec8eaf442.html" target="_blank" style="color: #336699; text-decoration: none;"><span style="color: #770000;"><span style="font-size: small;">http://hi.baidu.com/xu521huan/blog/item/0903ec9b62d85ebec8eaf442.html</span></span></a></p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;">&nbsp;</p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><strong><span style="font-size: small;">--一些实例</span></strong></p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="font-size: small;">我的回答是先看看到底是哪个SQL有这个问题，再确定不是因为SQL本身太糟糕导致SNAPSHOT TOO OLD。<span style="color: #ff0000;">再跟他们说我不相信把UNDO_RETENTION加大会有效地解决问题</span>。最后给几个CASES来支持我的观点。<br />(1)reduce the frequency of commit<br />(2)set initialization paramter undo_retention(9i)<br />(3)alter system set retention guarrantee (10g)<br />(4)increase the size of the undo tablespace<br />(5)assign a large rollback segment for the large transaction<br />(6)tuning the long run sql<br />~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~<br />the root cause of the error ora-01555:the long run query can not find a consistent image, because the undo blocks that used to construct the consistent image were wrapped by other active transaction.</span></p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="font-size: small;">遇到这个问题，首先可以看是维护需要执行的SQL或者应用执行的SQL报的</span></p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="font-size: small;">1、如果平时不报，只是维护人员执行的SQL报的，一般是SQL写得不好，运行执行过长，超过了参数 redo_retention所设置的时间造成的。这种情况可以协助他们进行SQL分析和优化，减少运行时间，这个情况下系统不需要对系统进行调整</span></p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="font-size: small;">2、如果是应用程序报的，比如批量程序，则需要通知相关人员进行重做，否则批量运行失败，业务可能会因为数据遗漏出现问题。如果出现的频率较多，则需要在优化应用程序（优化的手段有SQL优化、适当增加commit的次数等）。在应用新版本上线前，可通过调整系统配置临时解决问题方法如：</span></p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="font-size: small;">1）增大undo表空间</span></p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="font-size: small;">2）增大redo_retention</span></p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="font-size: small;">3)为此大事物指定专门的undo 段</span></p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff; padding-left: 30px;"><a href="http://student.csdn.net/link.php?url=http://www.itpub.net%2Fviewthread.php%3Ftid%3D1021888%26amp%3Bextra%3D%26amp%3Bhighlight%3DDBA%25C3%25E6%25CA%25D4%26amp%3Bpage%3D3" target="_blank" style="color: #336699; text-decoration: none;"><span style="color: #770000;"><span style="font-size: small;">http://www.itpub.net/viewthread.php?tid=1021888&amp;extra=&amp;highlight=DBA%C3%E6%CA%D4&amp;page=3</span></span></a></p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="font-size: small;">新鲜出炉的案例：APPS的人下午回馈说今天一个DB的JOB一直报SNAPSHOT TOO OLD。这是过去几个月这个数据库第一次有这种回馈。到ALERT LOG中看看，有好多这种ERROR：Wed Jul 16 10:30:44 2008&nbsp;ORA-01555 caused by SQL statement below (Query Duration=884 sec, SCN: 0x0018.bef62785):Wed Jul 16 10:30:44 2008</span></p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="font-size: small;">Wed Jul 16 10:57:29 2008&nbsp;ORA-01555 caused by SQL statement below (Query Duration=149 sec, SCN: 0x0018.bf0d3e47):Wed Jul 16 10:57:29 2008</span></p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="font-size: small;">嗯，884S，149S，不可能吧？看看UNDO SETTINGS，很大啊：</span></p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="font-size: small;">SQL&gt;&nbsp;<span style="color: #0000ff;">show parameter undo</span><br />NAME &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TYPE &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;VALUE<br />------------------------------------ ----------- ------------------------------<br />undo_management &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;string &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AUTO<br />undo_retention &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;integer &nbsp;&nbsp;&nbsp;&nbsp;10800<br />undo_suppress_errors &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;boolean &nbsp;&nbsp;&nbsp;&nbsp;FALSE<br />undo_tablespace &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;string &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;UNDOTBS2</span></p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="font-size: small;">SQL&gt;&nbsp;<span style="color: #0000ff;">select sum(bytes)/(1024*1024*1024) as gbytes from dba_data_files;</span><br />&nbsp;&nbsp;&nbsp;&nbsp;GBYTES<br />----------<br />300.654297</span></p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="font-size: small;">SQL&gt;&nbsp;<span style="color: #0000ff;">select sum(bytes)/(1024*1024*1024) as gbytes from dba_data_files where tablespace_name='UNDOTBS2';</span><br />&nbsp;&nbsp;&nbsp;&nbsp;GBYTES<br />----------<br />&nbsp;&nbsp;9.765625</span></p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff; padding-left: 30px;"><span style="font-size: small;">自己试试：<br /><span style="color: #0000ff;">create table mytab as &lt;the select statement&gt; where 1=0</span><br />16:12:14 SQL&gt; insert into mytab &lt;the select statement&gt;<br /></span><span style="color: #999999;"><span style="font-size: small;">insert into mytab<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*</span></span></p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="font-size: small;"><span style="color: #999999;">ERROR at line 1:<br />ORA-01555: snapshot too old: rollback segment number 27 with name "_SYSSMU27$"<br />too small<br />Elapsed: 00:10:08.83</span><br />奇怪了。看看今天这个UNTOTBS2 UTILIZATION怎样。</span></p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff; padding-left: 30px;"><span style="font-size: small;">SQL&gt; s<span style="color: #0000ff;">elect snap_time, free_mb from&nbsp;<span style="color: #ff00ff;">tbs_usage_hist&nbsp;</span>where database='&lt;DB Name&gt;' and tbs='UNDOTBS2' and snap_time&gt;sysdate-1 order by snap_time;</span><br /></span><span style="color: #999999;"><span style="font-size: small;">SNAP_TIME &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FREE_MB<br />------------------- ----------<br />2008-07-15 18:00:00 &nbsp;&nbsp;&nbsp;9172.56<br />2008-07-15 19:00:00 &nbsp;&nbsp;&nbsp;9172.56<br />2008-07-15 20:00:00 &nbsp;&nbsp;&nbsp;9156.56<br />2008-07-15 21:00:00 &nbsp;&nbsp;&nbsp;9188.56<br />2008-07-15 22:00:00 &nbsp;&nbsp;&nbsp;9204.56<br />2008-07-15 23:00:00 &nbsp;&nbsp;&nbsp;9212.56<br />2008-07-16 00:00:00 &nbsp;&nbsp;&nbsp;9228.56<br />2008-07-16 01:00:00 &nbsp;&nbsp;&nbsp;9228.56<br />2008-07-16 02:00:00 &nbsp;&nbsp;&nbsp;9236.56<br />2008-07-16 03:00:00 &nbsp;&nbsp;&nbsp;9228.56<br />2008-07-16 04:00:00 &nbsp;&nbsp;&nbsp;9252.56<br />2008-07-16 05:00:00 &nbsp;&nbsp;&nbsp;9252.56<br />2008-07-16 06:00:00 &nbsp;&nbsp;&nbsp;9252.56<br />2008-07-16 07:00:00 &nbsp;&nbsp;&nbsp;9260.56<br />2008-07-16 08:00:00 &nbsp;&nbsp;&nbsp;9244.56<br />2008-07-16 09:00:00 &nbsp;&nbsp;&nbsp;8486.56<br />2008-07-16 10:00:00 &nbsp;&nbsp;&nbsp;1683.56<br /><span style="color: #ff0000;">2008-07-16 11:00:00 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2.31</span><br />2008-07-16 12:00:00 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1.94<br />2008-07-16 13:00:00 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2.44<br />2008-07-16 14:00:00 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2.44<br />2008-07-16 15:00:00 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1.25<br />2008-07-16 16:00:00 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;17.75</span></span></p><p style="color: #333333; font-family: Arial; line-height: 26px; background-color: #ffffff;"><span style="font-size: small;">那 问题应当是很明了了，自今天十点多UNDOTBS2一直是HIGHLY UTILIZED。打个电话给APP OWNER，原来他今天早上十点左右做了一个很大的DELETE。即然这个报错的APP只要在二十四小时内能再执行完就可以，而OLTP APP没报错，那就再等等吧。在四点半时，UNDOTBS2就差不多是85% FREE。再试试：<br />16:37:49 SQL&gt; insert into mytab &lt;the select statement&gt;<br />182 rows created.<br />Elapsed: 00:34:47.39<br />17:12:37 SQL&gt;<br />现在的UNDOTBS2 UTILIZATION：<br />SNAP_TIME &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;FREE_MB<br />------------------- ----------<br />2008-07-16 17:00:00 &nbsp;&nbsp;&nbsp;8523.63<br />问题解决。SNAPSHOT TOO OLD从来就不是一个过时的题目,也没有一个简单的答案。</span></p><img src ="http://www.blogjava.net/badboyryan/aggbug/423675.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/badboyryan/" target="_blank">坏男孩</a> 2015-03-20 15:03 <a href="http://www.blogjava.net/badboyryan/archive/2015/03/20/423675.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ORA--27100</title><link>http://www.blogjava.net/badboyryan/archive/2015/03/20/423674.html</link><dc:creator>坏男孩</dc:creator><author>坏男孩</author><pubDate>Fri, 20 Mar 2015 06:58:00 GMT</pubDate><guid>http://www.blogjava.net/badboyryan/archive/2015/03/20/423674.html</guid><wfw:comment>http://www.blogjava.net/badboyryan/comments/423674.html</wfw:comment><comments>http://www.blogjava.net/badboyryan/archive/2015/03/20/423674.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/badboyryan/comments/commentRss/423674.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/badboyryan/services/trackbacks/423674.html</trackback:ping><description><![CDATA[<div style="margin: 5px 0px; font-size: 20px; line-height: 30px; font-family: 'Microsoft YaHei'; background-color: #ffffff;"><h1><a href="http://blog.csdn.net/songyang_oracle/article/details/6432305" style="color: #666666; text-decoration: none;">决ORA--27100 shared memory realm already exists报错</a></h1></div><div style="padding-top: 5px; padding-bottom: 5px; color: #999999; font-size: 12px; line-height: 24px; font-family: Arial; text-align: right; background-color: #ffffff;"><span style="margin: 0px 5px; float: left;">分类：&nbsp;<a href="http://blog.csdn.net/SongYang_Oracle/article/category/822072" style="color: #336699; text-decoration: none;">各种ORA-报错</a></span><span style="margin: 0px 5px 0px 0px;">2011-05-19 15:49</span>&nbsp;<span title="阅读次数" style="margin: 0px 5px; padding: 0px 0px 0px 14px; background-image: url(http://static.blog.csdn.net/images/ico_view.png); background-position: 0% 50%; background-repeat: no-repeat no-repeat;">1220人阅读</span>&nbsp;<span title="评论次数" style="margin: 0px 5px; padding: 0px 0px 0px 14px; background-image: url(http://static.blog.csdn.net/images/ico_comm.png); background-position: 0% 50%; background-repeat: no-repeat no-repeat;"><a href="http://blog.csdn.net/songyang_oracle/article/details/6432305#comments" style="color: #336699; text-decoration: none;">评论</a>(0)</span>&nbsp;<span style="margin: 0px 5px;"><a title="收藏" style="color: #336699;">收藏</a></span>&nbsp;<span style="margin: 0px 5px;"><a href="http://blog.csdn.net/songyang_oracle/article/details/6432305#report" title="举报" style="color: #336699; text-decoration: none;">举报</a></span></div><div style="margin: 10px 0px; color: #333333; font-family: Arial, Console, Verdana, 'Courier New'; font-size: 12px; line-height: normal; background-color: #ffffff;"><a href="http://www.csdn.net/tag/integer" target="_blank" style="color: #336699; text-decoration: none; display: inline-block; padding: 4px 10px; line-height: 12px; margin-right: 10px; border: 1px solid #eeeeee; background-color: #eeeeee; border-top-left-radius: 10px; border-top-right-radius: 10px; border-bottom-right-radius: 10px; border-bottom-left-radius: 10px;">integer</a><a href="http://www.csdn.net/tag/sql" target="_blank" style="color: #336699; text-decoration: none; display: inline-block; padding: 4px 10px; line-height: 12px; margin-right: 10px; border: 1px solid #eeeeee; background-color: #eeeeee; border-top-left-radius: 10px; border-top-right-radius: 10px; border-bottom-right-radius: 10px; border-bottom-left-radius: 10px;">sql</a><a href="http://www.csdn.net/tag/%e6%95%b0%e6%8d%ae%e5%ba%93" target="_blank" style="color: #336699; text-decoration: none; display: inline-block; padding: 4px 10px; line-height: 12px; margin-right: 10px; border: 1px solid #eeeeee; background-color: #eeeeee; border-top-left-radius: 10px; border-top-right-radius: 10px; border-bottom-right-radius: 10px; border-bottom-left-radius: 10px;">数据库</a><a href="http://www.csdn.net/tag/oracle" target="_blank" style="color: #336699; text-decoration: none; display: inline-block; padding: 4px 10px; line-height: 12px; margin-right: 10px; border: 1px solid #eeeeee; background-color: #eeeeee; border-top-left-radius: 10px; border-top-right-radius: 10px; border-bottom-right-radius: 10px; border-bottom-left-radius: 10px;">oracle</a><a href="http://www.csdn.net/tag/windows" target="_blank" style="color: #336699; text-decoration: none; display: inline-block; padding: 4px 10px; line-height: 12px; margin-right: 10px; border: 1px solid #eeeeee; background-color: #eeeeee; border-top-left-radius: 10px; border-top-right-radius: 10px; border-bottom-right-radius: 10px; border-bottom-left-radius: 10px;">windows</a><a href="http://www.csdn.net/tag/system" target="_blank" style="color: #336699; text-decoration: none; display: inline-block; padding: 4px 10px; line-height: 12px; margin-right: 10px; border: 1px solid #eeeeee; background-color: #eeeeee; border-top-left-radius: 10px; border-top-right-radius: 10px; border-bottom-right-radius: 10px; border-bottom-left-radius: 10px;">system</a></div><div id="article_content" style="margin: 20px 0px 0px; line-height: 26px; font-family: Arial; color: #333333; background-color: #ffffff;"><p><span style="font-size: small;">OS环境：windows PC</span></p><p><span style="font-size: small;">数据库版本：oracle 10.0.2.1</span></p><p>&nbsp;</p><p><span style="font-size: small;">这是一次小打小闹的报错，原因是帮同事改他自己玩的测试库sga，原sga_max_size大小为600M，我修改为2G，重启时报错。</span></p><p>&nbsp;</p><p><span style="color: #ff0000;"><span style="font-size: small;">ORA-27100 shared memory realm already exists</span></span></p><p>&nbsp;</p><p><span style="font-size: small;">通过查询官方文档，解释该原因是因为windows pc 32位机最大支持分配oracle内存为1.7G，所以导致报错，这是一次缺少经验的教训。</span></p><p>&nbsp;</p><p><span style="font-size: small;">解决案例：</span></p><p>&nbsp;&nbsp;</p><p><span style="color: #ff0000;"><span style="font-size: small;">1：SQL&gt; show parameter sga</span></span></p><p><span style="font-size: small;">&nbsp;&nbsp;&nbsp;&nbsp; NAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TYPE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; VALUE<br />------------------------------------ ----------- ------------------------------<br />&nbsp;&nbsp;&nbsp;&nbsp; lock_sga&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; boolean&nbsp;&nbsp;&nbsp;&nbsp; FALSE<br />&nbsp;&nbsp;&nbsp;&nbsp; pre_page_sga&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;boolean&nbsp;&nbsp;&nbsp;&nbsp; FALSE<br />&nbsp;&nbsp;&nbsp;&nbsp; sga_max_size&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;big integer 568M<br />&nbsp;&nbsp;&nbsp;&nbsp; sga_target&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; big integer 568M</span></p><p>&nbsp;</p><p><span style="color: #ff0000;"><span style="font-size: small;">2：SQL&gt; alter system set sga_max_size=2048m scope=spfile; -将SGA设置为2G</span></span></p><p><span style="color: #ff0000;"><span style="font-size: small;">&nbsp;&nbsp;&nbsp;&nbsp; SQL&gt; alter system set sga_target=2048m scope=spfile;</span></span></p><p>&nbsp;</p><p><span style="color: #ff0000;"><span style="font-size: small;">3：SQL&gt; shutdown immediate&nbsp; -重启数据库报错</span></span></p><p><span style="font-size: small;">&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #ff0000;">&nbsp;SQL&gt; startup</span></span></p><p>&nbsp;</p><p><span style="color: #ff0000;"><span style="font-size: small;">&nbsp;&nbsp;&nbsp;&nbsp; ORA-27100 shared memory realm already exists</span></span></p><p><span style="font-size: small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;OSD-00029: ????????????<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;O/S-Error: (OS 8) ??????????????????????????????&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></p><p>&nbsp;</p><p><span style="color: #ff0000;"><span style="font-size: small;">4：SQL&gt; create pfile from spfile; -使用spfile生成pfile，修改参数文件内的以下两个参数，</span></span></p><p><span style="color: #ff0000;"><span style="font-size: small;">&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span style="color: #ff0000;"><span style="font-size: small;">将参数调小。</span></span></p><p><span style="font-size: small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*.sga_max_size=600000000<br />&nbsp;&nbsp;&nbsp;&nbsp; *.sga_target=600000000</span></p><p>&nbsp;</p><p><span style="color: #ff0000;"><span style="font-size: small;">5：SQL&gt; startup pfile='E:/oracle/product/10.2.0/db_1/database/INITorcl.ORA' -这时候启动</span></span></p><p><span style="color: #ff0000;"><span style="font-size: small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;依然报错，这是因为windows</span></span><span style="font-size: small;"><span style="color: #ff0000;">机器需要重启后台服务，否则无法生效（郁闷）<br /></span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #ff0000;">ORA-27100 shared memory realm already exists</span></span></p><p><span style="font-size: small;">&nbsp;&nbsp;&nbsp;&nbsp; OSD-00029: ????????????<br />&nbsp;&nbsp;&nbsp;&nbsp; O/S-Error: (OS 8) ??????????????????????????????</span></p><p>&nbsp;</p><p><span style="color: #ff0000;"><span style="font-size: small;">7：找到管理/服务/OracleServiceORCL 重启</span></span></p><p>&nbsp;</p><p><span style="font-size: small;"><span style="color: #ff0000;">8：SQL&gt; startup pfile='E:/oracle/product/10.2.0/db_1/database/INITorcl.ORA'<br /></span>&nbsp;&nbsp;&nbsp;&nbsp; ORACLE 例程已经启动。</span></p><p><span style="font-size: small;">&nbsp;&nbsp;&nbsp;&nbsp; Total System Global Area&nbsp; 603979776 bytes<br />&nbsp;&nbsp;&nbsp;&nbsp; Fixed Size&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1250428 bytes<br />&nbsp;&nbsp;&nbsp;&nbsp; Variable Size&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 163580804 bytes<br />&nbsp;&nbsp;&nbsp;&nbsp; Database Buffers&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 432013312 bytes<br />&nbsp;&nbsp;&nbsp;&nbsp; Redo Buffers&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7135232 bytes<br />&nbsp;&nbsp;&nbsp;&nbsp; 数据库装载完毕。<br />&nbsp;&nbsp;&nbsp;&nbsp; 数据库已经打开。</span></p><p>&nbsp;</p><p><span style="color: #ff0000;"><span style="font-size: small;">9：SQL&gt; create spfile from pfile; -根据启动的pfile生成spfile，下次启动时候则主动读取spfile</span></span></p><p><span style="color: #ff0000;"><span style="font-size: small;">&nbsp;&nbsp;&nbsp;&nbsp; 参数文件</span></span></p><p><span style="font-size: small;">&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #ff0000;">&nbsp;SQL&gt; startup force<br />&nbsp;&nbsp;&nbsp;&nbsp; SQL&gt; show parameter spfile</span></span></p><p><span style="font-size: small;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TYPE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; VALUE<br />&nbsp;&nbsp;&nbsp;&nbsp; ------------------------------------ ----------- ------------------------------<br />&nbsp;&nbsp;&nbsp;&nbsp; spfile&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; E:/ORACLE/PRODUCT/10.2.0/DB_1/<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DATABASE/SPFILEORCL.ORA<br />&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #ff0000;">&nbsp;SQL&gt; show parameter sga;</span></span></p><p><span style="font-size: small;">&nbsp;&nbsp;&nbsp;&nbsp; NAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TYPE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; VALUE<br />&nbsp;&nbsp;&nbsp;&nbsp; ----------------------------------- ----------- ------------------------------<br />&nbsp;&nbsp;&nbsp;&nbsp; lock_sga&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; boolean&nbsp;&nbsp;&nbsp;&nbsp; FALSE<br />&nbsp;&nbsp;&nbsp;&nbsp; pre_page_sga&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; boolean&nbsp;&nbsp;&nbsp;&nbsp; FALSE<br />&nbsp;&nbsp;&nbsp;&nbsp; sga_max_size&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; big integer 576M<br />&nbsp;&nbsp;&nbsp;&nbsp; sga_target&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; big integer 576M</span></p></div><img src ="http://www.blogjava.net/badboyryan/aggbug/423674.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/badboyryan/" target="_blank">坏男孩</a> 2015-03-20 14:58 <a href="http://www.blogjava.net/badboyryan/archive/2015/03/20/423674.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>用exp无法导出空表解决方法</title><link>http://www.blogjava.net/badboyryan/archive/2012/06/11/380485.html</link><dc:creator>坏男孩</dc:creator><author>坏男孩</author><pubDate>Mon, 11 Jun 2012 02:29:00 GMT</pubDate><guid>http://www.blogjava.net/badboyryan/archive/2012/06/11/380485.html</guid><wfw:comment>http://www.blogjava.net/badboyryan/comments/380485.html</wfw:comment><comments>http://www.blogjava.net/badboyryan/archive/2012/06/11/380485.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/badboyryan/comments/commentRss/380485.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/badboyryan/services/trackbacks/380485.html</trackback:ping><description><![CDATA[<div>
<p style="text-indent: 24pt">最早的一次使用oracle 11g导出数据发现有的表丢失了，感觉莫名其妙的，后来终于找到原因了。<br />找到问题以后，再看看解决方案。<br /><br />11GR2<span style="font-family: 宋体">中有个新特性，当表无数据时，不分配</span>segment<span style="font-family: 宋体">，以节省空间，可是在用</span>EXPORT<span style="font-family: 宋体">导出时，空表也不能导出，这就导致迁移时候丢失了一些表，存储过程也失效了。本以为</span>EXP<span style="font-family: 宋体">能有相应的控制开关，可以切换是否导出空表，看了下帮助，没有太大的改变。有些奇怪，难道</span>11<strong></strong><span style="font-family: 宋体; font-size: 10.5pt">G</span><span style="font-family: 宋体; font-size: 10.5pt">R2</span><span style="font-family: 宋体; font-size: 10.5pt">不更新EXP的功能了，还看有的帖子说</span>11<strong></strong><span style="font-family: 宋体; font-size: 10.5pt">G</span><span style="font-family: 宋体; font-size: 10.5pt">R1</span><span style="font-family: 宋体; font-size: 10.5pt">作为客户端去卸载</span>11<strong></strong><span style="font-family: 宋体; font-size: 10.5pt">G</span><span style="font-family: 宋体; font-size: 10.5pt">R2</span><span style="font-family: 宋体; font-size: 10.5pt">的，都会出现ora-1455d的错误，得换成</span>11<strong></strong><span style="font-family: 宋体; font-size: 10.5pt">G</span><span style="font-family: 宋体; font-size: 10.5pt">R2</span><span style="font-family: 宋体; font-size: 10.5pt">的exp才没事了，心中感慨阿，怎么版本间的兼容这么脆弱了！</span></p>
<p><span style="font-family: 宋体">　　解决方法：</span></p>
<h1><span>一、 </span>insert<span style="font-family: 宋体">一行，再</span>rollback<span style="font-family: 宋体">就产生</span>segment<span style="font-family: 宋体">了。</span></h1>
<p><span style="font-family: 宋体">　　该方法是在在空表中插入数据，再删除，则产生</span>segment<span style="font-family: 宋体">。导出时则可导出空表。</span></p>
<h1><span>二、 </span><span style="font-family: 宋体">设置</span>deferred_segment_creation<span style="font-family: 宋体">参数</span></h1>
<p style="text-indent: 24pt"><span style="font-family: 宋体">该参数值默认是</span>TRUE<span style="font-family: 宋体">，当改为</span>FALSE<span style="font-family: 宋体">时，无论是空表还是非空表，都分配</span>segment<span style="font-family: 宋体">。修改</span><a href="javascript:;" target="_self"><u><strong>SQL</strong></u></a><span style="font-family: 宋体">语句：</span></p>
<p style="text-indent: 36pt">alter system set deferred_segment_creation=false scope=both;</p>
<p><span style="font-family: 宋体">　　需注意的是：该值设置后对以前导入的空表不产生作用，仍不能导出，只能对后面新增的表产生作用。如需导出之前的空表，只能用第一种方法。</span></p>
<h1><span>三、 </span><span style="font-family: 宋体">用以下这句查找空表并分配空间</span></h1>
<p><span style="font-family: 宋体">　　</span>select 'alter <a href="javascript:;" target="_self"><u><strong>table</strong></u></a> '||table_name||' allocate extent;' from user_tables where num_rows=0;</p>
<p><span style="font-family: 宋体">　　把</span>SQL<span style="font-family: 宋体">查询的结果导出，然后执行导出的语句，强行为表分配空间修改</span>segment<span style="font-family: 宋体">值，然后再导出即可导出空表了。</span></p></div><br /><br /><img src ="http://www.blogjava.net/badboyryan/aggbug/380485.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/badboyryan/" target="_blank">坏男孩</a> 2012-06-11 10:29 <a href="http://www.blogjava.net/badboyryan/archive/2012/06/11/380485.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>解决web应用和数据库在一起，应用服务启动报错</title><link>http://www.blogjava.net/badboyryan/archive/2012/06/05/380071.html</link><dc:creator>坏男孩</dc:creator><author>坏男孩</author><pubDate>Tue, 05 Jun 2012 14:20:00 GMT</pubDate><guid>http://www.blogjava.net/badboyryan/archive/2012/06/05/380071.html</guid><wfw:comment>http://www.blogjava.net/badboyryan/comments/380071.html</wfw:comment><comments>http://www.blogjava.net/badboyryan/archive/2012/06/05/380071.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/badboyryan/comments/commentRss/380071.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/badboyryan/services/trackbacks/380071.html</trackback:ping><description><![CDATA[@echo off<br />net stop tomcat<br />rem ping 20个包，实现延时<br />ping 127.0.0.1 -n 20<br />net start tomcat<br /><br />做成bat文件，开机的时候运行这个批处理，这样oracle就有足够的时间启动了<img src ="http://www.blogjava.net/badboyryan/aggbug/380071.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/badboyryan/" target="_blank">坏男孩</a> 2012-06-05 22:20 <a href="http://www.blogjava.net/badboyryan/archive/2012/06/05/380071.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>图片上传怎么变慢了</title><link>http://www.blogjava.net/badboyryan/archive/2011/05/06/349657.html</link><dc:creator>坏男孩</dc:creator><author>坏男孩</author><pubDate>Fri, 06 May 2011 01:45:00 GMT</pubDate><guid>http://www.blogjava.net/badboyryan/archive/2011/05/06/349657.html</guid><wfw:comment>http://www.blogjava.net/badboyryan/comments/349657.html</wfw:comment><comments>http://www.blogjava.net/badboyryan/archive/2011/05/06/349657.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/badboyryan/comments/commentRss/349657.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/badboyryan/services/trackbacks/349657.html</trackback:ping><description><![CDATA[<p>1、第一张图片传的慢，第二张图片传的快<br />
2、上传仅仅有0.6k的速度<br />
3、第二张54k的速度<br />
4、解决办法：清理一下临时表；BLOG字段的事</p>
 <img src ="http://www.blogjava.net/badboyryan/aggbug/349657.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/badboyryan/" target="_blank">坏男孩</a> 2011-05-06 09:45 <a href="http://www.blogjava.net/badboyryan/archive/2011/05/06/349657.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>区分你的oracle是64位还是32位</title><link>http://www.blogjava.net/badboyryan/archive/2010/01/09/308810.html</link><dc:creator>坏男孩</dc:creator><author>坏男孩</author><pubDate>Sat, 09 Jan 2010 03:18:00 GMT</pubDate><guid>http://www.blogjava.net/badboyryan/archive/2010/01/09/308810.html</guid><wfw:comment>http://www.blogjava.net/badboyryan/comments/308810.html</wfw:comment><comments>http://www.blogjava.net/badboyryan/archive/2010/01/09/308810.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/badboyryan/comments/commentRss/308810.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/badboyryan/services/trackbacks/308810.html</trackback:ping><description><![CDATA[<p>sqlplus / as sysdba;<br />
<br />
SQL&gt; desc x$ksmmem<br />
&nbsp;Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; Type<br />
&nbsp;----------------------------------------- -------- ------------------<br />
&nbsp;ADDR&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp; &nbsp;RAW(8)<br />
&nbsp;INDX&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NUMBER<br />
&nbsp;INST_ID&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;NUMBER<br />
&nbsp;KSMMMVAL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RAW(8)</p>
<p><br />
RAW(8)&nbsp; 64 位<br />
raw(4)&nbsp; 32位</p>
<p><br />
&nbsp;</p>
<img src ="http://www.blogjava.net/badboyryan/aggbug/308810.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/badboyryan/" target="_blank">坏男孩</a> 2010-01-09 11:18 <a href="http://www.blogjava.net/badboyryan/archive/2010/01/09/308810.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Linux 下卸载oracle10G</title><link>http://www.blogjava.net/badboyryan/archive/2009/12/18/306610.html</link><dc:creator>坏男孩</dc:creator><author>坏男孩</author><pubDate>Fri, 18 Dec 2009 12:45:00 GMT</pubDate><guid>http://www.blogjava.net/badboyryan/archive/2009/12/18/306610.html</guid><wfw:comment>http://www.blogjava.net/badboyryan/comments/306610.html</wfw:comment><comments>http://www.blogjava.net/badboyryan/archive/2009/12/18/306610.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/badboyryan/comments/commentRss/306610.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/badboyryan/services/trackbacks/306610.html</trackback:ping><description><![CDATA[<p>&nbsp;</p>
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
<img src ="http://www.blogjava.net/badboyryan/aggbug/306610.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/badboyryan/" target="_blank">坏男孩</a> 2009-12-18 20:45 <a href="http://www.blogjava.net/badboyryan/archive/2009/12/18/306610.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oracle服务器上的链接</title><link>http://www.blogjava.net/badboyryan/archive/2009/10/14/298262.html</link><dc:creator>坏男孩</dc:creator><author>坏男孩</author><pubDate>Wed, 14 Oct 2009 09:42:00 GMT</pubDate><guid>http://www.blogjava.net/badboyryan/archive/2009/10/14/298262.html</guid><wfw:comment>http://www.blogjava.net/badboyryan/comments/298262.html</wfw:comment><comments>http://www.blogjava.net/badboyryan/archive/2009/10/14/298262.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/badboyryan/comments/commentRss/298262.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/badboyryan/services/trackbacks/298262.html</trackback:ping><description><![CDATA[<p>Enterprise Manager Database Control URL - (orcl) :</p>
<p>http://badboyryan:1158/em</p>
<p>&nbsp;</p>
<p>数据库配置文件已经安装到 D:\oracle\product\10.2.0,同时其他选定的安装组件也已经安装到 D:\oracle\product\10.2.0\db_1。</p>
<p>iSQL*Plus URL 为:</p>
<p>http://badboyryan:5560/isqlplus</p>
<p>&nbsp;</p>
<p>iSQL*Plus DBA URL 为:</p>
<p>http://badboyryan:5560/isqlplus/dba<br />
</p>
<img src ="http://www.blogjava.net/badboyryan/aggbug/298262.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/badboyryan/" target="_blank">坏男孩</a> 2009-10-14 17:42 <a href="http://www.blogjava.net/badboyryan/archive/2009/10/14/298262.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle中忘记System和Sys密码后的处理方法 </title><link>http://www.blogjava.net/badboyryan/archive/2009/10/11/297735.html</link><dc:creator>坏男孩</dc:creator><author>坏男孩</author><pubDate>Sat, 10 Oct 2009 16:56:00 GMT</pubDate><guid>http://www.blogjava.net/badboyryan/archive/2009/10/11/297735.html</guid><wfw:comment>http://www.blogjava.net/badboyryan/comments/297735.html</wfw:comment><comments>http://www.blogjava.net/badboyryan/archive/2009/10/11/297735.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/badboyryan/comments/commentRss/297735.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/badboyryan/services/trackbacks/297735.html</trackback:ping><description><![CDATA[第一种方式用以下方法修改密码：　
<p>
<table style="border-right: #cccccc 1px dotted; table-layout: fixed; border-top: #cccccc 1px dotted; border-left: #cccccc 1px dotted; border-bottom: #cccccc 1px dotted" cellspacing="0" cellpadding="6" width="95%" align="center" border="0">
    <tbody>
        <tr>
            <td style="word-wrap: break-word" bgcolor="#f3f3f3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sqlplus&nbsp;/nolog; <br />
            　　connect&nbsp;/&nbsp;as&nbsp;sysdba <br />
            　　alter&nbsp;user&nbsp;sys&nbsp;identified&nbsp;by newpassword&nbsp;; <br />
            　　alter&nbsp;user&nbsp;system&nbsp;identified&nbsp;by newpassword&nbsp;&nbsp;;</td>
        </tr>
    </tbody>
</table>
</p>
第二种方法用以下方法修改密码：
<p>
<table style="border-right: #cccccc 1px dotted; table-layout: fixed; border-top: #cccccc 1px dotted; border-left: #cccccc 1px dotted; border-bottom: #cccccc 1px dotted" cellspacing="0" cellpadding="6" width="95%" align="center" border="0">
    <tbody>
        <tr>
            <td style="word-wrap: break-word" bgcolor="#f3f3f3">orapwd&nbsp;file=pwdxxx.ora&nbsp;password=newpassword&nbsp;entries=10</td>
        </tr>
    </tbody>
</table>
</p>
<p>　　设定完后，重新启动服务，再次登陆就可以了</p>
<img src ="http://www.blogjava.net/badboyryan/aggbug/297735.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/badboyryan/" target="_blank">坏男孩</a> 2009-10-11 00:56 <a href="http://www.blogjava.net/badboyryan/archive/2009/10/11/297735.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Tomcat 与oracle做成服务启动顺序的问题解决</title><link>http://www.blogjava.net/badboyryan/archive/2009/06/17/282939.html</link><dc:creator>坏男孩</dc:creator><author>坏男孩</author><pubDate>Wed, 17 Jun 2009 15:06:00 GMT</pubDate><guid>http://www.blogjava.net/badboyryan/archive/2009/06/17/282939.html</guid><wfw:comment>http://www.blogjava.net/badboyryan/comments/282939.html</wfw:comment><comments>http://www.blogjava.net/badboyryan/archive/2009/06/17/282939.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/badboyryan/comments/commentRss/282939.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/badboyryan/services/trackbacks/282939.html</trackback:ping><description><![CDATA[<p>为什么tomcat和oracle都做成服务了，但是tomcat的应用无效呢？<br />
<br />
<br />
解决办法：<br />
打开bin/service.bat文件，</p>
<p>echo Using JVM:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; %PR_JVM%<br />
"%EXECUTABLE%" //IS//%SERVICE_NAME% --StartClass org.apache.catalina.startup.Bootstrap --StopClass org.apache.catalina.startup.Bootstrap --StartParams start --StopParams stop</p>
<p>一句后面加上 --DependsOn&nbsp;&nbsp; oracle侦听服务；oracledatabse<br />
注意用；号隔开依赖的服务<br />
再执行bin/service.bat install jnszcg ，即可安装<span class="hilite1">Tomcat</span>服务，并且依赖oracle<br />
<br />
其实很简单就是制定服务的依赖关系；<br />
<br />
最后采取的方案成功了：<br />
<br />
1、把tomcat做到服务里面，手工启动；<br />
2、新建一个批处理net start tomcat <br />
3、新建一个任务，在计算机启动的时候执行批处理ok<br />
是不是问题已经解决了<br />
<br />
</p>
<img src ="http://www.blogjava.net/badboyryan/aggbug/282939.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/badboyryan/" target="_blank">坏男孩</a> 2009-06-17 23:06 <a href="http://www.blogjava.net/badboyryan/archive/2009/06/17/282939.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>最近在linux以及hp-ux下面又折腾了一下oracle自动启动</title><link>http://www.blogjava.net/badboyryan/archive/2009/06/15/282476.html</link><dc:creator>坏男孩</dc:creator><author>坏男孩</author><pubDate>Mon, 15 Jun 2009 15:22:00 GMT</pubDate><guid>http://www.blogjava.net/badboyryan/archive/2009/06/15/282476.html</guid><wfw:comment>http://www.blogjava.net/badboyryan/comments/282476.html</wfw:comment><comments>http://www.blogjava.net/badboyryan/archive/2009/06/15/282476.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/badboyryan/comments/commentRss/282476.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/badboyryan/services/trackbacks/282476.html</trackback:ping><description><![CDATA[oracle在里面下面没有自动启动，并且做成服务自动运行，请参照CSDN里面我的资源里面的文档，而且还有tomcat如何做成服务的文档以及脚本文件；<br />
<a href="http://download.csdn.net/source/1410016" target="_blank">1、oracle10g在linux as5下面的自动启动脚本以及文档</a><br />
<a href="http://download.csdn.net/source/1409984" target="_blank">2、tomcat5527在linux as5下面的自动启动脚本以及文档</a>
 <img src ="http://www.blogjava.net/badboyryan/aggbug/282476.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/badboyryan/" target="_blank">坏男孩</a> 2009-06-15 23:22 <a href="http://www.blogjava.net/badboyryan/archive/2009/06/15/282476.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oracle安装完成后为什么每一次都需要startup</title><link>http://www.blogjava.net/badboyryan/archive/2009/05/04/268837.html</link><dc:creator>坏男孩</dc:creator><author>坏男孩</author><pubDate>Mon, 04 May 2009 08:38:00 GMT</pubDate><guid>http://www.blogjava.net/badboyryan/archive/2009/05/04/268837.html</guid><wfw:comment>http://www.blogjava.net/badboyryan/comments/268837.html</wfw:comment><comments>http://www.blogjava.net/badboyryan/archive/2009/05/04/268837.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/badboyryan/comments/commentRss/268837.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/badboyryan/services/trackbacks/268837.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 很简单，因为实例的启动方式是手动需要改成auto啊<br />
　　1.编辑此实例，启动方式改为自动<br />
　　 oradim -EDIT -SID test -STARTMODE auto<br />
　　2.编辑此实例，启动方式改为手动<br />
　　 oradim -EDIT -SID test -STARTMODE manual<br />
<img src ="http://www.blogjava.net/badboyryan/aggbug/268837.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/badboyryan/" target="_blank">坏男孩</a> 2009-05-04 16:38 <a href="http://www.blogjava.net/badboyryan/archive/2009/05/04/268837.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>重建密码文件--解决ORA-01991错误</title><link>http://www.blogjava.net/badboyryan/archive/2009/03/16/260002.html</link><dc:creator>坏男孩</dc:creator><author>坏男孩</author><pubDate>Mon, 16 Mar 2009 05:59:00 GMT</pubDate><guid>http://www.blogjava.net/badboyryan/archive/2009/03/16/260002.html</guid><wfw:comment>http://www.blogjava.net/badboyryan/comments/260002.html</wfw:comment><comments>http://www.blogjava.net/badboyryan/archive/2009/03/16/260002.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/badboyryan/comments/commentRss/260002.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/badboyryan/services/trackbacks/260002.html</trackback:ping><description><![CDATA[<p>SQL&gt;conn / as sysdba<br />
<br />
&nbsp;SQL&gt;&nbsp; shutdown&nbsp;&nbsp; immediate<br />
<br />
SQL&gt; startup<br />
ORACLE 例程已经启动。
<p>Total System Global Area&nbsp; 135338868 bytes<br />
Fixed Size&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 453492 bytes<br />
Variable Size&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 109051904 bytes<br />
Database Buffers&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 25165824 bytes<br />
Redo Buffers&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 667648 bytes<br />
&nbsp;ORA-01991: ???????'E:\oracle\ora92\DATABASE\PWDsdnt.ORA'
<p>解决方法，由于未运行在归档模式下，使用orapwd重建oracle的密码文件：<br />
</p>
<p>host del E:\oracle\ora92\DATABASE\PWDsdnt.ORA</p>
<p>host orapwd file=E:\oracle\ora92\DATABASE\PWDsdnt.ORA password=system entries=10</p>
alter database open<br />
SQL&gt;conn / as sysdba<br />
<br />
&nbsp;SQL&gt;&nbsp; shutdown&nbsp;&nbsp; immediate<br />
重启tomcat问题解决，又可以正常的访问数据库了<br />
<img src ="http://www.blogjava.net/badboyryan/aggbug/260002.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/badboyryan/" target="_blank">坏男孩</a> 2009-03-16 13:59 <a href="http://www.blogjava.net/badboyryan/archive/2009/03/16/260002.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oracle 优化(1)转)</title><link>http://www.blogjava.net/badboyryan/archive/2009/02/26/256776.html</link><dc:creator>坏男孩</dc:creator><author>坏男孩</author><pubDate>Thu, 26 Feb 2009 03:31:00 GMT</pubDate><guid>http://www.blogjava.net/badboyryan/archive/2009/02/26/256776.html</guid><wfw:comment>http://www.blogjava.net/badboyryan/comments/256776.html</wfw:comment><comments>http://www.blogjava.net/badboyryan/archive/2009/02/26/256776.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/badboyryan/comments/commentRss/256776.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/badboyryan/services/trackbacks/256776.html</trackback:ping><description><![CDATA[<table style="table-layout: fixed">
    <tbody>
        <tr>
            <td>
            <div class="cnt" id="blog_text">
            <div>
            <p>转自:http://blog.csdn.net/yxc369/archive/2006/12/26/1461206.aspx</p>
            <p>1 前言 2<br />
            2 总纲 2<br />
            3 降龙十八掌 3<br />
            第一掌 避免对列的操作 3<br />
            第二掌 避免不必要的类型转换 4<br />
            第三掌 增加查询的范围限制 4<br />
            第四掌 尽量去掉&#8221;IN&#8221;、&#8221;OR&#8221; 4<br />
            第五掌 尽量去掉 &#8220;&lt;&gt;&#8221; 5<br />
            第六掌 去掉Where子句中的IS NULL和IS NOT NULL 5<br />
            第七掌 索引提高数据分布不均匀时查询效率 5<br />
            第八掌 利用HINT强制指定索引 6<br />
            第九掌 屏蔽无用索引 6<br />
            第十掌 分解复杂查询，用常量代替变量 7<br />
            第十一掌 like子句尽量前端匹配 7<br />
            第十二掌 用Case语句合并多重扫描 7<br />
            第十三掌 使用nls_date_format 8<br />
            第十四掌 使用基于函数的索引 8<br />
            第十五掌 基于函数的索引要求等式匹配 9<br />
            第十六掌 使用分区索引 9<br />
            第十七掌 使用位图索引 9<br />
            第十八掌 决定使用全表扫描还是使用索引 9<br />
            4 总结 10</p>
            </div>
            <div>1 前言<br />
            客服业务受到SQL语句的影响非常大，在规模比较大的局点，往往因为一个小的SQL语句不够优化，导致数据库性能急剧下降，小型机idle所剩无几，应用 服务器断连、超时，严重影响业务的正常运行。因此，称低效的SQL语句为客服业务的&#8216;恶龙&#8217;并不过分。数据库的优化方法有很多种，在应用层来说，主要是基 于索引的优化。本次秘笈根据实际的工作经验，在研发原来已有的方法的基础上，进行了一些扩充，总结了基于索引的SQL语句优化的降龙十八掌，希望有一天你 能用其中一掌来驯服客服业务中横行的&#8216;恶龙&#8217;。<br />
            2 总纲<br />
            l 建立必要的索引<br />
            这次传授的降龙十八掌，总纲只有一句话：建立必要的索引，这就是后面降龙十八掌的内功基础。这一点看似容易实际却很难。难就难在如何判断哪些索引是必要 的，哪些又是不必要的。判断的最终标准是看这些索引是否对我们的数据库性能有所帮助。具体到方法上，就必须熟悉数据库应用程序中的所有SQL语句，从中统 计出常用的可能对性能有影响的部分SQL，分析、归纳出作为Where条件子句的字段及其组合方式；在这一基础上可以初步判断出哪些表的哪些字段应该建立 索引。其次，必须熟悉应用程序。必须了解哪些表是数据操作频繁的表；哪些表经常与其他表进行连接；哪些表中的数据量可能很大；对于数据量大的表，其中各个 字段的数据分布情况如何；等等。对于满足以上条件的这些表，必须重点关注，因为在这些表上的索引，将对SQL语句的性能产生举足轻重的影响。不过下面还是 总结了一下降龙十八掌内功的入门基础，建立索引常用的规则如下：<br />
            1、表的主键、外键必须有索引；<br />
            2、数据量超过300的表应该有索引；<br />
            3、经常与其他表进行连接的表，在连接字段上应该建立索引；<br />
            4、经常出现在Where子句中的字段，特别是大表的字段，应该建立索引；<br />
            5、索引应该建在选择性高的字段上；<br />
            6、索引应该建在小字段上，对于大的文本字段甚至超长字段，不要建索引；<br />
            7、复合索引的建立需要进行仔细分析；尽量考虑用单字段索引代替：<br />
            A、正确选择复合索引中的主列字段，一般是选择性较好的字段；<br />
            B、复合索引的几个字段是否经常同时以AND方式出现在Where子句中？单字段查询是否极少甚至没有？如果是，则可以建立复合索引；否则考虑单字段索引；<br />
            C、如果复合索引中包含的字段经常单独出现在Where子句中，则分解为多个单字段索引；<br />
            D、如果复合索引所包含的字段超过3个，那么仔细考虑其必要性，考虑减少复合的字段；<br />
            E、如果既有单字段索引，又有这几个字段上的复合索引，一般可以删除复合索引；<br />
            8、频繁进行数据操作的表，不要建立太多的索引；<br />
            9、删除无用的索引，避免对执行计划造成负面影响；<br />
            以上是一些普遍的建立索引时的判断依据。一言以蔽之，索引的建立必须慎重，对每个索引的必要性都应该经过仔细分析，要有建立的依据。因为太多的索引与不充 分、不正确的索引对性能都毫无益处：在表上建立的每个索引都会增加存储开销，索引对于插入、删除、更新操作也会增加处理上的开销。 另外，过多的复合索引，在有单字段索引的情况下，一般都是没有存在价值的；相反，还会降低数据增加删除时的性能，特别是对频繁更新的表来说，负面影响更 大。<br />
            3 降龙十八掌</div>
            <div>第一掌 避免对列的操作<br />
            任何对列的操作都可能导致全表扫描，这里所谓的操作包括数据库函数、计算表达式等等，查询时要尽可能将操作移至等式的右边，甚至去掉函数。<br />
            例1：下列SQL条件语句中的列都建有恰当的索引，但30万行数据情况下执行速度却非常慢：<br />
            select * from record where substrb(CardNo,1,4)=&#8217;5378&#8242;(13秒)<br />
            select * from record where amount/30&lt; 1000（11秒）<br />
            select * from record where to_char(ActionTime,&#8217;yyyymmdd&#8217;)=&#8217;19991201&#8242;（10秒）<br />
            由于where子句中对列的任何操作结果都是在SQL运行时逐行计算得到的，因此它不得不进行表扫描，而没有使用该列上面的索引；如果这些结果在查询编译时就能得到，那么就可以被SQL优化器优化，使用索引，避免表扫描，因此将SQL重写如下：<br />
            select * from record where CardNo like &#8216;5378%&#8217;（&lt; 1秒）<br />
            select * from record where amount &lt; 1000*30（&lt; 1秒）<br />
            select * from record where ActionTime= to_date (&#8217;19991201&#8242; ,&#8217;yyyymmdd&#8217;)（&lt; 1秒）<br />
            差别是很明显的！</div>
            <div>第二掌 避免不必要的类型转换<br />
            需要注意的是，尽量避免潜在的数据类型转换。如将字符型数据与数值型数据比较，ORACLE会自动将字符型用to_number()函数进行转换，从而导致全表扫描。<br />
            例2：表tab1中的列col1是字符型（char)，则以下语句存在类型转换：<br />
            select col1,col2 from tab1 where col1&gt;10，<br />
            应该写为： select col1,col2 from tab1 where col1&gt;&#8217;10&#8242;。</div>
            <div>第三掌 增加查询的范围限制<br />
            增加查询的范围限制，避免全范围的搜索。<br />
            例3：以下查询表record 中时间ActionTime小于2001年3月1日的数据：<br />
            select * from record where ActionTime &lt; to_date (&#8217;20010301&#8242; ,&#8217;yyyymm&#8217;)<br />
            查询计划表明，上面的查询对表进行全表扫描，如果我们知道表中的最早的数据为2001年1月1日，那么，可以增加一个最小时间，使查询在一个完整的范围之内。修改如下： select * from record where<br />
            ActionTime &lt; to_date (&#8217;20010301&#8242; ,&#8217;yyyymm&#8217;)<br />
            and ActionTime &gt; to_date (&#8217;20010101&#8242; ,&#8217;yyyymm&#8217;)<br />
            后一种SQL语句将利用上ActionTime字段上的索引，从而提高查询效率。把&#8217;20010301&#8242;换成一个变量，根据取值的机率，可以有一半以上的 机会提高效率。同理，对于大于某个值的查询，如果知道当前可能的最大值，也可以在Where子句中加上 &#8220;AND 列名&lt; MAX(最大值)&#8221;。</div>
            <div>第四掌 尽量去掉&#8221;IN&#8221;、&#8221;OR&#8221;<br />
            含有&#8221;IN&#8221;、&#8221;OR&#8221;的Where子句常会使用工作表，使索引失效；如果不产生大量重复值，可以考虑把子句拆开；拆开的子句中应该包含索引。<br />
            例4： select count(*) from stuff where id_no in(&#8217;0&#8242;,&#8217;1&#8242;)（23秒）<br />
            可以考虑将or子句分开：<br />
            select count(*) from stuff where id_no=&#8217;0&#8242;<br />
            select count(*) from stuff where id_no=&#8217;1&#8242;<br />
            然后再做一个简单的加法，与原来的SQL语句相比，查询速度更快。</div>
            <div>第五掌 尽量去掉 &#8220;&lt;&gt;&#8221;<br />
            尽量去掉 &#8220;&lt;&gt;&#8221;，避免全表扫描，如果数据是枚举值，且取值范围固定，则修改为&#8221;OR&#8221;方式。<br />
            例5：<br />
            UPDATE SERVICEINFO SET STATE=0 WHERE STATE&lt;&gt;0;<br />
            以上语句由于其中包含了&#8221;&lt;&gt;&#8221;，执行计划中用了全表扫描（TABLE ACCESS FULL），没有用到state字段上的索引。实际应用中，由于业务逻辑的限制，字段state为枚举值，只能等于0，1或2，而且，值等于=1，2的很 少，因此可以去掉&#8221;&lt;&gt;&#8221;，利用索引来提高效率。<br />
            修改为：UPDATE SERVICEINFO SET STATE=0 WHERE STATE = 1 OR STATE = 2 。进一步的修改可以参考第4种方法。<br />
            第六掌 去掉Where子句中的IS NULL和IS NOT NULL<br />
            Where字句中的IS NULL和IS NOT NULL将不会使用索引而是进行全表搜索，因此需要通过改变查询方式，分情况讨论等方法，去掉Where子句中的IS NULL和IS NOT NULL。</div>
            <div>第七掌 索引提高数据分布不均匀时查询效率<br />
            索引的选择性低，但数据的值分布差异很大时，仍然可以利用索引提高效率。A、数据分布不均匀的特殊情况下，选择性不高的索引也要创建。<br />
            表ServiceInfo中数据量很大，假设有一百万行，其中有一个字段DisposalCourseFlag，取值范围为枚举值：[0，1，2，3， 4，5，6，7]。按照前面说的索引建立的规则，&#8220;选择性不高的字段不应该建立索引，该字段只有8种取值，索引值的重复率很高，索引选择性明显很低，因此 不建索引。然而，由于该字段上数据值的分布情况非常特殊，具体如下表：<br />
            取值范围 1~5 6 7<br />
            占总数据量的百分比 1% 98% 1%<br />
            而且，常用的查询中，查询DisposalCourseFlag&lt;6 的情况既多又频繁，毫无疑问，如果能够建立索引，并且被应用，那么将大大提高这种情况的查询效率。因此，我们需要在该字段上建立索引。</div>
            <div>第八掌 利用HINT强制指定索引<br />
            在ORACLE优化器无法用上合理索引的情况下，利用HINT强制指定索引。<br />
            继续上面7的例子，ORACLE缺省认定，表中列的值是在所有数据行中均匀分布的，也就是说，在一百万数据量下，每种 DisposalCourseFlag值各有12.5万数据行与之对应。假设SQL搜索条件DisposalCourseFlag=2，利用 DisposalCourseFlag列上的索引进行数据搜索效率，往往不比全表扫描的高，ORACLE因此对索引&#8220;视而不见&#8221;，从而在查询路径的选择 中，用其他字段上的索引甚至全表扫描。根据我们上面的分析，数据值的分布很特殊，严重的不均匀。为了利用索引提高效率，此时，一方面可以单独对该字段或该 表用analyze语句进行分析，对该列搜集足够的统计数据，使ORACLE在查询选择性较高的值时能用上索引；另一方面，可以利用HINT提示，在 SELECT关键字后面，加上&#8220;/*+ INDEX(表名称，索引名称）*/&#8221;的方式，强制ORACLE优化器用上该索引。<br />
            比如： select * from serviceinfo where DisposalCourseFlag=1 ;<br />
            上面的语句，实际执行中ORACLE用了全表扫描，加上蓝色提示部分后，用到索引查询。如下：<br />
            select /*+ INDEX(SERVICEINFO,IX_S_DISPOSALCOURSEFLAG) */ *<br />
            from serviceinfo where DisposalCourseFlag=1;<br />
            请注意，这种方法会加大代码维护的难度，而且该字段上索引的名称被改变之后，必须要同步所有指定索引的HINT代码，否则HINT提示将被ORACLE忽略掉。</div>
            <div>第九掌 屏蔽无用索引<br />
            继续上面8的例子，由于实际查询中，还有涉及到DisposalCourseFlag=6的查询，而此时如果用上该字段上的索引，将是非常不明智的，效率 也极低。因此这种情况下，我们需要用特殊的方法屏蔽该索引，以便ORACLE选择其他字段上的索引。比如，如果字段为数值型的就在表达式的字段名后，添加 &#8220;+ 0&#8221;，为字符型的就并上空串：&#8220;||&#8221;"&#8221;<br />
            如： select * from serviceinfo where DisposalCourseFlag+ 0 = 6 and workNo = &#8216;36&#8242; 。<br />
            不过，不要把该用的索引屏蔽掉了，否则同样会产生低效率的全表扫描。</div>
            <div>第十掌 分解复杂查询，用常量代替变量<br />
            对于复杂的Where条件组合，Where中含有多个带索引的字段，考虑用IF语句分情况进行讨论；同时，去掉不必要的外来参数条件，减低复杂度，以便在不同情况下用不同字段上的索引。<br />
            继续上面9的例子，对于包含<br />
            Where (DisposalCourseFlag &lt; v_DisPosalCourseFlag) or (v_DisPosalCourseFlag is null) and &#8230;.的查询，(这里v_DisPosalCourseFlag为一个输入变量，取值范围可能为[NULL，0，1，2，3，4，5，6，7])，可以 考虑分情况用IF语句进行讨论，类似：<br />
            IF v_DisPosalCourseFlag =1 THEN<br />
            Where DisposalCourseFlag = 1 and &#8230;.<br />
            ELSIF v_DisPosalCourseFlag =2 THEN<br />
            Where DisposalCourseFlag = 2 and &#8230;.<br />
            。。。。。。</div>
            <div>第十一掌 like子句尽量前端匹配<br />
            因为like参数使用的非常频繁，因此如果能够对like子句使用索引，将很高的提高查询的效率。<br />
            例6：select * from city where name like &#8216;%S%&#8217;<br />
            以上查询的执行计划用了全表扫描（TABLE ACCESS FULL），如果能够修改为：<br />
            select * from city where name like &#8216;S%&#8217;<br />
            那么查询的执行计划将会变成（INDEX RANGE SCAN），成功的利用了name字段的索引。这意味着Oracle SQL优化器会识别出用于索引的like子句，只要该查询的匹配端是具体值。因此我们在做like查询时，应该尽量使查询的匹配端是具体值，即使用 like &#8216;S%&#8217;。</div>
            <div>第十二掌 用Case语句合并多重扫描<br />
            我们常常必须基于多组数据表计算不同的聚集。例如下例通过三个独立查询：<br />
            例8：1）select count(*) from emp where sal&lt;1000;<br />
            2）select count(*) from emp where sal between 1000 and 5000;<br />
            3）select count(*) from emp where sal&gt;5000;<br />
            这样我们需要进行三次全表查询，但是如果我们使用case语句：<br />
            select<br />
            count (sale when sal &lt;1000<br />
            then 1 else null end) count_poor,<br />
            count (sale when between 1000 and 5000<br />
            then 1 else null end) count_blue_collar,<br />
            count (sale when sal &gt;5000<br />
            then 1 else null end) count_poor<br />
            from emp;<br />
            这样查询的结果一样，但是执行计划只进行了一次全表查询。</div>
            <div>第十三掌 使用nls_date_format<br />
            例9：<br />
            select * from record where to_char(ActionTime,&#8217;mm&#8217;)=&#8217;12&#8242;<br />
            这个查询的执行计划将是全表查询，如果我们改变nls_date_format，<br />
            SQL&gt;alert session set nls_date_formate=&#8217;MM&#8217;;<br />
            现在重新修改上面的查询：<br />
            select * from record where ActionTime=&#8217;12&#8242;<br />
            这样就能使用actiontime上的索引了，它的执行计划将是（INDEX RANGE SCAN）。</div>
            <div>第十四掌 使用基于函数的索引<br />
            前面谈到任何对列的操作都可能导致全表扫描，例如：<br />
            select * from emp where substr(ename,1,2)=&#8217;SM&#8217;;<br />
            但是这种查询在客服系统又经常使用，我们可以创建一个带有substr函数的基于函数的索引，<br />
            create index emp_ename_substr on eemp ( substr(ename,1,2) );</div>
            <div>这样在执行上面的查询语句时，这个基于函数的索引将排上用场，执行计划将是（INDEX RANGE SCAN）。</div>
            <div>第十五掌 基于函数的索引要求等式匹配<br />
            上面的例子中，我们创建了基于函数的索引，但是如果执行下面的查询：<br />
            select * from emp where substr(ename,1,1)=&#8217;S&#8217;<br />
            得到的执行计划将还是（TABLE ACCESS FULL），因为只有当数据列能够等式匹配时，基于函数的索引才能生效，这样对于这种索引的计划和维护的要求都很高。请注意，向表中添加索引是非常危险的 操作，因为这将导致许多查询执行计划的变更。然而，如果我们使用基于函数的索引就不会产生这样的问题，因为Oracle只有在查询使用了匹配的内置函数时 才会使用这种类型的索引。</div>
            <div>第十六掌 使用分区索引<br />
            在用分析命令对分区索引进行分析时，每一个分区的数据值的范围信息会放入Oracle的数据字典中。Oracle可以利用这个信息来提取出那些只与SQL查询相关的数据分区。<br />
            例如，假设你已经定义了一个分区索引，并且某个SQL语句需要在一个索引分区中进行一次索引扫描。Oracle会仅仅访问这个索引分区，而且会在这个分区上调用一个此索引范围的快速全扫描。因为不需要访问整个索引，所以提高了查询的速度。</div>
            <div>第十七掌 使用位图索引<br />
            位图索引可以从本质上提高使用了小于1000个唯一数据值的数据列的查询速度，因为在位图索引中进行的检索是在RAM中完成的，而且也总是比传统的B树索引的速度要快。对于那些少于1000个唯一数据值的数据列建立位图索引，可以使执行效率更快。</div>
            <div>第十八掌 决定使用全表扫描还是使用索引<br />
            和所有的秘笈一样，最后一招都会又回到起点，最后我们来讨论一下是否需要建立索引，也许进行全表扫描更快。在大多数情况下，全表扫描可能会导致更多的物理 磁盘输入输出，但是全表扫描有时又可能会因为高度并行化的存在而执行的更快。如果查询的表完全没有顺序，那么一个要返回记录数小于10％的查询可能会读取 表中大部分的数据块，这样使用索引会使查询效率提高很多。但是如果表非常有顺序，那么如果查询的记录数大于40％时，可能使用全表扫描更快。因此，有一个 索引范围扫描的总体原则是：<br />
            1）对于原始排序的表 仅读取少于表记录数40％的查询应该使用索引范围扫描。反之，读取记录数目多于表记录数的40％的查询应该使用全表扫描。<br />
            2）对于未排序的表 仅读取少于表记录数7％的查询应该使用索引范围扫描。反之，读取记录数目多于表记录数的7％的查询应该使用全表扫描。</div>
            <div>4 总结<br />
            以上的招式，是完全可以相互结合同时运用的。而且各种方法之间相互影响，紧密联系。这种联系既存在一致性，也可能带来冲突，当冲突发生时，需要根据实际情况进行选择，没有固定的模式。最后决定SQL优化功力的因素就是对ORACLE内功的掌握程度了。<br />
            另外，值得注意的是：随着时间的推移和数据的累计与变化，ORACLE对SQL语句的执行计划也会改变，比如：基于代价的优化方法，随着数据量的增大，优 化器可能错误的不选择索引而采用全表扫描。这种情况可能是因为统计信息已经过时，在数据量变化很大后没有及时分析表；但如果对表进行分析之后，仍然没有用 上合理的索引，那么就有必要对SQL语句用HINT提示，强制用合理的索引。但这种HINT提示也不能滥用，因为这种方法过于复杂，缺乏通用性和应变能 力，同时也增加了维护上的代价；相对来说，基于函数右移、去掉&#8220;IN ，OR ，&lt;&gt; ，IS NOT NULL &#8221;、分解复杂的SQL语句等等方法，却是&#8220;放之四海皆准&#8221;的，可以放心大胆的使用。<br />
            同时，优化也不是&#8220;一劳永逸&#8221;的，必须随着情况的改变进行相应的调整。当数据库设计发生变化，包括更改表结构：字段和索引的增加、删除或改名等；业务逻辑发生变化：如查询方式、取值范围发生改变等等。在这种情况下，也必须对原有的优化进行调整，以适应效率上的需求。</div>
            </div>
            </td>
        </tr>
    </tbody>
</table>
<img src ="http://www.blogjava.net/badboyryan/aggbug/256776.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/badboyryan/" target="_blank">坏男孩</a> 2009-02-26 11:31 <a href="http://www.blogjava.net/badboyryan/archive/2009/02/26/256776.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>解决weblogic9.2连接oracle10G数据源创建慢的问题</title><link>http://www.blogjava.net/badboyryan/archive/2009/02/26/256774.html</link><dc:creator>坏男孩</dc:creator><author>坏男孩</author><pubDate>Thu, 26 Feb 2009 03:25:00 GMT</pubDate><guid>http://www.blogjava.net/badboyryan/archive/2009/02/26/256774.html</guid><wfw:comment>http://www.blogjava.net/badboyryan/comments/256774.html</wfw:comment><comments>http://www.blogjava.net/badboyryan/archive/2009/02/26/256774.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/badboyryan/comments/commentRss/256774.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/badboyryan/services/trackbacks/256774.html</trackback:ping><description><![CDATA[问题描述：<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 数据库配置：&nbsp;&nbsp;&nbsp;&nbsp; oracle 10g数据库内存有8G，操作系统是windows2003Server<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; weblogic 9.2启动服务的时候需要初始化申请70个连接<br />
&nbsp;&nbsp;&nbsp;&nbsp; 需要时间接近15秒一个连接。所以接近17分钟才启动服务器？<br />
<br />
问题解决：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在weblogic所在的机器上编辑<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C:\WINDOWS\system32\drivers\etc\hosts<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 加入服务器的IP地址和计算机名；<br />
<br />
这样就解决问题了，修改后启动weblogic的服务时间也就十几秒了；；<br />
<img src ="http://www.blogjava.net/badboyryan/aggbug/256774.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/badboyryan/" target="_blank">坏男孩</a> 2009-02-26 11:25 <a href="http://www.blogjava.net/badboyryan/archive/2009/02/26/256774.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oracle数据库自动备份的批处理</title><link>http://www.blogjava.net/badboyryan/archive/2008/10/06/232632.html</link><dc:creator>坏男孩</dc:creator><author>坏男孩</author><pubDate>Mon, 06 Oct 2008 04:07:00 GMT</pubDate><guid>http://www.blogjava.net/badboyryan/archive/2008/10/06/232632.html</guid><wfw:comment>http://www.blogjava.net/badboyryan/comments/232632.html</wfw:comment><comments>http://www.blogjava.net/badboyryan/archive/2008/10/06/232632.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/badboyryan/comments/commentRss/232632.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/badboyryan/services/trackbacks/232632.html</trackback:ping><description><![CDATA[@echo off <br />
set /a Hyear=%date:~0,4%<br />
set /a Hmonth1=%date:~5,1%<br />
set /a Hmonth2=%date:~6,1%<br />
set /a Hmonth=%Hmonth1%*10+%Hmonth2%<br />
set /a Hdate1=%date:~8,1%<br />
set /a Hdate2=%date:~9,1%<br />
set /a Hdate=%Hdate1%*10+%Hdate2%<br />
exp userid=sdfdafs/sdfdafs file=scf%Hdate%.dmp <br />
这样的话只保存一个月的数据
<img src ="http://www.blogjava.net/badboyryan/aggbug/232632.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/badboyryan/" target="_blank">坏男孩</a> 2008-10-06 12:07 <a href="http://www.blogjava.net/badboyryan/archive/2008/10/06/232632.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Linux上面安装oracle11g的全过程</title><link>http://www.blogjava.net/badboyryan/archive/2008/05/28/203558.html</link><dc:creator>坏男孩</dc:creator><author>坏男孩</author><pubDate>Wed, 28 May 2008 08:36:00 GMT</pubDate><guid>http://www.blogjava.net/badboyryan/archive/2008/05/28/203558.html</guid><wfw:comment>http://www.blogjava.net/badboyryan/comments/203558.html</wfw:comment><comments>http://www.blogjava.net/badboyryan/archive/2008/05/28/203558.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/badboyryan/comments/commentRss/203558.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/badboyryan/services/trackbacks/203558.html</trackback:ping><description><![CDATA[<p>&nbsp;&nbsp; Linux上面安装oracle11g的全过程</p>
<p>纯粹技术与政治无关：小布老师的视频讲的真不错，总结一下供以后参考</p>
<p>&nbsp;&nbsp; -------------------------------------------------------------------------</p>
<p>一、安装centos4.4版本<br />
&nbsp;&nbsp;&nbsp; 1、安装centos的时候开始输入i586应用一些新功能；<br />
&nbsp;&nbsp;&nbsp; 2、分区swap分区是内存的2倍<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; / ext3 选择fill to maximum allowable size<br />
&nbsp;&nbsp;&nbsp; 3、设置一个固定的IP地址<br />
&nbsp;&nbsp;&nbsp; 4、不要启用防火墙<br />
&nbsp;&nbsp;&nbsp; 5、注意在选择组件的时候选择上develop tools 和legacy software develop<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 安装oracle需要安装开发环境<br />
&nbsp;&nbsp;&nbsp; 6、图形声音、打印等不要选择<br />
二、查看linux里面的包是否全支持oracle11g否<br />
&nbsp;&nbsp;&nbsp; binutils-2.15.92.0.2-18<br />
&nbsp;&nbsp;&nbsp; compat-libstdc++-33.2.3-47.3<br />
&nbsp;&nbsp;&nbsp; glibc-2.3.4-2.19<br />
&nbsp;&nbsp;&nbsp; glibc-common-2.3.4-2.19<br />
&nbsp;&nbsp;&nbsp; glibc-devel-2.3.4-2.19<br />
&nbsp;&nbsp;&nbsp; glibc-headers-2.3.4-2.19<br />
&nbsp;&nbsp;&nbsp; gcc-3.4.5-2<br />
&nbsp;&nbsp;&nbsp; gcc-c++-3.4.5-2<br />
&nbsp;&nbsp;&nbsp; libgcc-3.4.5<br />
&nbsp;&nbsp;&nbsp; libstdc++-3.4.5-2<br />
&nbsp;&nbsp;&nbsp; libstdc++-devel-3.4.5-2<br />
&nbsp;&nbsp;&nbsp; make-3.80-5<br />
&nbsp;&nbsp;&nbsp; sysstat-5.0.5<br />
&nbsp;&nbsp;&nbsp; ----------------------------<br />
&nbsp;&nbsp;&nbsp; unixODBC-2.2.11<br />
&nbsp;&nbsp;&nbsp; unixODBC-devel-2.2.11<br />
&nbsp;&nbsp;&nbsp; libaio-devel-0.3.105-2<br />
&nbsp;&nbsp;&nbsp; libaio-0.3.105-2<br />
&nbsp;&nbsp;&nbsp; elfutils-libelf-0.97-5<br />
&nbsp;&nbsp;&nbsp; elfutils-libelf-devel-0.97-5<br />
&nbsp;&nbsp;&nbsp; 必须的rpm<br />
&nbsp;&nbsp;&nbsp; 用这个命令查找&nbsp;&nbsp; rpm -qa | grep<br />
&nbsp;&nbsp;&nbsp; 没有就从安装包里面找发现下面的6个默认没有装好需要自己安装；<br />
&nbsp;&nbsp;&nbsp; 有一个包里面都是从centos里面取出来的<br />
&nbsp;&nbsp;&nbsp; 把这些包放到root的目录下面进行安装<br />
&nbsp;&nbsp;&nbsp; 算了我把包整理了一下上传到csdn，不过是为了增加点积分而已总共1.7M左右。<br />
&nbsp;&nbsp;&nbsp; 下载地址：http://download.csdn.net/source/471808<br />
三、修改内核的参数</p>
<p>&nbsp;&nbsp;&nbsp; 参照oracle在linux下的安装文档进行大体如下：<br />
&nbsp;&nbsp;&nbsp; 1、vi /etc/sysctl.conf<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kernel.shmall = 2097152<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kernel.shmmax = 2147483648<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kernel.shmmni = 4096<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; kernel.sem = 250 32000 100 128<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fs.file-max = 65536<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; net.ipv4.ip_local_port_range = 1024 65000<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; net.core.rmem_default = 4194304<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; net.core.rmem_max = 4194304<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; net.core.wmem_default = 262144<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; net.core.wmem_max = 262144<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 执行这个使生效；<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /sbin/sysctl -p<br />
&nbsp;&nbsp;&nbsp; 2、vi /etc/security/limits.conf<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; oracle&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; soft&nbsp;&nbsp;&nbsp; nproc&nbsp;&nbsp; 2047<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; oracle&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hard&nbsp;&nbsp;&nbsp; nproc&nbsp;&nbsp; 16384<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; oracle&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; soft&nbsp;&nbsp;&nbsp; nofile&nbsp; 1024<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; oracle&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hard&nbsp;&nbsp;&nbsp; nofile&nbsp; 65536<br />
&nbsp;&nbsp;&nbsp; 3、vi /etc/pam.d/login<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; session&nbsp;&nbsp;&nbsp; required&nbsp;&nbsp;&nbsp;&nbsp; /lib/security/pam_limits.so<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; session&nbsp;&nbsp;&nbsp; required&nbsp;&nbsp;&nbsp;&nbsp; pam_limits.so<br />
&nbsp;&nbsp;&nbsp; 4、vi /etc/profile<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if [ $USER = "oracle" ]; then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if [ $SHELL = "/bin/ksh" ]; then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ulimit -p 16384<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ulimit -n 65536<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ulimit -u 16384 -n 65536<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fi<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; fi<br />
四、创建ORACLE安装的组和用户<br />
&nbsp;&nbsp;&nbsp; groupadd oinstall<br />
&nbsp;&nbsp;&nbsp; groupadd dba<br />
&nbsp;&nbsp;&nbsp; mkdir /u01/oracle<br />
&nbsp;&nbsp;&nbsp; useradd -g oinstall -G dba -d /u01/oracle oracle<br />
&nbsp;&nbsp;&nbsp; passwd oracle <br />
&nbsp;&nbsp;&nbsp; chown -R oracle:oinstall u01<br />
&nbsp;&nbsp;&nbsp; id nobody确认nobody用户存在</p>
<p>五、设置ORACLE的环境变量</p>
<p>&nbsp;&nbsp; 用oracle的用户登录系统，然后<br />
&nbsp;&nbsp; vi&nbsp; .bash_profile<br />
&nbsp; 加入<br />
&nbsp; oracle_base=/u01<br />
&nbsp; oracle_home=$oracle_base/bin<br />
&nbsp; oracle_sid=chinantn<br />
&nbsp; path=$path:$oracle_home/bin<br />
&nbsp; export oracle_base oracle_home oracle_sid path<br />
&nbsp; 注意=号两边不要有空格；<br />
六、开始安装<br />
&nbsp;&nbsp; 1、unzip linux oracle11.zip<br />
&nbsp;&nbsp; 2、mv database /u01<br />
&nbsp;&nbsp; 3、chown -R oracle:oinstall database/<br />
&nbsp;&nbsp; 4、startx<br />
&nbsp;&nbsp; 5、 用oracle用户登录<br />
&nbsp;&nbsp; 6、进入终端，cd database<br />
&nbsp;&nbsp; 7、./runInstaller<br />
&nbsp;&nbsp; 8、vi /etc/hosts 加入ip 你的计算机名<br />
&nbsp;&nbsp; 9、安装完后root执行两个脚本<br />
&nbsp;&nbsp; 10、只安装软件<br />
&nbsp;&nbsp; 11、netca&nbsp; dbca设置侦听和创建数据库注意选择unicode字符集。&nbsp;&nbsp; <br />
上面的过程亲自试验成功。oracle11g+centos 4.4 <br />
实在不行就qq：147863130 吧山东济南的ORACLE用户多联系啊<br />
记得转载的时候写上来源:http://blogjava.net/badboyryan<br />
安装的时候第一步弹出一个错误，点确认后修改一下目录/u01/</p>
<p>&nbsp;</p>
<img src ="http://www.blogjava.net/badboyryan/aggbug/203558.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/badboyryan/" target="_blank">坏男孩</a> 2008-05-28 16:36 <a href="http://www.blogjava.net/badboyryan/archive/2008/05/28/203558.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oracle 11g 在 windows xp 上启动不了dbconsole</title><link>http://www.blogjava.net/badboyryan/archive/2008/05/27/203236.html</link><dc:creator>坏男孩</dc:creator><author>坏男孩</author><pubDate>Tue, 27 May 2008 07:31:00 GMT</pubDate><guid>http://www.blogjava.net/badboyryan/archive/2008/05/27/203236.html</guid><wfw:comment>http://www.blogjava.net/badboyryan/comments/203236.html</wfw:comment><comments>http://www.blogjava.net/badboyryan/archive/2008/05/27/203236.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/badboyryan/comments/commentRss/203236.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/badboyryan/services/trackbacks/203236.html</trackback:ping><description><![CDATA[<p>C:\Documents and Settings\scf&gt;set oracle_sid<br />
环境变量 oracle_sid 没有定义</p>
<p>C:\Documents and Settings\scf&gt;set ORACLE_SID=chinantn</p>
<p>C:\Documents and Settings\scf&gt;set oracle_sid<br />
ORACLE_SID=chinantn</p>
<p>C:\Documents and Settings\scf&gt;emctl start dbconsole<br />
Oracle Enterprise Manager 11g Database Control Release 11.1.0.6.0<br />
Copyright (c) 1996, 2007 Oracle Corporation.&nbsp; All rights reserved.<br />
https://ntscf:1158/em/console/aboutApplication<br />
Starting Oracle Enterprise Manager 11g Database Control ...OracleDBConsolechinan<br />
tn 服务正在启动 ................................................................<br />
...<br />
OracleDBConsolechinantn 服务已经启动成功。</p>
<p><a href="https://ntscf:1158/em">https://ntscf:1158/em</a></p>
<p>可以使用web版本的oem了；支持web管理比较好用。</p>
<p>&nbsp;</p>
<img src ="http://www.blogjava.net/badboyryan/aggbug/203236.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/badboyryan/" target="_blank">坏男孩</a> 2008-05-27 15:31 <a href="http://www.blogjava.net/badboyryan/archive/2008/05/27/203236.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oracle oem主机身份证明</title><link>http://www.blogjava.net/badboyryan/archive/2008/05/06/198759.html</link><dc:creator>坏男孩</dc:creator><author>坏男孩</author><pubDate>Tue, 06 May 2008 09:31:00 GMT</pubDate><guid>http://www.blogjava.net/badboyryan/archive/2008/05/06/198759.html</guid><wfw:comment>http://www.blogjava.net/badboyryan/comments/198759.html</wfw:comment><comments>http://www.blogjava.net/badboyryan/archive/2008/05/06/198759.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/badboyryan/comments/commentRss/198759.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/badboyryan/services/trackbacks/198759.html</trackback:ping><description><![CDATA[<p>oracle 11g的web database control中，进行一些操作需要主机身份证明,比如进行数据备份、数据的导出导入等;<br />
这样对于数据库的安全增强了一定的保证。如果我们有进行适当的配置，可以第一次会遇到一些错误：<br />
验证错误 <br />
请检查并更正以下错误, 然后重试该操作: <br />
Error - 错误: 用户名和/或口令无效<br />
&nbsp;&nbsp; 所以此时我们需要进行简单的配置：<br />
&nbsp;&nbsp; 1、从开始设置——控制面板——管理工具 找到本地安全策略<br />
&nbsp;&nbsp; 2、打开本地安全策略,找到本地策略<br />
&nbsp;&nbsp; 3、打开其中的用户权限分配（user rights assignment）<br />
&nbsp;&nbsp; 4、在右边的列表中找到&#8220;以批量任务登录&#8221;（log on as a batch job）<br />
&nbsp;&nbsp; 5、选中，点击右键，选择属性，将数据库安装的所在操作系统用户，添加其中即可<br />
&nbsp;&nbsp; 6、然后应用、确定。<br />
&nbsp;&nbsp; 7、下次就使用安装<strong style="color: black; background-color: #ffff66">oracle</strong>的os用户及相应的口令进行主机身份证明。<br />
<br />
另外注意：oracle11g里面的创建表空间用system用户登陆后找到服务器标签；<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 创建用户也在服务器标签；</p>
转载：http://hi.baidu.com/eng21/blog/item/f2265430edb0449aa9018ed3.html
<img src ="http://www.blogjava.net/badboyryan/aggbug/198759.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/badboyryan/" target="_blank">坏男孩</a> 2008-05-06 17:31 <a href="http://www.blogjava.net/badboyryan/archive/2008/05/06/198759.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>应用程序后台抛错ORA-01536 超出表空间'ts'的空间限量 </title><link>http://www.blogjava.net/badboyryan/archive/2008/03/20/187438.html</link><dc:creator>坏男孩</dc:creator><author>坏男孩</author><pubDate>Thu, 20 Mar 2008 03:24:00 GMT</pubDate><guid>http://www.blogjava.net/badboyryan/archive/2008/03/20/187438.html</guid><wfw:comment>http://www.blogjava.net/badboyryan/comments/187438.html</wfw:comment><comments>http://www.blogjava.net/badboyryan/archive/2008/03/20/187438.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/badboyryan/comments/commentRss/187438.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/badboyryan/services/trackbacks/187438.html</trackback:ping><description><![CDATA[<p>感觉这个是oracle对用户在表空间上做的一个限制，需要把这个限制去掉就可以了。<br />
<br />
SQL&gt; conn <a href="mailto:sys/pwd@con">sys/pwd@con</a> as sysdba;<br />
已连接。<br />
SQL&gt; alter user user QUOTA UNLIMITED&nbsp; ON&nbsp; ts;</p>
<p>用户已更改。</p>
<p>SQL&gt; commit;</p>
<p>提交完成。</p>
<p>SQL&gt;</p>
<img src ="http://www.blogjava.net/badboyryan/aggbug/187438.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/badboyryan/" target="_blank">坏男孩</a> 2008-03-20 11:24 <a href="http://www.blogjava.net/badboyryan/archive/2008/03/20/187438.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ORACLE 默认编码  GBK -UTF8编码</title><link>http://www.blogjava.net/badboyryan/archive/2008/02/03/179122.html</link><dc:creator>坏男孩</dc:creator><author>坏男孩</author><pubDate>Sun, 03 Feb 2008 02:28:00 GMT</pubDate><guid>http://www.blogjava.net/badboyryan/archive/2008/02/03/179122.html</guid><wfw:comment>http://www.blogjava.net/badboyryan/comments/179122.html</wfw:comment><comments>http://www.blogjava.net/badboyryan/archive/2008/02/03/179122.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/badboyryan/comments/commentRss/179122.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/badboyryan/services/trackbacks/179122.html</trackback:ping><description><![CDATA[<p>查看oracle数据库字符集：<br />
select userenv('language') from dual;<br />
<br />
&nbsp;<br />
<br />
SQL&gt; shutdown immediate<br />
Database closed.<br />
Database dismounted.<br />
ORACLE instance shut down.<br />
SQL&gt; startup mount<br />
ORACLE instance started.</p>
<p>Total System Global Area&nbsp; 135337420 bytes<br />
Fixed Size&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 452044 bytes<br />
Variable Size&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 109051904 bytes<br />
Database Buffers&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 25165824 bytes<br />
Redo Buffers&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 667648 bytes<br />
Database mounted.</p>
<p>SQL&gt; ALTER SYSTEM ENABLE RESTRICTED SESSION;</p>
<p>System altered.</p>
<p>SQL&gt; ALTER SYSTEM SET JOB_QUEUE_PROCESSES=0;</p>
<p>System altered.</p>
<p>SQL&gt; ALTER SYSTEM SET AQ_TM_PROCESSES=0;</p>
<p>System altered.</p>
<p>SQL&gt; ALTER DATABASE OPEN;</p>
<p>Database altered.</p>
<p>SQL&gt;alter database character set INTERNAL_USE UTF8<br />
<br />
<br />
或者<br />
SQL&gt; alter database character set zhs16gbk<br />
&nbsp; 2&nbsp; ;<br />
alter database character set zhs16gbk<br />
*<br />
第 1 行出现错误:<br />
ORA-12716: ??? CLOB ???, ?? ALTER DATABASE CHARACTER SET<br />
&nbsp;<span class="kwrd">alter</span> <span class="kwrd">database</span> <span class="kwrd">character</span> <span class="kwrd">set</span> internal_convert zhs16gbk;</p>
<img src ="http://www.blogjava.net/badboyryan/aggbug/179122.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/badboyryan/" target="_blank">坏男孩</a> 2008-02-03 10:28 <a href="http://www.blogjava.net/badboyryan/archive/2008/02/03/179122.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>将 图片 文件存储到 Oracle 的存储过程用的外部BLOB的方式</title><link>http://www.blogjava.net/badboyryan/archive/2007/08/19/137896.html</link><dc:creator>坏男孩</dc:creator><author>坏男孩</author><pubDate>Sat, 18 Aug 2007 22:29:00 GMT</pubDate><guid>http://www.blogjava.net/badboyryan/archive/2007/08/19/137896.html</guid><wfw:comment>http://www.blogjava.net/badboyryan/comments/137896.html</wfw:comment><comments>http://www.blogjava.net/badboyryan/archive/2007/08/19/137896.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/badboyryan/comments/commentRss/137896.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/badboyryan/services/trackbacks/137896.html</trackback:ping><description><![CDATA[测试环境: Win2000 + Oracle92<br /><br />        一个存储图片文件的过程，任何开发工具都可以通过调用过程把图片文存储到数据库中。<br />详细步骤：<br />SQL&gt; connect <a href="mailto:chanet/chanet@oradb">chanet/chanet@oradb</a>;<br />已连接。<br /><br />SQL&gt; CREATE TABLE IMAGE_LOB (T_ID VARCHAR2 (5) NOT NULL,T_IMAGE BLOB NOT NULL);<br />表已创建。<br />SQL&gt; CREATE OR REPLACE DIRECTORY IMAGES AS 'C:\Oracle'; --图片目录<br />目录已创建。<br />SQL&gt; CREATE OR REPLACE PROCEDURE IMG_INSERT (TID VARCHAR2,FILENAME VARCHAR2) AS<br />  2    F_LOB BFILE;<br />  3    B_LOB BLOB;<br />  4  BEGIN<br />  5    INSERT INTO IMAGE_LOB (T_ID, T_IMAGE)<br />  6      VALUES (TID,EMPTY_BLOB ()) RETURN T_IMAGE INTO B_LOB;<br />  7    F_LOB:= BFILENAME ('IMAGES', FILENAME);<br />  8    DBMS_LOB.FILEOPEN (F_LOB, DBMS_LOB.FILE_READONLY);<br />  9    DBMS_LOB.LOADFROMFILE (B_LOB, F_LOB,<br /> 10    DBMS_LOB.GETLENGTH (F_LOB));<br /> 11    DBMS_LOB.FILECLOSE (F_LOB);<br /> 12    COMMIT;<br /> 13  END;<br /> 14  /<br />过程已创建。<br />SQL&gt; EXEC IMG_INSERT('1','f_TEST.jpg');<br />PL/SQL 过程已成功完成。<img src ="http://www.blogjava.net/badboyryan/aggbug/137896.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/badboyryan/" target="_blank">坏男孩</a> 2007-08-19 06:29 <a href="http://www.blogjava.net/badboyryan/archive/2007/08/19/137896.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ODAC 应用技巧 （二）使用 BLOB 及 CLOB 数据类型 </title><link>http://www.blogjava.net/badboyryan/archive/2007/08/18/137817.html</link><dc:creator>坏男孩</dc:creator><author>坏男孩</author><pubDate>Sat, 18 Aug 2007 07:07:00 GMT</pubDate><guid>http://www.blogjava.net/badboyryan/archive/2007/08/18/137817.html</guid><wfw:comment>http://www.blogjava.net/badboyryan/comments/137817.html</wfw:comment><comments>http://www.blogjava.net/badboyryan/archive/2007/08/18/137817.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/badboyryan/comments/commentRss/137817.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/badboyryan/services/trackbacks/137817.html</trackback:ping><description><![CDATA[
		<p align="left">
				<b>使用 BLOB 及 CLOB 数据类型</b>
		</p>
		<p align="left">
				<u>
						<font color="#0000ff">转：<a href="http://blog.csdn.net/nxyc_twz/archive/2004/06/16/16061.aspx">http://blog.csdn.net/nxyc_twz/archive/2004/06/16/16061.aspx</a></font>
				</u>
				<br />ODAC 组件支持 Oracle 8 的 BLOB 和 CLOB 数据类型。你可以使用 TOraQuery 组件来获取 LOB 字段的值，使用同样的方法，你也可以获取  LONG 或 LONG ROW 字段。 当你需要使用 SQL DML 及 PL/SQL 语句存取这些字段时，你就会发现 LOB 数据类型的用法有明显的不同。<br />BLOB 和 CLOB 数据类型通过 LOB 定位器(指定数据地址) 存储在表列中；实际的 BLOB 和 CLOB 数据存储在独立的表空间中。与之不同的是，LONG 或 LONG RAW 类型存储在数据库中，表中存放着它们的实际值。<br /><br />当存取 LOB 列时，返回的是定位器，而不像 LONG 或 LONG RAW 数据类型那样返回它的实际值。 <br />例如，分析这个表的定义：<br /><br />CREATE TABLE ClobTable (<br />Id NUMBER,<br />Name VARCHAR2(30),<br />Value CLOB<br />)<br /><br />如果我们不通过值参数初始化 LOB 定位器， Oracle 将不允许使用下面的语句来更新数据表：<br /><br />UPDATE ClobTable<br />SET<br />Name = :Name,<br />Value = :Value<br /><br />WHERE<br />Id = :Id<br /><br />要初始化 LOB 定位器，你必须使用 EMPTY_BLOB 或 EMPTY_CLOB Oracle 函数。要返回初始化后的定位器，应在同样的语句中使用 RETURNING 子句。例如：<br /><br />UPDATE ClobTable<br />SET<br />Name = :Name,<br />Value = EMPTY_CLOB()<br />WHERE<br />Id = :Id<br />RETURNING<br />Value<br />INTO<br />:Value<br /><br />ODAC 写 LOB 数据到 Oracle 且返回初始值字段，需使用：值参数。<br />存储过程允许自动初始化 LOB 值，方法如下：<br /><br />CREATE OR REPLACE<br />PROCEDURE ClobTableUpdate (p_Id NUMBER, p_Name VARCHAR2,<br />p_Value OUT CLOB)<br />is<br />begin<br />UPDATE ClobTable<br />SET <br />Name = p_Name,<br />Value = EMPTY_CLOB()<br />WHERE<br />Id = p_Id<br />RETURNING<br />Value<br />INTO<br />p_Value;<br />end;<br /><br />注意：值参数被声明为 OUT。同时，设置 LOB 数据类型的参数的 ParamType 属性为 ptInput ，且指定它到所需的数据前来实际调用存储过程。我们可以这样调用前面声明的存储过程：<br /><br />OraStroredProc1.StoredProcName := 'ClobTableUpdate';<br />OraStroredProc1.Prepare;<br />OraStroredProc1.ParamByName('p_Id').AsInteger := Id;<br />OraStroredProc1.ParamByName('p_Name').AsString := Name;<br />OraStroredProc1.ParamByName('Value').ParamType := ptInput;<br />OraStroredProc1.ParamByName('Value').AsCLOBLocator.<br />LoadFromFile(FileName);<br />OraStroredProc1.Execute;<br /><br />对 ODAC 来说，在 LOB 操作中使用 ParamType 属性是非常重要的。如果 ParamType 是 ptInput ， ODAC 写数据到服务器，如果 ParamType 是 ptOutput，它则读取数据。<br /><br />你可以使用 LOB 参数的 dtBlob 和 dtMemo 数据类型来编写普通的 DML 语句。在这种情况下， Oracle 自动将 LONG 和 LONG ROW 类型的值转换为 CLOB 或 BLOB 数据。<br /><br /><a href="http://support.microsoft.com/kb/322796/en-us">http://support.microsoft.com/kb/322796/en-us</a><br /></p>
<img src ="http://www.blogjava.net/badboyryan/aggbug/137817.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/badboyryan/" target="_blank">坏男孩</a> 2007-08-18 15:07 <a href="http://www.blogjava.net/badboyryan/archive/2007/08/18/137817.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>