??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲高清在线一区,在线中文字幕资源,91网站在线播放http://www.aygfsteel.com/keweibo/category/25620.html<script async src="http://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <!-- iteye 460 60 --> <ins class="adsbygoogle" style="display:inline-block;width:468px;height:60px" data-ad-client="ca-pub-2876867208357149" data-ad-slot="0418982663"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> zh-cnSun, 20 Sep 2015 07:51:39 GMTSun, 20 Sep 2015 07:51:39 GMT60ORA-54033 要修改的列由某个虚拟表达式?/title><link>http://www.aygfsteel.com/keweibo/articles/427353.html</link><dc:creator>Ke</dc:creator><author>Ke</author><pubDate>Wed, 16 Sep 2015 06:30:00 GMT</pubDate><guid>http://www.aygfsteel.com/keweibo/articles/427353.html</guid><wfw:comment>http://www.aygfsteel.com/keweibo/comments/427353.html</wfw:comment><comments>http://www.aygfsteel.com/keweibo/articles/427353.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/keweibo/comments/commentRss/427353.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/keweibo/services/trackbacks/427353.html</trackback:ping><description><![CDATA[<em style="text-transform: none; background-color: rgb(254,254,254); text-indent: 0px; font: 14px/21px 'Helvetica Neue', Helvetica, Tahoma, Arial, STXihei, 'Microsoft YaHei', 微Y雅黑, sans-serif; white-space: normal; float: left; letter-spacing: normal; color: rgb(153,153,153); word-spacing: 0px; -webkit-text-stroke-width: 0px">原文</em><span style="text-transform: none; background-color: rgb(254,254,254); text-indent: 0px; display: inline !important; font: 14px/21px 'Helvetica Neue', Helvetica, Tahoma, Arial, STXihei, 'Microsoft YaHei', 微Y雅黑, sans-serif; white-space: normal; float: none; letter-spacing: normal; color: rgb(153,153,153); word-spacing: 0px; -webkit-text-stroke-width: 0px"> <span id="wmqeeuq" class="Apple-converted-space"> </span></span><a style="text-transform: none; background-color: rgb(254,254,254); text-indent: 0px; text-overflow: ellipsis; display: inline-block; font: 14px/21px 'Helvetica Neue', Helvetica, Tahoma, Arial, STXihei, 'Microsoft YaHei', 微Y雅黑, sans-serif; max-width: 69%; white-space: nowrap; letter-spacing: normal; color: rgb(51,51,51); overflow: hidden; word-spacing: 0px; text-decoration: none; -webkit-text-stroke-width: 0px; transition: 0.25s; -webkit-transition: 0.25s" class="cut cut70" >http://blogs.oracle.com/sql/entry/ora_54033_and_the_hidden</a><br /><br /> <p style="text-transform: none; background-color: rgb(254,254,254); text-indent: 1em; margin: 0px 0px 0.75em; font: 16px/27px 'Helvetica Neue', Helvetica, Tahoma, Arial, STXihei, 'Microsoft YaHei', 微Y雅黑, sans-serif; white-space: normal; letter-spacing: normal; color: rgb(51,51,51); word-spacing: 0px; -webkit-text-stroke-width: 0px">A colleague recently asked me a question:</p> <address style="text-transform: none; background-color: rgb(254,254,254); text-indent: 0px; display: block; font: 16px/1.5em 'Helvetica Neue', Helvetica, Tahoma, Arial, STXihei, 'Microsoft YaHei', 微Y雅黑, sans-serif; white-space: normal; margin-bottom: 1.5em; letter-spacing: normal; color: rgb(51,51,51); word-spacing: 0px; -webkit-text-stroke-width: 0px"> <p style="line-height: 1.7em; text-indent: 1em; margin: 0px 0px 0.75em; font-size: 16px">"I'm modifying the data type of a column. When doing so I get the following error:</p> <p style="line-height: 1.7em; text-indent: 1em; margin: 0px 0px 0.75em; font-size: 16px">ORA-54033: column to be modified is used in a virtual column expression</p> <p style="line-height: 1.7em; text-indent: 1em; margin: 0px 0px 0.75em; font-size: 16px">But there's no virtual columns defined on the table! What on earth's going on?!"</p></address> <p style="text-transform: none; background-color: rgb(254,254,254); text-indent: 1em; margin: 0px 0px 0.75em; font: 16px/27px 'Helvetica Neue', Helvetica, Tahoma, Arial, STXihei, 'Microsoft YaHei', 微Y雅黑, sans-serif; white-space: normal; letter-spacing: normal; color: rgb(51,51,51); word-spacing: 0px; -webkit-text-stroke-width: 0px">This was exceptionally confusing. Looking at the table definition we couldn't see any virtual columns defined: </p><pre style="border-bottom: 1px solid; border-left: 1px solid; padding-bottom: 0.3em; overflow-y: auto; text-transform: none; background-color: rgb(246,246,246); text-indent: 0px; margin: 0px 0px 0.75em; padding-left: 0.3em; padding-right: 0.3em; display: block; font: 12px/1.5em Monaco, Menlo, Consolas, 'Courier New', monospace; word-wrap: break-word; white-space: pre-wrap; letter-spacing: normal; color: rgb(51,51,51); word-break: break-all; border-top: 1px solid; border-right: 1px solid; word-spacing: 0px; padding-top: 0.3em; -webkit-text-stroke-width: 0px; border-top-left-radius: 4px; border-top-right-radius: 4px; border-bottom-right-radius: 4px; border-bottom-left-radius: 4px" class="sql"><span id="wmqeeuq" class="operator"><span style="color: rgb(51,51,51); font-weight: bold" class="keyword">create</span> <span style="color: rgb(51,51,51); font-weight: bold" class="keyword">table</span> tab ( x <span style="color: rgb(51,51,51); font-weight: bold" class="keyword">integer</span>, y <span style="color: rgb(51,51,51); font-weight: bold" class="keyword">date</span>, z varchar2(<span style="color: rgb(0,153,153)" class="number">30</span>) );</span></pre> <p style="text-transform: none; background-color: rgb(254,254,254); text-indent: 1em; margin: 0px 0px 0.75em; font: 16px/27px 'Helvetica Neue', Helvetica, Tahoma, Arial, STXihei, 'Microsoft YaHei', 微Y雅黑, sans-serif; white-space: normal; letter-spacing: normal; color: rgb(51,51,51); word-spacing: 0px; -webkit-text-stroke-width: 0px">Sure enough, when we tried to change the data type of y we got the exception:</p><pre style="border-bottom: 1px solid; border-left: 1px solid; padding-bottom: 0.3em; overflow-y: auto; text-transform: none; background-color: rgb(246,246,246); text-indent: 0px; margin: 0px 0px 1.5em; padding-left: 0.3em; padding-right: 0.3em; display: block; font: 12px/1.5em Monaco, Menlo, Consolas, 'Courier New', monospace; word-wrap: break-word; white-space: pre-wrap; letter-spacing: normal; color: rgb(51,51,51); word-break: break-all; border-top: 1px solid; border-right: 1px solid; word-spacing: 0px; padding-top: 0.3em; -webkit-text-stroke-width: 0px; border-top-left-radius: 4px; border-top-right-radius: 4px; border-bottom-right-radius: 4px; border-bottom-left-radius: 4px" class="prettyprint sql"><span id="wmqeeuq" class="operator"><span style="color: rgb(51,51,51); font-weight: bold" class="keyword">alter</span> <span style="color: rgb(51,51,51); font-weight: bold" class="keyword">table</span> tab modify (y <span style="color: rgb(51,51,51); font-weight: bold" class="keyword">timestamp</span>);</span> ORA-54033: column to be modified is used in a virtual column expression</pre> <p style="text-transform: none; background-color: rgb(254,254,254); text-indent: 1em; margin: 0px 0px 0.75em; font: 16px/27px 'Helvetica Neue', Helvetica, Tahoma, Arial, STXihei, 'Microsoft YaHei', 微Y雅黑, sans-serif; white-space: normal; letter-spacing: normal; color: rgb(51,51,51); word-spacing: 0px; -webkit-text-stroke-width: 0px">How could this be? </p> <p style="text-transform: none; background-color: rgb(254,254,254); text-indent: 1em; margin: 0px 0px 0.75em; font: 16px/27px 'Helvetica Neue', Helvetica, Tahoma, Arial, STXihei, 'Microsoft YaHei', 微Y雅黑, sans-serif; white-space: normal; letter-spacing: normal; color: rgb(51,51,51); word-spacing: 0px; -webkit-text-stroke-width: 0px">Perhaps there was a column defined that we couldn't see. Querying user_tab_cols revealed something interesting:</p><pre style="border-bottom: 1px solid; border-left: 1px solid; padding-bottom: 0.3em; overflow-y: auto; text-transform: none; background-color: rgb(246,246,246); text-indent: 0px; margin: 0px 0px 1.5em; padding-left: 0.3em; padding-right: 0.3em; display: block; font: 12px/1.5em Monaco, Menlo, Consolas, 'Courier New', monospace; word-wrap: break-word; white-space: pre-wrap; letter-spacing: normal; color: rgb(51,51,51); word-break: break-all; border-top: 1px solid; border-right: 1px solid; word-spacing: 0px; padding-top: 0.3em; -webkit-text-stroke-width: 0px; border-top-left-radius: 4px; border-top-right-radius: 4px; border-bottom-right-radius: 4px; border-bottom-left-radius: 4px" class="prettyprint sql"><span id="wmqeeuq" class="operator"><span style="color: rgb(51,51,51); font-weight: bold" class="keyword">select</span> column_name, data_default, hidden_column <span style="color: rgb(51,51,51); font-weight: bold" class="keyword">from</span> user_tab_cols <span style="color: rgb(51,51,51); font-weight: bold" class="keyword">where</span> table_name = <span style="color: rgb(221,17,68)" class="string">'TAB'</span>;</span> COLUMN_NAME <span style="white-space: pre"> </span>DATA_DEFAULT <span style="white-space: pre"> </span>HID <span style="font-style: italic; color: rgb(153,153,136)" class="comment">------------------------------ <span style="white-space: pre"> </span>----------------------------- ---</span> SYS_STUYPW88OE302TFVBNC6$MMQXE<span style="white-space: pre"> </span>SYS_OP_COMBINED_HASH("X","Y")<span style="white-space: pre"> </span>YES Z<span style="white-space: pre"> </span> NO Y<span style="white-space: pre"> </span>NO X<span style="white-space: pre"> </span>NO</pre> <p style="text-transform: none; background-color: rgb(254,254,254); text-indent: 1em; margin: 0px 0px 0.75em; font: 16px/27px 'Helvetica Neue', Helvetica, Tahoma, Arial, STXihei, 'Microsoft YaHei', 微Y雅黑, sans-serif; white-space: normal; letter-spacing: normal; color: rgb(51,51,51); word-spacing: 0px; -webkit-text-stroke-width: 0px">The SYS_... column isn't in the table DDL! Where does it come from? And what's SYS_OP_COMBINED_HASH all about? Has someone been mucking around with the database?</p> <div style="text-transform: none; background-color: rgb(254,254,254); text-indent: 0px; font: 16px/27px 'Helvetica Neue', Helvetica, Tahoma, Arial, STXihei, 'Microsoft YaHei', 微Y雅黑, sans-serif; white-space: normal; letter-spacing: normal; color: rgb(51,51,51); word-spacing: 0px; -webkit-text-stroke-width: 0px"> <p style="line-height: 1.7em; text-indent: 1em; margin: 0px 0px 0.75em; font-size: 16px">The SYS_ prefix is a sign that the column is system generated. So something's happened that's caused Oracle to create this on our behalf.</p> <p style="line-height: 1.7em; text-indent: 1em; margin: 0px 0px 0.75em; font-size: 16px">SYS_OP_COMBINED_HASH is an undocumented feature. The name implies Oracle is merging the arguments together to form a hash.</p> <p style="line-height: 1.7em; text-indent: 1em; margin: 0px 0px 0.75em; font-size: 16px">Is there a feature where we want to capture information about a group of columns?</p></div> <div style="text-transform: none; background-color: rgb(254,254,254); text-indent: 0px; font: 16px/27px 'Helvetica Neue', Helvetica, Tahoma, Arial, STXihei, 'Microsoft YaHei', 微Y雅黑, sans-serif; white-space: normal; letter-spacing: normal; color: rgb(51,51,51); word-spacing: 0px; -webkit-text-stroke-width: 0px"> <p style="line-height: 1.7em; text-indent: 1em; margin: 0px 0px 0.75em; font-size: 16px">Indeed there is -extended statistics!This feature enables to Oracle calculate statistics on a group of columns. It uses this information to improve row estimates. This is useful when there's a correlation between the values of two (or more) columns in a table.</p> <p style="line-height: 1.7em; text-indent: 1em; margin: 0px 0px 0.75em; font-size: 16px">Someone had created extended stats on this table for (x, y).</p></div> <p style="text-transform: none; background-color: rgb(254,254,254); text-indent: 1em; margin: 0px 0px 0.75em; font: 16px/27px 'Helvetica Neue', Helvetica, Tahoma, Arial, STXihei, 'Microsoft YaHei', 微Y雅黑, sans-serif; white-space: normal; letter-spacing: normal; color: rgb(51,51,51); word-spacing: 0px; -webkit-text-stroke-width: 0px">Now we've identified the problem, how do we get around it?</p> <p style="text-transform: none; background-color: rgb(254,254,254); text-indent: 1em; margin: 0px 0px 0.75em; font: 16px/27px 'Helvetica Neue', Helvetica, Tahoma, Arial, STXihei, 'Microsoft YaHei', 微Y雅黑, sans-serif; white-space: normal; letter-spacing: normal; color: rgb(51,51,51); word-spacing: 0px; -webkit-text-stroke-width: 0px">Simple: drop and recreate the extended stats:</p><pre style="border-bottom: 1px solid; border-left: 1px solid; padding-bottom: 0.3em; overflow-y: auto; text-transform: none; background-color: rgb(246,246,246); text-indent: 0px; margin: 0px 0px 1.5em; padding-left: 0.3em; padding-right: 0.3em; display: block; font: 12px/1.5em Monaco, Menlo, Consolas, 'Courier New', monospace; word-wrap: break-word; white-space: pre-wrap; letter-spacing: normal; color: rgb(51,51,51); word-break: break-all; border-top: 1px solid; border-right: 1px solid; word-spacing: 0px; padding-top: 0.3em; -webkit-text-stroke-width: 0px; border-top-left-radius: 4px; border-top-right-radius: 4px; border-bottom-right-radius: 4px; border-bottom-left-radius: 4px" class="prettyprint sql">exec dbms_stats.drop_extended_stats(user, 'tab', '(x, y)'); <span id="wmqeeuq" class="operator"><span style="color: rgb(51,51,51); font-weight: bold" class="keyword">alter</span> <span style="color: rgb(51,51,51); font-weight: bold" class="keyword">table</span> tab modify (y <span style="color: rgb(51,51,51); font-weight: bold" class="keyword">timestamp</span>);</span> <span id="wmqeeuq" class="operator"><span style="color: rgb(51,51,51); font-weight: bold" class="keyword">select</span> dbms_stats.create_extended_stats(<span style="color: rgb(51,51,51); font-weight: bold" class="keyword">user</span>, <span style="color: rgb(221,17,68)" class="string">'tab'</span>, <span style="color: rgb(221,17,68)" class="string">'(x, y)'</span>) <span style="color: rgb(51,51,51); font-weight: bold" class="keyword">from</span> dual;</span> DBMS_STATS.CREATE_EXTENDED_STATS(USER,'TAB','(X,Y)') <span style="font-style: italic; color: rgb(153,153,136)" class="comment">--------------------------------------------------------------------------------</span> SYS_STUYPW88OE302TFVBNC6$MMQXE </pre> <p style="text-transform: none; background-color: rgb(254,254,254); text-indent: 1em; margin: 0px 0px 0.75em; font: 16px/27px 'Helvetica Neue', Helvetica, Tahoma, Arial, STXihei, 'Microsoft YaHei', 微Y雅黑, sans-serif; white-space: normal; letter-spacing: normal; color: rgb(51,51,51); word-spacing: 0px; -webkit-text-stroke-width: 0px">Success!</p> <p style="text-transform: none; background-color: rgb(254,254,254); text-indent: 1em; margin: 0px 0px 0.75em; font: 16px/27px 'Helvetica Neue', Helvetica, Tahoma, Arial, STXihei, 'Microsoft YaHei', 微Y雅黑, sans-serif; white-space: normal; letter-spacing: normal; color: rgb(51,51,51); word-spacing: 0px; -webkit-text-stroke-width: 0px">Extended stats are a great way to improve the optimizer's row estimates. If you need to create these, I recommend you also do the following:</p> <div style="text-transform: none; background-color: rgb(254,254,254); text-indent: 0px; font: 16px/27px 'Helvetica Neue', Helvetica, Tahoma, Arial, STXihei, 'Microsoft YaHei', 微Y雅黑, sans-serif; white-space: normal; letter-spacing: normal; color: rgb(51,51,51); word-spacing: 0px; -webkit-text-stroke-width: 0px"> <ul style="padding-bottom: 0px; line-height: 1.7em; list-style-type: none; margin: 0px 0px 0.75em 25px; padding-left: 0px; padding-right: 0px; font-size: 16px; padding-top: 0px"><li style="line-height: 1.7em; list-style-type: disc; font-size: 16px">Apply the extended stats to all environments</li><li style="line-height: 1.7em; list-style-type: disc; font-size: 16px">Put a comment on the columns explaining what you've done, e.g. </li> <ul style="padding-bottom: 0px; line-height: 1.7em; list-style-type: none; margin: 0px 0px 0px 25px; padding-left: 0px; padding-right: 0px; font-size: 16px; padding-top: 0px"><li style="line-height: 1.7em; list-style-type: disc; font-size: 16px">comment on column tab.x is 'part of extended stats. To modify data type drop and recreate stats';</li></ul></ul>These actions will help prevent future developers getting stuck tracking down the cause of "missing" virtual columns!</div><img src ="http://www.aygfsteel.com/keweibo/aggbug/427353.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/keweibo/" target="_blank">Ke</a> 2015-09-16 14:30 <a href="http://www.aygfsteel.com/keweibo/articles/427353.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oracle 十进制与十六q制的{?/title><link>http://www.aygfsteel.com/keweibo/articles/416374.html</link><dc:creator>Ke</dc:creator><author>Ke</author><pubDate>Wed, 30 Jul 2014 09:35:00 GMT</pubDate><guid>http://www.aygfsteel.com/keweibo/articles/416374.html</guid><wfw:comment>http://www.aygfsteel.com/keweibo/comments/416374.html</wfw:comment><comments>http://www.aygfsteel.com/keweibo/articles/416374.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/keweibo/comments/commentRss/416374.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/keweibo/services/trackbacks/416374.html</trackback:ping><description><![CDATA[<p style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 10px auto; font: 13px/20px georgia, verdana, Arial, helvetica, sans-seriff; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(75,75,75); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">十进制与十六q制的{?br />8i以上版本Q?/p> <p style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 10px auto; font: 13px/20px georgia, verdana, Arial, helvetica, sans-seriff; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(75,75,75); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">十进?->十六q制 <br />select to_char(100,'XX') from dual;</p> <p style="widows: 2; text-transform: none; background-color: rgb(255,255,255); text-indent: 0px; margin: 10px auto; font: 13px/20px georgia, verdana, Arial, helvetica, sans-seriff; white-space: normal; orphans: 2; letter-spacing: normal; color: rgb(75,75,75); word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px">十六q制-->十进?br />select to_number('7D','XX') from dual;</p><br /><span style="color: red">其中XX为格式,注意XX的位C能小?/span>传入的参数?br /><img src ="http://www.aygfsteel.com/keweibo/aggbug/416374.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/keweibo/" target="_blank">Ke</a> 2014-07-30 17:35 <a href="http://www.aygfsteel.com/keweibo/articles/416374.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>? ORA-12514QTNS:监听E序当前无法识别...Q的解决Ҏhttp://www.aygfsteel.com/keweibo/articles/380324.htmlKeKeFri, 08 Jun 2012 03:42:00 GMThttp://www.aygfsteel.com/keweibo/articles/380324.htmlhttp://www.aygfsteel.com/keweibo/comments/380324.htmlhttp://www.aygfsteel.com/keweibo/articles/380324.html#Feedback0http://www.aygfsteel.com/keweibo/comments/commentRss/380324.htmlhttp://www.aygfsteel.com/keweibo/services/trackbacks/380324.html?http://www.2cto.com/database/201204/126126.html
在安装ORACLE 11G q程中由于配|的原因Q安装过E中报了如下错误Q?/div>


 
按照安装提示执行后面的操作后Q打开PL/SQL DEVELOPER q接数据?/a>时LORA-12514: TNS: 监听E序当前无法识别q接描述W中h的服?
在网上百度了一下这个错误ORA-12514Q原来很多h都碰到过q个问题Q于是按照别人的处理步骤依依配置了,q个问题解决了,不过q是觉得有必要把q个问题解决的步骤记录下来,一来让自己能跟深刻的体会一下,ȝ一下ȝ能力Q二来可以帮助到以后到q个问题的h?/div>
先找到找到listener.ora 文g,实验机器位于QE:\app\kerry\product\11.2.0\dbhome_1\NETWORK\ADMIN 目录下的listener.ora文g。问题都在这个文件上?/div>
该文件初始如下所C:
# listener.ora Network Configuration File: E:\app\kerry\product\11.2.0\dbhome_1\network\admin\listener.ora
# Generated by Oracle configuration tools.
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = CLRExtProc)
      (ORACLE_HOME = E:\app\kerry\product\11.2.0\dbhome_1)
      (PROGRAM = extproc)  www.2cto.com  
      (ENVS = "EXTPROC_DLLS=ONLY:E:\app\kerry\product\11.2.0\dbhome_1\bin\oraclr11.dll")
    )
  )
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC1521))
      (ADDRESS = (PROTOCOL = TCP)(HOST = 172.20.32.106)(PORT = 1521))
    )
  )
