﻿<?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-Rising Sun -随笔分类-oracle 数据库</title><link>http://www.blogjava.net/brock/category/25827.html</link><description /><language>zh-cn</language><lastBuildDate>Wed, 30 Apr 2014 18:44:53 GMT</lastBuildDate><pubDate>Wed, 30 Apr 2014 18:44:53 GMT</pubDate><ttl>60</ttl><item><title>电脑非法关机 导致ORA-01033:解决方法</title><link>http://www.blogjava.net/brock/archive/2014/04/30/413091.html</link><dc:creator>brock</dc:creator><author>brock</author><pubDate>Wed, 30 Apr 2014 06:38:00 GMT</pubDate><guid>http://www.blogjava.net/brock/archive/2014/04/30/413091.html</guid><wfw:comment>http://www.blogjava.net/brock/comments/413091.html</wfw:comment><comments>http://www.blogjava.net/brock/archive/2014/04/30/413091.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/brock/comments/commentRss/413091.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/brock/services/trackbacks/413091.html</trackback:ping><description><![CDATA[<p>今天研究Oracle遇到了这个问题ora-01033:oracle initializationor shutdown in progress</p><p>ORA-01033:ORACLEinitialization or shutdown in progress</p><p>解决方法</p><p>1)开始-运行-cmd</p><p>2)命令行中输入SQLPLUS SYS/SYS AS SYSDBA</p><p>3)输入SHUTDOWN</p><p>4)输入STARTUP.注意这里是最重要的地方,在显示相关数据后,它还会显示为什么不能启动的错误所在.</p><p>&nbsp;</p><p>C:\Users\lenovo&gt;SQLPLUSSYS/SYS AS SYSDBA</p><p>SQL*Plus: Release 10.2.0.3.0 - Production on星期三 7月 3 11:43:32 2013</p><p>Copyright (c) 1982, 2006, Oracle.&nbsp; All Rights Reserved.</p><p>连接到:</p><p>Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 -Production</p><p>With the Partitioning, OLAPand Data Mining options</p><p>SQL&gt; SHUTDOWN</p><p>ORA-01109:数据库未打开</p><p>已经卸载数据库。</p><p>ORACLE例程已经关闭。</p><p>SQL&gt; STARTUP</p><p>ORACLE例程已经启动。</p><p>Total System Global Area&nbsp;293601280 bytes</p><p>Fixed Size&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1290208 bytes</p><p>Variable Size&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;234881056 bytes</p><p>Database Buffers&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;50331648 bytes</p><p>Redo Buffers&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;7098368 bytes</p><p>数据库装载完毕。</p><p>ORA-01157:无法标识/锁定数据文件 6 - 请参阅 DBWR 跟踪文件</p><p>ORA-01110:数据文件 6: 'F:\DC\DB\SDRS\TS_SDRS.DBF'</p><p>SQL&gt; alter databasedatafile'F:\DC\DB\SDRS\TS_SDRS.DBF'offline drop;</p><p>&nbsp;</p><p>数据库已更改。</p><p>&nbsp;</p><p>SQL&gt; alter database open;</p><p>&nbsp;</p><p>数据库已更改。</p><p>&nbsp;</p><p>SQL&gt; drop tablespaceTS_SDRS including contents;</p><p>&nbsp;</p><p>表空间已删除。</p><p>SQL&gt; create undo tablespace TS_SDRS</p><p>&nbsp; 2&nbsp; datafile'CracleoradatasmsdbUNDOTBS01.DBF'size 2048M extent management local;</p><p>&nbsp;</p><p>表空间已创建。</p><p>&nbsp;</p><p>SQL&gt; alter system setundo_tablespace=TS_SDRS;</p><p>&nbsp;</p><p>系统已更改。</p><p>&nbsp;</p><p>SQL&gt; shutdown</p><p>数据库已经关闭。</p><p>已经卸载数据库。</p><p>ORACLE例程已经关闭。</p><p>SQL&gt; startup</p><p>ORACLE例程已经启动。</p><p>&nbsp;</p><p>Total System Global Area&nbsp; 293601280 bytes</p><p>Fixed Size&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1290208 bytes</p><p>Variable Size&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;243269664 bytes</p><p>Database Buffers&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;41943040 bytes</p><p>Redo Buffers&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;7098368 bytes</p><p>数据库装载完毕。</p><p>数据库已经打开。</p><p>SQL&gt;</p><br />------------------<br /><a href="http://blog.itpub.net/22049049/viewspace-1029212/">ORA-01245、ORA-01547错误的解决</a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <em></em><br /><p>数据库rman restore database 之后，执行recover database的时候，报告ORA-01245错误，详细的错误信息如下： </p><p><table bgcolor="#999999"><tbody><tr><td><br />SQL&gt; recover database until cancel;<br />ORA-00279: change 575876 generated at 12/01/2009 08:19:49 needed for thread 1<br />ORA-00289: suggestion :<br />/oracle/flash_recovery_area/ORCL/archivelog/2009_12_01/o1_mf_1_2_%u_.arc<br />ORA-00280: change 575876 for thread 1 is in sequence #2<br /><br /><br />Specify log: {<ret>=suggested | filename | AUTO | CANCEL}<br />auto<br />ORA-00308: cannot open archived log<br />'/oracle/flash_recovery_area/ORCL/archivelog/2009_12_01/o1_mf_1_2_%u_.arc'<br />ORA-27037: unable to obtain file status<br />Linux Error: 2: No such file or directory<br />Additional information: 3<br /><br /><br />ORA-00308: cannot open archived log<br />'/oracle/flash_recovery_area/ORCL/archivelog/2009_12_01/o1_mf_1_2_%u_.arc'<br />ORA-27037: unable to obtain file status<br />Linux Error: 2: No such file or directory<br />Additional information: 3<br /><br /><br />ORA-01547: warning: RECOVER succeeded but OPEN RESETLOGS would get error below<br /><font color="#ff0000">ORA-01245: offline file 2 will be lost if RESETLOGS is done</font><br />ORA-01110: data file 2: '/oracle/oradata/orcl/undotbs01.dbf'<br /><br /><br />SQL&gt; </ret></td></tr></tbody></table><p>&nbsp;</p>[@more@]<p>检查ORA-01245那一行，发现是datafile 2状态为offline，解决的方法就是首先将datafile 2 online，然后再recover database。 </p><table bgcolor="#999999"><tbody><tr><td>SQL&gt; alter database datafile 2 online; <br /><br />Database altered. <br /><br />SQL&gt; recover database until cancel; <br />ORA-00279: change 575876 generated at 12/01/2009 08:19:49 needed for thread 1 <br />ORA-00289: suggestion : <br />/oracle/flash_recovery_area/ORCL/archivelog/2009_12_01/o1_mf_1_2_%u_.arc <br />ORA-00280: change 575876 for thread 1 is in sequence #2 <br /><br /><br />Specify log: {<ret>=suggested | filename | AUTO | CANCEL} <br />cancel <br />Media recovery cancelled. <br />SQL&gt; alter database open resetlogs; <br /><br />Database altered. <br /><br />SQL&gt;</ret></td></tr></tbody></table><br />--------------------<br /><h2 class="titName SG_txta" id="t_4ac959fa0100gyls">ORA-01589:&nbsp;要打开数据库则必须使用&nbsp;RESETLOGS&nbsp;或&nbsp;NOR</h2><br /><p><font style="font-size: 20px;">ORA-01589: 要打开数据库则必须使用 RESETLOGS 或 NORESETLOGS <br />选项<br /></font></p><br /><p>SQL&gt; alter database open&nbsp;<wbr><br />ORA-01589: 要打开数据库则必须使用 RESETLOGS 或 <br />NORESETLOGS 选项<br /><br />SQL&gt; alter database open resetlogs;<br />alter database <br />open resetlogs<br />*<br />ERROR 位于第 1 行:<br />ORA-01113: 文件 1 需要介质恢复<br />ORA-01110: <br />数据文件 1: 'E:\ORACLE\ORADATA\EYGLE\SYSTEM01.DBF'<br /><br />SQL&gt; recover database <br />using backup controlfile;<br />ORA-00279: 更改 1670743 (在 04/17/2008 14:13:16 生成) <br />对于线程 1 是必需的<br />ORA-00289: 建议: E:\ORACLE\ORA92\RDBMS\ARC00030.001<br />ORA-00280: <br />更改 1670743 对于线程 1 是按序列 # 30 进行的<br /><br />指定日志: {&lt;RET&gt;=suggested | filename | <br />AUTO | CANCEL}<br />E:\oracle\oradata\EYGLE\REDO01.LOG<br />ORA-00310: 存档日志包含序列 <br />29；要求序列 30<br />ORA-00334: 归档日志: <br />'E:\ORACLE\ORADATA\EYGLE\REDO01.LOG'<br /><br />SQL&gt; recover database using <br />backup controlfile;<br />ORA-00279: 更改 1670743 (在 04/17/2008 14:13:16 生成) 对于线程 1 <br />是必需的<br />ORA-00289: 建议: E:\ORACLE\ORA92\RDBMS\ARC00030.001<br />ORA-00280: 更改 <br />1670743 对于线程 1 是按序列 # 30 进行的<br /><br />指定日志: {&lt;RET&gt;=suggested | filename | <br />AUTO | <br />CANCEL}<br />E:\oracle\oradata\EYGLE\REDO02.LOG<br />已应用的日志。<br />完成介质恢复。<br />SQL&gt; <br />alter database open resetlogs;<br />数据库已更改。<br /><br /><br />OK,搞定了!<br /></p><img src ="http://www.blogjava.net/brock/aggbug/413091.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/brock/" target="_blank">brock</a> 2014-04-30 14:38 <a href="http://www.blogjava.net/brock/archive/2014/04/30/413091.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>底层连接资源的访问问题 </title><link>http://www.blogjava.net/brock/archive/2013/05/29/399902.html</link><dc:creator>brock</dc:creator><author>brock</author><pubDate>Wed, 29 May 2013 01:53:00 GMT</pubDate><guid>http://www.blogjava.net/brock/archive/2013/05/29/399902.html</guid><wfw:comment>http://www.blogjava.net/brock/comments/399902.html</wfw:comment><comments>http://www.blogjava.net/brock/archive/2013/05/29/399902.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/brock/comments/commentRss/399902.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/brock/services/trackbacks/399902.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: Spring的事务管理难点剖析(7):数据连接泄漏底层连接资源的访问问题&nbsp;&nbsp;&nbsp; 对于应用开发者来说，数据连接泄漏无疑是一个可怕的梦魇。只要你开发的应用存在数据连接泄漏的问题，应用程序最终都将因数据连接资源的耗尽而崩溃，甚至还可能引起数据库的崩溃。数据连接泄漏像一个黑洞那样让开发者避之唯恐不及。&nbsp;&nbsp;&nbsp; Spring DAO对所有支持的数据访...&nbsp;&nbsp;<a href='http://www.blogjava.net/brock/archive/2013/05/29/399902.html'>阅读全文</a><img src ="http://www.blogjava.net/brock/aggbug/399902.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/brock/" target="_blank">brock</a> 2013-05-29 09:53 <a href="http://www.blogjava.net/brock/archive/2013/05/29/399902.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ORA-01000: 超出打开游标的最大数 问题的分析和解决</title><link>http://www.blogjava.net/brock/archive/2013/05/29/399903.html</link><dc:creator>brock</dc:creator><author>brock</author><pubDate>Wed, 29 May 2013 01:53:00 GMT</pubDate><guid>http://www.blogjava.net/brock/archive/2013/05/29/399903.html</guid><wfw:comment>http://www.blogjava.net/brock/comments/399903.html</wfw:comment><comments>http://www.blogjava.net/brock/archive/2013/05/29/399903.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/brock/comments/commentRss/399903.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/brock/services/trackbacks/399903.html</trackback:ping><description><![CDATA[<div id="cnblogs_post_body" style="word-break: normal !important; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; "><p style="line-height: 1.4; margin-top: 10px; margin-bottom: 10px; ">症状:系统运行了一段时间报错：java.sql.SQLException: ORA-01000: 超出打开游标的最大数</p><p style="line-height: 1.4; margin-top: 10px; margin-bottom: 10px; ">step 1:<br />&nbsp;&nbsp;&nbsp; 查看数据库当前的游标数配置slqplus:show parameter open_cursors;</p><p style="line-height: 1.4; margin-top: 10px; margin-bottom: 10px; ">step 2:<br />&nbsp;&nbsp;&nbsp; 查看游标使用情况：<br />select o.sid, osuser, machine, count(*) num_curs<br />from v$open_cursor o, v$session s<br />where user_name = 'user' and o.sid=s.sid<br />group by o.sid, osuser, machine<br />order by&nbsp; num_curs desc;<br />此处的user_name='user'中,user代表占用数据库资源的数据库用户名.</p><p style="line-height: 1.4; margin-top: 10px; margin-bottom: 10px; ">step 3:<br />&nbsp;&nbsp;&nbsp; 查看游标执行的sql情况：</p><p style="line-height: 1.4; margin-top: 10px; margin-bottom: 10px; ">select o.sid q.sql_text<br />from v$open_cursor o, v$sql q<br />where q.hash_value=o.hash_value and o.sid = 123;</p><p style="line-height: 1.4; margin-top: 10px; margin-bottom: 10px; ">step 4:<br />&nbsp;&nbsp;&nbsp; 根据游标占用情况分析访问数据库的程序在资源释放上是否正常,如果程序释放资源没有问题，则加大游标数。<br />&nbsp;&nbsp;&nbsp; alter system set open_cursors=2000 scope=both;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp; 补充:在java代码中,执行conn.createStatement()和conn.prepareStatement()的时候，实际上都是相当与在数据库中打开了一个cursor。尤其是，如果你的createStatement和prepareStatement是在一个循环里面的话，就会非常容易出现这个问题。因为游标一直在不停的打开，而且没有关闭。<br />&nbsp;&nbsp;&nbsp;&nbsp; 一般来说，我们在写Java代码的时候，createStatement和prepareStatement都应该要放在循环外面，而且使用了这些Statment后，及时关闭。最好是在执行了一次executeQuery、executeUpdate等之后，如果不需要使用结果集（ResultSet）的数据，就马上将Statment关闭，调用close()方法。</p></div><div id="MySignature" style="margin-top: 10px; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; "></div><div style="clear: both; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; "></div><div id="blog_post_info_block" style="margin-top: 20px; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 19px; background-color: #ffffff; "><div id="blog_post_info"><div id="BlogPostCategory">分类:&nbsp;<a href="http://www.cnblogs.com/leipei2352/category/287694.html" style="color: navy; text-decoration: none; ">Oracle_Learning</a></div></div></div><img src ="http://www.blogjava.net/brock/aggbug/399903.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/brock/" target="_blank">brock</a> 2013-05-29 09:53 <a href="http://www.blogjava.net/brock/archive/2013/05/29/399903.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle 语法之 OVER (PARTITION BY ..) 及开窗函数 转载 </title><link>http://www.blogjava.net/brock/archive/2007/11/26/163101.html</link><dc:creator>brock</dc:creator><author>brock</author><pubDate>Mon, 26 Nov 2007 02:54:00 GMT</pubDate><guid>http://www.blogjava.net/brock/archive/2007/11/26/163101.html</guid><wfw:comment>http://www.blogjava.net/brock/comments/163101.html</wfw:comment><comments>http://www.blogjava.net/brock/archive/2007/11/26/163101.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/brock/comments/commentRss/163101.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/brock/services/trackbacks/163101.html</trackback:ping><description><![CDATA[<div id="art" style="margin: 15px">
<div>oracle的分析函数over 及开窗函数</div>
<div><font size="2">一：分析函数<strong style="color: black; background-color: #a0ffff">over</strong><br />
<strong style="color: black; background-color: #ffff66">Oracle</strong>从8.1.6开始提供分析函数，分析函数用于计算基于组的某种聚合值，它和聚合函数的不同之处是<br />
对于每个组返回多行，而聚合函数对于每个组只返回一行。 <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;</font>
<div><font size="2">1：统计某商店的营业额。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</font></div>
<div><font size="2">&nbsp;&nbsp;&nbsp;&nbsp; date&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sale<br />
&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 20<br />
&nbsp;&nbsp;&nbsp;&nbsp; 2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 15<br />
&nbsp;&nbsp;&nbsp;&nbsp; 3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 14<br />
&nbsp;&nbsp;&nbsp;&nbsp; 4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 18<br />
&nbsp;&nbsp;&nbsp;&nbsp; 5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 30<br />
&nbsp;&nbsp;&nbsp; 规则：按天统计：每天都统计前面几天的总额<br />
&nbsp;&nbsp;&nbsp; 得到的结果：<br />
&nbsp;&nbsp;&nbsp; DATE&nbsp;&nbsp; SALE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SUM<br />
&nbsp;&nbsp;&nbsp; ----- -------- ------<br />
&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 20&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 20&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --1天&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp; 2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 15&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 35&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --1天＋2天&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp; 3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 14&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 49&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --1天＋2天＋3天&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp; 4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 18&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 67&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp; 5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 30&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 97&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; .<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
2:统计各班成绩第一名的同学信息</font></div>
<div><font size="2">&nbsp;&nbsp;&nbsp; NAME&nbsp;&nbsp; CLASS S&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp; ----- ----- ---------------------- <br />
&nbsp;&nbsp;&nbsp; fda&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 80&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp; ffd&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 78&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp; dss&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 95&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp; cfe&nbsp;&nbsp;&nbsp; 2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 74&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp; gds&nbsp;&nbsp;&nbsp; 2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 92&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp; gf&nbsp;&nbsp;&nbsp;&nbsp; 3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 99&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp; ddd&nbsp;&nbsp;&nbsp; 3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 99&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp; adf&nbsp;&nbsp;&nbsp; 3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 45&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp; asdf&nbsp;&nbsp; 3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 55&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp; 3dd&nbsp;&nbsp;&nbsp; 3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 78&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp; 通过：&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp; --<br />
&nbsp;&nbsp;&nbsp; select * from&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp; select name,class,s,rank()<strong style="color: black; background-color: #a0ffff">over</strong>(partition by class order by s desc) mm from t2<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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp; where mm=1 <br />
&nbsp;&nbsp;&nbsp; --<br />
&nbsp;&nbsp;&nbsp; 得到结果：<br />
&nbsp;&nbsp;&nbsp; NAME&nbsp;&nbsp; CLASS S&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MM&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp; ----- ----- ---------------------- ---------------------- <br />
&nbsp;&nbsp;&nbsp; dss&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 95&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp; gds&nbsp;&nbsp;&nbsp; 2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 92&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp; gf&nbsp;&nbsp;&nbsp;&nbsp; 3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 99&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp; ddd&nbsp;&nbsp;&nbsp; 3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 99&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp; 注意：<br />
&nbsp;&nbsp;&nbsp; 1.在求第一名成绩的时候，不能用row_number()，因为如果同班有两个并列第一，row_number()只返回一个结果&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp; 2.rank()和dense_rank()的区别是：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --rank()是跳跃排序，有两个第二名时接下来就是第四名<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --dense_rank()l是连续排序，有两个第二名时仍然跟着第三名<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
3.分类统计 (并显示信息)</font></div>
<div><font size="2">&nbsp;&nbsp;&nbsp; A&nbsp;&nbsp; B&nbsp;&nbsp; C&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp; -- -- ---------------------- <br />
&nbsp;&nbsp;&nbsp; m&nbsp;&nbsp; a&nbsp;&nbsp; 2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp; n&nbsp;&nbsp; a&nbsp;&nbsp; 3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp; m&nbsp;&nbsp; a&nbsp;&nbsp; 2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp; n&nbsp;&nbsp; b&nbsp;&nbsp; 2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp; n&nbsp;&nbsp; b&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp; x&nbsp;&nbsp; b&nbsp;&nbsp; 3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp; x&nbsp;&nbsp; b&nbsp;&nbsp; 2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp; x&nbsp;&nbsp; b&nbsp;&nbsp; 4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp; h&nbsp;&nbsp; b&nbsp;&nbsp; 3 </font></div>
<div><font size="2">&nbsp;&nbsp; select a,c,sum(c)<strong style="color: black; background-color: #a0ffff">over</strong>(partition by a) from t2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp; 得到结果：<br />
&nbsp;&nbsp; A&nbsp;&nbsp; B&nbsp;&nbsp; C&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SUM(C)<strong style="color: black; background-color: #a0ffff">OVER</strong>(PARTITIONBYA)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp; -- -- ------- ------------------------ <br />
&nbsp;&nbsp; h&nbsp;&nbsp; b&nbsp;&nbsp; 3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp; m&nbsp;&nbsp; a&nbsp;&nbsp; 2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp; m&nbsp;&nbsp; a&nbsp;&nbsp; 2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp; n&nbsp;&nbsp; a&nbsp;&nbsp; 3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp; n&nbsp;&nbsp; b&nbsp;&nbsp; 2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp; n&nbsp;&nbsp; b&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp; x&nbsp;&nbsp; b&nbsp;&nbsp; 3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 9&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp; x&nbsp;&nbsp; b&nbsp;&nbsp; 2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 9&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp; x&nbsp;&nbsp; b&nbsp;&nbsp; 4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 9&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;<br />
&nbsp;&nbsp; 如果用sum，group by 则只能得到<br />
&nbsp;&nbsp; A&nbsp;&nbsp; SUM(C)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp; -- ---------------------- <br />
&nbsp;&nbsp; h&nbsp;&nbsp; 3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp; m&nbsp;&nbsp; 4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp; n&nbsp;&nbsp; 6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp; x&nbsp;&nbsp; 9&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp; 无法得到B列值&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;<br />
＝＝＝＝＝</font></div>
<div>
<div>
<p><font face="verdana, arial, helvetica" size="2"><span class="javascript" id="text2200299" style="font-size: 12px">select * from test<br />
<br />
数据:<br />
A B C <br />
1 1 1 <br />
1 2 2 <br />
1 3 3 <br />
2 2 5 <br />
3 4 6 <br />
<br />
<br />
---将B栏位值相同的对应的C 栏位值加总<br />
select a,b,c, SUM(C) OVER (PARTITION BY B) C_Sum<br />
from test<br />
<br />
A B C C_SUM <br />
1 1 1 1 <br />
1 2 2 7 <br />
2 2 5 7 <br />
1 3 3 3 <br />
3 4 6 6 <br />
<br />
<br />
<br />
---如果不需要已某个栏位的值分割,那就要用 null<br />
<br />
eg: 就是将C的栏位值summary 放在每行后面<br />
<br />
select a,b,c, SUM(C) OVER (PARTITION BY null) C_Sum<br />
from test<br />
<br />
A B C C_SUM <br />
1 1 1 17 <br />
1 2 2 17 <br />
1 3 3 17 <br />
2 2 5 17 <br />
3 4 6 17</span></font></p>
<p><font face="verdana, arial, helvetica" size="2"></font>&nbsp;</p>
<p><font face="verdana, arial, helvetica" size="2"><span class="javascript" style="font-size: 12px">求个人工资占部门工资的百分比 </p>
<p><font face="verdana, arial, helvetica" size="2"><span class="javascript" id="text3005546" style="font-size: 12px">SQL&gt; select * from salary;<br />
<br />
NAME DEPT SAL<br />
---------- ---- -----<br />
a 10 2000<br />
b 10 3000<br />
c 10 5000<br />
d 20 4000<br />
<br />
SQL&gt; select name,dept,sal,sal*100/sum(sal) over(partition by dept) percent from salary;<br />
<br />
NAME DEPT SAL PERCENT<br />
---------- ---- ----- ----------<br />
a 10 2000 20<br />
b 10 3000 30<br />
c 10 5000 50<br />
d 20 4000 100</span></font></p>
</span></font></div>
</div>
<div><font size="2">二：开窗函数&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 开窗函数指定了分析函数工作的数据窗口大小，这个数据窗口大小可能会随着行的变化而变化，举例如下： <br />
1：&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;<strong style="color: black; background-color: #a0ffff">over</strong>（order by salary） 按照salary排序进行累计，order by是个默认的开窗函数<br />
&nbsp;&nbsp;&nbsp;<strong style="color: black; background-color: #a0ffff">over</strong>（partition by deptno）按照部门分区<br />
2：<br />
&nbsp;&nbsp;<strong style="color: black; background-color: #a0ffff">over</strong>（order by salary range between 5 preceding and 5 following）<br />
&nbsp;&nbsp; 每行对应的数据窗口是之前行幅度值不超过5，之后行幅度值不超过5<br />
&nbsp;&nbsp; 例如:对于以下列<br />
&nbsp;&nbsp;&nbsp;&nbsp; aa<br />
&nbsp;&nbsp;&nbsp;&nbsp; 1<br />
&nbsp;&nbsp;&nbsp;&nbsp; 2<br />
&nbsp;&nbsp;&nbsp;&nbsp; 2<br />
&nbsp;&nbsp;&nbsp;&nbsp; 2<br />
&nbsp;&nbsp;&nbsp;&nbsp; 3<br />
&nbsp;&nbsp;&nbsp;&nbsp; 4<br />
&nbsp;&nbsp;&nbsp;&nbsp; 5<br />
&nbsp;&nbsp;&nbsp;&nbsp; 6<br />
&nbsp;&nbsp;&nbsp;&nbsp; 7<br />
&nbsp;&nbsp;&nbsp;&nbsp; 9<br />
&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp; sum(aa)<strong style="color: black; background-color: #a0ffff">over</strong>（order by aa range between 2 preceding and 2 following）<br />
&nbsp;&nbsp; 得出的结果是<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AA&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SUM<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ---------------------- ------------------------------------------------------- <br />
&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 10&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 14&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 14&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 14&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 18&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 18&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 5&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 22&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 18&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 22&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 9&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 9&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp; 就是说，对于aa=5的一行 ，sum为&nbsp;&nbsp; 5-1&lt;=aa&lt;=5+2 的和<br />
&nbsp;&nbsp; 对于aa=2来说 ，sum=1+2+2+2+3+4=14&nbsp;&nbsp;&nbsp;&nbsp; ；<br />
&nbsp;&nbsp; 又如 对于aa=9 ，9-1&lt;=aa&lt;=9+2 只有9一个数，所以sum=9&nbsp;&nbsp;&nbsp; ；<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
3：其它：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong style="color: black; background-color: #a0ffff">over</strong>（order by salary rows between 2 preceding and 4 following）<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 每行对应的数据窗口是之前2行，之后4行 <br />
4：下面三条语句等效：&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong style="color: black; background-color: #a0ffff">over</strong>（order by salary rows between unbounded preceding and unbounded following）<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 每行对应的数据窗口是从第一行到最后一行，等效：<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong style="color: black; background-color: #a0ffff">over</strong>（order by salary range between unbounded preceding and unbounded following）<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 等效<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong style="color: black; background-color: #a0ffff">over</strong>(partition by null)</font></div>
</div>
</div>
 <img src ="http://www.blogjava.net/brock/aggbug/163101.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/brock/" target="_blank">brock</a> 2007-11-26 10:54 <a href="http://www.blogjava.net/brock/archive/2007/11/26/163101.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>高手指教：我想将某一个字段的值并成一个字符串，该怎么做呢？ (转)</title><link>http://www.blogjava.net/brock/archive/2007/09/13/144732.html</link><dc:creator>brock</dc:creator><author>brock</author><pubDate>Thu, 13 Sep 2007 02:14:00 GMT</pubDate><guid>http://www.blogjava.net/brock/archive/2007/09/13/144732.html</guid><wfw:comment>http://www.blogjava.net/brock/comments/144732.html</wfw:comment><comments>http://www.blogjava.net/brock/archive/2007/09/13/144732.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/brock/comments/commentRss/144732.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/brock/services/trackbacks/144732.html</trackback:ping><description><![CDATA[<p>&nbsp;</p>
