<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom"><title type="text">博客园_蓝紫</title><subtitle type="text"/><id>http://feed.cnblogs.com/blog/u/53430/rss</id><updated>2012-02-10T09:06:44Z</updated><author><name>蓝紫</name><uri>http://www.cnblogs.com/lanzi/</uri></author><generator>CNBlogs BlogServer</generator><link rel="alternate" type="text/html" href="http://www.cnblogs.com/lanzi/"/><link rel="self" type="application/atom+xml" href="http://feed.cnblogs.com/blog/u/53430/rss"/><entry><id>http://www.cnblogs.com/lanzi/archive/2012/02/10/2345697.html</id><title type="text">ssh连接aix问题与解决</title><summary type="text">最近想使用ssh来连接aix系统，但是装好ssh后连接却发现了无法登陆的问题。安装的ssh软件：SSHSecureShellClient-3.2.9.zip aix版本：5.3使用ssh登陆连接：点击connect后提示如下：经百度主要是两个原因： 第一，防火墙开启导致的（客户端或服务器上的防火墙）；第二，ssh服务没有开启（或者未成功安装ssh）。根据以上原因，将防火墙关闭，且按照http://hi.baidu.com/%D2%BB%C9%FA ... c117bf4623e88a.html 该博客下载了ssl和ssh软件进行安装，安装后查看，ssh服务已经开启。同时将防火墙关闭，但是连接.</summary><published>2012-02-10T09:07:00Z</published><updated>2012-02-10T09:07:00Z</updated><author><name>蓝紫</name><uri>http://www.cnblogs.com/lanzi/</uri></author><link rel="alternate" href="http://www.cnblogs.com/lanzi/archive/2012/02/10/2345697.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/lanzi/archive/2012/02/10/2345697.html"/><content type="html">&lt;p&gt;最近想使用ssh来连接aix系统，但是装好ssh后连接却发现了无法登陆的问题。&lt;/p&gt;&lt;p&gt;安装的ssh软件：SSHSecureShellClient-3.2.9.zip &lt;br /&gt;&lt;/p&gt;&lt;p&gt;aix版本：5.3&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;使用ssh登陆连接：&lt;/p&gt;&lt;p&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/lanzi/ssh.png" height="141" width="402" /&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;点击connect后提示如下：&lt;/p&gt;&lt;p&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/lanzi/ssh2.png" height="151" width="557" /&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;经百度主要是两个原因：&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div&gt; 第一，防火墙开启导致的（客户端或服务器上的防火墙）；&lt;br /&gt;第二，ssh服务没有开启（或者未成功安装ssh）。&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;根据以上原因，将防火墙关闭，且按照&lt;/p&gt;&lt;div&gt;&amp;nbsp;&lt;a href="http://hi.baidu.com/%D2%BB%C9%FA%CF%B7/blog/item/9c5000228fc117bf4623e88a.html" target="_blank"&gt;http://hi.baidu.com/%D2%BB%C9%FA ... c117bf4623e88a.html&amp;nbsp;&amp;nbsp; 该博客下载了ssl和ssh软件进行安装，安装后查看，ssh服务已经开启。&lt;br /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;同时将防火墙关闭，但是连接仍然是上面的错误提示。&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;在itpub上在大家的热心帮助下，原来还有一个重要原因导致ssh无法连接：root用户默认情况下是无法使用ssh连接的。必须将etc/ssh目录下的&lt;div&gt;&lt;span style="background-color: yellow;"&gt;sshd_config&lt;/span&gt;文件中的&lt;/div&gt;&lt;/p&gt;&lt;p&gt;&lt;div&gt;&lt;span style="color: red;"&gt;PermitRootLogin&lt;/span&gt; 属性改为yes（默认为no），然后重启ssh服务。&lt;/div&gt;&lt;p&gt;修改好后，再次登录，又一次失望了，还是无法登录。在 &amp;#8220;快乐的大个子&amp;#8221;的提醒下（PS:预感这将是一个detail 上的忽略），想想再仔细看看&lt;br /&gt;&lt;div&gt;sshd_config文件的内容，发现其中 port 写的是9988，而非常规的22。问题就在这了，重新将端口改为9988，再次连接，连接成功啦！&lt;/div&gt; &lt;br /&gt;&lt;/p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;注：&lt;div&gt;http://www.itpub.net/thread-1570644-1-1.html&lt;/div&gt;&lt;/p&gt; &lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/lanzi/aggbug/2345697.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/lanzi/archive/2012/02/10/2345697.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/lanzi/archive/2012/02/10/2345490.html</id><title type="text">expdp-导出报ora-01775 ：同义词循环链 原因</title><summary type="text">今天用expdp来导数据，发现报ORA-01775的错误，如下所示：这是在服务器 上导出报的错，然后又在自己本机试了下，发现可以成功导出。网上搜了搜，以为是因为SYS_EXPORT_SCHEMA_01这个同义词的原因：expdp在导的过程中会自动生成该表，如果中间中断操作，那么该表就会存在，那么就会存在用户将该表手动删除而同义词仍保留着，那么就会导致这个错误了。但是我查找了下发现并不存在该表也不存在该同义词。因此不是这个原因。接着我删除了部分找不到表或视图的同义词，再次导数据发现提示表或视图找不到，我想估计是支持导图的一些表或视图没有了。因此与自己的数据库对比了，发现如下视图在自己本机数据库.</summary><published>2012-02-10T07:21:00Z</published><updated>2012-02-10T07:21:00Z</updated><author><name>蓝紫</name><uri>http://www.cnblogs.com/lanzi/</uri></author><link rel="alternate" href="http://www.cnblogs.com/lanzi/archive/2012/02/10/2345490.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/lanzi/archive/2012/02/10/2345490.html"/><content type="html">&lt;p&gt;今天用expdp来导数据，发现报ORA-01775的错误，如下所示：&lt;/p&gt;&lt;p&gt;&lt;img alt="" src="http://images.cnblogs.com/cnblogs_com/lanzi/expdp-01775.png" /&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;这是在服务器 上导出报的错，然后又在自己本机试了下，发现可以成功导出。网上搜了搜，以为是因为&lt;div&gt;SYS_EXPORT_SCHEMA_01这个同义词的原因：expdp在导的过程中会自动生成该表，如果中间中断操作，那么该表就会存在，那么就会存在用户将该表手动删除而同义词仍保留着，那么就会导致这个错误了。但是我查找了下发现并不存在该表也不存在该同义词。因此不是这个原因。接着我删除了部分找不到表或视图的同义词，再次导数据发现提示表或视图找不到，我想估计是支持导图的一些表或视图没有了。因此与自己的数据库对比了，发现如下视图在自己本机数据库上是有的，而在有问题的服务器上却没有。&lt;/div&gt;&lt;p&gt;&lt;div&gt;DATABASE_EXPORT_OBJECTS&lt;br /&gt;DATAPUMP_OBJECT_CONNECT&lt;br /&gt;DATAPUMP_PATHMAP&lt;br /&gt;DATAPUMP_PATHS&lt;br /&gt;DATAPUMP_REMAP_OBJECTS&lt;br /&gt;DATAPUMP_TABLE_DATA&lt;br /&gt;DBA_EXPORT_OBJECTS&lt;br /&gt;P_UPDATE_RMEQP_THEMATIC&lt;br /&gt;SCHEMA_EXPORT_OBJECTS&lt;br /&gt;TABLESPACE_EXPORT_OBJECTS&lt;br /&gt;TABLE_EXPORT_OBJECTS&lt;br /&gt;TRANSPORTABLE_EXPORT_OBJECTS&lt;/div&gt;&lt;/p&gt;&lt;p&gt;找到问题，就好解决了：&lt;/p&gt;&lt;p&gt;将这些视图重新创建，然后再创建同义词。再次执行，OK。&lt;img src="http://www.cnblogs.com/Emoticons/baimantou/105104147.gif"  alt="" /&gt; &lt;/p&gt; &lt;br /&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/lanzi/aggbug/2345490.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/lanzi/archive/2012/02/10/2345490.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/lanzi/archive/2012/02/08/2343306.html</id><title type="text">rownum的使用-分页</title><summary type="text">oracle分页显示方法 一、使用rownum分页显示方式方式1：SELECT * FROM (SELECT ROWNUM r, a.* FROM b$i_exch_info a WHERE ROWNUM &amp;lt;= 10)WHERE r &amp;gt;= 5;方式2：SELECT * FROM (SELECT ROWNUM r, a.* FROM b$i_exch_info a)WHERE r BETWEEN 5 AND 10;方式3： SELECT * FROM b$i_exch_info WHERE ROWNUM &amp;lt;= 10 MINUSSELECT * FROM b$i_exch_inf</summary><published>2012-02-08T14:32:00Z</published><updated>2012-02-08T14:32:00Z</updated><author><name>蓝紫</name><uri>http://www.cnblogs.com/lanzi/</uri></author><link rel="alternate" href="http://www.cnblogs.com/lanzi/archive/2012/02/08/2343306.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/lanzi/archive/2012/02/08/2343306.html"/><content type="html">&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;strong style="font-size: 14pt;"&gt;oracle分页显示方法 &lt;/strong&gt;&lt;br style="font-size: 14pt;" /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;一、使用rownum分页显示方式&lt;/strong&gt;&lt;/p&gt;方式1：&lt;br /&gt;SELECT *&lt;br /&gt;&amp;nbsp; FROM (SELECT ROWNUM r, a.* FROM b$i_exch_info a WHERE ROWNUM &amp;lt;= 10)&lt;br /&gt;&amp;nbsp;WHERE r &amp;gt;= 5;&lt;br /&gt;&lt;br /&gt;方式2：&lt;br /&gt;SELECT *&lt;br /&gt;&amp;nbsp; FROM (SELECT ROWNUM r, a.* FROM b$i_exch_info a)&lt;br /&gt;&amp;nbsp;WHERE r BETWEEN 5 AND 10;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;方式3： &lt;br /&gt;SELECT * FROM b$i_exch_info WHERE ROWNUM &amp;lt;= 10 MINUS&lt;br /&gt;SELECT * FROM b$i_exch_info WHERE ROWNUM &amp;lt; 5;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;二、使用分析函数row_number分页显示&lt;/strong&gt;&lt;br /&gt;SELECT *&lt;br /&gt;&amp;nbsp; FROM (SELECT e.*, row_number() over(ORDER BY g3e_fid) r&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FROM b$i_exch_info e) a&lt;br /&gt;&amp;nbsp;WHERE a.r &amp;gt;= 5&lt;br /&gt;&amp;nbsp;&amp;nbsp; AND a.r &amp;lt;= 10;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-size: 14pt;"&gt;注意事项&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;1. &lt;br /&gt;&lt;/p&gt;&lt;span style="color: red;"&gt;--10g及10g之后才可以使用rownum=1&lt;/span&gt;&lt;br /&gt;SELECT * FROM user_objects&lt;br /&gt;&amp;nbsp; WHERE /*object_id &amp;lt;100&lt;br /&gt;&amp;nbsp; AND*/ ROWNUM = 1;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;--之前的版本 &amp;nbsp;&lt;/span&gt;&lt;br /&gt;SELECT * FROM user_objects&lt;br /&gt;&amp;nbsp; WHERE object_id &amp;lt;100&lt;br /&gt;&amp;nbsp; AND ROWNUM &amp;lt;= 1;&lt;br /&gt;&amp;nbsp; &lt;br /&gt;2.&lt;br /&gt;&lt;u&gt;rownum采用大于号&amp;gt;时 其值必须小于1，否则查询无结果&lt;/u&gt;&lt;br /&gt;SELECT * FROM user_objects&lt;br /&gt;&amp;nbsp; WHERE ROWNUM &amp;gt;1; &lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;u&gt;&amp;gt;= 时其值必须小于或等于1，否则查询无结果&lt;/u&gt;&lt;br /&gt;SELECT * FROM user_objects&lt;br /&gt;&amp;nbsp; WHERE ROWNUM &amp;gt;=2; &lt;br /&gt;&lt;br /&gt;&lt;u&gt;= 时其只能等于1，否则查询无结果&lt;/u&gt;&lt;br /&gt;SELECT * FROM user_objects&lt;br /&gt;&amp;nbsp; WHERE ROWNUM =2; &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;3.ROWNUM 和Order BY&lt;/strong&gt;&lt;br /&gt;&lt;strong style="background-color: yellow;"&gt;在使用ROWNUM 时，只有当Order By 的字段是主键时，查询结果才会先排序再计算ROWNUM：&lt;/strong&gt;&lt;br style="background-color: yellow;" /&gt;g3e_ano是主键&lt;br /&gt;SELECT g3e_ano,g3e_username FROM g3e_attribute WHERE ROWNUM &amp;lt;= 5 ORDER BY g3e_ano;&lt;br /&gt;1&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 备注&lt;br /&gt;1002&amp;nbsp;&amp;nbsp; &amp;nbsp;组件序号&lt;br /&gt;1008&amp;nbsp;&amp;nbsp; &amp;nbsp;组件序号&lt;br /&gt;1009&amp;nbsp;&amp;nbsp; &amp;nbsp;组件序号&lt;br /&gt;1010&amp;nbsp;&amp;nbsp; &amp;nbsp;组件序号&lt;br /&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;--以下查询因为ORDER BY的g3e_username不是主键，所以执行时是先线取出该表的6条数据，再对g3e_username排序&lt;/span&gt;&lt;br /&gt;SELECT g3e_ano,g3e_username FROM g3e_attribute WHERE ROWNUM &amp;lt;= 5 ORDER BY g3e_username;&lt;br /&gt;111003&amp;nbsp;&amp;nbsp; &amp;nbsp;设施特征唯一号&lt;br /&gt;113203&amp;nbsp;&amp;nbsp; &amp;nbsp;设施特征唯一号&lt;br /&gt;50110&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; 设施特征唯一号&lt;br /&gt;1510103&amp;nbsp;&amp;nbsp; &amp;nbsp;设施特征唯一号&lt;br /&gt;112003&amp;nbsp;&amp;nbsp; &amp;nbsp;设施特征唯一号&lt;br /&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;--如果需要对非主键字段先排序再去取前n 条数据，可以通过子查询的方式实现：&lt;/span&gt;&lt;br /&gt;select g3e_ano, g3e_username&lt;br /&gt;&amp;nbsp; from (select g3e_ano, g3e_username&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; from g3e_attribute&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; order by g3e_username)&lt;br /&gt;&amp;nbsp;where rownum &amp;lt;= 5;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;--每页按10条记录输出（如果被排序的字段有重复值，使用rownum会出现一个问题）：&lt;br /&gt;--观察下面两个语句的输出结果会发现其中55461451和55461209是在两个查询中都出现了。而fid在表中都是唯一记录的，&lt;br /&gt;--说明这个输出结果是错误的&lt;br /&gt;错误原因：SORT (ORDER BY STOPKEY)这种快速排序方法由于是根据数据分组来选择数据的，不是根据整个表的数据进行排序，所以N&lt;br /&gt;值不同，数据的分组也不同，导致结果在数据的排序字段值都相等时，输出结果的顺序就会因为N 值不同而不同。&lt;/strong&gt;&lt;br /&gt;SELECT *&lt;br /&gt;&amp;nbsp; FROM (SELECT ROWNUM r, a.*&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FROM (SELECT name, g3e_fid FROM b$l_interest_info a ORDER BY name) a&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WHERE ROWNUM &amp;lt;= 10)&lt;br /&gt;&amp;nbsp;WHERE r &amp;gt;= 1;&lt;br /&gt;1&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 王家宅&amp;nbsp;&amp;nbsp; &amp;nbsp;55461079&lt;br /&gt;2&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 王家宅&amp;nbsp;&amp;nbsp; &amp;nbsp;55461206&lt;br /&gt;3&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 王家宅&amp;nbsp;&amp;nbsp; &amp;nbsp;55461207&lt;br /&gt;4&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 王家宅&amp;nbsp;&amp;nbsp; &amp;nbsp;55461253&lt;br /&gt;5&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 王家宅&amp;nbsp;&amp;nbsp; &amp;nbsp;55461246&lt;br /&gt;&lt;span style="background-color: yellow;"&gt;6&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 王家宅&amp;nbsp;&amp;nbsp; &amp;nbsp;55461209&lt;/span&gt;&lt;br /&gt;7&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 王家宅&amp;nbsp;&amp;nbsp; &amp;nbsp;55461783&lt;br /&gt;8&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 王家宅&amp;nbsp;&amp;nbsp; &amp;nbsp;55461646&lt;br /&gt;9&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 王家宅&amp;nbsp;&amp;nbsp; &amp;nbsp;55461586&lt;br /&gt;&lt;span style="background-color: yellow;"&gt;10&amp;nbsp;&amp;nbsp; &amp;nbsp; 王家宅&amp;nbsp;&amp;nbsp; &amp;nbsp;55461451&lt;/span&gt;&lt;br /&gt;SELECT *&lt;br /&gt;&amp;nbsp; FROM (SELECT ROWNUM r, a.*&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FROM (SELECT name, g3e_fid FROM b$l_interest_info a ORDER BY name) a&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WHERE ROWNUM &amp;lt;= 20)&lt;br /&gt;&amp;nbsp;WHERE r &amp;gt;= 11;&lt;br /&gt;11&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 王家宅&amp;nbsp;&amp;nbsp; &amp;nbsp;56990485&lt;br /&gt;12&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 王家宅&amp;nbsp;&amp;nbsp; &amp;nbsp;56990368&lt;br /&gt;13&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 王家宅&amp;nbsp;&amp;nbsp; &amp;nbsp;56981862&lt;br /&gt;14&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 王家宅&amp;nbsp;&amp;nbsp; &amp;nbsp;56981861&lt;br /&gt;15&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 王家宅&amp;nbsp;&amp;nbsp; &amp;nbsp;56981807&lt;br /&gt;16&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 王家宅&amp;nbsp;&amp;nbsp; &amp;nbsp;56981806&lt;br /&gt;17&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 王家宅&amp;nbsp;&amp;nbsp; &amp;nbsp;56981801&lt;br /&gt;18&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 王家宅&amp;nbsp;&amp;nbsp; &amp;nbsp;55461646&lt;br /&gt;&lt;span style="background-color: yellow;"&gt;19&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 王家宅&amp;nbsp;&amp;nbsp; &amp;nbsp;55461451&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: yellow;"&gt;20&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 王家宅&amp;nbsp;&amp;nbsp; &amp;nbsp;55461209&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;解决办法：&lt;br /&gt;1、让查询计划避免&amp;#8220;SORT (ORDER BY STOPKEY)&amp;#8221;，采用&amp;#8220;SORT (ORDER BY)&amp;#8221;，使数&lt;br /&gt;据排序不受ROWNUM 的影响。但这样会使所有数据都做排序：&lt;br /&gt;SELECT *&lt;br /&gt;&amp;nbsp; FROM (SELECT a.*, ROWNUM r&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FROM (SELECT name, g3e_fid FROM b$l_interest_info a ORDER BY name) a)&lt;br /&gt;&amp;nbsp;WHERE r &amp;lt;= 10&lt;br /&gt;&amp;nbsp;&amp;nbsp; AND r &amp;gt;= 1;&lt;br /&gt;&lt;br /&gt;SELECT *&lt;br /&gt;&amp;nbsp; FROM (SELECT a.*, ROWNUM r&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FROM (SELECT name, g3e_fid FROM b$l_interest_info a ORDER BY name) a)&lt;br /&gt;&amp;nbsp;WHERE r &amp;lt;= 20&lt;br /&gt;&amp;nbsp;&amp;nbsp; AND r &amp;gt;= 11;&lt;br /&gt;2、在排序时，加上一个或多个字段（如主键字段、ROWID），使排序结果具有唯一性：&lt;br /&gt;SELECT *&lt;br /&gt;&amp;nbsp; FROM (SELECT ROWNUM r, a.*&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FROM (SELECT name, g3e_fid FROM b$l_interest_info a ORDER BY name,g3e_fid) a&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WHERE ROWNUM &amp;lt;= 10)&lt;br /&gt;&amp;nbsp;WHERE r &amp;gt;= 1;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;SELECT *&lt;br /&gt;&amp;nbsp; FROM (SELECT ROWNUM r, a.*&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FROM (SELECT name, g3e_fid FROM b$l_interest_info a ORDER BY name,g3e_fid) a&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WHERE ROWNUM &amp;lt;= 20)&lt;br /&gt;&amp;nbsp;WHERE r &amp;gt;= 11;&lt;br /&gt;3、对排序字段建立索引，并强制使用索引。这样就能利用索引已经建立好的排序结果：&lt;br /&gt;CREATE INDEX idx_b$l_interest_info_name ON b$l_interest_info(name);&lt;br /&gt;ALTER INDEX idx_b$l_interest_info_name REBUILD;&lt;br /&gt;&lt;br /&gt;SELECT *&lt;br /&gt;&amp;nbsp; FROM (SELECT ROWNUM r, a.*&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FROM (SELECT /*+index(a idx_b$l_interest_info_name)*/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; name, g3e_fid&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FROM b$l_interest_info a&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WHERE a.name IS NOT NULL&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ORDER BY name) a&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WHERE ROWNUM &amp;lt;= 10)&lt;br /&gt;&amp;nbsp;WHERE r &amp;gt;= 1;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;SELECT *&lt;br /&gt;&amp;nbsp; FROM (SELECT ROWNUM r, b.*&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FROM (SELECT /*+index(a idx_b$l_interest_info_name)*/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; a.name, a.g3e_fid&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FROM b$l_interest_info a&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WHERE a.name IS NOT NULL&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ORDER BY a.name) b&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WHERE ROWNUM &amp;lt;= 20)&lt;br /&gt;&amp;nbsp;WHERE r &amp;gt;= 11;&lt;img src="http://www.cnblogs.com/lanzi/aggbug/2343306.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/lanzi/archive/2012/02/08/2343306.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/lanzi/archive/2012/01/05/2312316.html</id><title type="text">嵌套表使用集合操作符 -单列或多列均可</title><summary type="text">嵌套表使用multiset union，multiset except，multiset intersect等使用集合操作符，往往一般都只是对一列进行比较，但是多列实际上也是可以的：以下介绍中，以multiset except操作符为例。一、只有一列情况下使用集合操作符由以下1,），2），3），4）说明只有一列的情况下使用集合操作符时既可以直接赋值也可以通过sql语句的形式赋值，但是 2）编译出错，原因是 必须将变量类型定义到schma级别，即要么像3）和4）那样直接在外部定义了一个变量，或者直接在包中的包头进行定义 1）执行成功DECLARE TYPE typ_id_table1 IS ..</summary><published>2012-01-05T01:56:00Z</published><updated>2012-01-05T01:56:00Z</updated><author><name>蓝紫</name><uri>http://www.cnblogs.com/lanzi/</uri></author><link rel="alternate" href="http://www.cnblogs.com/lanzi/archive/2012/01/05/2312316.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/lanzi/archive/2012/01/05/2312316.html"/><content type="html">&lt;p&gt;嵌套表使用multiset union，multiset except，multiset intersect等使用集合操作符，往往一般都只是对一列进行比较，但是多列实际上也是可以的：&lt;/p&gt;&lt;p&gt;以下介绍中，以multiset except操作符为例。&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;一、只有一列情况下使用集合操作符&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;由以下1,），2），3），4）说明只有一列的情况下使用集合操作符时既可以直接赋值也可以通过sql语句的形式赋值，但是 2）编译出错，原因是 必须将变量类型定义到schma级别，即要么像3）和4）那样直接在外部定义了一个变量，或者直接在包中的包头进行定义 &lt;br /&gt;&lt;/p&gt;&lt;p&gt;1）执行成功&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div&gt;DECLARE &lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;span style="background-color: yellow;"&gt;TYPE typ_id_table1 IS TABLE OF NUMBER;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; tab_fids1 typ_id_table1 := typ_id_table1();&lt;br /&gt;&amp;nbsp;&amp;nbsp; tab_fids2 typ_id_table1 := typ_id_table1();&lt;br /&gt;&amp;nbsp;&amp;nbsp; v_result typ_id_table1;&lt;br /&gt;BEGIN&lt;br /&gt;&lt;span style="background-color: yellow;"&gt;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style="background-color: yellow;"&gt;v_result := tab_fids1 MULTISET except tab_fids2;&lt;/span&gt;&lt;br /&gt;END ;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;2）执行提示：在SQL语句中不允许使用本地收集类型&lt;/p&gt;&lt;div&gt;DECLARE &lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;span style="background-color: yellow;"&gt;TYPE typ_id_table1 IS TABLE OF NUMBER;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; tab_fids1 typ_id_table1 := typ_id_table1();&lt;br /&gt;&amp;nbsp;&amp;nbsp; tab_fids2 typ_id_table1 := typ_id_table1();&lt;br /&gt;&amp;nbsp;&amp;nbsp; v_result typ_id_table1;&lt;br /&gt;BEGIN&lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;span style="background-color: yellow;"&gt;SELECT&amp;nbsp; tab_fids1 MULTISET EXCEPT tab_fids2 INTO v_result FROM DUAL;&lt;/span&gt;&lt;br /&gt;END ;&lt;/div&gt; &lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;3）编译成功&lt;/p&gt;&lt;div&gt;CREATE OR REPLACE TYPE typ_id_table3 AS TABLE OF NUMBER(10); --在外部定义了变量&lt;br /&gt;DECLARE &lt;br /&gt;&amp;nbsp;&amp;nbsp; tab_fids1 typ_id_table3 := typ_id_table3();&lt;br /&gt;&amp;nbsp;&amp;nbsp; tab_fids2 typ_id_table3 := typ_id_table3();&lt;br /&gt;&amp;nbsp;&amp;nbsp; v_result typ_id_table3;&lt;br /&gt;BEGIN&lt;br /&gt;&amp;nbsp;&amp;nbsp; v_result := tab_fids1 MULTISET except tab_fids2;&lt;br /&gt;END ;&lt;/div&gt; &lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;4）编译成功&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div&gt;CREATE OR REPLACE TYPE typ_id_table3 AS TABLE OF NUMBER(10);--在外部定义变量&lt;br /&gt;DECLARE &lt;br /&gt;&amp;nbsp;&amp;nbsp; tab_fids1 typ_id_table3 := typ_id_table3();&lt;br /&gt;&amp;nbsp;&amp;nbsp; tab_fids2 typ_id_table3 := typ_id_table3();&lt;br /&gt;&amp;nbsp;&amp;nbsp; v_result typ_id_table3;&lt;br /&gt;BEGIN&lt;br /&gt;&amp;nbsp;&amp;nbsp; SELECT&amp;nbsp; tab_fids1 MULTISET EXCEPT tab_fids2 INTO v_result FROM DUAL;&lt;br /&gt;END ;&lt;/div&gt;&amp;nbsp;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;二、多列情况下使用集合操作符&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;本以为多列的情况下无法使用集合操作符，再次要感谢itpub newkid版主的解答。&lt;/p&gt;&lt;p&gt;即在使用多列进行比较的时候不能直接比较，而必须改成sql语句的形式进行比较，如下：&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div&gt;CREATE OR REPLACE TYPE typ_id_object AS OBJECT (gid NUMBER(10),&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; gno NUMBER(5),&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; co NUMBER(5));&lt;br /&gt;&lt;br /&gt;CREATE OR REPLACE TYPE typ_id_table AS TABLE OF typ_id_object;&lt;/div&gt;&amp;nbsp;&lt;p&gt;&lt;/p&gt;&lt;p&gt;1）编译成功&lt;br /&gt;&lt;/p&gt;&lt;div&gt;DECLARE&lt;br /&gt;&amp;nbsp;&amp;nbsp; v1 typ_id_table := typ_id_table();&lt;br /&gt;&amp;nbsp;&amp;nbsp; v2 typ_id_table := typ_id_table();&lt;br /&gt;&amp;nbsp;&amp;nbsp; v3 typ_id_table;&lt;br /&gt;BEGIN &lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;span style="background-color: yellow;"&gt;SELECT&amp;nbsp; v1 MULTISET EXCEPT v2 INTO V3 FROM DUAL;&lt;/span&gt; --如果是多列的情况下就必须是这种sql语句的形式&lt;br /&gt;END;&lt;/div&gt; 2）&lt;div&gt;DECLARE&lt;br /&gt;&amp;nbsp;&amp;nbsp; v1 typ_id_table := typ_id_table();&lt;br /&gt;&amp;nbsp;&amp;nbsp; v2 typ_id_table := typ_id_table();&lt;br /&gt;&amp;nbsp;&amp;nbsp; v3 typ_id_table;&lt;br /&gt;BEGIN&lt;br /&gt;&amp;nbsp;&amp;nbsp; &lt;span style="background-color: yellow;"&gt;V3 := v1 MULTISET EXCEPT v2;&lt;/span&gt; --如果采用此种形式则会提示：PLS-00306:调用 'MULTISET_EXCEPT_ALL' 时参数个数或类型错误&lt;/div&gt;&lt;p&gt;END;&lt;/p&gt; &lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/lanzi/aggbug/2312316.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/lanzi/archive/2012/01/05/2312316.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/lanzi/archive/2012/01/04/2311431.html</id><title type="text">对象表与PLSQL表类型 比较</title><summary type="text">一直以来，对这两种类型一直存有疑惑，现在将自己的一些想法实验记录下来，以便以后查看跟踪改进。PLSQL表变量类型TYPE typ_id_record IS RECORD( gid NUMBER(10), gno NUMBER(5), co NUMBER(5));TYPE typ_id_table1 IS TABLE OF typ_id_record;对象表变量类型CREATE OR REPLACE TYPE typ_id_object AS OBJECT (gid NUMBER(10), gno NUMBER(5), co NUMBER(5));CREATE OR REPLACE TYPE..</summary><published>2012-01-04T03:25:00Z</published><updated>2012-01-04T03:25:00Z</updated><author><name>蓝紫</name><uri>http://www.cnblogs.com/lanzi/</uri></author><link rel="alternate" href="http://www.cnblogs.com/lanzi/archive/2012/01/04/2311431.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/lanzi/archive/2012/01/04/2311431.html"/><content type="html">&lt;p&gt;一直以来，对这两种类型一直存有疑惑，现在将自己的一些想法实验记录下来，以便以后查看跟踪改进。&lt;/p&gt;&lt;p&gt;&lt;u&gt;&lt;strong&gt;&amp;nbsp;PLSQL表变量类型&lt;/strong&gt;&lt;/u&gt;&lt;/p&gt;&lt;div&gt;TYPE typ_id_record IS RECORD(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; gid NUMBER(10),&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; gno NUMBER(5),&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; co NUMBER(5));&lt;br /&gt;TYPE typ_id_table1 IS TABLE OF typ_id_record;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;u&gt;&lt;strong&gt;&amp;nbsp;对象表变量类型&lt;/strong&gt;&lt;/u&gt;&lt;/p&gt;&lt;div&gt;CREATE OR REPLACE TYPE typ_id_object AS OBJECT &lt;/div&gt;&lt;p&gt;(gid NUMBER(10),&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; gno NUMBER(5),&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; co NUMBER(5));&lt;br /&gt;CREATE OR REPLACE TYPE typ_id_table AS TABLE OF typ_id_object;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;1.bulk collect的使用的区别&lt;/p&gt;&lt;p&gt;PLSQL变量可以直接接收bulk collect，但是对象表变量就必须先进行转换&lt;/p&gt;&lt;p&gt;如下过程 p_f2中定义了一个对象表变量 tab_ids，直接将查询结果集一次性bulk collect放置到该变量时，会提示：&lt;/p&gt;&lt;div&gt;&lt;span style="color: red;"&gt;ORA-00947: 没有足够的值.如果定义的object变量是单个字段的话，则编译时是提示：&lt;div&gt;ORA-00932: 数据类型不一致&lt;/div&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;CREATE OR REPLACE PROCEDURE p_f2 IS&lt;br /&gt;&amp;nbsp;&amp;nbsp; tab_ids typ_id_table;&lt;br /&gt;BEGIN&lt;br /&gt;&amp;nbsp;&amp;nbsp; SELECT gp.gid, gp.gno, gp.co&amp;nbsp;&amp;nbsp; BULK COLLECT&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; INTO tab_ids&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FROM p_table_test gp;&lt;br /&gt;END p_f2;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;解决办法：将object变量进行转换，如下所示： &lt;br /&gt;&lt;/p&gt;&lt;div&gt;CREATE OR REPLACE PROCEDURE p_f2 IS&lt;br /&gt;&amp;nbsp;&amp;nbsp; tab_ids typ_id_table;&lt;br /&gt;BEGIN&lt;br /&gt;&amp;nbsp;&amp;nbsp; SELECT &lt;span style="background-color: #ffcc00;"&gt;typ_id_object(gp.gid, gp.gno, gp.co)&lt;/span&gt; &amp;nbsp; BULK COLLECT&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; INTO tab_ids&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FROM p_table_test gp;&lt;br /&gt;END p_f2;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;如果采用的是PLSQL表变量，则直接接受查询的结果集就可以了，如下所示：&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div&gt;CREATE OR REPLACE PROCEDURE p_f4 IS&lt;br /&gt;&amp;nbsp;&amp;nbsp; tab_ids typ_id_table1;&lt;br /&gt;BEGIN&lt;br /&gt;&amp;nbsp;&amp;nbsp; SELECT gp.gid, gp.gno, gp.co BULK COLLECT&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; INTO tab_ids&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FROM p_table_test gp;&lt;br /&gt;END p_f4;&lt;/div&gt;&amp;nbsp;&lt;div&gt;在此，要感谢itpub的windtalker_cs，是他的回答让我明白了一直困扰我的一个问题，之前一直以为如果采用object&lt;br /&gt;对象表，就无法使用bulk collect批量获取结果集。&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;2. 是否可以使用table函数&lt;br /&gt;&lt;/p&gt;&lt;p&gt;函数返回的若是PLSQL类型变量则无法使用table函数，而object类型变量可以使用table函数直接获取函数返回的结果集&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div&gt;CREATE OR REPLACE FUNCTION p_f2 RETURN typ_id_table IS&lt;br /&gt;&amp;nbsp;&amp;nbsp;&lt;span style="color: red;"&gt; tab_fids typ_id_table&lt;/span&gt; := typ_id_table();&lt;span style="background-color: #ffcc00;"&gt;--object对象表类型&lt;/span&gt;&lt;br /&gt;BEGIN&lt;br /&gt;&amp;nbsp;&amp;nbsp; FOR i IN 1 .. 100 LOOP&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tab_fids.extend;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tab_fids(tab_fids.count) := typ_id_object(i, i + 1, i + 2);&lt;br /&gt;&amp;nbsp;&amp;nbsp; END LOOP;&lt;br /&gt;&amp;nbsp;&amp;nbsp; RETURN tab_fids;&lt;br /&gt;END p_f2;&lt;/div&gt;&lt;div&gt;SQL&amp;gt; SELECT * FROM&lt;span style="background-color: #ffcc00;"&gt; TABLE(p_f2);&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FID&amp;nbsp;&amp;nbsp;&amp;nbsp; GNO&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; CO&lt;br /&gt;----------- ------ ------&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 6&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 6&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 7&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 6&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 7&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 8&lt;br /&gt;&amp;nbsp; ........................&lt;/div&gt;&amp;nbsp;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div&gt;如果函数返回的是record表类型，则无法使用table函数，如下所示：&lt;br /&gt;CREATE OR REPLACE PACKAGE pkg_f2 IS&lt;br /&gt;&amp;nbsp;&amp;nbsp; TYPE typ_id_record IS RECORD(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; gid NUMBER(10),&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; gno NUMBER(5),&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; co&amp;nbsp; NUMBER(5)); &lt;br /&gt;&amp;nbsp;&amp;nbsp; TYPE typ_id_table1 IS TABLE OF typ_id_record;&amp;nbsp; --在包头定义PLSQL表类型&lt;br /&gt;&amp;nbsp;&amp;nbsp; FUNCTION f_f2 RETURN typ_id_table1;&lt;br /&gt;END pkg_f2;&lt;br /&gt;CREATE OR REPLACE PACKAGE BODY pkg_f2 IS&lt;br /&gt;&amp;nbsp;&amp;nbsp; FUNCTION f_f2 RETURN typ_id_table1 IS&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tab_fids typ_id_table1;&lt;br /&gt;&amp;nbsp;&amp;nbsp; BEGIN&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SELECT rownum, rownum + 1, rownum + 2 BULK COLLECT&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; INTO tab_fids&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FROM dual;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; RETURN tab_fids;&lt;br /&gt;&amp;nbsp;&amp;nbsp; END;&lt;br /&gt;END pkg_f2;&lt;/div&gt;&lt;p&gt;SELECT * FROM &lt;span style="background-color: #ffcc00;"&gt;TABLE(pkg_f2.f_f2);&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="background-color: #ffcc00;"&gt;提示：ORA-00902：无效数据类型&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;span style="background-color: yellow;"&gt;注：PLSQL表变量类型必须在schma级进行定义，即必须在包头定义该类型，否则会提示：&lt;/span&gt;&lt;div&gt;&lt;span style="background-color: yellow;"&gt;Error: PLS-00642: 在 SQL 语句中不允许使用本地收集类型&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/lanzi/aggbug/2311431.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/lanzi/archive/2012/01/04/2311431.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/lanzi/archive/2011/12/27/2303593.html</id><title type="text">ORA-27301: OS failure message: 重叠 I/O 操作在进行中</title><summary type="text">今天一同事做提交数据库的时候提示内存不足了，再过一会发现监听自动停止了。打开预警日志发现如下错误：Tue Dec 27 14:41:00 2011Process startup failed, error stack:Tue Dec 27 14:41:00 2011Errors in file d:\oracle\product\10.2.0\admin\telemt\bdump\telemt_psp0_1860.trc:ORA-27300: OS system dependent operation:spcdr:9261:4200 failed with status: 997ORA-27.</summary><published>2011-12-27T07:14:00Z</published><updated>2011-12-27T07:14:00Z</updated><author><name>蓝紫</name><uri>http://www.cnblogs.com/lanzi/</uri></author><link rel="alternate" href="http://www.cnblogs.com/lanzi/archive/2011/12/27/2303593.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/lanzi/archive/2011/12/27/2303593.html"/><content type="html">&lt;p&gt;今天一同事做提交数据库的时候提示内存不足了，再过一会发现监听自动停止了。打开预警日志发现如下错误：&lt;/p&gt;&lt;p&gt;&lt;div&gt;Tue Dec 27 14:41:00 2011&lt;br /&gt;Process startup failed, error stack:&lt;br /&gt;Tue Dec 27 14:41:00 2011&lt;br /&gt;Errors in file d:\oracle\product\10.2.0\admin\telemt\bdump\telemt_psp0_1860.trc:&lt;br /&gt;&lt;span style="background-color: yellow;"&gt;ORA-27300: OS system dependent operation:spcdr:9261:4200 failed with status: 997&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: yellow;"&gt;ORA-27301: OS failure message: 重叠 I/O 操作在进行中。&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: yellow;"&gt;ORA-27302: failure occurred at: skgpspawn&lt;/span&gt;&lt;/div&gt;&lt;/p&gt;&lt;p&gt;&lt;div&gt;&lt;strong&gt;Dump file d:\oracle\product\10.2.0\admin\telemt\bdump\telemt_psp0_1860.trc&lt;/strong&gt;&lt;br /&gt;Tue Dec 27 14:40:39 2011&lt;br /&gt;ORACLE V10.2.0.1.0 - Production vsnsta=0&lt;br /&gt;vsnsql=14 vsnxtr=3&lt;br /&gt;Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production&lt;br /&gt;With the Partitioning, OLAP and Data Mining options&lt;br /&gt;Windows Server 2003 Version V5.2 Service Pack 1&lt;br /&gt;CPU&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : 2 - type 586, 1 Physical Cores&lt;br /&gt;Process Affinity&amp;nbsp;&amp;nbsp;&amp;nbsp; : 0x00000000&lt;br /&gt;Memory (Avail/Total): Ph:627M/2011M, Ph+PgF:3123M/4880M, VA:510M/2047M&lt;br /&gt;Instance name: telemt&lt;br /&gt;&lt;br /&gt;Redo thread mounted by this instance: 1&lt;br /&gt;&lt;br /&gt;Oracle process number: 3&lt;br /&gt;&lt;br /&gt;Windows thread id: 1860, image: ORACLE.EXE (PSP0)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;*** SERVICE NAME:(SYS$BACKGROUND) 2011-12-27 14:40:39.406&lt;br /&gt;*** SESSION ID:(169.1) 2011-12-27 14:40:39.406&lt;br /&gt;*** 2011-12-27 14:40:39.406&lt;br /&gt;Process startup failed, error stack:&lt;br /&gt;ORA-27300: OS system dependent operation:spcdr:9261:4200 failed with status: 997&lt;br /&gt;ORA-27301: OS failure message: 重叠 I/O 操作在进行中。&lt;br /&gt;ORA-27302: failure occurred at: skgpspawn&lt;br /&gt;*** 2011-12-27 14:41:00.406&lt;br /&gt;Process startup failed, error stack:&lt;br /&gt;ORA-27300: OS system dependent operation:spcdr:9261:4200 failed with status: 997&lt;br /&gt;ORA-27301: OS failure message: 重叠 I/O 操作在进行中。&lt;br /&gt;ORA-27302: failure occurred at: skgpspawn&lt;/div&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;在网上搜了下，看来还挺多人碰到这个错误的，目前我们的这个数据库是安装在windows系统32位的，而且oracle的版本是10.2.0.1，看来真是oracle的bug了。&lt;/p&gt;&lt;p&gt;解决方法： &lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;div&gt;&lt;pre&gt;&lt;span style="color: #FF0000;"&gt;1) Reduce the amount of SGA needed to be allocated for the database.&lt;br /&gt;2) Limit the number of dedicated connections to the database and the amount of memory each user process will consume. &lt;br /&gt;3) Change from dedicated connections to multi-threaded server (MTS) connections as MTS only uses a fraction of the amount of memory allocated to each user &lt;br /&gt;   process when initial connection to the database is established.&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&amp;nbsp;直接重启数据库无法解决问题，因为这个是测试数据库，连接的人就2到3个，而目前在使用的不超过2个。因此选择第一种方法，将sga改小，再重启果然可以了。&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/lanzi/aggbug/2303593.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/lanzi/archive/2011/12/27/2303593.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/lanzi/archive/2011/12/15/2289474.html</id><title type="text">oracle-一些查看性能相关的视图</title><summary type="text">timed_statistics参数:用于决定是否收集相关的时间参数，true为收集。如果该参数设为false，则等待事件相关视图也就无法收集到数据。SQL&amp;gt; SHOW PARAMETER timed_statistics;NAME TYPE VALUE------------------------------------ ----------- ------------------------------timed_statistics boolean TRUE如果statistics_level设置为TYPICAL或ALL，那么timed_statistics该参数为true；如果</summary><published>2011-12-15T14:09:00Z</published><updated>2011-12-15T14:09:00Z</updated><author><name>蓝紫</name><uri>http://www.cnblogs.com/lanzi/</uri></author><link rel="alternate" href="http://www.cnblogs.com/lanzi/archive/2011/12/15/2289474.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/lanzi/archive/2011/12/15/2289474.html"/><content type="html">&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;p&gt;timed_statistics参数:用于决定是否收集相关的时间参数，true为收集。如果该参数设为false，则等待事件相关视图也就无法收集到数据。&lt;br /&gt;SQL&amp;gt; SHOW PARAMETER timed_statistics;&lt;br /&gt;NAME&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TYPE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; VALUE&lt;br /&gt;------------------------------------ ----------- ------------------------------&lt;br /&gt;timed_statistics&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; boolean&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TRUE&lt;br /&gt;&lt;br /&gt;如果statistics_level设置为TYPICAL或ALL，那么timed_statistics该参数为true；如果statistics_level设置为BASIC，那么timed_statistics该参数为false。&lt;br /&gt;SQL&amp;gt; SHOW PARAMETER statistics_level&lt;br /&gt;NAME&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TYPE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; VALUE&lt;br /&gt;------------------------------------ ----------- ------------------------------&lt;br /&gt;statistics_level&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TYPICAL&lt;br /&gt;&lt;br /&gt;一、&lt;strong&gt;v$system_event&lt;/strong&gt;视图介绍&lt;br /&gt;1.字段说明&lt;br /&gt;DESC v$system_event&lt;br /&gt;Name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Type&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;----------------- ------------&lt;br /&gt;EVENT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; VARCHAR2(64)&amp;nbsp; --等待的事件&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;TOTAL_WAITS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NUMBER&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --总等待次数&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;TOTAL_TIMEOUTS&amp;nbsp;&amp;nbsp;&amp;nbsp; NUMBER&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --等待超时次数&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;TIME_WAITED&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NUMBER&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --总等待时间（时间毫秒，1/100秒）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;AVERAGE_WAIT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NUMBER&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --平均等待时间（总等待时间/总等待次数）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;TIME_WAITED_MICRO NUMBER&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --总等待时间（时间微秒，1/1000000秒）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;EVENT_ID&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NUMBER&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --标识等待事件id&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;WAIT_CLASS_ID&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NUMBER&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --标识等待事件类型id&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;WAIT_CLASS#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NUMBER&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --该等待类型的数量&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;WAIT_CLASS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; VARCHAR2(64)&amp;nbsp; --等待类型名称&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;&lt;br /&gt;2.等待事件类型（WAIT_CLASS）&lt;br /&gt;SELECT DISTINCT wait_class FROM v$system_event;--或直接查看v$system_wait_class视图&lt;br /&gt;WAIT_CLASS&lt;br /&gt;-------------&lt;br /&gt;Concurrency --等待用于锁定的数据库资源，如闩&lt;br /&gt;System I/O&amp;nbsp; --后台进程I/O的等待，包括db file parallel write事件的数据库写程序后台进程（DBWR）等待。还包括与归档有关的等待和重做日志读和写等待&lt;br /&gt;User I/O&amp;nbsp;&amp;nbsp;&amp;nbsp; --包括db file sequential read和db file scattered read事件&lt;br /&gt;Configuration --如checkpoint completed等待事件&lt;br /&gt;Other&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --杂项等待&lt;br /&gt;Application&amp;nbsp; --由应用代码导致的等待&lt;br /&gt;Idle&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --空闲等待事件表示在会话不活动时发生的等待，如 &amp;#8220;SQL*Net message from client&amp;#8221;等待事件&lt;br /&gt;Commit&amp;nbsp;&amp;nbsp;&amp;nbsp; --由单个等待事件log file sync组成，它是一个由数据库中的提交导致的等待&lt;br /&gt;Network&amp;nbsp;&amp;nbsp; --网络传递消息过程中的发生等待&lt;br /&gt;&lt;br /&gt;log file sync(日志文件同步)： log file sync 等待时间和事务中指(提交或回滚)相关；&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 当进程在log file sync事件上花费大量时间时，这通常表明过多的提交或短事务。&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;SELECT event, time_waited, average_wait,total_waits,f.WAIT_CLASS_ID,f.WAIT_CLASS#,f.WAIT_CLASS&lt;br /&gt;&amp;nbsp; FROM v$system_event f&lt;br /&gt;WHERE wait_class NOT IN ('Idle')&lt;br /&gt;&amp;nbsp;ORDER BY time_waited DESC;&lt;br /&gt;&lt;br /&gt;二、&lt;strong&gt;v$system_wait_class&lt;/strong&gt;视图&lt;br /&gt;1.视图字段说明&lt;br /&gt;SQL&amp;gt; DESC v$system_wait_class&amp;nbsp; --10g新增&lt;br /&gt;Name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Type&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;------------- ------------&lt;br /&gt;WAIT_CLASS_ID NUMBER&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --等待类型id&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;WAIT_CLASS#&amp;nbsp;&amp;nbsp; NUMBER&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --该等待类型的数量&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;WAIT_CLASS&amp;nbsp;&amp;nbsp;&amp;nbsp; VARCHAR2(64)&amp;nbsp; --等待类型名称&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;TOTAL_WAITS&amp;nbsp;&amp;nbsp; NUMBER&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --该等待类型事件发生时所等待的时间&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;TIME_WAITED&amp;nbsp;&amp;nbsp; NUMBER&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --所有会话用于等待的时间&lt;br /&gt;&lt;br /&gt;2.v$system_wait_class视图和v$system_event视图比较&lt;br /&gt;v$system_wait_class视图是10g新增的，该视图是对类型等待时间的统计。v$system_event视图可以与v$system_wait_class视图结合查看。&lt;br /&gt;v$system_wait_class视图和v$system_event视图的来源不同，可用v$fixed_view_definition视图查看视图的具体定义，如下所示：&lt;br /&gt;SELECT * FROM v$fixed_view_definition&amp;nbsp;&amp;nbsp; WHERE view_name='V$SYSTEM_EVENT';&lt;br /&gt;SELECT * FROM v$fixed_view_definition&amp;nbsp;&amp;nbsp; WHERE view_name='GV$SYSTEM_EVENT';&lt;br /&gt;SELECT * FROM v$fixed_view_definition&amp;nbsp;&amp;nbsp; WHERE view_name='V$SYSTEM_WAIT_CLASS';&lt;br /&gt;SELECT * FROM v$fixed_view_definition&amp;nbsp;&amp;nbsp; WHERE view_name='GV$SYSTEM_WAIT_CLASS';&lt;br /&gt;&lt;br /&gt;三、&lt;strong&gt;v$session_event&lt;/strong&gt;视图&lt;br /&gt;1.字段说明&lt;br /&gt;SQL&amp;gt; DESC v$session_event&lt;br /&gt;Name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Type&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;----------------- ------------ &lt;br /&gt;SID&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NUMBER&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --会话id&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;EVENT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; VARCHAR2(64)&amp;nbsp; --等待事件&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;TOTAL_WAITS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NUMBER&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --该会话等待次数&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;TOTAL_TIMEOUTS&amp;nbsp;&amp;nbsp;&amp;nbsp; NUMBER&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --该会话等待超时次数&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;TIME_WAITED&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NUMBER&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --该会话总等待时间（时间毫秒，1/100秒）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;AVERAGE_WAIT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NUMBER&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --该会话平均等待时间（总等待时间/总等待次数）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;MAX_WAIT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NUMBER&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --该会话等待时间最大值&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;TIME_WAITED_MICRO NUMBER&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --该会话总等待时间（时间微秒，1/1000000秒）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;EVENT_ID&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NUMBER&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --事件ID&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;WAIT_CLASS_ID&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NUMBER&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --等待类型ID&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;WAIT_CLASS#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NUMBER&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --该等待类型的数量&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;WAIT_CLASS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; VARCHAR2(64)&amp;nbsp; --等待类型名称 &amp;nbsp;&lt;br /&gt;&lt;br /&gt;2.v$session_event视图与v$system_event视图比较&lt;br /&gt;v$session_event视图：会话级的统计&lt;br /&gt;v$system_event视图：系统级的统计&lt;br /&gt;&lt;br /&gt;四、&lt;strong&gt;v$session_wait_class&lt;/strong&gt;视图&lt;br /&gt;与v$system_wait_class相比多了sid和serial#字段，v$session_wait_class视图表示某一会话的等待时间。&lt;br /&gt;&lt;br /&gt;五、&lt;strong&gt;v$session_wait&lt;/strong&gt;视图&lt;br /&gt;1.字段说明&lt;br /&gt;SQL&amp;gt; DESC v$session_wait;&lt;br /&gt;Name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Type&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;--------------- ------------ &lt;br /&gt;SID&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NUMBER&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --会话id&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;SEQ#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NUMBER&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --标识当前或最新的等待序列号&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;EVENT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; VARCHAR2(64)&amp;nbsp;&amp;nbsp; --当前等待事件或最后一次等待事件&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;P1TEXT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; VARCHAR2(64)&amp;nbsp;&amp;nbsp; --第一个等待参数的描述&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;P1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NUMBER&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --第一个等待参数（十进制）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;P1RAW&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; RAW(4)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --第一个等待参数（十六进制）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;P2TEXT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; VARCHAR2(64)&amp;nbsp;&amp;nbsp; --第二个等待参数的描述&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;P2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NUMBER&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --第二个等待参数（十进制）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;P2RAW&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; RAW(4)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --第二个等待参数（十六进制）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;P3TEXT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; VARCHAR2(64)&amp;nbsp;&amp;nbsp; --第三个等待参数的描述&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;P3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NUMBER&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --第三个等待参数（十进制）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;P3RAW&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; RAW(4)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --第三个等待参数（十六进制）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;WAIT_CLASS_ID&amp;nbsp;&amp;nbsp; NUMBER&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --等待事件类型ID&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;WAIT_CLASS#&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NUMBER&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --该等待事件数量&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;WAIT_CLASS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; VARCHAR2(64)&amp;nbsp;&amp;nbsp; --等待事件名称&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;WAIT_TIME&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; NUMBER&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 该字段已废弃，可通过SECONDS_IN_WAIT和STATE字段替代 （具体含义，0代表正在等待；&amp;gt;0表示最后一次等待的时间，单位为百分之一秒；-1表示等待时间小于百分之一秒；-2表示参数TIMED_STATISTICS被设置为false）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;SECONDS_IN_WAIT NUMBER&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --如果该会话处于等待状态，则表示当前等待的总时间；如果非等待状态，则表示自最后一次等待以来的总时间&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;br /&gt;STATE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; VARCHAR2(19)&amp;nbsp;&amp;nbsp; --其值可为 WAITING，WAITED UNKNOWN TIME，WAITED SHORT TIME ，WAITED KNOWN TIME&lt;br /&gt;state值的具体含义：WAITING表示会话正在等待；&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WAITED UNKNOWN TIME表示最后一次等待时间不知，即TIMED_STATISTICS被设置为false；&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WAITED SHORT TIME表示最后一次等待时间少于百分之一秒；&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WAITED KNOWN TIME表示最新一次等待时间，可通过wait_time列查看。即该等待时间正好由等待状态得到资源转为执行状态。&lt;br /&gt;2.注意事项&lt;br /&gt;1）oracle11g，在该视图中新增了WAIT_TIME_MICRO，TIME_REMAINING_MICRO，TIME_SINCE_LAST_WAIT_MICRO字段。而SECONDS_IN_WAIT已废弃，用&lt;br /&gt;WAIT_TIME_MICRO and TIME_SINCE_LAST_WAIT_MICRO替代。&lt;br /&gt;TIME_REMAINING_MICRO字段含义：为0表示当前等待超时；&amp;gt;0表示当前等待还需等待的时间；-1表示当前等待将无限制地等待；null表示该会话当前无等待&lt;br /&gt;2）p1，p2，p3参数代表的含义可以通过v$event_name视图的PARAMETER1，PARAMETER2，PARAMETER3查找。不过v$session_wait视图本身中的P1TEXT，&lt;br /&gt;P2TEXT，P3TEXT已经对p1，p2，p3进行了说明，及P1TEXT，P2TEXT，P3TEXT字段值与PARAMETER1，PARAMETER2，PARAMETER3一样。&lt;br /&gt;&lt;br /&gt;六、&lt;strong&gt;v$session&lt;/strong&gt;视图&lt;br /&gt;该视图包含了v$session_wait视图的所有字段。该视图记录了每个会话的具体信息。&lt;br /&gt;获取不同用户会话所面临的等待类型及他们所执行的sql语句文本，如下脚本：&lt;br /&gt;SELECT s.username, t.sql_text, s.event&lt;br /&gt;&amp;nbsp; FROM v$session s, v$sqltext t&lt;br /&gt;&amp;nbsp;WHERE s.sql_hash_value = t.hash_value&lt;br /&gt;&amp;nbsp;&amp;nbsp; AND s.sql_address = t.address&lt;br /&gt;&amp;nbsp;&amp;nbsp; AND s.type &amp;lt;&amp;gt; 'BACKGROUND'&lt;br /&gt;&amp;nbsp;ORDER BY s.sid, t.hash_value, t.piece;&lt;br /&gt;&lt;br /&gt;七、&lt;strong&gt;v$sysmetric&lt;/strong&gt;视图&lt;br /&gt;这是一个显示最近时间间隔的系统度量值，时间间隔为60秒。通过这个视图也可以查看在一个短期间隔内的&lt;br /&gt;Buffer Cache Hit Ratio，Memory Sorts Ratio，Redo Allocation Hit Ratio。&lt;br /&gt;&lt;br /&gt;v$waitclassmetric:显示最近60秒时间间隔中等待类的度量值。此视图最多保存一个小时的信息。&lt;br /&gt;&lt;br /&gt;SELECT * FROM v$waitstat&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;v$session_wait_history&lt;/strong&gt;&lt;br /&gt;该视图保存每个活动会话的最后10个等待事件的有关信息。如v$session和v$session_wait视图只显示最近一次等待的信息。&lt;br /&gt;SELECT seq#, event, wait_time, p1, p2, p3&lt;br /&gt;&amp;nbsp; FROM v$session_wait_history WHERE sid = 140&lt;br /&gt;&amp;nbsp;ORDER BY seq#;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;v$active_session_history:当前的活动会话历史&lt;br /&gt;&lt;u&gt;--查询导致最多等待的对象及这些对象在最后15分钟内等待的事件类型&lt;/u&gt;&lt;br /&gt;SELECT o.object_name,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; o.object_type,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; a.event,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SUM(a.wait_time + a.time_waited) total_wait_time&lt;br /&gt;&amp;nbsp; FROM v$active_session_history a, dba_objects o&lt;br /&gt;&amp;nbsp;WHERE a.sample_time BETWEEN SYSDATE - 30 / 2880 AND SYSDATE&lt;br /&gt;&amp;nbsp;&amp;nbsp; AND a.current_obj# = o.object_id&lt;br /&gt;&amp;nbsp;GROUP BY o.object_name, o.object_type, a.event&lt;br /&gt;&amp;nbsp;ORDER BY total_wait_time;&lt;br /&gt;&lt;u&gt;&lt;br /&gt;--列出数据库中最后15分钟内最重要的等待事件&lt;/u&gt;&lt;br /&gt;SELECT a.event,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SUM(a.wait_time + a.time_waited) total_wait_time&lt;br /&gt;&amp;nbsp; FROM v$active_session_history a&lt;br /&gt;&amp;nbsp;WHERE a.sample_time BETWEEN SYSDATE - 30 / 2880 AND SYSDATE&lt;br /&gt;&amp;nbsp;GROUP BY a.event&lt;br /&gt;&amp;nbsp;ORDER BY total_wait_time DESC;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;--等待最多的用户&lt;/u&gt;&lt;br /&gt;SELECT s.sid,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; s.username,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SUM(a.wait_time + a.time_waited) total_wait_time&lt;br /&gt;&amp;nbsp; FROM v$active_session_history a,v$session s&lt;br /&gt;&amp;nbsp;WHERE a.sample_time BETWEEN SYSDATE - 30 / 2880 AND SYSDATE&lt;br /&gt;&amp;nbsp;&amp;nbsp; AND a.session_id = s.sid&lt;br /&gt;&amp;nbsp;GROUP BY s.sid,s.username&lt;br /&gt;&amp;nbsp;ORDER BY total_wait_time DESC;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;--确定等待最多的sql&lt;/u&gt;&lt;br /&gt;SELECT a.user_id,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; s.sql_text,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; d.username,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SUM(a.wait_time + a.time_waited) total_wait_time&lt;br /&gt;&amp;nbsp; FROM v$active_session_history a, v$sqlarea s, dba_users d&lt;br /&gt;&amp;nbsp;WHERE a.sample_time BETWEEN SYSDATE - 30 / 2880 AND SYSDATE&lt;br /&gt;&amp;nbsp;&amp;nbsp; AND a.sql_id = s.sql_id&lt;br /&gt;&amp;nbsp;&amp;nbsp; AND a.user_id = d.user_id&lt;br /&gt;&amp;nbsp;GROUP BY a.user_id, s.sql_text, d.username;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;dba_hist_active_sess_history&lt;/strong&gt;：每60分钟，MMON后台进程都要刷新过滤了得ASH数据到磁盘，使其成为按小时的AWR快照的一部分。若ASH缓冲区已满，&lt;br /&gt;则MMML后台进程进行数据的刷新。ASH数据被刷新到磁盘后，就不能在v$active_session_history视图中看到它了。此时要查看历史数据，就必须通过&lt;br /&gt;dba_hist_active_sess_history视图。&lt;br /&gt;&lt;br /&gt;段级动态性能视图:使用它们可以找出哪些表和索引正在使用大量资源或具有大量的等待。&lt;br /&gt;&lt;strong&gt;v$segstat_name&lt;br /&gt;v$segstat&lt;br /&gt;v$segment_statistics&lt;/strong&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/lanzi/aggbug/2289474.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/lanzi/archive/2011/12/15/2289474.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/lanzi/archive/2011/12/07/2278870.html</id><title type="text">物化视图的2个疑惑-终于解决了</title><summary type="text">2011-12-7 疑惑1：本来跑的好好的job竟然突然出现问题了，该job总是不停的循环执行，而且其中的某个过程总是没执行完整。这其中我唯一做过的修改就是增加了物化视图。 难不成是物化视图导致了job的异常？（可见itpub上当时的提问http://www.itpub.net/thread-1517207-1-1.html） 原因：在job中在对表进行了更新操作后，为了减少碎片等问题我执行了收缩操作（ALTER TABLE table_name SHRINK SPACE CASCADE），后来我对其中的几个表创建了物化视图是快速刷新方式的，必须包含该表的rowid，而如果某...</summary><published>2011-12-07T02:41:00Z</published><updated>2011-12-07T02:41:00Z</updated><author><name>蓝紫</name><uri>http://www.cnblogs.com/lanzi/</uri></author><link rel="alternate" href="http://www.cnblogs.com/lanzi/archive/2011/12/07/2278870.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/lanzi/archive/2011/12/07/2278870.html"/><content type="html">&lt;p&gt;2011-12-7&amp;nbsp; &lt;img src="http://www.cnblogs.com/Emoticons/baimantou/105104147.gif"  alt="" /&gt;&lt;/p&gt;&lt;p&gt;疑惑1：本来跑的好好的job竟然突然出现问题了，该job总是不停的循环执行，而且其中的某个过程总是没执行完整。这其中我唯一做过的修改就是增加了物化视图。&lt;/p&gt;&lt;p&gt;难不成是物化视图导致了job的异常？（可见itpub上当时的提问http://www.itpub.net/thread-1517207-1-1.html）&lt;/p&gt;&lt;p&gt;原因：在job中在对表进行了更新操作后，为了减少碎片等问题我执行了收缩操作（ALTER TABLE table_name SHRINK SPACE CASCADE），后来我对其中的几个表创建了物化视图是快速刷新方式的，必须包含该表的rowid，而如果某个表被用于创建的物化视图 包含了该表的rowid，那么就会导致该表无法执行表收缩操作&lt;p&gt;&lt;span style="background-color: yellow;"&gt;&amp;nbsp;&amp;nbsp; 否则会提示：&lt;/span&gt;&lt;/p&gt;&lt;span style="background-color: yellow;"&gt;ORA-10663: Object has rowid based materialized views&lt;/span&gt; &lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;疑惑2：见itpub上，不在多写了。&lt;div&gt;http://www.itpub.net/thread-1518019-1-1.htm&lt;/div&gt;&lt;/p&gt;&lt;p&gt;原因：如果该表含有空间索引的话，就无法基于该表创建可快速刷新的物化视图。 &lt;br /&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/lanzi/aggbug/2278870.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/lanzi/archive/2011/12/07/2278870.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/lanzi/archive/2011/11/29/2267859.html</id><title type="text">本机可以连接 同一个局域网其他机器 连接 提示tns 连接超时 -防火墙导致的</title><summary type="text">下午准备测试下 关于dblink的物化视图创建，因此在在另一个数据库上建立一个连接本机的dblink，可是建好后，发现用下面的语句直接在plsql中执行 SELECT * FROM b@fgisdb;提示： ORA-12170: TNS: 连接超时本以为是数据库版本的问题（本机为11g，另一个为10g），在本机数据库建了连接10g的数据库的dblink，发现可以正常连接，接着又到10g数据库的机子上用命令窗口试下能不能登录本机数据库，发现一样的错误提示：SQL&amp;gt; conn fyzh_ora/FYZH_ORA@fgisdbERROR:ORA-12170: TNS: 连接超时网上搜说可能是防</summary><published>2011-11-29T09:02:00Z</published><updated>2011-11-29T09:02:00Z</updated><author><name>蓝紫</name><uri>http://www.cnblogs.com/lanzi/</uri></author><link rel="alternate" href="http://www.cnblogs.com/lanzi/archive/2011/11/29/2267859.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/lanzi/archive/2011/11/29/2267859.html"/><content type="html">&lt;p&gt;下午准备测试下 关于dblink的物化视图创建，&lt;/p&gt;&lt;p&gt;因此在在另一个数据库上建立一个连接本机的dblink，可是建好后，发现用下面的语句直接在plsql中执行 &lt;br /&gt;&lt;/p&gt;&lt;div&gt;SELECT * FROM b@fgisdb;&lt;/div&gt;&lt;p&gt;提示： &lt;/p&gt;&lt;div&gt;&lt;span style="color: red;"&gt;ORA-12170: TNS: 连接超时&lt;/span&gt;&lt;br /&gt;本以为是数据库版本的问题（本机为11g，另一个为10g），在本机数据库建了连接10g的数据库的dblink，发现可以正常连接，&lt;/div&gt;&lt;p&gt;接着又到10g数据库的机子上用命令窗口试下能不能登录本机数据库，发现一样的错误提示：&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;div&gt;SQL&amp;gt; conn fyzh_ora/FYZH_ORA@fgisdb&lt;br /&gt;ERROR:&lt;br /&gt;ORA-12170: TNS: 连接超时&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;网上搜说可能是防火墙的问题，果然，我把windows的防火墙关闭就可以了（刚开始关闭360，但360没有影响） 。&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;备注：&lt;/p&gt;&lt;p&gt;&lt;span style="background-color: yellow;"&gt;如果创建10g到11g的dblink，则要注意连接的11g数据库&lt;/span&gt; &lt;span style="background-color: yellow;"&gt;用户密码要改成大写，因为在11g区分大小写，而10g默认都为大写，所以当11g的数据库用户密码为小写时，但是10g通过dblink连接到11g时，将密码转化成了大写，所以会提示如下错误：&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;div&gt;&lt;span style="background-color: yellow;"&gt;ERROR 位于第 1 行:&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: yellow;"&gt; ORA-01017: invalid username/password; logon denied&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: yellow;"&gt; ORA-02063: 紧接着line（源于DBLINKNAME13）&lt;/span&gt;&lt;br /&gt; &lt;/div&gt;&amp;nbsp;解决办法：将11g下的用户密码改成大写&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/lanzi/aggbug/2267859.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/lanzi/archive/2011/11/29/2267859.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry><entry><id>http://www.cnblogs.com/lanzi/archive/2011/11/15/2250411.html</id><title type="text">tns 启动后又停止</title><summary type="text">前两天刚在win7上装了个11g的oracle，想打开用用，发现打开tns始终是启动完了，又停止了。还以为是win7系统的问题，后来网上一搜，才让我想起我的电脑就在装完oracle后入了域，计算机名称改变了。因此此时的监听配置肯定不对了。解决办法：1.修改tnsnames.ora文件中的计算机名称，改成现在的计算机名。如果是监听配置写的是ip，ip改变也会出现类似问题，将ip改成正确的即可。2.修改listener.ora 文件 中的计算机名称，改成现在的计算机名。如果是监听配置写的是ip，ip改变也会出现类似问题，将ip改成正确的即可。</summary><published>2011-11-15T14:41:00Z</published><updated>2011-11-15T14:41:00Z</updated><author><name>蓝紫</name><uri>http://www.cnblogs.com/lanzi/</uri></author><link rel="alternate" href="http://www.cnblogs.com/lanzi/archive/2011/11/15/2250411.html"/><link rel="alternate" type="text/html" href="http://www.cnblogs.com/lanzi/archive/2011/11/15/2250411.html"/><content type="html">&lt;p&gt;前两天刚在win7上装了个11g的oracle，想打开用用，发现打开tns始终是启动完了，又停止了。&lt;/p&gt;&lt;p&gt;还以为是win7系统的问题，后来网上一搜，才让我想起我的电脑就在装完oracle后入了域，计算机名称改变了。因此此时的监听配置肯定不对了。&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;解决办法：&lt;/p&gt;&lt;p&gt;1.修改tnsnames.ora文件中的计算机名称，改成现在的计算机名。如果是监听配置写的是ip，ip改变也会出现类似问题，将ip改成正确的即可。&lt;/p&gt;&lt;p&gt;2.修改listener.ora 文件 中的计算机名称，改成现在的计算机名。如果是监听配置写的是ip，ip改变也会出现类似问题，将ip改成正确的即可。&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;img src="http://www.cnblogs.com/lanzi/aggbug/2250411.html?type=1" width="1" height="1" alt=""/&gt;&lt;p&gt;&lt;a href="http://www.cnblogs.com/lanzi/archive/2011/11/15/2250411.html" target="_blank"&gt;本文链接&lt;/a&gt;&lt;/p&gt;</content></entry></feed>