ADR_BASE_LISTENER = E:\app\kerry

解决办法Q?/div>
 (SID_DESC =
(SID_NAME = CLRExtProc)
(ORACLE_HOME = E:\tools\oracle\product\11.2.0\dbhome_1)
(PROGRAM = extproc)
(ENVS = "EXTPROC_DLLS=ONLY:E:\tools\oracle\product\11.2.0\dbhome_1\bin\oraclr11.dll")
)
后面d
(SID_DESC =
(GLOBAL_DBNAME =  orcl.20.32.106 )
(ORACLE_HOME = E:\tools\oracle\product\11.2.0\dbhome_1)
(SID_NAME = ORCL)
)
d后的文g内容Q?/div>
# listener.ora Network Configuration File: E:\app\kerry\product\11.2.0\dbhome_1\network\admin\listener.ora
# Generated by Oracle configuration tools.
SID_LIST_LISTENER =
  (SID_LIST =
    (SID_DESC =
      (SID_NAME = CLRExtProc)
      (ORACLE_HOME = E:\app\kerry\product\11.2.0\dbhome_1)
      (PROGRAM = extproc)
      (ENVS = "EXTPROC_DLLS=ONLY:E:\app\kerry\product\11.2.0\dbhome_1\bin\oraclr11.dll")
    )
     (SID_DESC =
      (GLOBAL_DBNAME = orcl.20.32.106)
      (ORACLE_HOME = E:\app\kerry\product\11.2.0\dbhome_1)
      (SID_NAME = ORCL)  www.2cto.com  
    )
  )
LISTENER =
  (DESCRIPTION_LIST =
    (DESCRIPTION =
      (ADDRESS = (PROTOCOL = TCP)(HOST = 172.20.32.106)(PORT = 1521))
    )
  )
ADR_BASE_LISTENER = E:\app\kerry
注意SID_NAME对应|络服务命名Q?GLOBAL_DBNAME对应服务名。配|这些后Q然后重新开启服务从新连接,OKQ问题迎刃而解Q?/div>
 
 
 
作?潇湘隐?/div>

Ke 2012-06-08 11:42 发表评论
]]>查出不连l,中断的流水码http://www.aygfsteel.com/keweibo/articles/344979.htmlKeKeWed, 23 Feb 2011 07:55:00 GMThttp://www.aygfsteel.com/keweibo/articles/344979.htmlhttp://www.aygfsteel.com/keweibo/comments/344979.htmlhttp://www.aygfsteel.com/keweibo/articles/344979.html#Feedback3http://www.aygfsteel.com/keweibo/comments/commentRss/344979.htmlhttp://www.aygfsteel.com/keweibo/services/trackbacks/344979.html 需求:
LWH_TEST表一个SEQ栏位Q对应的|不连l的水码)
1Q?br /> 2Q?br /> 4Q?br /> 6Q?br /> 8
.
.
.

以下SQL可查出缺q水P3Q?Q?...

select b.SEQ - a.SEQ, b.SEQ, a.SEQ from
( select SEQ , ROWNUM RN from (select SEQ from LWH_TEST order by SEQ) ) a,
( select SEQ , ROWNUM RN from (select SEQ from LWH_TEST order by SEQ) ) b
where a.RN+1 = b.RN
and b.SEQ - a.SEQ > 1


感觉q可?br />