<div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; word-break: break-all; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee"><img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><span style="color: #000000">问？：&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />表：<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />col1&nbsp;col2&nbsp;col3<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />A&nbsp;</span><span style="color: #000000">1.5</span><span style="color: #000000">&nbsp;a<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />A&nbsp;</span><span style="color: #000000">1.5</span><span style="color: #000000">&nbsp;b<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />A&nbsp;</span><span style="color: #000000">2.5</span><span style="color: #000000">&nbsp;c<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />A&nbsp;</span><span style="color: #000000">2.5</span><span style="color: #000000">&nbsp;d<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />B&nbsp;</span><span style="color: #000000">5.5</span><span style="color: #000000">&nbsp;e<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />B&nbsp;</span><span style="color: #000000">5.5</span><span style="color: #000000">&nbsp;f<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />B&nbsp;</span><span style="color: #000000">1.2</span><span style="color: #000000">&nbsp;g<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />C&nbsp;</span><span style="color: #000000">1.2</span><span style="color: #000000">&nbsp;h<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />A&nbsp;</span><span style="color: #000000">1.2</span><span style="color: #000000">&nbsp;i<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />A&nbsp;</span><span style="color: #000000">1.1</span><span style="color: #000000">&nbsp;j<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />我想取得这样的结果：<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />A&nbsp;</span><span style="color: #000000">1.5</span><span style="color: #000000">&nbsp;a,b<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />A&nbsp;</span><span style="color: #000000">2.5</span><span style="color: #000000">&nbsp;c,d<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />A&nbsp;</span><span style="color: #000000">1.1</span><span style="color: #000000">&nbsp;J<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />A&nbsp;</span><span style="color: #000000">1.2</span><span style="color: #000000">&nbsp;i<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />B&nbsp;</span><span style="color: #000000">5.5</span><span style="color: #000000">&nbsp;e,f<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />C&nbsp;</span><span style="color: #000000">1.2</span><span style="color: #000000">&nbsp;h<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />也就是按col1、col2分组统计，将col3的值用&#8220;,&#8221;连接起来。<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />其中col1&nbsp;是&nbsp;字符型&nbsp;col2是数字型。这两个字段的唯一值的个数是未知的<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />不知该如何才能做到，请各位高手帮忙。<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />答！：&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">:<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />id&nbsp;name<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">1</span><span style="color: #000000">&nbsp;aa<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">2</span><span style="color: #000000">&nbsp;bb<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">3</span><span style="color: #000000">&nbsp;cc<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">4</span><span style="color: #000000">&nbsp;dd<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">1</span><span style="color: #000000">&nbsp;ee<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">1</span><span style="color: #000000">&nbsp;xxx<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />ID相同的行只显示一条记录并把相同ID的NAME加起来用,隔开<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />怎么搞</span><span style="color: #000000">???</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />我需要的结果集是:&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />id&nbsp;name<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">1</span><span style="color: #000000">&nbsp;aa,ee,xxx<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">2</span><span style="color: #000000">&nbsp;bb<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">3</span><span style="color: #000000">&nbsp;cc<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">4</span><span style="color: #000000">&nbsp;dd<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">---------------------------------</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />假设你的table&nbsp;是&nbsp;tmp_1;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">--------------------------------------------</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />create&nbsp;table&nbsp;tmp_2&nbsp;as&nbsp;select&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;from&nbsp;tmp_1&nbsp;where&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">=</span><span style="color: #000000">2</span><span style="color: #000000">;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />insert&nbsp;into&nbsp;tmp_2&nbsp;select&nbsp;distinct&nbsp;id,</span><span style="color: #0000ff">null</span><span style="color: #000000">&nbsp;from&nbsp;tmp_1;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />declare<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />i&nbsp;number(</span><span style="color: #000000">4</span><span style="color: #000000">);<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />cursor&nbsp;c_v&nbsp;is&nbsp;select&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;from&nbsp;ttmp_1;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />begin&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">for</span><span style="color: #000000">&nbsp;v_n&nbsp;in&nbsp;c&nbsp;loop<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />select&nbsp;count(</span><span style="color: #000000">*</span><span style="color: #000000">)&nbsp;into&nbsp;i&nbsp;from&nbsp;ttmp_2&nbsp;b&nbsp;where&nbsp;b.name&nbsp;is&nbsp;not&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">&nbsp;and&nbsp;b.id</span><span style="color: #000000">=</span><span style="color: #000000">v_n.id;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;i</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">&nbsp;then<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />update&nbsp;ttmp_2&nbsp;a&nbsp;set&nbsp;name&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;v_n.name&nbsp;where&nbsp;a.id</span><span style="color: #000000">=</span><span style="color: #000000">v_n.id;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #0000ff">else</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />update&nbsp;ttmp_2&nbsp;a&nbsp;set&nbsp;name&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;name</span><span style="color: #000000">||</span><span style="color: #000000">'</span><span style="color: #000000">,</span><span style="color: #000000">'</span><span style="color: #000000">||</span><span style="color: #000000">v_n.name&nbsp;where&nbsp;a.id</span><span style="color: #000000">=</span><span style="color: #000000">v_n.id;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />end&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />end&nbsp;loop;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />end;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">/</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">------------------------------------</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />或许以下的更有帮助<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />给你看看duanzilin&nbsp;(寻)的文章吧,一个强贴,地址忘记了,还好有保存<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />主　　题：&nbsp;原创＋突发奇想＋分享＋散分－－－－－关于分组后字段拼接的问题<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />作　　者：&nbsp;duanzilin&nbsp;(寻)&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />信&nbsp;誉&nbsp;值：&nbsp;</span><span style="color: #000000">120</span><span style="color: #000000">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />所属论坛：&nbsp;Oracle&nbsp;基础和管理&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />问题点数：&nbsp;</span><span style="color: #000000">200</span><span style="color: #000000">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />回复次数：&nbsp;</span><span style="color: #000000">29</span><span style="color: #000000">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />发表时间：&nbsp;</span><span style="color: #000000">2005</span><span style="color: #000000">-</span><span style="color: #000000">7</span><span style="color: #000000">-</span><span style="color: #000000">22</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">11</span><span style="color: #000000">:</span><span style="color: #000000">52</span><span style="color: #000000">:</span><span style="color: #000000">56</span><span style="color: #000000">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />最近在论坛上，经常会看到关于分组后字段拼接的问题，<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />大概是类似下列的情形：<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />SQL</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;select&nbsp;no,q&nbsp;from&nbsp;test<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">2</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">/</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />NO&nbsp;Q<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">----------</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">------------------------------</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">001</span><span style="color: #000000">&nbsp;n1<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">001</span><span style="color: #000000">&nbsp;n2<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">001</span><span style="color: #000000">&nbsp;n3<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">001</span><span style="color: #000000">&nbsp;n4<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">001</span><span style="color: #000000">&nbsp;n5<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">002</span><span style="color: #000000">&nbsp;m1<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">003</span><span style="color: #000000">&nbsp;t1<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">003</span><span style="color: #000000">&nbsp;t2<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">003</span><span style="color: #000000">&nbsp;t3<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">003</span><span style="color: #000000">&nbsp;t4<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">003</span><span style="color: #000000">&nbsp;t5<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">003</span><span style="color: #000000">&nbsp;t6<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">12</span><span style="color: #000000">&nbsp;rows&nbsp;selected<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />最后要得到类似于如下的结果：<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">001</span><span style="color: #000000">&nbsp;n1;n2;n3;n4;n5<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">002</span><span style="color: #000000">&nbsp;m1<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">003</span><span style="color: #000000">&nbsp;t1;t2;t3;t4;t5;t6<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />通常大家都认为这类问题无法用一句SQL解决，本来我也这么认为，可是今天无意中突然有了灵感，原来是可以这么做的：<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />前几天有人提到过sys_connect_by_path的用法，我想这里是不是也能用到这个方法，如果能做到的话，不用函数或存贮过程也可以做到了；要用到sys_connect_by_path，首先要自己构建树型的结构，并且树的每个分支都是单根的，例如1</span><span style="color: #000000">-</span><span style="color: #000000">〉</span><span style="color: #000000">2</span><span style="color: #000000">-</span><span style="color: #000000">〉</span><span style="color: #000000">3</span><span style="color: #000000">-</span><span style="color: #000000">〉</span><span style="color: #000000">4</span><span style="color: #000000">，不会存在1</span><span style="color: #000000">-</span><span style="color: #000000">〉</span><span style="color: #000000">2</span><span style="color: #000000">，</span><span style="color: #000000">1</span><span style="color: #000000">-</span><span style="color: #000000">〉3的情况；<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />我是这么构建树，很简单的，看下面的结果就会知道了：<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />SQL</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;select&nbsp;no,q,rn,lead(rn)&nbsp;over(partition&nbsp;by&nbsp;no&nbsp;order&nbsp;by&nbsp;rn)&nbsp;rn1<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">2</span><span style="color: #000000">&nbsp;from&nbsp;(select&nbsp;no,q,row_number()&nbsp;over(order&nbsp;by&nbsp;no,q&nbsp;desc)&nbsp;rn&nbsp;from&nbsp;test)<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">3</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">/</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />NO&nbsp;Q&nbsp;RN&nbsp;RN1<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">----------</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">------------------------------</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">----------</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">----------</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">001</span><span style="color: #000000">&nbsp;n5&nbsp;</span><span style="color: #000000">1</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">2</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">001</span><span style="color: #000000">&nbsp;n4&nbsp;</span><span style="color: #000000">2</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">3</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">001</span><span style="color: #000000">&nbsp;n3&nbsp;</span><span style="color: #000000">3</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">4</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">001</span><span style="color: #000000">&nbsp;n2&nbsp;</span><span style="color: #000000">4</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">5</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">001</span><span style="color: #000000">&nbsp;n1&nbsp;</span><span style="color: #000000">5</span><span style="color: #000000">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">002</span><span style="color: #000000">&nbsp;m1&nbsp;</span><span style="color: #000000">6</span><span style="color: #000000">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">003</span><span style="color: #000000">&nbsp;t6&nbsp;</span><span style="color: #000000">7</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">8</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">003</span><span style="color: #000000">&nbsp;t5&nbsp;</span><span style="color: #000000">8</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">9</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">003</span><span style="color: #000000">&nbsp;t4&nbsp;</span><span style="color: #000000">9</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">10</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">003</span><span style="color: #000000">&nbsp;t3&nbsp;</span><span style="color: #000000">10</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">11</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">003</span><span style="color: #000000">&nbsp;t2&nbsp;</span><span style="color: #000000">11</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">12</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">003</span><span style="color: #000000">&nbsp;t1&nbsp;</span><span style="color: #000000">12</span><span style="color: #000000">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">12</span><span style="color: #000000">&nbsp;rows&nbsp;selected<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />有了这个树型的结构，接下来的事就好办了，只要取出拥有全路径的那个path，问题就解决了，先看no</span><span style="color: #000000">=</span><span style="color: #000000">&#8216;</span><span style="color: #000000">001</span><span style="color: #000000">&#8217;的分组：<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />select&nbsp;no,sys_connect_by_path(q,</span><span style="color: #000000">'</span><span style="color: #000000">;</span><span style="color: #000000">'</span><span style="color: #000000">)&nbsp;result&nbsp;from&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />(select&nbsp;no,q,rn,lead(rn)&nbsp;over(partition&nbsp;by&nbsp;no&nbsp;order&nbsp;by&nbsp;rn)&nbsp;rn1&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />from&nbsp;(select&nbsp;no,q,row_number()&nbsp;over(order&nbsp;by&nbsp;no,q&nbsp;desc)&nbsp;rn&nbsp;from&nbsp;test)<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />)<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />start&nbsp;with&nbsp;no&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">'</span><span style="color: #000000">001</span><span style="color: #000000">'</span><span style="color: #000000">&nbsp;and&nbsp;rn1&nbsp;is&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">&nbsp;connect&nbsp;by&nbsp;rn1&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;prior&nbsp;rn<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />SQL</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">6</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">/</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />NO&nbsp;RESULT<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">----------</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">--------------------------------------------------------------------------------</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">001</span><span style="color: #000000">&nbsp;;n1<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">001</span><span style="color: #000000">&nbsp;;n1;n2<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">001</span><span style="color: #000000">&nbsp;;n1;n2;n3<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">001</span><span style="color: #000000">&nbsp;;n1;n2;n3;n4<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">001</span><span style="color: #000000">&nbsp;;n1;n2;n3;n4;n5<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />上面结果的最后1条就是我们要得结果了<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />要得到每组的结果，可以下面这样<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />select&nbsp;t.</span><span style="color: #000000">*</span><span style="color: #000000">,<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />(<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />select&nbsp;max(sys_connect_by_path(q,</span><span style="color: #000000">'</span><span style="color: #000000">;</span><span style="color: #000000">'</span><span style="color: #000000">))&nbsp;result&nbsp;from&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />(select&nbsp;no,q,rn,lead(rn)&nbsp;over(partition&nbsp;by&nbsp;no&nbsp;order&nbsp;by&nbsp;rn)&nbsp;rn1&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />from&nbsp;(select&nbsp;no,q,row_number()&nbsp;over(order&nbsp;by&nbsp;no,q&nbsp;desc)&nbsp;rn&nbsp;from&nbsp;test)<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />)<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />start&nbsp;with&nbsp;no&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;t.no&nbsp;and&nbsp;rn1&nbsp;is&nbsp;</span><span style="color: #0000ff">null</span><span style="color: #000000">&nbsp;connect&nbsp;by&nbsp;rn1&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;prior&nbsp;rn<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />)&nbsp;value<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />from&nbsp;(select&nbsp;distinct&nbsp;no&nbsp;from&nbsp;test)&nbsp;t<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />SQL</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">10</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">/</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />NO&nbsp;VALUE<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">----------</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">--------------------------------------------------------------------------------</span><span style="color: #000000"><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">001</span><span style="color: #000000">&nbsp;;n1;n2;n3;n4;n5<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">002</span><span style="color: #000000">&nbsp;;m1<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /></span><span style="color: #000000">003</span><span style="color: #000000">&nbsp;;t1;t2;t3;t4;t5;t6<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />对上面结果稍加处理就可以了，希望对大家有帮助：）&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />答！：&nbsp;</span><span style="color: #000000">2</span><span style="color: #000000">:<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />注意注意&nbsp;<br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" /><br />
<img src="http://www.blogjava.net/images/OutliningIndicators/None.gif" align="top"  alt="" />sys_connect_by_path有长度限制，不能超过4K&nbsp;</span></div>
 <img src ="http://www.blogjava.net/brock/aggbug/144732.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/brock/" target="_blank">brock</a> 2007-09-13 10:14 <a href="http://www.blogjava.net/brock/archive/2007/09/13/144732.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oracle imp/exp 说明</title><link>http://www.blogjava.net/brock/archive/2007/07/03/127930.html</link><dc:creator>brock</dc:creator><author>brock</author><pubDate>Tue, 03 Jul 2007 10:09:00 GMT</pubDate><guid>http://www.blogjava.net/brock/archive/2007/07/03/127930.html</guid><wfw:comment>http://www.blogjava.net/brock/comments/127930.html</wfw:comment><comments>http://www.blogjava.net/brock/archive/2007/07/03/127930.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/brock/comments/commentRss/127930.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/brock/services/trackbacks/127930.html</trackback:ping><description><![CDATA[<font color=#333333>exp/imp命令详解<br><br>exp/imp两个命令可以说是oracle中最常用的命令了.<br>ORACLE数据库有两类备份方法。第一类为物理备份，该方法实现数据库的完整恢复，但<br>数据库必须运行在归挡模式下（业务数据库在非归挡模式下运行），且需要极大的外部<br>存储设备，例如磁带库；第二类备份方式为逻辑备份，业务数据库采用此种方式，此方<br>法不需要数据库运行在归挡模式下，不但备份简单，而且可以不需要外部存储设备。<br>数据库逻辑备份方法<br>ORACLE数据库的逻辑备份分为三种模式：表备份、用户备份和完全备份。<br>表模式<br>备份某个用户模式下指定的对象（表）。业务数据库通常采用这种备份方式。<br>若备份到本地文件，使用如下命令：<br>exp icdmain/icd rows=y indexes=n compress=n buffer=65536<br>feedback=100000 volsize=0<br>file=exp_icdmain_csd_yyyymmdd.dmp<br>log=exp_icdmain_csd_yyyymmdd.log<br>tables=icdmain.commoninformation,icdmain.serviceinfo,icdmain.dealinfo<br>若直接备份到磁带设备，使用如下命令：<br>exp icdmain/icd rows=y indexes=n compress=n buffer=65536<br>feedback=100000 volsize=0<br>file=/dev/rmt0<br>log=exp_icdmain_csd_yyyymmdd.log<br>tables=icdmain.commoninformation,icdmain.serviceinfo,icdmain.dealinfo<br>注：在磁盘空间允许的情况下，应先备份到本地服务器，然后再拷贝到磁带。出于速度<br>方面的考虑，尽量不要直接备份到磁带设备。<br>用户模式<br>备份某个用户模式下的所有对象。业务数据库通常采用这种备份方式。<br>若备份到本地文件，使用如下命令：<br>exp icdmain/icd owner=icdmain rows=y indexes=n compress=n buffer=65536<br>feedback=100000 volsize=0<br>file=exp_icdmain_yyyymmdd.dmp<br>log=exp_icdmain_yyyymmdd.log<br>若直接备份到磁带设备，使用如下命令：<br>exp icdmain/icd owner=icdmain rows=y indexes=n compress=n buffer=65536<br>feedback=100000 volsize=0<br>file=/dev/rmt0<br>log=exp_icdmain_yyyymmdd.log<br>注：如果磁盘有空间，建议备份到磁盘，然后再拷贝到磁带。如果数据库数据量较小，<br>可采用这种办法备份。<br>完全模式<br>备份完整的数据库。业务数据库不采用这种备份方式。备份命令为：<br>exp icdmain/icd rows=y indexes=n compress=n buffer=65536<br>feedback=100000 volsize=0 full=y<br>file=exp_fulldb_yyyymmdd.dmp(磁带设备则为/dev/rmt0)<br>log=exp_fulldb_yyyymmdd.log<br>对于数据库备份，建议采用增量备份，即只备份上一次备份以来更改的数据。增量备份<br>命令：<br>exp icdmain/icd rows=y indexes=n compress=n buffer=65536<br>feedback=100000 volsize=0 full=y inctype=incremental<br>file=exp_fulldb_yyyymmdd.dmp(磁带设备则为/dev/rmt0)<br>log=exp_fulldb_yyyymmdd.log<br>注：关于增量备份必须满足下列条件：<br>1.<br>只对完整数据库备份有效，且第一次需要full=y参数，以后需要inctype=increment<br>al参数。<br>2. 用户必须有EXP_FULL_DATABASE的系统角色。<br>3. 话务量较小时方可采用数据库备份。<br>4. 如果磁盘有空间，建议备份到磁盘，然后再备份到磁带。<br>业务数据库备份方法及周期<br>用EXP进行备份前，先在SYS用户下运行CATEXP.SQL文件（如果以前已运行该文件，则不<br>要执行这个脚本）。<br>没有特殊说明，不允许在客户端执行备份命令。<br>备份命令参照表模式下的备份命令。<br>从磁盘文件备份到磁带<br>如果首先备份到本地磁盘文件，则需要转储到磁带设备上。<br>1. 若需查看主机上配置的磁带设备，使用如下命令：<br>lsdev -Cc tape<br>显示的结果如下例所示：<br>rmt0 Available 30-58-00-2,0 SCSI 4mm Tape Drive<br>rmt1 Defined　 30-58-00-0,0 SCSI 4mm Tape Drive<br>标明Available的设备是可用的磁带设备。<br>2. 若需查看磁带存储的内容，使用如下命令：<br>tar -tvf /dev/rmt0<br>显示的结果如下例所示：<br>-rw-r--r-- 300 400 8089600 Jan 11 14:33:57 2001 exp_icdmain_20010111.dmp<br>如果显示类似如下内容，则表示该磁带存储的备份数据是从数据库直接备份到磁带上，<br>而非从本地磁盘转储到磁带的备份文件，因此操作系统无法识别。<br>tar: 0511-193 An error occurred while reading from the media.<br>There is an input or output error.<br>或<br>tar: 0511-169 A directory checksum error on media; -267331077 not equal to<br>2<br>5626.<br>3. 对于新磁带或无需保留现存数据的磁带，使用如下命令：<br>tar -cvf /dev/rmt0 exp_icdmain_yyyymmdd.dmp<br>注：A. 该命令将无条件覆盖磁带上的现存数据。<br>　 B. 文件名不允许包含路径信息，如：/backup/exp_icdmain_yyyymmdd.dmp。<br>4. 对于需要保留现存数据的磁带，使用如下命令：<br>tar -rvf /dev/rmt0 exp_icdmain_yyyymmdd.dmp<br>注：该命令将文件exp_icdmain_yyyymmdd.dmp追加到磁带的末端，不会覆盖现存的数据<br>。<br>特别强调：如果备份时是从数据库直接备份到磁带上，则不可再向该磁带上追加复制任<br>何其他文件，否则该备份数据失效。<br>5. 若需将转储到磁带上的备份文件复制到本地硬盘，使用如下命令：<br>A. 将磁带上的全部文件复制到本地硬盘的当前目录<br>tar -xvf /dev/rmt0<br>B. 将磁带上的指定文件复制到本地硬盘的当前目录<br>tar -xvf /dev/rmt0 exp_icdmain_yyyymmdd.dmp<br>备份时间安排<br>由于备份时对系统I/O有较大影响，所以，建议在晚上11点以后进行备份工作。<br>业务数据库Oracle版本的恢复<br>恢复方案需根据备份方案确定。由于业务数据库采用表备份和用户备份相结合的方案，<br>所以业务数据库的恢复需根据实际情况采用表恢复和用户恢复相结合的方案。<br>恢复方案<br>数据库的逻辑恢复分为表恢复、用户恢复、完全恢复三种模式。<br>表模式<br>此方式将根据按照表模式备份的数据进行恢复。<br>A. 恢复备份数据的全部内容<br>若从本地文件恢复，使用如下命令：<br>imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n<br>commit=y buffer=65536 feedback=100000 ignore=n volsize=0<br>file=exp_icdmain_cs<br>d_yyyymmdd.dmp<br>log=imp_icdmain_csd_yyyymmdd.log<br>若从磁带设备恢复，使用如下命令：<br>imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n<br>commit=y buffer=65536 feedback=100000 ignore=n volsize=0 file=/dev/rmt0<br>log=imp_icdmain_csd_yyyymmdd.log<br>B. 恢复备份数据中的指定表<br>若从本地文件恢复，使用如下命令：<br>imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n<br>commit=y buffer=65536 feedback=100000 ignore=n volsize=0<br>file=exp_icdmain_cs<br>d_yyyymmdd.dmp<br>log=imp_icdmain_csd_yyyymmdd.log<br>tables=commoninformation,serviceinfo<br>若从磁带设备恢复，使用如下命令：<br>imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n<br>commit=y buffer=65536 feedback=100000 ignore=n volsize=0<br>file=/dev/rmt0<br>log=imp_icdmain_csd_yyyymmdd.log<br>tables=commoninformation,serviceinfo<br>用户模式<br>此方式将根据按照用户模式备份的数据进行恢复。<br>A. 恢复备份数据的全部内容<br>若从本地文件恢复，使用如下命令：<br>imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n<br>commit=y buffer=65536 feedback=100000 ignore=n volsize=0<br>file=exp_icdmain_yy<br>yymmdd.dmp<br>log=imp_icdmain_yyyymmdd.log<br>若从磁带设备恢复，使用如下命令：<br>imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n<br>commit=y buffer=65536 feedback=100000 ignore=n volsize=0 file=/dev/rmt0<br>log=imp_icdmain_yyyymmdd.log<br>B. 恢复备份数据中的指定表<br>若从本地文件恢复，使用如下命令：<br>imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n<br>commit=y buffer=65536 feedback=100000 ignore=n volsize=0<br>file=exp_icdmain_yy<br>yymmdd.dmp<br>log=imp_icdmain_yyyymmdd.log<br>tables=commoninformation,serviceinfo<br>若从磁带设备恢复，使用如下命令：<br>imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n<br>commit=y buffer=65536 feedback=100000 ignore=n volsize=0 file=/dev/rmt0<br>log=imp_icdmain_yyyymmdd.log<br>tables=commoninformation,serviceinfo<br>完全模式<br>如果备份方式为完全模式，采用下列恢复方法：<br>若从本地文件恢复，使用如下命令：<br>imp system/manager rows=y indexes=n commit=y buffer=65536<br>feedback=100000 ignore=y volsize=0 full=y<br>file=exp_icdmain_yyyymmdd.dmp<br>log=imp_icdmain_yyyymmdd.log<br>若从磁带设备恢复，使用如下命令：<br>imp system/manager rows=y indexes=n commit=y buffer=65536<br>feedback=100000 ignore=y volsize=0 full=y<br>file=/dev/rmt0<br>log=imp_icdmain_yyyymmdd.log<br>参数说明<br>1. ignore参数<br>Oracle在恢复数据的过程中，当恢复某个表时，该表已经存在，<br>就要根据ignore参数的设置来决定如何操作。<br>若ignore=y，Oracle不执行CREATE TABLE语句，直接将数据<br>插入到表中，如果插入的记录违背了约束条件，比如主键约束，<br>则出错的记录不会插入，但合法的记录会添加到表中。<br>若ignore=n，Oracle不执行CREATE TABLE语句，同时也不会<br>将数据插入到表中，而是忽略该表的错误，继续恢复下一个表。<br>2. indexes参数<br>在恢复数据的过程中，若indexes=n，则表上的索引不会被恢复<br>，但是主键对应的唯一索引将无条件恢复，这是为了保证数据<br>的完整性。<br>字符集转换<br>对于单字节字符集（例如US7ASCII），恢复时，数据库自动转<br>换为该会话的字符集（NLS_LANG参数）；对于多字节字符集<br>（例如ZHS16CGB231280），恢复时，应尽量使字符集相同<br>（避免转换），如果要转换，目标数据库的字符集应是输出数<br>据库字符集的超集。<br>恢复方法<br>业务数据库采用表恢复方案。在用IMP进行恢复前，先在SYS<br>用户下运行CATEXP.SQL文件（如果以前已运行该文件，则<br>不要执行这个脚本），然后执行下列命令：<br>IMP ICDMAIN/ICD FILE=文件名 LOG=LOG文件名 ROWS=Y<br>COMMIT=Y BUFFER=Y IGNORE=Y TABLES=表名<br>注：要恢复的表名参照备份的表名<br>　 。恢复是在原表基础上累加数据<br>　 。没有特殊说明，不允许在客户端执行恢复命令<br><br>将一个数据库的某用户的所有表导到另外数据库的一个用户下面的例子　　<br>exp userid=system/manager owner=username1 file=expfile.dmp<br>imp userid=system/manager fromuser=username1 touser=username2 ignore=y file=expfile.dmp<br><br><br><br>将一个数据库的某用户的所有表导到另外数据库的一个用户下面的例子　　<br><br>exp userid=system/manager owner=username1 file=expfile.dmp<br>imp userid=system/manager fromuser=username1 touser=username2 ignore=y file=expfile.dmp<br><br>ORACLE数据库有两类备份方法。第一类为物理备份，该方法实现数据库的完整恢复，但<br>数据库必须运行在归挡模式下（业务数据库在非归挡模式下运行），且需要极大的外部<br>存储设备，例如磁带库；第二类备份方式为逻辑备份，业务数据库采用此种方式，此方<br>法不需要数据库运行在归挡模式下，不但备份简单，而且可以不需要外部存储设备。<br>数据库逻辑备份方法<br>ORACLE数据库的逻辑备份分为三种模式：表备份、用户备份和完全备份。<br>表模式<br>备份某个用户模式下指定的对象（表）。业务数据库通常采用这种备份方式。<br>若备份到本地文件，使用如下命令：<br>exp icdmain/icd rows=y indexes=n compress=n buffer=65536<br>feedback=100000 volsize=0<br>file=exp_icdmain_csd_yyyymmdd.dmp<br>log=exp_icdmain_csd_yyyymmdd.log<br>tables=icdmain.commoninformation,icdmain.serviceinfo,icdmain.dealinfo<br>若直接备份到磁带设备，使用如下命令：<br>exp icdmain/icd rows=y indexes=n compress=n buffer=65536<br>feedback=100000 volsize=0<br>file=/dev/rmt0<br>log=exp_icdmain_csd_yyyymmdd.log<br>tables=icdmain.commoninformation,icdmain.serviceinfo,icdmain.dealinfo<br>注：在磁盘空间允许的情况下，应先备份到本地服务器，然后再拷贝到磁带。出于速度<br>方面的考虑，尽量不要直接备份到磁带设备。<br>用户模式<br>备份某个用户模式下的所有对象。业务数据库通常采用这种备份方式。<br>若备份到本地文件，使用如下命令：<br>exp icdmain/icd owner=icdmain rows=y indexes=n compress=n buffer=65536<br>feedback=100000 volsize=0<br>file=exp_icdmain_yyyymmdd.dmp<br>log=exp_icdmain_yyyymmdd.log<br>若直接备份到磁带设备，使用如下命令：<br>exp icdmain/icd owner=icdmain rows=y indexes=n compress=n buffer=65536<br>feedback=100000 volsize=0<br>file=/dev/rmt0<br>log=exp_icdmain_yyyymmdd.log<br>注：如果磁盘有空间，建议备份到磁盘，然后再拷贝到磁带。如果数据库数据量较小，<br>可采用这种办法备份。<br>完全模式<br>备份完整的数据库。业务数据库不采用这种备份方式。备份命令为：<br>exp icdmain/icd rows=y indexes=n compress=n buffer=65536<br>feedback=100000 volsize=0 full=y<br>file=exp_fulldb_yyyymmdd.dmp(磁带设备则为/dev/rmt0)<br>log=exp_fulldb_yyyymmdd.log<br>对于数据库备份，建议采用增量备份，即只备份上一次备份以来更改的数据。增量备份<br>命令：<br>exp icdmain/icd rows=y indexes=n compress=n buffer=65536<br>feedback=100000 volsize=0 full=y inctype=incremental<br>file=exp_fulldb_yyyymmdd.dmp(磁带设备则为/dev/rmt0)<br>log=exp_fulldb_yyyymmdd.log<br>注：关于增量备份必须满足下列条件：<br>1.<br>只对完整数据库备份有效，且第一次需要full=y参数，以后需要inctype=increment<br>al参数。<br>2. 用户必须有EXP_FULL_DATABASE的系统角色。<br>3. 话务量较小时方可采用数据库备份。<br>4. 如果磁盘有空间，建议备份到磁盘，然后再备份到磁带。<br>业务数据库备份方法及周期<br>用EXP进行备份前，先在SYS用户下运行CATEXP.SQL文件（如果以前已运行该文件，则不<br>要执行这个脚本）。<br>没有特殊说明，不允许在客户端执行备份命令。<br><br>备份命令参照表模式下的备份命令。<br>从磁盘文件备份到磁带<br>如果首先备份到本地磁盘文件，则需要转储到磁带设备上。<br>1. 若需查看主机上配置的磁带设备，使用如下命令：<br>lsdev -Cc tape<br>显示的结果如下例所示：<br>rmt0 Available 30-58-00-2,0 SCSI 4mm Tape Drive<br>rmt1 Defined　 30-58-00-0,0 SCSI 4mm Tape Drive<br>标明Available的设备是可用的磁带设备。<br>2. 若需查看磁带存储的内容，使用如下命令：<br>tar -tvf /dev/rmt0<br>显示的结果如下例所示：<br>-rw-r--r-- 300 400 8089600 Jan 11 14:33:57 2001 exp_icdmain_20010111.dmp<br>如果显示类似如下内容，则表示该磁带存储的备份数据是从数据库直接备份到磁带上，<br>而非从本地磁盘转储到磁带的备份文件，因此操作系统无法识别。<br>tar: 0511-193 An error occurred while reading from the media.<br>There is an input or output error.<br>或<br>tar: 0511-169 A directory checksum error on media; -267331077 not equal to<br>2<br>5626.<br>3. 对于新磁带或无需保留现存数据的磁带，使用如下命令：<br>tar -cvf /dev/rmt0 exp_icdmain_yyyymmdd.dmp<br>注：A. 该命令将无条件覆盖磁带上的现存数据。<br>　 B. 文件名不允许包含路径信息，如：/backup/exp_icdmain_yyyymmdd.dmp。<br>4. 对于需要保留现存数据的磁带，使用如下命令：<br>tar -rvf /dev/rmt0 exp_icdmain_yyyymmdd.dmp<br>注：该命令将文件exp_icdmain_yyyymmdd.dmp追加到磁带的末端，不会覆盖现存的数据<br>。<br>特别强调：如果备份时是从数据库直接备份到磁带上，则不可再向该磁带上追加复制任<br>何其他文件，否则该备份数据失效。<br>5. 若需将转储到磁带上的备份文件复制到本地硬盘，使用如下命令：<br>A. 将磁带上的全部文件复制到本地硬盘的当前目录<br>tar -xvf /dev/rmt0<br>B. 将磁带上的指定文件复制到本地硬盘的当前目录<br>tar -xvf /dev/rmt0 exp_icdmain_yyyymmdd.dmp<br>备份时间安排<br>由于备份时对系统I/O有较大影响，所以，建议在晚上11点以后进行备份工作。<br>业务数据库Oracle版本的恢复<br>恢复方案需根据备份方案确定。由于业务数据库采用表备份和用户备份相结合的方案，<br>所以业务数据库的恢复需根据实际情况采用表恢复和用户恢复相结合的方案。<br>恢复方案<br>数据库的逻辑恢复分为表恢复、用户恢复、完全恢复三种模式。<br>表模式<br>此方式将根据按照表模式备份的数据进行恢复。<br>A. 恢复备份数据的全部内容<br>若从本地文件恢复，使用如下命令：<br>imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n<br>commit=y buffer=65536 feedback=100000 ignore=n volsize=0<br>file=exp_icdmain_cs<br>d_yyyymmdd.dmp<br>log=imp_icdmain_csd_yyyymmdd.log<br>若从磁带设备恢复，使用如下命令：<br>imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n<br>commit=y buffer=65536 feedback=100000 ignore=n volsize=0 file=/dev/rmt0<br>log=imp_icdmain_csd_yyyymmdd.log<br>B. 恢复备份数据中的指定表<br>若从本地文件恢复，使用如下命令：<br>imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n<br>commit=y buffer=65536 feedback=100000 ignore=n volsize=0<br>file=exp_icdmain_cs<br>d_yyyymmdd.dmp<br>log=imp_icdmain_csd_yyyymmdd.log<br>tables=commoninformation,serviceinfo<br>若从磁带设备恢复，使用如下命令：<br>imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n<br>commit=y buffer=65536 feedback=100000 ignore=n volsize=0<br>file=/dev/rmt0<br>log=imp_icdmain_csd_yyyymmdd.log<br>tables=commoninformation,serviceinfo<br>用户模式<br>此方式将根据按照用户模式备份的数据进行恢复。<br>A. 恢复备份数据的全部内容<br>若从本地文件恢复，使用如下命令：<br>imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n<br>commit=y buffer=65536 feedback=100000 ignore=n volsize=0<br>file=exp_icdmain_yy<br>yymmdd.dmp<br>log=imp_icdmain_yyyymmdd.log<br>若从磁带设备恢复，使用如下命令：<br>imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n<br>commit=y buffer=65536 feedback=100000 ignore=n volsize=0 file=/dev/rmt0<br>log=imp_icdmain_yyyymmdd.log<br>B. 恢复备份数据中的指定表<br>若从本地文件恢复，使用如下命令：<br>imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n<br>commit=y buffer=65536 feedback=100000 ignore=n volsize=0<br>file=exp_icdmain_yy<br>yymmdd.dmp<br>log=imp_icdmain_yyyymmdd.log<br>tables=commoninformation,serviceinfo<br>若从磁带设备恢复，使用如下命令：<br>imp icdmain/icd fromuser=icdmain touser=icdmain rows=y indexes=n<br>commit=y buffer=65536 feedback=100000 ignore=n volsize=0 file=/dev/rmt0<br>log=imp_icdmain_yyyymmdd.log<br>tables=commoninformation,serviceinfo<br>完全模式<br>如果备份方式为完全模式，采用下列恢复方法：<br>若从本地文件恢复，使用如下命令：<br>imp system/manager rows=y indexes=n commit=y buffer=65536<br>feedback=100000 ignore=y volsize=0 full=y<br>file=exp_icdmain_yyyymmdd.dmp<br>log=imp_icdmain_yyyymmdd.log<br>若从磁带设备恢复，使用如下命令：<br>imp system/manager rows=y indexes=n commit=y buffer=65536<br>feedback=100000 ignore=y volsize=0 full=y<br>file=/dev/rmt0<br>log=imp_icdmain_yyyymmdd.log<br>参数说明<br>1. ignore参数<br>Oracle在恢复数据的过程中，当恢复某个表时，该表已经存在，<br>就要根据ignore参数的设置来决定如何操作。<br>若ignore=y，Oracle不执行CREATE TABLE语句，直接将数据<br>插入到表中，如果插入的记录违背了约束条件，比如主键约束，<br>则出错的记录不会插入，但合法的记录会添加到表中。<br>若ignore=n，Oracle不执行CREATE TABLE语句，同时也不会<br>将数据插入到表中，而是忽略该表的错误，继续恢复下一个表。<br>2. indexes参数<br>在恢复数据的过程中，若indexes=n，则表上的索引不会被恢复<br>，但是主键对应的唯一索引将无条件恢复，这是为了保证数据<br>的完整性。<br>字符集转换<br>对于单字节字符集（例如US7ASCII），恢复时，数据库自动转<br>换为该会话的字符集（NLS_LANG参数）；对于多字节字符集<br>（例如ZHS16CGB231280），恢复时，应尽量使字符集相同<br>（避免转换），如果要转换，目标数据库的字符集应是输出数<br>据库字符集的超集。<br>恢复方法<br>业务数据库采用表恢复方案。在用IMP进行恢复前，先在SYS<br>用户下运行CATEXP.SQL文件（如果以前已运行该文件，则<br>不要执行这个脚本），然后执行下列命令：<br>IMP ICDMAIN/ICD FILE=文件名 LOG=LOG文件名 ROWS=Y<br>COMMIT=Y BUFFER=Y IGNORE=Y TABLES=表名<br>注：要恢复的表名参照备份的表名<br>　 。恢复是在原表基础上累加数据<br>　 。没有特殊说明，不允许在客户端执行恢复命令 </font><br>
 <img src ="http://www.blogjava.net/brock/aggbug/127930.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/brock/" target="_blank">brock</a> 2007-07-03 18:09 <a href="http://www.blogjava.net/brock/archive/2007/07/03/127930.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>