Ke 2011-02-23 15:55 发表评论
]]>
兌子查询与嵌套子查?/title><link>http://www.aygfsteel.com/keweibo/articles/337650.html</link><dc:creator>Ke</dc:creator><author>Ke</author><pubDate>Tue, 09 Nov 2010 09:25:00 GMT</pubDate><guid>http://www.aygfsteel.com/keweibo/articles/337650.html</guid><wfw:comment>http://www.aygfsteel.com/keweibo/comments/337650.html</wfw:comment><comments>http://www.aygfsteel.com/keweibo/articles/337650.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/keweibo/comments/commentRss/337650.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/keweibo/services/trackbacks/337650.html</trackback:ping><description><![CDATA[<span style="color: red;">转自Qhttp://blog.csdn.net/huangyunzeng2008/archive/2010/01/18/5209499.aspx  </span><br /> 今天优化了一个sql语句Q感觉速度好像是快了点Q自己想惌得也是,下面l出cM的例子,工作中的表就不拿来D例了。实际我们^帔R在凭着自己的感觉在写SQLQ其实蟩出那个圈子你会发现能写出更好的? <p>一、先l出我的表和数据Q这里数据量,可能不明显,只是表明一下这个意思!</p> <blockquote> <div> <pre><a style="color: #0000ff;" >create</a> <a style="color: #0000ff;" >table</a> EMP ( EMPNO NUMBER(4) <a style="color: #0000ff;" >not</a> <a style="color: #0000ff;" >null</a>, ENAME <a style="color: #0000ff;" >VARCHAR</a>2(10), JOB <a style="color: #0000ff;" >VARCHAR</a>2(9), MGR NUMBER(4), HIREDATE <a style="color: #0000ff;" >DATE</a>, SAL NUMBER(7,2), DEPTNO NUMBER(2) ); <a style="color: #0000ff;" >insert</a> <a style="color: #0000ff;" >into</a> EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, DEPTNO) <a style="color: #0000ff;" >values</a> (7369, '<span style="color: #8b0000;">SMITH</span>', '<span style="color: #8b0000;">CLERK</span>', 7902, to_date('<span style="color: #8b0000;">17-12-1980</span>', '<span style="color: #8b0000;">dd-mm-yyyy</span>'), 800, 20); <a style="color: #0000ff;" >insert</a> <a style="color: #0000ff;" >into</a> EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, DEPTNO) <a style="color: #0000ff;" >values</a> (7499, '<span style="color: #8b0000;">ALLEN</span>', '<span style="color: #8b0000;">SALESMAN</span>', 7698, to_date('<span style="color: #8b0000;">20-02-1981</span>', '<span style="color: #8b0000;">dd-mm-yyyy</span>'), 1600, 30); <a style="color: #0000ff;" >insert</a> <a style="color: #0000ff;" >into</a> EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, DEPTNO) <a style="color: #0000ff;" >values</a> (7521, '<span style="color: #8b0000;">WARD</span>', '<span style="color: #8b0000;">SALESMAN</span>', 7698, to_date('<span style="color: #8b0000;">22-02-1981</span>', '<span style="color: #8b0000;">dd-mm-yyyy</span>'), 1250, 30); <a style="color: #0000ff;" >insert</a> <a style="color: #0000ff;" >into</a> EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, DEPTNO) <a style="color: #0000ff;" >values</a> (7566, '<span style="color: #8b0000;">JONES</span>', '<span style="color: #8b0000;">MANAGER</span>', 7839, to_date('<span style="color: #8b0000;">02-04-1981</span>', '<span style="color: #8b0000;">dd-mm-yyyy</span>'), 2975, 20); <a style="color: #0000ff;" >insert</a> <a style="color: #0000ff;" >into</a> EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, DEPTNO) <a style="color: #0000ff;" >values</a> (7654, '<span style="color: #8b0000;">MARTIN</span>', '<span style="color: #8b0000;">SALESMAN</span>', 7698, to_date('<span style="color: #8b0000;">28-09-1981</span>', '<span style="color: #8b0000;">dd-mm-yyyy</span>'), 1250, 30); <a style="color: #0000ff;" >insert</a> <a style="color: #0000ff;" >into</a> EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, DEPTNO) <a style="color: #0000ff;" >values</a> (7698, '<span style="color: #8b0000;">BLAKE</span>', '<span style="color: #8b0000;">MANAGER</span>', 7839, to_date('<span style="color: #8b0000;">01-05-1981</span>', '<span style="color: #8b0000;">dd-mm-yyyy</span>'), 2850, 30); <a style="color: #0000ff;" >insert</a> <a style="color: #0000ff;" >into</a> EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, DEPTNO) <a style="color: #0000ff;" >values</a> (7782, '<span style="color: #8b0000;">CLARK</span>', '<span style="color: #8b0000;">MANAGER</span>', 7839, to_date('<span style="color: #8b0000;">09-06-1981</span>', '<span style="color: #8b0000;">dd-mm-yyyy</span>'), 2450, 10); <a style="color: #0000ff;" >insert</a> <a style="color: #0000ff;" >into</a> EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, DEPTNO) <a style="color: #0000ff;" >values</a> (7788, '<span style="color: #8b0000;">SCOTT</span>', '<span style="color: #8b0000;">ANALYST</span>', 7566, to_date('<span style="color: #8b0000;">19-04-1987</span>', '<span style="color: #8b0000;">dd-mm-yyyy</span>'), 3000, 20); <a style="color: #0000ff;" >insert</a> <a style="color: #0000ff;" >into</a> EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, DEPTNO) <a style="color: #0000ff;" >values</a> (7844, '<span style="color: #8b0000;">TURNER</span>', '<span style="color: #8b0000;">SALESMAN</span>', 7698, to_date('<span style="color: #8b0000;">08-09-1981</span>', '<span style="color: #8b0000;">dd-mm-yyyy</span>'), 1500, 30); <a style="color: #0000ff;" >insert</a> <a style="color: #0000ff;" >into</a> EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, DEPTNO) <a style="color: #0000ff;" >values</a> (7876, '<span style="color: #8b0000;">ADAMS</span>', '<span style="color: #8b0000;">CLERK</span>', 7788, to_date('<span style="color: #8b0000;">23-05-1987</span>', '<span style="color: #8b0000;">dd-mm-yyyy</span>'), 1100, 20); <a style="color: #0000ff;" >insert</a> <a style="color: #0000ff;" >into</a> EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, DEPTNO) <a style="color: #0000ff;" >values</a> (7900, '<span style="color: #8b0000;">JAMES</span>', '<span style="color: #8b0000;">CLERK</span>', 7698, to_date('<span style="color: #8b0000;">03-12-1981</span>', '<span style="color: #8b0000;">dd-mm-yyyy</span>'), 950, 30); <a style="color: #0000ff;" >insert</a> <a style="color: #0000ff;" >into</a> EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, DEPTNO) <a style="color: #0000ff;" >values</a> (7902, '<span style="color: #8b0000;">FORD</span>', '<span style="color: #8b0000;">ANALYST</span>', 7566, to_date('<span style="color: #8b0000;">03-12-1981</span>', '<span style="color: #8b0000;">dd-mm-yyyy</span>'), 3000, 20); <a style="color: #0000ff;" >insert</a> <a style="color: #0000ff;" >into</a> EMP (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, DEPTNO) <a style="color: #0000ff;" >values</a> (7934, '<span style="color: #8b0000;">MILLER</span>', '<span style="color: #8b0000;">CLERK</span>', 7782, to_date('<span style="color: #8b0000;">23-01-1982</span>', '<span style="color: #8b0000;">dd-mm-yyyy</span>'), 1300, 10); <a style="color: #0000ff;" >commit</a>;</pre> </div> </blockquote> <p>二、假设有q样一个需求,我要得到q个表中所有低于所在部门^均工资的员工的基本信息。很自然?我们会写LSQLQ?/p> <blockquote> <div> <pre><a style="color: #0000ff;" >SELECT</a> * <a style="color: #0000ff;" >FROM</a> emp A <a style="color: #0000ff;" >WHERE</a> A.sal < (<a style="color: #0000ff;" >SELECT</a> <a style="color: #0000ff;" >AVG</a>(sal) <a style="color: #0000ff;" >FROM</a> emp B <a style="color: #0000ff;" >WHERE</a> A.deptno = B.deptno);</pre> </div> q种写法是很通常的写法,也很好理解,从字面上看都知道是什么意思!但是在一个很大的表中q样来统计是很慢很慢的,对于每一条记录都要嵌套的查询一个子查询Q这样对性能影响是很大的?<br /> </blockquote> <p>三、ؓ什么不跛_q个思维的定式,换一U方法来l计呢,我给Z面的ҎQ?/p> <blockquote> <div> <pre><a style="color: #0000ff;" >SELECT</a> A.* <a style="color: #0000ff;" >FROM</a> emp A, (<a style="color: #0000ff;" >SELECT</a> deptno, <a style="color: #0000ff;" >AVG</a>(sal) sal <a style="color: #0000ff;" >FROM</a> emp <a style="color: #0000ff;" >GROUP</a> <a style="color: #0000ff;" >BY</a> deptno) B <a style="color: #0000ff;" >WHERE</a> A.deptno = B.deptno <a style="color: #0000ff;" >AND</a> A.sal < B.sal;</pre> </div> <p>q里没有使用嵌套子查询,而是使用了关联子查询 Q这样实际上也是很好理解的,但是往往我们很少q样写?/p> </blockquote> <p>四、ȝ来说我还是很喜欢下面的写法,在数据量很大的情况下Q对性能的提高真的不,但是在数据量的情况下似乎看不出什么效果。实际上也是Q如? 数据量小Q根本不会涉及到优化Q我在这里说也没什么用。如果觉得自q子查询有问题Q看看能不能把嵌套子查询转化为关联子查询Q效果还是挺明显的?</p> <img src ="http://www.aygfsteel.com/keweibo/aggbug/337650.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/keweibo/" target="_blank">Ke</a> 2010-11-09 17:25 <a href="http://www.aygfsteel.com/keweibo/articles/337650.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle中如何进行进制{??http://www.aygfsteel.com/keweibo/articles/321232.htmlKeKeTue, 18 May 2010 01:44:00 GMThttp://www.aygfsteel.com/keweibo/articles/321232.htmlhttp://www.aygfsteel.com/keweibo/comments/321232.htmlhttp://www.aygfsteel.com/keweibo/articles/321232.html#Feedback0http://www.aygfsteel.com/keweibo/comments/commentRss/321232.htmlhttp://www.aygfsteel.com/keweibo/services/trackbacks/321232.html?http://www.eygle.com/faq/Faq_convert.htm
1.16q制转换?0q制

可以通过to_number函数实现 

SQL> select to_number('19f','xxx') from dual;

TO_NUMBER('19F','XXX')
----------------------
415

SQL> select to_number('f','xx') from dual;

TO_NUMBER('F','XX')
-------------------
15

2.10q制转换?6q制
可以通过to_char函数转换

SQL> select to_char(123,'xxx') from dual;

TO_C
----
7b

SQL> select to_char(4567,'xxxx') from dual;

TO_CH
-----
11d7

3.2q制转换?0q制

从Oracle9i开?提供函数bin_to_numq行2q制?0q制的{?/p>

SQL> select bin_to_num(1,1,0,1) a,bin_to_num(1,0) b from dual;

A B
----- ----------
13 2

SQL> select bin_to_num(1,1,1,0,1) from dual;

BIN_TO_NUM(1,1,1,0,1)
---------------------
29

3.q制转换也可以通过自定义函数实?/strong>
以下函数来自AskTom|站,是Toml出的例?供参?

create or replace function to_base( p_dec in number, p_base in number )
return varchar2
is
l_str varchar2(255) default NULL;
l_num number default p_dec;
l_hex varchar2(16) default '0123456789ABCDEF';
begin
if ( trunc(p_dec) <> p_dec OR p_dec < 0 ) then
raise PROGRAM_ERROR;
end if;
loop
l_str := substr( l_hex, mod(l_num,p_base)+1, 1 ) || l_str;
l_num := trunc( l_num/p_base );
exit when ( l_num = 0 );
end loop;
return l_str;
end to_base;
/


create or replace function to_dec
( p_str in varchar2,
p_from_base in number default 16 ) return number
is
l_num number default 0;
l_hex varchar2(16) default '0123456789ABCDEF';
begin
for i in 1 .. length(p_str) loop
l_num := l_num * p_from_base + instr(l_hex,upper(substr(p_str,i,1)))-1;
end loop;
return l_num;
end to_dec;
/
show errors

create or replace function to_hex( p_dec in number ) return varchar2
is
begin
return to_base( p_dec, 16 );
end to_hex;
/
create or replace function to_bin( p_dec in number ) return varchar2
is
begin
return to_base( p_dec, 2 );
end to_bin;
/
create or replace function to_oct( p_dec in number ) return varchar2
is
begin
return to_base( p_dec, 8 );
end to_oct;
/

-The End-





Ke 2010-05-18 09:44 发表评论
]]>
oracle 10G正則表達?/title><link>http://www.aygfsteel.com/keweibo/articles/313432.html</link><dc:creator>Ke</dc:creator><author>Ke</author><pubDate>Sat, 20 Feb 2010 00:48:00 GMT</pubDate><guid>http://www.aygfsteel.com/keweibo/articles/313432.html</guid><wfw:comment>http://www.aygfsteel.com/keweibo/comments/313432.html</wfw:comment><comments>http://www.aygfsteel.com/keweibo/articles/313432.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/keweibo/comments/commentRss/313432.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/keweibo/services/trackbacks/313432.html</trackback:ping><description><![CDATA[/*<br /> ORACLE中的支持正则表达式的函数主要有下面四个:<br /> 1QREGEXP_LIKE Q与LIKE的功能相?br /> 2QREGEXP_INSTR Q与INSTR的功能相?br /> 3QREGEXP_SUBSTR Q与SUBSTR的功能相?br /> 4QREGEXP_REPLACE Q与REPLACE的功能相?br /> 它们在用法上与Oracle SQL 函数LIKE、INSTR、SUBSTR 和REPLACE 用法相同Q?br /> 但是它们使用POSIX 正则表达式代替了老的癑ֈP%Q和通配W(_Q字W?br /> POSIX 正则表达式由标准的元字符QmetacharactersQ所构成Q?br /> '^' 匚w输入字符串的开始位|,在方括号表达式中使用Q此时它表示不接受该字符集合?br /> '$' 匚w输入字符串的l尾位置。如果设|了 RegExp 对象?Multiline 属性,?$ 也匹<br /> ?'\n' ?'\r'?br /> '.' 匚w除换行符之外的Q何单字符?br /> '?' 匚w前面的子表达式零ơ或一ơ?br /> '+' 匚w前面的子表达式一ơ或多次?br /> '*' 匚w前面的子表达式零ơ或多次?br /> '|' 指明两项之间的一个选择。例?^([a-z]+|[0-9]+)$'表示所有小写字母或数字l合成的<br /> 字符丌Ӏ?br /> '( )' 标记一个子表达式的开始和l束位置?br /> '[]' 标记一个中括号表达式?br /> '{m,n}' 一个精地出现ơ数范围Qm=<出现ơ数<=nQ?{m}'表示出现mơ,'{m,}'表示臛_<br /> 出现mơ?br /> \num 匚w numQ其?num 是一个正整数。对所获取的匹配的引用?br /> 字符: <br /> [[:alpha:]] M字母?br /> [[:digit:]] M数字?br /> [[:alnum:]] M字母和数字?br /> [[:space:]] M白字W?br /> [[:upper:]] M大写字母?br /> [[:lower:]] M写字母?br /> [[:punct:]] M标点W号?br /> [[:xdigit:]] M16q制的数字,相当于[0-9a-fA-F]?br /> 各种操作W的q算优先U?br /> \转义W?br /> (), (?:), (?=), [] 圆括号和Ҏ?br /> *, +, ?, {n}, {n,}, {n,m} 限定W?br /> ^, $, anymetacharacter 位置和顺?br /> | <br /> */<br /> --创徏?br /> create table fzq<br /> (<br />   id varchar(4),<br />   value varchar(10)<br /> );<br /> --数据插入<br /> insert into fzq values<br /> ('1','1234560');<br /> insert into fzq values<br /> ('2','1234560');<br /> insert into fzq values<br /> ('3','1b3b560');<br /> insert into fzq values<br /> ('4','abc');<br /> insert into fzq values<br /> ('5','abcde');<br /> insert into fzq values<br /> ('6','ADREasx');<br /> insert into fzq values<br /> ('7','123  45');<br /> insert into fzq values<br /> ('8','adc  de');<br /> insert into fzq values<br /> ('9','adc,.de');<br /> insert into fzq values<br /> ('10','1B');<br /> insert into fzq values<br /> ('10','abcbvbnb');<br /> insert into fzq values<br /> ('11','11114560');<br /> insert into fzq values<br /> ('11','11124560');<br /> --regexp_like<br /> --查询value中以1开?0l束的记录ƈ且长度是7?br /> select * from fzq where value like '1____60';<br /> select * from fzq where regexp_like(value,'1....60');<br /> --查询value中以1开?0l束的记录ƈ且长度是7位ƈ且全部是数字的记录?br /> --使用like׃是很好实C?br /> select * from fzq where regexp_like(value,'1[0-9]{4}60');<br /> -- 也可以这样实玎ͼ使用字符集?br /> select * from fzq where regexp_like(value,'1[[:digit:]]{4}60');<br /> -- 查询value中不是纯数字的记?br /> select * from fzq where not regexp_like(value,'^[[:digit:]]+$');<br /> -- 查询value中不包含M数字的记录?br /> select * from fzq where regexp_like(value,'^[^[:digit:]]+$');<br /> --查询?2或?b开头的记录.不区分大写?br /> select * from fzq where regexp_like(value,'^1[2b]','i');<br /> --查询?2或?b开头的记录.区分大小写?br /> select * from fzq where regexp_like(value,'^1[2B]');<br /> -- 查询数据中包含空白的记录?br /> select * from fzq where regexp_like(value,'[[:space:]]');<br /> --查询所有包含小写字母或者数字的记录?br /> select * from fzq where regexp_like(value,'^([a-z]+|[0-9]+)$');<br /> --查询M包含标点W号的记录?br /> select * from fzq where regexp_like(value,'[[:punct:]]');<br /> /*<br /> 理解它的语法可以了。其它的函数用法cM?br /> */ <br /> 作者:唐山人,姓方Q烦性就叫tshfang。喜Ƣ计机Q喜Ƣ读书尤其是史书。技术共享,大家方便Q让我们一起创造一个自q间?br /> 工作领域QERPpȝ、计机~程 <br /> 文章来源Q?a title="文章写作">泥胚文章写作|?/a> http://www.nipei.com   原文地址Qhttp://www.nipei.com/article/9865<br /> <font color="red">转蝲本文章必M留作者、出处链接以及本声明?/font><br /> <font color="red"><strong>转蝲不注明出处、程序采集是侉|行ؓQ我们保留追I其一切责ȝ权利?/strong></font> <img src ="http://www.aygfsteel.com/keweibo/aggbug/313432.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/keweibo/" target="_blank">Ke</a> 2010-02-20 08:48 <a href="http://www.aygfsteel.com/keweibo/articles/313432.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oraclea算一q中53個周分別的v始與i束日期http://www.aygfsteel.com/keweibo/articles/310472.htmlKeKeFri, 22 Jan 2010 01:38:00 GMThttp://www.aygfsteel.com/keweibo/articles/310472.htmlhttp://www.aygfsteel.com/keweibo/comments/310472.htmlhttp://www.aygfsteel.com/keweibo/articles/310472.html#Feedback0http://www.aygfsteel.com/keweibo/comments/commentRss/310472.htmlhttp://www.aygfsteel.com/keweibo/services/trackbacks/310472.htmlҎi定的周?a算本周的v始和i束日期
SELECT   NEXT_DAY(TO_DATE('20100101', 'yyyymmdd'),'星期一') + 1 * 7 - 7 AS first_day,
         NEXT_DAY(TO_DATE('20100101', 'yyyymmdd'),'星期一') + 1 * 7 - 1 AS LAST_DAY
  FROM DUAL;

a算一q中53個周分別的v始與i束日期

SELECT tab_1.COLUMN_VALUE,
   NEXT_DAY(TO_DATE('0101', 'mmdd'),'星期一') + tab_1.COLUMN_VALUE * 7 - 7 AS first_day,
   NEXT_DAY(TO_DATE('0101', 'mmdd'),'星期一') + tab_1.COLUMN_VALUE * 7 - 1 AS LAST_DAY
  FROM TABLE
          (SELECT SPLIT ('1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53', ',')
             FROM DUAL
          ) tab_1

其中SPLIT定义函数Q用于切分字W串

Ke 2010-01-22 09:38 发表评论
]]>Oracle数据导入导出imp/exp命o 10g以上expdp/impdp命ohttp://www.aygfsteel.com/keweibo/articles/308932.htmlKeKeSun, 10 Jan 2010 11:44:00 GMThttp://www.aygfsteel.com/keweibo/articles/308932.htmlhttp://www.aygfsteel.com/keweibo/comments/308932.htmlhttp://www.aygfsteel.com/keweibo/articles/308932.html#Feedback0http://www.aygfsteel.com/keweibo/comments/commentRss/308932.htmlhttp://www.aygfsteel.com/keweibo/services/trackbacks/308932.html

Oracle数据导入导出imp/expq当于oracle数据q原与备份。exp命o可以把数据从q程数据库服务器导出到本地的dmp? Ӟimp命o可以把dmp文g从本地导入到q处的数据库服务器中?利用q个功能可以构徏两个相同的数据库Q一个用来测试,一个用来正式用?br />  
执行环境Q可以在SQLPLUS.EXE或者DOSQ命令行Q中执行Q?br />  DOS中可以执行时׃ 在oracle 8i ?nbsp; 安装目录ora81BIN被设|ؓ全局路径Q?br />  该目录下有EXP.EXE与IMP.EXE文g被用来执行导入导出?br />  oracle用java~写QSQLPLUS.EXE、EXP.EXE、IMP.EXEq两个文件有可能是被包装后的cL件?br />  SQLPLUS.EXE调用EXP.EXE、IMP.EXE所包裹的类Q完成导入导出功能?br />  
下面介绍的是导入导出的实例?br /> 数据导出Q?br />  1 数据库TEST完全导出,用户名system 密码manager 导出到D:\daochu.dmp?br />    exp system/manager@TEST file=d:\daochu.dmp full=y
 2 数据库中system用户与sys用户的表导出
   exp system/manager@TEST file=d:\daochu.dmp owner=(system,sys)
 3 数据库中的表inner_notify、notify_staff_relat导出
    exp aichannel/aichannel@TESTDB2 file= d:\datanewsmgnt.dmp tables=(inner_notify,notify_staff_relat) 
 4 数据库中的表table1中的字段filed1?00"打头的数据导?br />    exp system/manager@TEST file=d:\daochu.dmp tables=(table1) query=" where filed1 like '00%'"
 
  上面是常用的导出Q对于压~,既用winzip把dmp文g可以很好的压~?br />   也可以在上面命o后面 加上 compress=y 来实现?br />
数据的导?br />  1 D:\daochu.dmp 中的数据导入 TEST数据库中?br />    imp system/manager@TEST  file=d:\daochu.dmp
   imp aichannel/aichannel@TEST  full=y  file=d:\datanewsmgnt.dmp ignore=y
   上面可能有点问题Q因为有的表已经存在Q然后它报错,对该表就不进行导入?br />    在后面加?ignore=y 可以了?br />  2 d:daochu.dmp中的表table1 导入
 imp system/manager@TEST  file=d:\daochu.dmp  tables=(table1)
 
 基本上上面的导入导出够用了。不情况要先是表d删除Q然后导入?br />  
注意Q?br />  操作者要有够的权限Q权限不够它会提C?br />  数据库时可以q上的。可以用tnsping TEST 来获得数据库TEST能否q上?br />
附录一Q?br />  l用户增加导入数据权限的操作
 W一,启动sql*puls
 W二Q以system/manager登陆
 W三Qcreate user 用户?IDENTIFIED BY 密码 Q如果已l创用户Q这步可以省略)
 W四QGRANT CREATE USER,DROP USER,ALTER USER ,CREATE ANY VIEW ,
   DROP ANY VIEW,EXP_FULL_DATABASE,IMP_FULL_DATABASE,
      DBA,CONNECT,RESOURCE,CREATE SESSION  TO 用户名字
 W五, q行-cmd-q入dmp文g所在的目录,
      imp userid=system/manager full=y file=*.dmp
      或?imp userid=system/manager full=y file=filename.dmp

 执行CZ:
 F:WorkOracle_Databackup>imp userid=test/test full=y file=inner_notify.dmp

屏幕昄
Import: Release 8.1.7.0.0 - Production on 星期?2?16 16:50:05 2006
(c) Copyright 2000 Oracle Corporation.  All rights reserved.

q接? Oracle8i Enterprise Edition Release 8.1.7.0.0 - Production
With the Partitioning option
JServer Release 8.1.7.0.0 - Production

l由常规路径导出由EXPORT:V08.01.07创徏的文?br /> 已经完成ZHS16GBK字符集和ZHS16GBK NCHAR 字符集中的导?br /> 导出服务器用UTF8 NCHAR 字符?(可能的ncharset转换)
. 正在AICHANNEL的对象导入到 AICHANNEL
. . 正在导入?nbsp;                 "INNER_NOTIFY"          4行被导入
准备启用U束条g...
成功l止导入Q但出现警告?br />
 
附录二:
 Oracle 不允许直接改变表的拥有? 利用Export/Import可以辑ֈq一目的.
  先徏立import9.par,
  然后Q用时命o如下Qimp parfile=/filepath/import9.par
  ?import9.par 内容如下Q?br />         FROMUSER=TGPMS      
        TOUSER=TGPMS2     Q注Q把表的拥有者由FROMUSER改ؓTOUSERQFROMUSER和TOUSER的用户可以不同)         
        ROWS=Y
        INDEXES=Y
        GRANTS=Y
        CONSTRAINTS=Y
        BUFFER=409600
        file==/backup/ctgpc_20030623.dmp
        log==/backup/import_20030623.log

在导入导出命令中加上feedback=1000可以让过E显CZ个不断增多的“...”Q以改变以往的闪烁的光标

New:

exp/imp已经很好用了Q但是唯一的确定是速度太慢Q如?张表的数据有个百千万的,常常导入导出长旉停在q个表这Q但是从Oracle 10g开始提供了UCؓ数据泉|的工具expdp/impdpQ它为Oracle数据提供高速ƈ行及大数据的q移?/p>

 imp/exp可以在客L调用Q但是expdp/impdp只能在服务端Q因为在使用expdp/impdp以前需要在数据库中创徏一个Directory

create directory dump_test as '/u01/oracle10g'Q?/p>

grant read, write on directory dump_test to piner

然后可以开始导入导?/p>

expdp piner/piner directory=dump_test dumpfile=user.dmp  导出用户的数?br />

expdp piner/piner directory=dump_test dumpfile=table.dmp tables=test1,test2 导出表数?br />

impdp piner/piner directory=dump_test dumpfile=user.dmp 导入该用h?br />

impdp piner/piner directory=dump_test dumpfile=table.dmp  导出表数?

Ke 2010-01-10 19:44 发表评论
]]>
LinuxL下配|Oracle 10G自动启动q程??http://www.aygfsteel.com/keweibo/articles/308056.htmlKeKeSat, 02 Jan 2010 15:43:00 GMThttp://www.aygfsteel.com/keweibo/articles/308056.htmlhttp://www.aygfsteel.com/keweibo/comments/308056.htmlhttp://www.aygfsteel.com/keweibo/articles/308056.html#Feedback0http://www.aygfsteel.com/keweibo/comments/commentRss/308056.htmlhttp://www.aygfsteel.com/keweibo/services/trackbacks/308056.html LinuxL下配|Oracle 10G自动启动q程?br /> 一、用root用户修改/etc/oratab 文gQ?br /> $ gedit /etc/oratab
orcl:/oracle/app/product/10.2.0/db_1:N
改ؓQ?br /> orcl:/oracle/app/product/10.2.0/db_1:Y
也就是将最后的N改ؓY
二、用Oracle用户修改$ORACLE_HOME/bin/dbstart文gQ?br /> # su - oracle
$ cd $ORACLE_HOME/bin
$ gedit dbstart
扑ֈ ORACLE_HOME_LISTNER=.....q行Q?修改?br /> ORACLE_HOME_LISTNER=/u01/app/oracle/product/10.1.0/db_1
或者直接修ҎQ?br /> ORACLE_HOME_LISTNER=$ORACLE_HOME
注意Q是修改Q不是增加,可是使用gedit的查扑֊能查找:
ORACLE_HOME_LISTNERQ然后进行修改,修改后保?br /> 三、测试运?dbshut, dbstart 看能否启动Oracle 服务及listener服务:
1.修改dbstart和dbshut的日志文件的权限Q?br /> $su - root
#cd $ORACLE_HOME
#chown oracle:oinstall startup.log
#chown oracle:oinstall shutdown.log
2.执行相应的脚本进行测?br /> #su - oracle
$cd $ORACLE_HOME/bin
$./dbstart (./dbshut)
$ ps -efw | grep ora_
$ lsnrctl status
$ ps -efw | grep LISTEN | grep -v grep
四:创徏服务
$su - root
# cd /etc/rc.d/init.d/
# gedit oradbstart
复制如下脚本1或者脚?内容到oradbstart文gQ?br /> 注意?br /> (1).#开始的行不能少Q否则后面运行chkconfig命o会报错:oradbstart 服务不支持chkconfig
(2).Ҏ自己的环境修改环境变量配|部?br /> (3).从windows下面保存的如下脚本内容,通过ISO复制到linuxQ再脚本复制到oradbstart文g中后Q在l端下用vi oradbstart?br /> 令打开Q一些行后面可能有类似^M的字W,其删除Q否则在q行后面的chkconfig命o后,?etc/rc.d/rcN.d目录(N行?
下生成的S99oradbstart文g是空的,可以用vi查看S99oradbstart文gQ内容应该和/etc/rc.d/init.d/oradbstart文g内容相同?br /> 是正的
(W三U情冉|我在xp下用虚拟机VMWARE安装linuxQƈ如下脚本保存成文本文gQ然后制作成ISO文gQ然后把ISO里面的文件的
内容复制到oradbstart旉到的Q这U情况一些行后面cM^M的字W,用gedit无法看到Q只有用vi才能看到)
--脚本1
#!/bin/bash
# chkconfig: 345 99 10
# description: Startup Script for Oracle Databases
# /etc/rc.d/init.d/dbstart
export ORACLE_BASE=/u01/app/oracle/
export ORACLE_HOME=/u01/app/oracle/product/10.2.0/db_1
export ORACLE_SID=orcl
export PATH=$PATH:$ORACLE_HOME/bin
ORA_OWNR="oracle"
# if the executables do not exist -- display error
if [ ! -f $ORACLE_HOME/bin/dbstart -o ! -d $ORACLE_HOME ]
then
echo "Oracle startup: cannot start"
exit 1
fi
# depending on parameter -- startup, shutdown, restart
# of the instance and listener or usage display
case "$1" in
start)
# Oracle listener and instance startup
echo -n "Starting Oracle: "
su - $ORA_OWNR -c "$ORACLE_HOME/bin/dbstart"
touch /var/lock/Oracle
su - $ORA_OWNR -c "$ORACLE_HOME/bin/emctl start dbconsole"
su - $ORA_OWNR -c "$ORACLE_HOME/bin/isqlplusctl start"
echo "OK"
;;
stop)
# Oracle listener and instance shutdown
echo -n "Shutdown Oracle: "
su - $ORA_OWNR -c "$ORACLE_HOME/bin/emctl stop dbconsole"
su - $ORA_OWNR -c "$ORACLE_HOME/bin/isqlplusctl stop"
su - $ORA_OWNR -c "$ORACLE_HOME/bin/dbshut"
su - $ORA_OWNR -c "$ORACLE_HOME/bin/lsnrctl stop"
rm -f /var/lock/Oracle
echo "OK"
;;
reload|restart)
$0 stop
$0 start
;;
*)
echo "Usage: `basename $0` start|stop|restart|reload"
exit 1
esac
exit 0
--脚本2Q只启动数据库和听)
#!/bin/bash
# chkconfig: 345 99 10
# description: Startup Script for Oracle Databases
# /etc/rc.d/init.d/oradbstart
export ORACLE_BASE=/u01/app/Oracle/
export ORACLE_HOME=/u01/app/Oracle/product/10.2.0/db_1
export ORACLE_SID=orcl
export PATH=$PATH:$ORACLE_HOME/bin
case "$1" in
start)
su Oracle -c $ORACLE_HOME/bin/dbstart
touch /var/lock/Oracle
echo "OK"
;;
stop)
echo -n "Shutdown Oracle: "
su Oracle -c $ORACLE_HOME/bin/dbshut
rm -f /var/lock/Oracle
echo "OK"
;;
*)
echo "Usage: 'basename $0' start|stop"
exit 1
esac
exit 0
保存退出?br /> 打开l端执行:
$su - root
#chown oracle.oinstall /etc/rc.d/init.d/oradbstart
#chmod 775 /etc/rc.d/init.d/oradbstart
然后执行Q?br /> chkconfig --add oradbstart
chkconfig --list oradbstart
chkconfig --list oradbstartq行l果Q?br /> oradbstart 0:off 1:off 2:off 3:on 4:on 5:on 6:off
?查:
Ҏ上面的运行结果,当相应的q行U别为on?例如Q?:on)Q在对应?etc/rc.d/rcN.d(例如Q和5:on对应?br /> 是:/etc/rc.d/rc5.d)下面会生成一个文ӞS99oradbstartQ用vi S99oradbstart打开该文Ӟ可以看到该文件的内容
?etc/rc.d/init.d/oradbstart内容相同Q表C配|成功,其实QS99oradbstart是一个到/etc/rc.d/init.d/oradbstart的链接,
我们可以使用file命o来查看:
$file /etc/rc.d/rc5.d/S99oradbstart
S99oradbstart:symbolic link to '../init.d/oradbstart
?一点说明:
脚本文g中的Q? chkconfig: 345 99 10
指出3Q?Q?U别启动q个服务Q?9是在相应?etc/rc.d/rcN.d(N为前面指定的U别Q这里是345)目录下生成的链接文g的序??br /> 动优先?S99oradbstartQ?0为在除前面指出的U别对应?etc/rc.d/rcN.d(N为除345之外的?目录生成的链接文件的序号(?br /> 务停止的优先U别)K10oradbstart?

Ke 2010-01-02 23:43 发表评论
]]>
Ubuntu9.04下安装Oracle10.2(?http://www.aygfsteel.com/keweibo/articles/307781.htmlKeKeWed, 30 Dec 2009 08:09:00 GMThttp://www.aygfsteel.com/keweibo/articles/307781.htmlhttp://www.aygfsteel.com/keweibo/comments/307781.htmlhttp://www.aygfsteel.com/keweibo/articles/307781.html#Feedback0http://www.aygfsteel.com/keweibo/comments/commentRss/307781.htmlhttp://www.aygfsteel.com/keweibo/services/trackbacks/307781.html
     注意Q?span style="color: #ff0000;">Oracle 安装的Linux版本中,已经通过Oracle认证的有RedHat、Suse、Unbreakable Linux、asianux。如果安装的linuxpȝ是上面linux版本之一Q最好去oracle官方文L阅,本文仅仅限于 Ubuntu9.04,不同的版本也会有些许不同?/span>

      本文主要参考了Ubuntu论坛上的一ubuntu 8.10 安装Oracle 10G 企业版综合指?br /> http://forum.ubuntu.org.cn/viewtopic.php?f=44&t=170399&sid=0fcf8acc5269b19e513e2249edacd886&start=0
在此表示感谢Q?br />
一、验证安装Oracle 数据?10g W?2 版的pȝ要求

按照Oracle官方指南Q首先需要验证RAM和交换空间大?br /> 要查看可?RAM 和交换空间大,q行以下命oQ?br /> grep MemTotal /proc/meminfo
grep SwapTotal /proc/meminfo

我本机的例子Q?br /> dhn@dhn-laptop:~$ grep MemTotal /proc/meminfo
MemTotal:        2060248 kB
dhn@dhn-laptop:~$ grep SwapTotal /proc/meminfo
SwapTotal:       2088408 kB

? 据oracle官方|站的安装说明要求:所需最?RAM ?1,024MBQ而所需最交换空间ؓ 1GB。对?RAM 于或等?2GB 的系l,交换I间应ؓ RAM 数量的两倍;对于 RAM 大于 2GB 的系l,交换I间应ؓ RAM 数量的一C倍?br />
Oracle 数据?10g W?2 版Y件还需?2.5GB 的可用磁盘空_而数据库则另需 1.2GB 的可用磁盘空间?tmp 目录臛_需?400MB 的可用空间。要查系l上的可用磁盘空_q行以下命oQ?br /> df -h
我本机的例子Q?br /> dhn@dhn-laptop:~$ df -h
文gpȝ            定w  已用 可用 已用% 挂蝲?/span>
/dev/sda7              27G   11G   15G  44% /
tmpfs                1006M     0 1006M   0% /lib/init/rw
varrun               1006M  104K 1006M   1% /var/run
varlock              1006M     0 1006M   0% /var/lock
udev                 1006M  188K 1006M   1% /dev
tmpfs                1006M  208K 1006M   1% /dev/shm
lrm                  1006M  2.4M 1004M   1% /lib/modules/2.6.28-11-generic/volatile

可以看到Ҏ件系l可用空间ؓ15GQ大于必ȝQ?.5 + 1.2 + 0.4 = 4.1GBQ?br />
此外可能需要事先安装包libaio1Q因Z开始安装Oracle XEӞ需要安装的当时安装上了,q个未加验证?br /> 而且最好开启root用户Q因为Ubuntu默认是关闭root用户的,但是在oracle的安装过E中Q需要root用户来执行两个脚本?br />  如果需要安装libaio1Q可以通过下面来安?br />  dhn@dhn-laptop:~$ sudo apt-get install libaio1
开启root
 dhn@dhn-laptop:~$ sudo passwd root
按照提示输入新密码即可?br /> 二、创建用?br /> oracle要用oracle用户安装Q安装好后,同样用oracle用户启动?br /> //创徏用户loinstall
dhn@dhn-laptop:~$ sudo addgroup oinstall
//创徏用户ldba
dhn@dhn-laptop:~$ sudo addgroup dba
//创徏用户lnobody
dhn@dhn-laptop:~$ sudo addgroup nobody

//用户oracle的初始组设ؓoinstall,q加入到ldba中,home目录设ؓ/home/oracle.此目录如果不存在则自动创建,shell为bash?br /> dhn@dhn-laptop:~$ sudo useradd -g oinstall -G dba -d /home/oracle -m -s /bin/bash oracle
//查看nobody用户所在的l?br /> dhn@dhn-laptop:~$ id nobody
uid=65534(nobody) gid=65534(nogroup) l?65534(nogroup)
//nobody用户加入到nobodyl里?br /> dhn@dhn-laptop:~$ sudo usermod -G nobody nobody
//核实nobody加入的组里面有组nobody
dhn@dhn-laptop:~$ id nobody
uid=65534(nobody) gid=65534(nogroup) l?65534(nogroup),1003(nobody)
//讄用户oracle密码
dhn@dhn-laptop:~$ sudo passwd oracle

三、创建目录?br /> //建立oracle_base目录Q如果不存在Q就创徏Qoracle安装于此?br /> dhn@dhn-laptop:~$ sudo mkdir -p /opt/oracle10
//此目录及其下的文g或者目录的所有者改为oinstalll的oracle
dhn@dhn-laptop:~$ sudo chown -R oracle:oinstall /opt/oracle10/
//此目录及其下文件权限设?55
dhn@dhn-laptop:~$ sudo chmod -R 775 /opt/oracle10/

四、修改内核参?br /> dhn@dhn-laptop:~$ sudo gedit /etc/sysctl.conf
以下部分,增加到文件末,q保存?br /> # special setting for oracle XE
 kernel.shmmax = 536870912
 kernel.shmmni = 4096
 kernel.shmall = 2097152
 kernel.sem = 250 32000 100 128
 fs.file-max = 65536
 net.ipv4.ip_local_port_range = 1024 65000
//使设|生?br /> dhn@dhn-laptop:~$ sudo sysctl -p

dhn@dhn-laptop:~$ sudo gedit /etc/security/limits.conf
在文件末最后一行#end 之前加入下面内容?br /> #setting for oracle 10g
oracle soft nofile 65536
oracle hard nofile 65536
oracle soft nproc 16384
oracle hard nproc 16384


五、创建链接及Red Hat releaseQ?br /> //创徏一些Oracle安装E序需要的工具的连接?因ؓOracle安装E序是ؓ通过Oracle认证的Red Hat、Suse{版本准备的Q所以有些工L位置和Ubuntu不一栗?br /> dhn@dhn-laptop:~$ sudo ln -s /usr/bin/awk /bin/awk
dhn@dhn-laptop:~$ sudo ln -s /usr/bin/rpm /bin/rpm
dhn@dhn-laptop:~$ sudo ln -s /usr/bin/basename /bin/basename

建立redhat的release
因ؓOracle默认是不支持Ubuntu的,所以要把Ubuntu伪装成Redhat
dhn@dhn-laptop:/etc$ sudo touch redhat-release
dhn@dhn-laptop:/etc$ sudo gedit redhat-release
在文件内增加内容Q?br /> Red Hat Linux release 4.1

六?/使Java环境可以正常昄中文。这样在安装oracle时候的界面上的中文׃会出Cؕ码了?br /> $ cd $JAVA_HOME/jre/lib/fonts
$ sudo mkdir fallback
$ ln -s /usr/share/fonts/truetype/wqy/wqy-zenhei.ttc
$ sudo  mkfontdir
$ sudo mkfontscale

七、用oracle用户dX
q入安装文g目录
oracle@dhn-laptop:~$ ./runInstaller -jreLoc $JAVA_HOME/jre/

? 意:此处安装E序后面增加?jreLoc的参敎ͼ因ؓ刚刚我们更改了本地已l安装的jreQ之能够支持中文显C,q里的意思是使用我们修改后的 jreQ这样Oracle安装界面中文可以基本显C正怺。虽然在安装Database config assistant 时候弹出的界面仍然会出Cؕ码,但媄响不大,我记得好像就2个页面?br /> 如果不加此参敎ͼoracle会用自qjreQ但是这样安装界面中文就出现了ؕ码,当然也可以通过先执行下export LC_CTYPE=en_US.UTF-8Q再q行 runinstaller q入全英文安装界面?br /> oracle@dhn-laptop:~$ export LC_CTYPE=en_US.UTF-8

以下为我个h讄
产品清单目录完整路径 :/opt/oracle10
操作pȝl?oinstall
ORACLE_HOME:/opt/oracle10/product/10.2.0/db_1
全局数据库名Uͼorcl
sidQorcl
数据库字W集Q?ZHS16GBK
存储选择 :文gpȝ
数据文g位置Q?opt/oracle10/product/10.2.0/oradata/
安装会话日志Q?/opt/oracle10/logs/installActions2009-06-21_08-37-14AM.log

安装q程中还会出C个警告,详细看日志文Ӟ才发玎ͼ
信息: gcc: /usr/lib/libstdc++.so.5Q没有该文g或目?/span>

//查看/usr/lib下libstdc++是否存在
oracle@dhn-laptop:~$ ls /usr/lib | grep c++
libstdc++.so.6
libstdc++.so.6.0.10
发现有两个,而且主要q是使用的是libstdc++.so.6.0.10的,libstdc++.so.6仅仅是一个到libstdc++.so.6.0.10的链接文Ӟ所以我们也可以q么作?/span>建立一个链接文件即可?br /> root@dhn-laptop:~# ln -s /usr/lib/libstdc++.so.6 /usr/lib/libstdc++.so.5

然后重试Q一切ok?br />
以下是Oracle?J2EE 应用E序已经配置? q且可用下面列出?URL 来访问?br /> iSQL*Plus URL:
http://dhn-laptop:5560/isqlplus

iSQL*Plus DBA URL:
http://dhn-laptop:5560/isqlplus/dba

Enterprise Manager 10g Database Control URL:
http://dhn-laptop:1158/em

Ke 2009-12-30 16:09 发表评论
]]>
ubuntu 9.04安装oracle 10g(?http://www.aygfsteel.com/keweibo/articles/307749.htmlKeKeWed, 30 Dec 2009 05:48:00 GMThttp://www.aygfsteel.com/keweibo/articles/307749.htmlhttp://www.aygfsteel.com/keweibo/comments/307749.htmlhttp://www.aygfsteel.com/keweibo/articles/307749.html#Feedback0http://www.aygfsteel.com/keweibo/comments/commentRss/307749.htmlhttp://www.aygfsteel.com/keweibo/services/trackbacks/307749.htmlubuntu 9.04安装oracle 10g

按照q个文章Q基本可以搞?br /> [url=http://duecare.biz/webtech/oracle-10g-inst-on-ubuntu-serv.html]http://duecare.biz/webtech/oracle-10g-inst-on-ubuntu-serv.html[/url]
为防止链接失效,复制一份过来:
ORACLE 10g的安装主要参考了
[url=http://wiki.ubuntu.org.cn/Oracle10g][color=#0000ff]Ubuntu Wiki[/color][/url]
Q我自己的一些记录如下:
1、基本要求:
我的VMWare下的Ubuntu Server 7.10Q?G RAMQ?G SwapQ确认安装如下包Q?
# apt-get install gcc make binutils lesstif2 libc6 libc6-dev rpm libmotif3 libaio libstdc++5
//注意libc6-dev
2、创建用?
安装Oracle需要在你机器上新徏一个系l用户和三个l?
# addgroup oinstall
# addgroup dba
# addgroup nobody
# useradd -g oinstall -G dba -p password -d /home/oracle -s /bin/bash oracle
# passwd oracle
# usermod -g nobody nobody
3、创建目录ƈ讄权限
# mkdir -p /opt/oracle
# mkdir /opt/oradata
# chown -R oracle:oinstall /opt/ora*
# chmod -R 775 /opt/ora*
4、更改系l配|?
?etc/sysctl.conf中添加如下几行:
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 250 32000 100 128
fs.file-max = 65536
net.ipv4.ip_local_port_range = 1024 65000
q行下面命o以更新设|:
# sysctl -p
然後?etc/security/limits.conf中添加下面几行:
*    soft    nproc    2407
*    hard    nproc    16384
*    soft    nofile   1024
*    hard    nofile   65536
创徏如下W号链接Q?
# ln -s /usr/bin/awk /bin/awk
# ln -s /usr/bin/rpm /bin/rpm
# ln -s /usr/bin/basename /bin/basename
安装ORACLEq需要创建如下几个链接:
#mkdir /etc/rc.d
# ln -s /etc/rc0.d /etc/rc.d/rc0.d
# ln -s /etc/rc2.d /etc/rc.d/rc2.d
# ln -s /etc/rc3.d /etc/rc.d/rc3.d
# ln -s /etc/rc4.d /etc/rc.d/rc4.d
# ln -s /etc/rc5.d /etc/rc.d/rc5.d
# ln -s /etc/rc6.d /etc/rc.d/rc6.d
# ln -s /etc/init.d /etc/rc.d/init.d
?etc/redhat-release中添加以下语句,以安装E序认ؓ我们正在一个RedHat的系l上安装Q?
Red Hat Linux release 4.1
4、配|ORACLE用户环境
以oracle用户dQ进入主目录Q配|?profile文gQ我的配|如下:
export ORACLE_BASE=/opt/oracle
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1
export ORACLE_SID=shen
export PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib
export LC_CTYPE=en_US.UTF-8
5、安装ORACLE
选将ORACLE 10.2.0 Ftp到安装时目录,我是攑֜/home/oracle/src/database下,配置相关权限Q除runInstallerQ我在安装时出现install/.oui文g权限的问题:
chmod 755 runInstaller
cd install
chmod 755 unzip
chmod 755 .oui
配置XServerQ由于Ubuntu Server没有囑Ş界面Q因此需要配|外部XWindowsQ我很久以前在使用的一个叫X-Win32的很的E序Q可以作XWin的,之前? RHAS/Solaris上安装都没问题,l果q次用Ubuntu安装一直出C了Java界面Q折腾了很长旉Q本惛_Ubuntu Server上安装Desktop的,但看包太大,于是攑ּQ从|上下了一个最新版本的XmanagerQ结果成功安装?
export DISPLAY=10.0.0.9:0.0
最新更?08-01-27)Q图形界面的原因不在X-Win32Q而是Ubuntu要将囑Ş输出到外部的XWinQ自w必LXWin的核心:
$ sudo apt-get install x-window-system-core
执行安装E序Q安装过E非帔R利,甚至在wiki里提到的在执行root.sh时要配置的几个内容,我都没有配置Q创建数据库成功。(我在RHAS4下也有很多警告的Q在q里竟然一个都没有Q很让我吃惊。)
在执行root.sh旉到点麻烦,我的oracle帐户没有sudo权限Q有sudo权限的又无法q入ORACLE_HOMEQ后来先用oracle 帐户q入到root.sh目录下,然后su成有sudo权限的帐户再sudo ./root.sh的。写q个备忘的时候才发现自己如此之笨Q在哪个目录下sudo不是一L嘛!Q?br />
另,安装q程中会遇到q个问题Q参考这里解?br /> [url=http://www.oklinux.cn/html/sql/other/20090714/71878.html]http://www.oklinux.cn/html/sql/other/20090714/71878.html[/url]
内容复制q来
今天?br /> [url=http://so.oklinux.cn/%20title=][color=#0000ff]Ubuntu[/color][/url]
Server 9.04 上安装Oracle 10.2Q安装到80%时出现all_no_orcl错误
Ҏ提示打开日志文gQ发现如下错误:
信息: Creating /opt/oracle/lib/liborasdkbase.so.10.2
信息: gcc:
信息: /usr/lib/libstdc .so.5Q没有该文g或目?br /> 信息:
信息: /opt/oracle/bin/genorasdksh: Failed to link liborasdkbase.so.10.2
信息: make: *** [liborasdkbase] 错误 1
原来是libstdc 包的错误Q经查,原来应该安装libstdc 5的包Q但是系l在安装其他E序?br /> 已经安装libstdc 6的包Q导致libstdc 5未安?br /> 那么如何解决?l多Ҏ找,可以使用鱼目L的方式,如下Q?br /> 打开另外一个终端执行以下命?br /> cd /usr/lib
ln -s libstdc .so.6 libstdc .so.5
然后q回Oracle安装界面Q重?


[b]本文来自ChinaUnix博客Q如果查看原文请点:[/b][url]http://blog.chinaunix.net/u3/93140/showart_2007242.html[/url]

Ke 2009-12-30 13:48 发表评论
]]>
oracle 層次查詢http://www.aygfsteel.com/keweibo/articles/306484.htmlKeKeFri, 18 Dec 2009 02:12:00 GMThttp://www.aygfsteel.com/keweibo/articles/306484.htmlhttp://www.aygfsteel.com/keweibo/comments/306484.htmlhttp://www.aygfsteel.com/keweibo/articles/306484.html#Feedback0http://www.aygfsteel.com/keweibo/comments/commentRss/306484.htmlhttp://www.aygfsteel.com/keweibo/services/trackbacks/306484.html     start with c.NUMTREENODE in (
        SELECT sf.NUMTREENODE
          FROM ECSM_SFIS_SYS_ROLE_FUNC rf, ECSM_SFIS_SYS_ROLE sr, ECSM_SFIS_SYS_FUNC sf, ECSM_SFIS_SYS_EMP se, ECSM_SFIS_SYS_ROLE_EMP re
          WHERE rf.ROLE_INDEX = sr.NUMINDEX and rf.FUNC_INDEX= sf.NUMINDEX and re.EMP_INDEX = se.NUMINDEX
        and re.ROLE_INDEX = sr.NUMINDEX and sf.STRTYPE ='Y' and (se.STRUSERNAME = 'guest' or se.STRUSERNAME = #username# )
    )
    connect by prior c.numnode = c.numtreenode

CREATE TABLE BARCODE.ECSM_SFIS_SYS_FUNC
(
  NUMINDEX       INTEGER                        NOT NULL,
  NUMTREENODE    NUMBER                         NOT NULL,
  NUMNODE        NUMBER                         NOT NULL,
  STRFUNCTION    VARCHAR2(32 BYTE)              NOT NULL,
  STRCREATEUSER  VARCHAR2(16 BYTE)              NOT NULL,
  DTCREATE       DATE,
  STRTITLE       VARCHAR2(64 BYTE),
  STRTARGET      VARCHAR2(16 BYTE),
  STRURL         VARCHAR2(128 BYTE),
  STRTYPE        CHAR(1 BYTE)
)



Ke 2009-12-18 10:12 发表评论
]]>
oracle nvl(), cont(), decode()函數, case表達式結合用的一條SQL語句http://www.aygfsteel.com/keweibo/articles/300184.htmlKeKeThu, 29 Oct 2009 07:22:00 GMThttp://www.aygfsteel.com/keweibo/articles/300184.htmlhttp://www.aygfsteel.com/keweibo/comments/300184.htmlhttp://www.aygfsteel.com/keweibo/articles/300184.html#Feedback0http://www.aygfsteel.com/keweibo/comments/commentRss/300184.htmlhttp://www.aygfsteel.com/keweibo/services/trackbacks/300184.html          COUNT(decode(r.maintain_no, 'MAINTAIN', 'MAINTAIN','REPAIR', 'REPAIR', null)) as "E修^次?,
         COUNT(decode(r.maintain_no, 'MAINTAIN', 'MAINTAIN', null)) as "正常E修ơ數",
         COUNT(decode(r.maintain_no, 'REPAIR', 'REPAIR', null)) as "q修ơ數",
         case COUNT(decode(r.maintain_no, 'MAINTAIN', 'MAINTAIN','REPAIR', 'REPAIR', null))
         when 0 then 0
         else
         COUNT(decode(r.maintain_no, 'REPAIR', 'REPAIR', null))/COUNT(decode(r.maintain_no, 'MAINTAIN', 'MAINTAIN','MAINTAIN', 'MAINTAIN', null))
         end as "q修?
    FROM smtuser.feeder_maintain_recordn r, smtuser.feeder_tools_info i
   WHERE r.tools_no(+) = i.tools_no
     AND TO_CHAR (r.repair_date(+), 'YYYY/MM/DD') = TO_CHAR (SYSDATE, 'YYYY/MM/DD')
GROUP BY rollup(i.tools_model)


Ke 2009-10-29 15:22 发表评论
]]>
慎用Oracle的not in (?http://www.aygfsteel.com/keweibo/articles/299053.htmlKeKeTue, 20 Oct 2009 08:05:00 GMThttp://www.aygfsteel.com/keweibo/articles/299053.htmlhttp://www.aygfsteel.com/keweibo/comments/299053.htmlhttp://www.aygfsteel.com/keweibo/articles/299053.html#Feedback0http://www.aygfsteel.com/keweibo/comments/commentRss/299053.htmlhttp://www.aygfsteel.com/keweibo/services/trackbacks/299053.html    据说EXCEL2007版本已经提供了这U比对的功能Q但无奈数据量太大,操作h巨慢如牛Q而WPS2009gq没q个功能Q于是导入数据库中新Z个表存储q些数据来比寏V?/p>

    开始写了个SQL来查询税务有而ERPpȝ中没有的数据Q?/p>

    select * from tab_excel where taxcode not in

    (select erpcode from tab_excel)

    正常Q然后反q来查ERP中存在而税务系l中不存在的数据Q?/p>

    select * from tab_excel where erpcode not in

    (select taxcode from tab_excel)

    q回0条数据,很奇怪,然后马上惛_了是null的问题,taxcode必然存在gؓnull的记录,oracle中和null比较的返回值是unkownQ所以才无法匚w?/p>

    于是修改SQL语句如下Q?/p>

    select * from tab_excel tout where not exists

    (select 1 from tab_excel where taxcode=tout.erpcode)

    l果正常?/p>

    not in (...) 括号中的q回g能存在null|?a class="channel_keylink" target="_blank">Oracle SQL开发的一条铁律,如果不能定q回l果一定无null|q是改写为not esists吧。而且not in效率低下Q一般不能用到烦引,生环境的程序最好不要用?/p>

Ke 2009-10-20 16:05 发表评论
]]>
oracle使用Decode函數ipơ數http://www.aygfsteel.com/keweibo/articles/298563.htmlKeKeFri, 16 Oct 2009 06:03:00 GMThttp://www.aygfsteel.com/keweibo/articles/298563.htmlhttp://www.aygfsteel.com/keweibo/comments/298563.htmlhttp://www.aygfsteel.com/keweibo/articles/298563.html#Feedback0http://www.aygfsteel.com/keweibo/comments/commentRss/298563.htmlhttp://www.aygfsteel.com/keweibo/services/trackbacks/298563.html count(*) "^次?,
count(decode(c.status,0,0,null)) "通過ơ數",
count(decode(c.status,1,1,null)) "異常ơ數"
from tbl_smt_check c, tbl_smt_seq s
 where c.SEQ = s.SEQ and c.STATUS in (0, 1)

其中,STATUS數據列的值為 0 或?1


Ke 2009-10-16 14:03 发表评论
]]>
oracle 使用多表插入數據http://www.aygfsteel.com/keweibo/articles/294808.htmlKeKeSat, 12 Sep 2009 01:24:00 GMThttp://www.aygfsteel.com/keweibo/articles/294808.htmlhttp://www.aygfsteel.com/keweibo/comments/294808.htmlhttp://www.aygfsteel.com/keweibo/articles/294808.html#Feedback0http://www.aygfsteel.com/keweibo/comments/commentRss/294808.htmlhttp://www.aygfsteel.com/keweibo/services/trackbacks/294808.htmlInsert all Insert_into_clause [value_clause] subquery;
Insert conditional_insert_clause subquery;
如上所C,insert_into_clause用于指定insert子句Qvalue clause用于指定值子句;subquery用于指定提供数据的子查询Qcondition_insert_clause用于指定insert条g子句?/div>
当用all操作W执行多表插入时Q在每个条g子句上都要执行into子句后的子查询,q且条g中用的列必d插入和子查询的结果集中:

--使用all关键字执行多表插入操?/span>
insertall
when birthday > '01-1?/span>-08'theninto tdate1
when birthday < '01-1?/span>-08'theninto tdate2
whenname = 'zhangsan'theninto tdate1
whenname = 'lisi'theninto tdate2
select * from tdate;
在上q操作语句中Q如果原表tdate中存在既满birthday > '01-1?/span>-08'又满?/span>name = 'zhangsan'的数据,那么执行两ơ插入。而?/span>first关键字就可以避免q个问题。?/span>first关键字时Q如果有记录已经满先前条gQƈ且已l被插入到某个表单中Q未必非要是同一个表Q,那么该行数据在后l插入中不会被再次使用。也是说?/span>first关键字,原表每行数据按照执行序只会被插入一ơ?/span>
insertfirst
when birthday > '01-1?/span>-08'theninto tdate1
when birthday < '01-1?/span>-08'theninto tdate2
whenname = 'zhangsan'theninto tdate1
whenname = 'lisi'theninto tdate2
select * from tdate;


Ke 2009-09-12 09:24 发表评论
]]>rowconcat 函數http://www.aygfsteel.com/keweibo/articles/294241.htmlKeKeTue, 08 Sep 2009 00:12:00 GMThttp://www.aygfsteel.com/keweibo/articles/294241.htmlhttp://www.aygfsteel.com/keweibo/comments/294241.htmlhttp://www.aygfsteel.com/keweibo/articles/294241.html#Feedback0http://www.aygfsteel.com/keweibo/comments/commentRss/294241.htmlhttp://www.aygfsteel.com/keweibo/services/trackbacks/294241.html      ret  VARCHAR2(4000);
     hold VARCHAR2(4000);
     cur  sys_refcursor;
   BEGIN
     OPEN cur FOR q;
     LOOP
       FETCH cur INTO hold;
       EXIT WHEN cur%NOTFOUND;
      IF ret IS NULL THEN
        ret := hold;
      ELSE
        ret := ret || ',' || hold;
      END IF;
    END LOOP;
    RETURN ret;
  END;
/


Ke 2009-09-08 08:12 发表评论
]]>
not exists http://www.aygfsteel.com/keweibo/articles/294213.htmlKeKeMon, 07 Sep 2009 12:15:00 GMThttp://www.aygfsteel.com/keweibo/articles/294213.htmlhttp://www.aygfsteel.com/keweibo/comments/294213.htmlhttp://www.aygfsteel.com/keweibo/articles/294213.html#Feedback0http://www.aygfsteel.com/keweibo/comments/commentRss/294213.htmlhttp://www.aygfsteel.com/keweibo/services/trackbacks/294213.html

SELECT NUMINDEX,STRITEMNO,NUMTYPE,STRMODELNAME,TO_CHAR(DTUPDATE,'YYYY/MM/DD HH24:MI:SS')AS DTUPDATE

FROM ECSM_ITEMNO_INFORMATION e

     where e.STRITEMNO not in (select i.STRITEMNO from TBL_SMT_ITEMNO i)

           and e.DTUPDATE not in (select i.CREATEDATE from TBL_SMT_ITEMNO i)

            order by DTUPDATE desc



Wallace's SQL:

SELECT NUMINDEX,STRITEMNO,NUMTYPE,STRMODELNAME,TO_CHAR(DTUPDATE,'YYYY/MM/DD HH24:MI:SS') AS DTUPDATE

FROM ECSM_ITEMNO_INFORMATION e

     where not exists ( select 1 from TBL_SMT_ITEMNO i where i.STRITEMNO=e.STRITEMNO and i.CREATEDATE=e.DTUPDATE )




Ke 2009-09-07 20:15 发表评论
]]>
多行一列轉成一行多列的SQL語句http://www.aygfsteel.com/keweibo/articles/294212.htmlKeKeMon, 07 Sep 2009 12:12:00 GMThttp://www.aygfsteel.com/keweibo/articles/294212.htmlhttp://www.aygfsteel.com/keweibo/comments/294212.htmlhttp://www.aygfsteel.com/keweibo/articles/294212.html#Feedback0http://www.aygfsteel.com/keweibo/comments/commentRss/294212.htmlhttp://www.aygfsteel.com/keweibo/services/trackbacks/294212.htmlBob's SQL:

select CONTENT "料號" from T_DISENABLE_MATERIAL_INFO where ITEM='M' and DOCUMENT_ID=4329

select CONTENT "DC" from T_DISENABLE_MATERIAL_INFO where ITEM='D' and DOCUMENT_ID=4329

select CONTENT "LOTNO" from T_DISENABLE_MATERIAL_INFO where ITEM='C' and DOCUMENT_ID=4329

select CONTENT "廠商名稱" from T_DISENABLE_MATERIAL_INFO where ITEM='V' and DOCUMENT_ID=4329

select CONTENT "廠商代碼" from T_DISENABLE_MATERIAL_INFO where ITEM='N' and DOCUMENT_ID=4329


 

Wallace's SQL

select max(decode(item,'M',content,'')) "料號",

     max(decode(item,'D',content,'')) DC,

     max(decode(item,'C',content,'')) LOTNO,

     max(decode(item,'V',content,'')) "廠商名稱",

     max(decode(item,'N',content,'')) "廠商代碼" from T_DISENABLE_MATERIAL_INFO where DOCUMENT_ID=4329



Ke 2009-09-07 20:12 发表评论
]]>
Java调用Oracle函数http://www.aygfsteel.com/keweibo/articles/270153.htmlKeKeTue, 12 May 2009 02:27:00 GMThttp://www.aygfsteel.com/keweibo/articles/270153.htmlhttp://www.aygfsteel.com/keweibo/comments/270153.htmlhttp://www.aygfsteel.com/keweibo/articles/270153.html#Feedback2http://www.aygfsteel.com/keweibo/comments/commentRss/270153.htmlhttp://www.aygfsteel.com/keweibo/services/trackbacks/270153.html 

调用无入参的函数

函数定义

CREATE OR REPLACE Function f_getstring Return Varchar2 Is
Begin
 Return ''String value'';
End f_getstring;

调用函数的Java片断

   CallableStatement cstmt = con.prepareCall("{?=call f_getstring}");
   cstmt.registerOutParameter(1, Types.VARCHAR);
   cstmt.execute();
   String strValue = cstmt.getString(1);
   System.out.println("The return value is:" + strValue);
   cstmt.close();

调用有一个入参,一个输出参C及一个字W串q回值的函数

函数定义

CREATE OR REPLACE Function f_Getinfo(Id Integer, Age Out Integer) Return Varchar2 Is
Begin
 Age := 10;
 Return ''The age is:'' || Id;
End f_Getinfo;

调用函数的Java代码片断

   CallableStatement cstmt = con
     .prepareCall("{?=call f_getinfo(?,?)}");
   cstmt.registerOutParameter(1, Types.VARCHAR);
   cstmt.setInt(2, 11);
   cstmt.registerOutParameter(3, Types.INTEGER);
   cstmt.execute();
   String strValue = cstmt.getString(1);
   int age = cstmt.getInt(3);
   System.out.println("The return value is:" + strValue
     + " and age is:" + age);
   cstmt.close();



Ke 2009-05-12 10:27 发表评论
]]>转脓QOracle中UTL_FILE包的用法http://www.aygfsteel.com/keweibo/articles/254308.htmlKeKeWed, 11 Feb 2009 12:26:00 GMThttp://www.aygfsteel.com/keweibo/articles/254308.htmlhttp://www.aygfsteel.com/keweibo/comments/254308.htmlhttp://www.aygfsteel.com/keweibo/articles/254308.html#Feedback0http://www.aygfsteel.com/keweibo/comments/commentRss/254308.htmlhttp://www.aygfsteel.com/keweibo/services/trackbacks/254308.html最q接触了Oracle的读写文件操作,于是使用到UTL_FILE包,再网上查扑ֈ一些有用的信息Q在此和大家分n一下?

      以下译来自《Oracle Built-in Packages》的W六章,只翻译了部分Q想了解的更详细Q请参考原文?a >http://www.oreilly.com/catalog/oraclebip/chapter/ch06.html

FOPEN
IS_OPEN
GET_LINE
PUT
NEW_LINE
PUT_LINE
PUTF
FFLUSH
FCLOSE
FCLOSE_ALL

UTL_FILE.FOPEN 用法
FOPEN会打开指定文gq返回一个文件句柄用于操作文件?br /> 所有PL/SQL版本:                 Oracle 8.0版及以上:
FUNCTION UTL_FILE.FOPEN (      FUNCTION UTL_FILE.FOPEN (
    location     IN VARCHAR2,      location     IN VARCHAR2,
    filename     IN VARCHAR2,      filename     IN VARCHAR2,
    open_mode    IN VARCHAR2)      open_mode    IN VARCHAR2,
RETURN file_type;                 max_linesize IN BINARY_INTEGER)
                                RETURN file_type;

参数

location
文g地址

filename
文g?br />
openmode
打开文g的模式(参见下面说明Q?br />
max_linesize
文g每行最大的字符敎ͼ包括换行W。最ؓ1Q最大ؓ32767

3U文件打开模式Q?br /> R 只读模式。一般配合UTL_FILE的GET_LINE来读文g?br /> W 写(替换Q模式。文件的所有行会被删除。PUT, PUT_LINE, NEW_LINE, PUTF和FFLUSH都可使用
A 写(附加Q模式。原文g的所有行会被保留。在最末尾行附加新行。PUT, PUT_LINE, NEW_LINE, PUTF和FFLUSH都可使用

打开文g时注意以下几点:
文g路径和文件名合v来必表C操作系l中一个合法的文g?br /> 文g路径必须存在q可讉KQFOPENq不会新Z个文件夹?br /> 如果你想打开文gq行L作,文g必须存在Q如果你x开文gq行写操作,文g不存在时Q会新徏一个文件?br /> 如果你想打开文gq行附加操作Q文件必d在。A模式不同于W模式。文件不存在Ӟ会抛出INVALID_OPERATION异常?/p>

FOPEN 会抛Z下异?br /> UTL_FILE.INVALID_MODE
UTL_FILE.INVALID_OPERATION
UTL_FILE.INVALID_PATH
UTL_FILE.INVALID_MAXLINESIZE

UTL_FILE.IS_OPEN用法
如果文g句柄指定的文件已打开Q返回TRUEQ否则FALSE

FUNCTION UTL_FILE.IS_OPEN (file IN UTL_FILE.FILE_TYPE) RETURN BOOLEAN;

UTL_FILE只提供一个方法去d数据QGET_LINE

UTL_FILE.GET_LINE用法
d指定文g的一行到提供的缓存?br /> PROCEDURE UTL_FILE.GET_LINE
   (file IN UTL_FILE.FILE_TYPE,
    buffer OUT VARCHAR2);

file
由FOPENq回的文件句?br />
buffer
d的一行数据的存放~存

buffer必须_大。否则,会抛出VALUE_ERROR 异常。行l止W不会被传进buffer?/p>

异常
NO_DATA_FOUND
VALUE_ERROR
UTL_FILE.INVALID_FILEHANDLE
UTL_FILE.INVALID_OPERATION
UTL_FILE.READ_ERROR


UTL_FILE.PUT用法
在当前行输出数据
PROCEDURE UTL_FILE.PUT
    (file IN UTL_FILE.FILE_TYPE,
    buffer OUT VARCHAR2);
file
由FOPENq回的文件句?br /> buffer
包含要写入文件的数据~存QOracle8.0.3及以上最大允?2kBQ早期版本只?023B

UTL_FILE.PUT输出数据时不会附加行l止W?/p>

UTL_FILE.PUT会生以下异?br /> UTL_FILE.INVALID_FILEHANDLE
UTL_FILE.INVALID_OPERATION
UTL_FILE.WRITE_ERROR

UTL_FILE.NEW_LINE
在当前位|输出新行或行终止符Q必M用NEW_LINE来结束当前行Q或者用PUT_LINE输出带有行终止符的完整行数据?/p>

PROCEDURE UTL_FILE.NEW_LINE
   (file IN UTL_FILE.FILE_TYPE,
    lines IN NATURAL := 1);
file
由FOPENq回的文件句?br /> lines
要插入的行数

如果不指定lines参数QNEW_LINE会用默认?Q在当前行尾换行。如果要插入一个空白行Q可以用以下语句:
UTL_FILE.NEW_LINE (my_file, 2);
如果lines参数?或负敎ͼ什么都不会写入文g?/p>

NEW_LINE会生以下异?br /> VALUE_ERROR
UTL_FILE.INVALID_FILEHANDLE
UTL_FILE.INVALID_OPERATION
UTL_FILE.WRITE_ERROR
例子
如果要在UTL_FILE.PUT后立L行,可以如下例所C:
PROCEDURE add_line (file_in IN UTL_FILE.FILE_TYPE, line_in IN VARCHAR2)
IS
BEGIN
   UTL_FILE.PUT (file_in, line_in);
   UTL_FILE.NEW_LINE (file_in);
END;


UTL_FILE.PUT_LINE
输出一个字W串以及一个与pȝ有关的行l止W?br /> PROCEDURE UTL_FILE.PUT_LINE
    (file IN UTL_FILE.FILE_TYPE,
    buffer IN VARCHAR2);
file
由FOPENq回的文件句?br /> buffer
包含要写入文件的数据~存QOracle8.0.3及以上最大允?2kBQ早期版本只?023B
在调用UTL_FILE.PUT_LINE前,必须先打开文g?br /> UTL_FILE.PUT_LINE会生以下异?br /> UTL_FILE.INVALID_FILEHANDLE
UTL_FILE.INVALID_OPERATION
UTL_FILE.WRITE_ERROR

例子
q里利用UTL_FILE.PUT_LINE从表empd数据到文Ӟ
PROCEDURE emp2file
IS
   fileID UTL_FILE.FILE_TYPE;
BEGIN
   fileID := UTL_FILE.FOPEN ('/tmp', 'emp.dat', 'W');

   /* Quick and dirty construction here! */
   FOR emprec IN (SELECT * FROM emp)
   LOOP
      UTL_FILE.PUT_LINE
         (TO_CHAR (emprec.empno) || ',' ||
          emprec.ename || ',' ||
          ...
          TO_CHAR (emprec.deptno));
   END LOOP;

   UTL_FILE.FCLOSE (fileID);
END;
PUT_LINE相当于PUT后加上NEW_LINEQ也相当于PUTF的格式串"%s\n"?/p>

UTL_FILE.PUTF
以一个模版样式输?个字W串Q类似C中的printf

PROCEDURE UTL_FILE.PUTF
    (file IN FILE_TYPE
    ,format IN VARCHAR2
    ,arg1 IN VARCHAR2 DEFAULT NULL
    ,arg2 IN VARCHAR2 DEFAULT NULL
    ,arg3 IN VARCHAR2 DEFAULT NULL
    ,arg4 IN VARCHAR2 DEFAULT NULL
    ,arg5 IN VARCHAR2 DEFAULT NULL);
file
由FOPENq回的文件句?br /> format
军_格式的格式串
argN
可选的5个参敎ͼ最??/p>

格式串可使用以下样式
%s
在格式串中可以用最??sQ与后面?个参C一对应
\n
换行W。在格式串中没有个数限制
%s会被后面的参Cơ填充,如果没有_的参敎ͼ%s会被忽视Q不被写入文?/p>

UTL_FILE.PUTF会生以下异?br /> UTL_FILE.INVALID_FILEHANDLE
UTL_FILE.INVALID_OPERATION
UTL_FILE.WRITE_ERROR

UTL_FILE.FFLUSH
保所有数据写入文件?br /> PROCEDURE UTL_FILE.FFLUSH (file IN UTL_FILE.FILE_TYPE);
file
由FOPENq回的文件句?/p>

操作pȝ可能会缓存数据来提高性能。因此可能调用put后,打开文g却看不到写入的数据。在关闭文g前要d数据的话可以使用UTL_FILE.FFLUSH?br /> 典型的用方法包括分析执行进度和调试U录?br /> UTL_FILE.FFLUSH会生以下异?br /> UTL_FILE.INVALID_FILEHANDLE
UTL_FILE.INVALID_OPERATION
UTL_FILE.WRITE_ERROR

UTL_FILE.FCLOSE
关闭文g
PROCEDURE UTL_FILE.FCLOSE (file IN OUT FILE_TYPE);
file
由FOPENq回的文件句?/p>

注意file是一个IN OUT参数Q因为在关闭文g后会讄为NULL
当试囑օ闭文件时有缓存数据未写入文gQ会抛出WRITE_ERROR异常

UTL_FILE.FCLOSE会生以下异?br /> UTL_FILE.INVALID_FILEHANDLE
UTL_FILE.WRITE_ERROR

UTL_FILE.FCLOSE_ALL
关闭所有已打开的文?br /> PROCEDURE UTL_FILE.FCLOSE_ALL;

在结束程序时要确保所有打开的文件已关闭Q可使用FCLOSE_ALL
也可以在EXCEPTION使用Q当异常退出时Q文件也会被关闭?br /> EXCEPTION
   WHEN OTHERS
  
THEN
      UTL_FILE.FCLOSE_ALL;
      ... other clean up activities ...
END;

注意Q当使用FCLOSE_ALL关闭所有文件时Q文件句柄ƈ不会标记为NULLQ用IS_OPEN会返回TRUE。但是,那些关闭的文件不能执行读写操作(除非你再ơ打开文gQ?br /> UTL_FILE.FCLOSE_ALL会生以下异?br /> UTL_FILE.WRITE_ERROR



Ke 2009-02-11 20:26 发表评论
]]>
MySQL Migration Toolkithttp://www.aygfsteel.com/keweibo/articles/175805.htmlKeKeWed, 16 Jan 2008 15:52:00 GMThttp://www.aygfsteel.com/keweibo/articles/175805.htmlhttp://www.aygfsteel.com/keweibo/comments/175805.htmlhttp://www.aygfsteel.com/keweibo/articles/175805.html#Feedback0http://www.aygfsteel.com/keweibo/comments/commentRss/175805.htmlhttp://www.aygfsteel.com/keweibo/services/trackbacks/175805.html MySQL Migration Toolkit

http://www.mysql.com/products/tools/migration-toolkit/
相关视频教程

Ke 2008-01-16 23:52 发表评论
]]>
վ֩ģ壺 | | ӳ| Զ| | ³| ͤ| ɽ| Դ| | | ڳ| | | | | ɽ| | Ϊ| | | | | ľ| ɽ| ֣| ˹| | | Ȫ| ˫| | ³ľ| ¡| ƽ| | | ̴| غ| ն| |