﻿<?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>博客园-永不言弃，简单就好</title><link>http://www.cnblogs.com/nclly/</link><description>每一个付出，都有回报，永远不放弃</description><language>zh-cn</language><lastBuildDate>Mon, 06 Jul 2009 10:17:48 GMT</lastBuildDate><pubDate>Mon, 06 Jul 2009 10:17:48 GMT</pubDate><ttl>60</ttl><item><title>用dump函数来了解oracle的数据类型存储方式(转载)</title><link>http://www.cnblogs.com/nclly/archive/2009/07/06/1517518.html</link><dc:creator>嘎子</dc:creator><author>嘎子</author><pubDate>Mon, 06 Jul 2009 03:04:00 GMT</pubDate><guid>http://www.cnblogs.com/nclly/archive/2009/07/06/1517518.html</guid><wfw:comment>http://www.cnblogs.com/nclly/comments/1517518.html</wfw:comment><comments>http://www.cnblogs.com/nclly/archive/2009/07/06/1517518.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/nclly/comments/commentRss/1517518.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/nclly/services/trackbacks/1517518.html</trackback:ping><description><![CDATA[<p>问题：<br />1. oracle中number，char/varchar，date等数据类型是怎么存储的？字节流是什么样的？<br />2. 各种数据类型占用的字节长度是多大？</p>
<p>SELECT dump(1), DUMP(123456), DUMP(-123456), DUMP(1234567890123456) -- 整数<br />--SELECT DUMP(123456.789), DUMP(-123456.789), dump(1.234567890123456789E15), dump(123456789012345678901234567890123456789) -- 浮点数<br />SELECT DUMP('a'), DUMP('abcdefghijklmn'), DUMP(CAST('abc' AS CHAR(20))), DUMP(CAST('abc你' AS VARCHAR(20)))<br />--SELECT sysdate, DUMP(SYSDATE)<br />FROM dual;</p>
<p>结论：<br />1. number类型的字节流是不定长的，并且正负数会用不同的标志位（正数：数字1 &gt;= 193，负数：数字1 &lt;= 62，差额恰好是指数大小）<br />2. char是定长的，长度不足最大长度会填充尾空格，varchar是不定长的（即给多长存多长）<br />3. date类型定长，占8个字节</p>
<p>-- 附录为常见数据类型的存储方式说明，可参见oracle官方文档，或各种技术blog<br /><a href="http://blog.oracle.com.cn/index.php/12012/action_viewspace_itemid_4684.html">http://blog.oracle.com.cn/index.php/12012/action_viewspace_itemid_4684.html</a>（附录的来源）<br /><a href="http://zhouwf0726.itpub.net/post/9689/196733">http://zhouwf0726.itpub.net/post/9689/196733</a></p>
<p>笔者在做实验过程（oracle9i2版本）中，发现实际Date类型与附录中的不一样，估计附录中是对oracle8以前版本的说明。</p>
<p>Date(长度 7 类型 12)</p>
<p>col dump_date form a35col real_date form a35<br />select dump(last_ddl_time) dump_date, to_char(last_ddl_time,'yyyy-mm-dd hh24:mi:ss') real_date<br />from user_objects<br />where rownum=1;</p>
<p>DUMP_DATE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; REAL_DATE<br />----------------------------------- ---------------------<br />Typ=12 Len=7: 120,102,4,13,16,48,53 2002-04-13 15:47:52世纪 120 - 100 = 20 世纪和年份加100后存储<br />年份 102 - 100 = 2<br />月份 4 月份和日期按原值存储<br />日期 13<br />小时 16 - 1 = 15 时间均加1后存储<br />分钟 48 - 1 = 47<br />秒 53 - 1 = 52<br />--------------------------------------------------------------------------------</p>
<p>Number(类型 2)</p>
<p>&lt;[长度]&gt;，符号位/指数 数字1，数字2，数字3，......，数字20</p>
<p>正数：指数=数字1 - 193 (最高位为1是代表正数)<br />负数：指数=62 - 第一字节</p>
<p>数字1是最高有效位</p>
<p>正数：加1存储<br />负数：被101减,如果总长度小于21个字节，最后加一个102(是为了排序的需要)</p>
<p>所存储的数值计算方法为：</p>
<p>把下面计算的结果加起来：</p>
<p>每个数字乘以100^(指数-N) (N是有效位数的顺序位，第一个有效位的N=0)</p>
<p>例：</p>
<p>select dump(123456.789) from dual;</p>
<p>DUMP(123456.789)<br />-------------------------------<br />Typ=2 Len=6: 195,13,35,57,79,91&nbsp;&nbsp; 指数 195 - 193 = 2<br />数字1 13 - 1 = 12 *1002-0 120000<br />数字2 35 - 1 = 34 *1002-1 3400<br />数字3 57 - 1 = 56 *1002-2 56<br />数字4 79 - 1 = 78 *1002-3 .78<br />数字5 91 - 1 = 90 *1002-4 .009<br />　 123456.789</p>
<p>select dump(-123456.789) from dual;</p>
<p>DUMP(-123456.789)<br />----------------------------------<br />Typ=2 Len=7: 60,89,67,45,23,11,102指数 62 - 60 = 2(最高位是0，代表为负数)<br />数字1 101 - 89 = 12 *1002-0 120000<br />数字2 101 - 67 = 34 *1002-1 3400<br />数字3 101 - 45 = 56 *1002-2 56<br />数字4 101 - 23 = 78 *1002-3 .78<br />数字5 101 - 11 = 90 *1002-4 .009<br />　 123456.789(-)</p>
<p>现在再考虑一下为什么在最后加102是为了排序的需要，-123456.789在数据库中实际存储为60,89,67,45,23,11<br />而-123456.78901在数据库中实际存储为60,89,67,45,23,11,91<br />可见，如果不在最后加上102，在排序时会出现-123456.789&lt;-123456.78901的情况</p>
<p><br />本文来自CSDN博客，转载请标明出处：<a href="http://blog.csdn.net/luocm/archive/2007/07/12/1686434.aspx">http://blog.csdn.net/luocm/archive/2007/07/12/1686434.aspx</a></p><img src ="http://www.cnblogs.com/nclly/aggbug/1517518.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/48008/" target="_blank">IBM发布全球首款开源智能编译器</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>ORACLE部分初始化参数详解</title><link>http://www.cnblogs.com/nclly/archive/2009/07/06/1517467.html</link><dc:creator>嘎子</dc:creator><author>嘎子</author><pubDate>Mon, 06 Jul 2009 02:06:00 GMT</pubDate><guid>http://www.cnblogs.com/nclly/archive/2009/07/06/1517467.html</guid><wfw:comment>http://www.cnblogs.com/nclly/comments/1517467.html</wfw:comment><comments>http://www.cnblogs.com/nclly/archive/2009/07/06/1517467.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/nclly/comments/commentRss/1517467.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/nclly/services/trackbacks/1517467.html</trackback:ping><description><![CDATA[<p>1.SGA</p>
<p>a.指定sga最大值,<br />一旦指定后data_buffer（oracle9i中db_cache_size）和share_pool_size就无需指定了，即：<br />在9i中若设置了SGA_MAX_SIZE，则在总和小于等于这个值内，可以动态的调整数据缓冲区和共享池的大小<br />9i中用db_cache_size来取代db_block_buffers，用db_keep_cache_size取代buffer_pool_keep,用db_recycle_cache_size取代buffer_pool_recycle；这里要注意9i中设置的是实际的缓存大小而不再是块的数量。<br />另外9i新增加了db_nk_cache_size，这是为了支持在同一个数据库中使用不同的块大小而设置的。<br />对于不同的表空间，可以定义不同的数据块的大小，而缓冲区的定义则依靠该参数的支持。<br />其中n可以为2、4、6、8、16等不同的值。<br />在这里顺便提及的一个参数就是db_block_lru_latches，<br />该参数在9i中已经成为了保留参数，不推荐手工设置。</p>
<p>alter system set sga_max_size=2014 scope=spfile;</p>
<p>alter system set large_pool_size=50000000 scope=spfile;</p>
<p>alter system set java_pool_size=80000000 scope=spfile;</p>
<p>----<br />b.指定data_buffer.(在oracle9i中sga_max_size指定后，这个无需指定)</p>
<p>alter system set db_cache_size=80000000 scope=spfile;</p>
<p>c.large_pool_size</p>
<p>d.java_pool_size</p>
<p>2.PGA</p>
<p>&nbsp;&nbsp; 在9i里面这部分也有了很大的变化。</p>
<p>&nbsp;&nbsp; 在独立模式下，9i已经不再主张使用原来的UGA相关的参数设置，而代之以新的参数。<br />&nbsp;&nbsp; 假如workarea_size_policy=AUTO（缺省），则所有的会话的UGA共用一大块内存，<br />&nbsp;&nbsp; 该内存在pga_aggregate_target设置以内分配。<br />&nbsp;&nbsp; 评估了所有进程可能使用的最大PGA内存之后，可以在初始化参数中设置这个参数，<br />&nbsp;&nbsp; 从而不再关心其他&#8221;*_area_size&#8221;参数。<br /><br />&nbsp;&nbsp; 在共享模式下：<br />&nbsp;&nbsp; 将参数workarea_size_policy=auto，pga_aggregate_target为默认值<br />&nbsp;&nbsp; 然后oracle会自动给每个用户进程分配所需要的sort_area_size以及hash_area_size等<br />&nbsp;&nbsp; 要用的内存划分给SGA.<br />&nbsp;&nbsp;</p>
<p>&nbsp;</p>
<p>---<br />3.查看设定的参数值<br />a.show命令<br />show parameter 参数<br />如：<br />show parameter sga<br />show parameter sga_max_size<br />show parameter java_pool_size<br />show parameter share_pool_size<br />show parameter large_pool_size<br />&#8230;&#8230;<br />b.视图方式<br />select * from v$parameter<br />select * from gv$parameter</p>
<p>PRE_PAGA_SGA只是在启动时将物理内存分配给SGA<br />但并不能保证系统在以后的运行过程不会将SGA中的<br />某些页置换到虚拟内存中，也就是说，<br />尽管设置了这个参数，还是可能出现Page In/Out。<br />如果需要保障SGA不被换出，就需要由另外一个参数LOCK_SGA来控制了。</p>
<p>alter system set pre_page_sga=true scope=spfile;</p>
<p><br />可以将全部SGA都锁定在物理内存中,对于centos这个不能锁定，否则Cannot allocate memory，切记<br />alter system set LOCK_SGA=TURE scope=spfile;</p>
<p><br />以另外的静态配置文件启动oracle<br />startup&nbsp;&nbsp; pfile=&nbsp;&nbsp; 你的pfile文件</p>
<p>4.查看pfile和spfile</p>
<p>show parameter pile<br />show parameter spile<br />都是看到的同一个文件，因为数据启动时只能启用pfile或spfile之一</p>
<p>5.创建spfile<br />CREATE SPFILE = '$ORACLE_HOME/dbs/spfiledb01.ora' FROM PFILE = '$ORACLE_HOME/dbs/pile';<br />创建pfile<br />CREATE PFILE = '$ORACLE_HOME/dbs/pfile' FROM SPFILE = '$ORACLE_HOME/dbs/spfiledb01.ora';</p>
<p><br />6.游标优化</p>
<p>alter system set open_cursors=600 scope=spfile;</p>
<p>alter system set session_cached_cursors=400 scope=spfile;</p>
<p>alter system set cursor_sharing=similar scope=spfile;</p>
<p>------</p>
<p>To see if you've set OPEN_CURSORS high enough, <br />monitor v$sesstat for the maximum opened cursors current. <br />If your sessions are running close to the limit, up the value of OPEN_CURSORS.</p>
<p><br />SQL&gt; select max(a.value) as highest_open_cur, p.value as max_open_cur<br />2&gt; from v$sesstat a, v$statname b, v$parameter p<br />3&gt; where a.statistic# = b.statistic# <br />4&gt; and b.name = 'opened cursors current'<br />5&gt; and p.name= 'open_cursors'<br />6&gt; group by p.value;</p>
<p>HIGHEST_OPEN_CUR MAX_OPEN_CUR<br />---------------- ------------<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1953&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2500</p>
<p>After you've increased the value of OPEN_CURSORS, <br />keep an eye on v$sesstat to see if opened cursors current <br />keeps increasing for any of your sessions. <br />If you have an application session whose opened cursors current <br />always increases to catch up with OPEN_CURSORS, <br />then you've likely got a cursor leak in your application code: <br />your application is opening cursors and not closing them when it's done.</p>
<p>There is nothing you, as a DBA, can do to fix a cursor leak. <br />The application developers need to go through the code, <br />find the cursors that are being left open, and close them. <br />As a stopgap, the most you can do is raise OPEN_CURSORS very high <br />and schedule times when all the application sessions will be closed <br />and reopened (eg. by kicking the webserver).</p>
<p><br />How not to tell if you're closing all your cursors</p>
<p>Frustratingly for developers, the session statistic 'currently open cursors'<br />can include some cursors that the application has closed. When application <br />code calls for a cursor to be closed, Oracle actually marks the cursor as "closeable". <br />The cursor may not actually be closed until Oracle needs the space for another cursor.</p>
<p>So it's not possible to test to see if a complex application is closing all <br />its cursors by starting a session, running a test, and then checking to see <br />if currently open cursors has gone down to 1. Even if the application <br />is closing all its cursors properly, currently open cursors may report <br />that some "closeable" cursors are still open.</p>
<p>One way for application developers to tell if an application is closing all its cursors <br />is to do a single test run, on a dedicated development box, <br />while monitoring "opened cursors cumulative" in v$sesstat for <br />the session that's running the test. Then set OPEN_CURSORS to <br />a value a little bit higher than the peak cursors open during your test run, <br />start a new session, and run through multiple iterations of the same test run. <br />If your application still has a cursor leak, you will see the value of OPEN_CURSORS going up, <br />and you may hit an ORA-1000 after a reasonable number of iterations. <br />(Don't set OPEN_CURSORS too low or it may be used up by recursive SQL; <br />if your single test run opens very few cursors, <br />consider making your test run longer rather than setting OPEN_CURSORS unreasonably low.)</p>
<p><br />Monitoring the session cursor cache</p>
<p>v$sesstat also provides a statistic to monitor the number of cursors each session has in its session cursor cache.</p>
<p><br />--session cached cursors, by session<br />select a.value, s.username, s.sid, s.serial#<br />from v$sesstat a, v$statname b, v$session s<br />where a.statistic# = b.statistic# and s.sid=a.sid<br />and b.name = 'session cursor cache count' ;<br />You can also see directly what is in the session cursor cache by querying v$open_cursor. v$open_cursor lists session cached cursors by SID, and includes the first few characters of the statement and the sql_id, so you can actually tell what the cursors are for.</p>
<p><br />select c.user_name, c.sid, sql.sql_text<br />from v$open_cursor c, v$sql sql<br />where c.sql_id=sql.sql_id -- for 9i and earlier use: c.address=sql.address<br />and c.sid=&amp;sid<br />;</p>
<p>Tuning SESSION_CACHED_CURSORS</p>
<p>If you choose to use SESSION_CACHED_CURSORS to help out an application that is continually closing and reopening cursors, you can monitor its effectiveness via two more statistics in v$sesstat. The statistic "session cursor cache hits" reflects the number of times that a statement the session sent for parsing was found in the session cursor cache, meaning it didn't have to be reparsed and your session didn't have to search through the library cache for it. You can compare this to the statistic "parse count (total)"; subtract "session cursor cache hits" from "parse count (total)" to see the number of parses that actually occurred.</p>
<p><br />SQL&gt; select cach.value cache_hits, prs.value all_parses, <br />2&gt; prs.value-cach.value sess_cur_cache_not_used<br />3&gt; from v$sesstat cach, v$sesstat prs, v$statname nm1, v$statname nm2<br />4&gt; where cach.statistic# = nm1.statistic# <br />5&gt; and nm1.name = 'session cursor cache hits' <br />6&gt; and prs.statistic#=nm2.statistic#<br />7&gt; and nm2.name= 'parse count (total)'<br />8&gt; and cach.sid= &amp;sid and prs.sid= cach.sid ;</p>
<p>Enter value for sid: 947<br />old&nbsp;&nbsp; 8: and cach.sid= &amp;sid and prs.sid= cach.sid<br />new&nbsp;&nbsp; 8: and cach.sid= 947 and prs.sid= cach.sid</p>
<p>CACHE_HITS ALL_PARSES SESS_CUR_CACHE_NOT_USED<br />---------- ---------- -----------------------<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 106&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 210&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 104<br />Monitor this in concurrence with the session cursor cache count.</p>
<p><br />--session cached cursors, for a given SID, compared to max<br />select a.value curr_cached, p.value max_cached, s.username, s.sid, s.serial#<br />from v$sesstat a, v$statname b, v$session s, v$parameter2 p<br />where a.statistic# = b.statistic# and s.sid=a.sid and a.sid=&amp;sid<br />and p.name='session_cached_cursors'<br />and b.name = 'session cursor cache count' ;<br />If the session cursor cache count is maxed out, session_cursor_cache_hits is low compared to all parses, and you suspect that the application is re-submitting the same queries for parsing repeatedly, then increasing SESSION_CURSOR_CACHE_COUNT may help with latch contention and give a slight boost to performance. Note that if your application is not resubmitting the same queries for parsing repeatedly, then session_cursor_cache_hits will be low and the session cursor cache count may be maxed out, but caching cursors by session won't help at all. For example, if your application is using a lot of unsharable SQL, raising this parameter won't get you anything.</p>
<p>7.PGA_AGGREGATE_TARGET参数</p>
<p>从Oracle9i开始,Oracle引入了自动PGA管理的新特型,PGA_AGGREGATE_TARGET参数用于控制PGA的总体期望目标:</p>
<p>$ sqlplus "/ as sysdba"<br />SQL*Plus: Release 9.2.0.4.0 - Production on Thu Apr 6 16:40:13 2006<br />Copyright (c) 1982, 2002, Oracle Corporation.&nbsp;&nbsp; All rights reserved.<br />Connected to:Oracle9i Enterprise Edition Release 9.2.0.4.0 - 64bit ProductionWith the Partitioning optionJServer Release 9.2.0.4.0 - Production<br />SQL&gt; show parameter pga<br />NAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TYPE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; VALUE<br />------------------------------------ ----------- ------------------------------<br />pga_aggregate_target&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; big integer 1073741824<br />SQL&gt; <br /></p>
<p><br />但是在Oracle9i中，PGA_AGGREGATE_TARGET参数仅对专用服务器模式下（Dedicated Server）的专属连接有效，<br />对共享服务器（Shared Server）连接无效；<br />从Oracle10g开始PGA_AGGREGATE_TARGET对专用服务器连接和共享服务器连接同时生效</p>
<p>转载自&#8220;<a href="http://hi.baidu.com/xiutuo/blog/item/db64e27e5b72233c0dd7da0a.html">http://hi.baidu.com/xiutuo/blog/item/db64e27e5b72233c0dd7da0a.html</a>&#8221;</p><img src ="http://www.cnblogs.com/nclly/aggbug/1517467.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/48008/" target="_blank">IBM发布全球首款开源智能编译器</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>raid0,raid1,raid10,raid5,raid50,raid6,raid60的功能总结简述(转载)</title><link>http://www.cnblogs.com/nclly/archive/2009/07/03/1516235.html</link><dc:creator>嘎子</dc:creator><author>嘎子</author><pubDate>Fri, 03 Jul 2009 05:38:00 GMT</pubDate><guid>http://www.cnblogs.com/nclly/archive/2009/07/03/1516235.html</guid><wfw:comment>http://www.cnblogs.com/nclly/comments/1516235.html</wfw:comment><comments>http://www.cnblogs.com/nclly/archive/2009/07/03/1516235.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/nclly/comments/commentRss/1516235.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/nclly/services/trackbacks/1516235.html</trackback:ping><description><![CDATA[<div>1、raid0的特性：采用剥离，数据将在几个磁盘上进行分割。数据被分成很多数据块，每一数据块会被写入不同的磁盘。从而，每一磁盘的工作负荷都得到了降低，这有助于加速数据传输。RAID-0可让磁盘更好地响应，尤其是电子邮件、数据库和互联网应用。实施RAID-0最少需要两块硬盘。优势：通过把I/O负载分布到多个硬盘上，可提高系统性能。实施简单。需要注意的是：RAID-0不具有数据保护功能，不适合于关键数据。</div>
<div>2、raid1的特性：RAID-1通过磁盘镜像来实现，主要用来确保数据的可靠性。同样的数据将被复制存储到不同的磁盘上，如果某个磁盘出现故障，还可以在阵列内的某个磁盘上找到相应的数据，因此可以很容易地进行恢复。镜像不但可以创建冗余数据而带来高可用性，还可以保持关键应用的正常运行。优势：数据读取的性能有所提高，而数据写入性能与单个磁盘没有区别。100％数据冗余意味着某个出现磁盘故障时不需要对数据进行重建。需要注意的是：磁盘容量的低效率使用-在所有RAID类型中费用最高（100％）。</div>
<div>3、raid10的特性：RAID-10是RAID-1和RAID-0的结合。此配置要求至少4块硬盘，在所有RAID等级中，性能、保护功能及容量都是最佳的。RAID-10包含成对的镜像磁盘，其数据在整个阵列上进行剥离。多数情况下，RAID-10能够承受多个磁盘出现故障的情况，因此更能保证系统的正常运行。其数据丢失的几率最小。优势：与RAID-1（镜像）有同样的冗余特性，是数据保护的理想选择。需要注意的是：可能价格很高，与镜像磁盘阵列有关。</div>
<div>4、raid5的特性：RAID-5通过一种称为奇偶检验的技术保持数据的冗余。在多个磁盘上进行数据剥离时，奇偶位数据也会包括在内并分布于阵列内的所有磁盘上。奇偶数据用于保持数据的完整性并在磁盘出现故障时进行重建。如果阵列内的某个磁盘出现故障，丢失的数据可以根据其它磁盘上的奇偶位数据进行重建。RAID-5配置要求至少3块硬盘。优势：更有效地利用所有冗余RAID配置的磁盘容量。保持良好的读写性能。需要注意的是：磁盘故障会影响吞吐速率。故障后重建信息的时间比镜像配置情况下要长。</div>
<div>5、raid50的特性：RAID-50是RAID-5与RAID-0的结合。此配置在RAID-5的子磁盘组的每个磁盘上进行包括奇偶信息在内的数据的剥离。每个RAID-5子磁盘组要求三个硬盘。RAID-50具备更高的容错能力，因为它允许某个组内有一个磁盘出现故障，而不会造成数据丢失。而且因为奇偶位分部于RAID-5子磁盘组上，故重建速度有很大提高。优势：更高的容错能力，具备更快数据读取速率的潜力。需要注意的是：磁盘故障会影响吞吐量。故障后重建信息的时间比镜像配置情况下要长。</div>
<div>6、raid6的特性：</div>
<div>RAID6的性能：</div>
<div class="Tcs671"></div>
<div></div>
<div>　　(1)RAID6的随机读取性能：很好(当使用大数据块时)。</div>
<div>　　(2)RAID6的随机写入性能：差，因为不但要在每硬盘上写入校验数据而且要在专门的校验硬盘上写入数据。</div>
<div class="Tcs671"></div>
<div></div>
<div>　　(3)RAID6的持续读取性能：好(当使用小数据块时)。</div>
<div>　　(4)RAID6的持续写入性能：一般。</div>
<div>　　(5)RAID6的优点：快速的读取性能，更高的容错能力。</div>
<div>　　(6)RAID6的缺点：很慢的写入速度，RAID控制器在设计上更加复杂，成本更高。</div>
<div>7、raid60的特性：</div>
<div>具备更高的容错性，支持同时两块硬盘出现故障的修复功能，和更高的读性能。技术上还存在一定的问题，不够成熟，目前很少使用者。</div>
<p>&nbsp;</p>
<p>转载至：<a href="http://peiyan.blog.51cto.com/344889/114323">http://peiyan.blog.51cto.com/344889/114323</a></p><img src ="http://www.cnblogs.com/nclly/aggbug/1516235.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/48007/" target="_blank">IE颓势不减 微软下月公布最新浏览器架构</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>取得数据库全表扫描的语句(get_fullscan_table)</title><link>http://www.cnblogs.com/nclly/archive/2009/06/15/1503452.html</link><dc:creator>嘎子</dc:creator><author>嘎子</author><pubDate>Mon, 15 Jun 2009 02:56:00 GMT</pubDate><guid>http://www.cnblogs.com/nclly/archive/2009/06/15/1503452.html</guid><wfw:comment>http://www.cnblogs.com/nclly/comments/1503452.html</wfw:comment><comments>http://www.cnblogs.com/nclly/archive/2009/06/15/1503452.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/nclly/comments/commentRss/1503452.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/nclly/services/trackbacks/1503452.html</trackback:ping><description><![CDATA[<p>一：创建plan_table，数据库在默认情况下是没有创建此表的。</p>
<p><br />SQL&gt; @?/rdbms/admin/utlxplan</p>
<p>Table created.</p>
<p>SQL&gt; create public synonym plan_table for plan_table; </p>
<p>Synonym created.</p>
<p>SQL&gt; grant all on plan_table to public ;</p>
<p>Grant succeeded.</p>
<p>SQL&gt; @?/sqlplus/admin/plustrce</p>
<p>二：创建收集全表扫描语句</p><br />
<p>create table full_sql (sql_text varchar2(1000), executions number);<br />create or replace procedure p_findfullsql as</p>
<p>v_csr number;<br />v_rc number;<br />v_string varchar2(2000);</p>
<p>v_count number;</p>
<p><br />cursor c1 is select sql_text,executions from v$sqlarea where lower(sql_text) like '%select%';</p>
<p>begin</p>
<p>for x1 in c1 loop</p>
<p>delete from plan_table ;<br />Begin<br />v_Csr := DBMS_SQL.OPEN_CURSOR; <br />v_string := 'explain plan for ' ;<br />v_string := v_string||x1.sql_text ;<br />DBMS_SQL.PARSE(v_csr, v_string, DBMS_SQL.V7);<br />v_rc := DBMS_SQL.EXECUTE(v_csr);<br />DBMS_SQL.CLOSE_CURSOR(v_csr); <br />Exception<br />when others then <br />null; <br />End ;</p>
<p>select count(*) into v_count from plan_table where options like '%FULL%' and operation like '%TABLE%' ;<br />if v_count &gt; 0 then<br />insert into full_sql(sql_text,executions) values (x1.sql_text, x1.executions) ;<br />end if;<br />end loop ;<br />commit;<br />end ;<br />/<br />execute p_findfullsql ;<br />select * from full_sql;<br />drop table full_sql;</p>
<p>通过select * from full_sql;可以知道执行全表扫描的语句，加以着重研究，比如可以将小表放入keep_buffer，让其常驻内存</p><img src ="http://www.cnblogs.com/nclly/aggbug/1503452.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/48002/" target="_blank">竞争日趋激烈 微软欲借 Windows 7 扭转战局</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>linux 如何在命令行下改系统时间</title><link>http://www.cnblogs.com/nclly/archive/2009/06/01/1493798.html</link><dc:creator>嘎子</dc:creator><author>嘎子</author><pubDate>Mon, 01 Jun 2009 07:51:00 GMT</pubDate><guid>http://www.cnblogs.com/nclly/archive/2009/06/01/1493798.html</guid><wfw:comment>http://www.cnblogs.com/nclly/comments/1493798.html</wfw:comment><comments>http://www.cnblogs.com/nclly/archive/2009/06/01/1493798.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/nclly/comments/commentRss/1493798.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/nclly/services/trackbacks/1493798.html</trackback:ping><description><![CDATA[<div><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;我们一般使用&#8220;date -s&#8221;命令来修改系统时间。比如将系统时间设定成2009年6月1日的命令如下。<br />　　<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#date -s 06/01/2009<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;或</font></div>
<div><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#date -s 20090601<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;将系统时间设定成下午15点43分0秒的命令如下。<br />　　<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#date -s 15:43:00<br />　　<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;注意，这里说的是系统时间，是linux由操作系统维护的。<br />　　<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在系统启动时，Linux操作系统将时间从CMOS中读到系统时间变量中，以后修改时间通过修改系统时间实现。为了保持系统时间与CMOS时间的一致性，Linux每隔一段时间会将系统时间写入CMOS。由于该同步是每隔一段时间（大约是11分钟）进行的，在我们执行date -s后，如果马上重起机器，修改时间就有可能没有被写入CMOS,这就是问题的原因。如果要确保修改生效可以执行如下命令。<br />　　<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#clock -w</font></div>
<div><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;或</font></div>
<div><font size="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#hwclock -w</font></div>
<div><font size="2"><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;这个命令强制把系统时间写入CMOS。</font></div><img src ="http://www.cnblogs.com/nclly/aggbug/1493798.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/48001/" target="_blank">上海电信计划2012年80%用户实现100M带宽</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>使英文版的windows操作系统支持中文</title><link>http://www.cnblogs.com/nclly/archive/2009/05/13/1455767.html</link><dc:creator>嘎子</dc:creator><author>嘎子</author><pubDate>Wed, 13 May 2009 03:37:00 GMT</pubDate><guid>http://www.cnblogs.com/nclly/archive/2009/05/13/1455767.html</guid><wfw:comment>http://www.cnblogs.com/nclly/comments/1455767.html</wfw:comment><comments>http://www.cnblogs.com/nclly/archive/2009/05/13/1455767.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/nclly/comments/commentRss/1455767.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/nclly/services/trackbacks/1455767.html</trackback:ping><description><![CDATA[1、英文版得先开启东亚语言支持！<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Control Panel -&gt; Regional and Language Options<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1)、Languages -&gt; 在Supplemental language Support下选中"Install Files For East Asian languages"，然后插入系统光盘，点Apply 完后重起<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2）、Regional Options窗卡的两个下拉菜单分别选"Chinese(PRC)"与"China"<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3）、ADvanced 窗卡下拉菜单选为Chinese(PRC)，点击Apply完后重起<br />
2、设置中国大陆时区<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Control Panel -&gt; Data and Time -&gt; Time Zone -&gt; select "(GMT+08:00) Beijing,Chongqing,Hong Kong,Urumqi"
<img src ="http://www.cnblogs.com/nclly/aggbug/1455767.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/48000/" target="_blank">数万名网友签名抗议星际争霸2取消局域网功能</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>QQ聊天记录显示时间与实际时间不一样</title><link>http://www.cnblogs.com/nclly/archive/2009/05/05/1449958.html</link><dc:creator>嘎子</dc:creator><author>嘎子</author><pubDate>Tue, 05 May 2009 07:23:00 GMT</pubDate><guid>http://www.cnblogs.com/nclly/archive/2009/05/05/1449958.html</guid><wfw:comment>http://www.cnblogs.com/nclly/comments/1449958.html</wfw:comment><comments>http://www.cnblogs.com/nclly/archive/2009/05/05/1449958.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnblogs.com/nclly/comments/commentRss/1449958.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/nclly/services/trackbacks/1449958.html</trackback:ping><description><![CDATA[<p>今天装了个QQ2009绿色版，不知道什么原因，装完系统时间就变了，搞的QQ聊天记录里显示的时间跟实际电脑的时间不一致</p>
<p>最后查出是系统时间的时区(Time Zone)设置的有问题，改成&#8220;Beijing,Chongqiang,Hong Kong,Urumqi&#8221;，后重启QQ，搞定。</p>
<img src ="http://www.cnblogs.com/nclly/aggbug/1449958.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47999/" target="_blank">Silverlight打造杰克逊纪念专题</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>vi 常用命令</title><link>http://www.cnblogs.com/nclly/archive/2009/04/29/1446560.html</link><dc:creator>嘎子</dc:creator><author>嘎子</author><pubDate>Wed, 29 Apr 2009 14:04:00 GMT</pubDate><guid>http://www.cnblogs.com/nclly/archive/2009/04/29/1446560.html</guid><wfw:comment>http://www.cnblogs.com/nclly/comments/1446560.html</wfw:comment><comments>http://www.cnblogs.com/nclly/archive/2009/04/29/1446560.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/nclly/comments/commentRss/1446560.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/nclly/services/trackbacks/1446560.html</trackback:ping><description><![CDATA[<p class="diaryBody"><span class="Text1"><strong><a name="list1"><font color="#00cc00">输入模式命令</font></a></strong><font color="#00cc00"> <br />
<br />
</font></span>
<table class="Text1" cellspacing="0" cellpadding="0" width="100%" border="1">
    <tr>
            <td width="100%" colspan="2">
            <p align="center"><font color="#00cc00">进入输入输出的方法 </font></p>
            </td>
        </tr>
        <tr>
            <td width="30%"><font color="#00cc00">命令</font></td>
            <td width="70%"><font color="#00cc00">作用</font></td>
        </tr>
        <tr>
            <td width="30%"><font color="#00cc00">&lt;a&gt;</font></td>
            <td width="70%"><font color="#00cc00">在光标后输入文本</font></td>
        </tr>
        <tr>
            <td width="30%"><font color="#00cc00">&lt;A&gt;</font></td>
            <td width="70%"><font color="#00cc00">在当前行末尾输入文本</font></td>
        </tr>
        <tr>
            <td width="30%"><font color="#00cc00">&lt;i&gt;</font></td>
            <td width="70%"><font color="#00cc00">在光标前输入文本</font></td>
        </tr>
        <tr>
            <td width="30%"><font color="#00cc00">&lt;I&gt;</font></td>
            <td width="70%"><font color="#00cc00">在当前行开始输入文本</font></td>
        </tr>
        <tr>
            <td width="30%"><font color="#00cc00">&lt;o&gt;</font></td>
            <td width="70%"><font color="#00cc00">在当前行后输入新一行</font></td>
        </tr>
        <tr>
            <td width="30%"><font color="#00cc00">&lt;O&gt;</font></td>
            <td width="70%"><font color="#00cc00">在当前行前输入新一行</font></td>
        </tr>
    </table>
</p>
<p><span class="Text1"><strong><a name="list2"><font color="#00cc00">光标移动命令</font></a></strong><br />
<br />
</span>
<table class="Text1" cellspacing="0" cellpadding="0" width="100%" border="1">
    <tr>
            <td width="100%" colspan="2">
            <p align="center"><font color="#00cc00">光标移动 </font></p>
            </td>
        </tr>
        <tr>
            <td width="30%"><font color="#00cc00">命令</font></td>
            <td width="70%"><font color="#00cc00">作用</font></td>
        </tr>
        <tr>
            <td width="30%"><font color="#00cc00">&lt;b&gt;</font></td>
            <td width="70%"><font color="#00cc00">移动到当前单词的开始</font></td>
        </tr>
        <tr>
            <td width="30%"><font color="#00cc00">&lt;e&gt;</font></td>
            <td width="70%"><font color="#00cc00">移动到当前单词的结尾</font></td>
        </tr>
        <tr>
            <td width="30%"><font color="#00cc00">&lt;w&gt;</font></td>
            <td width="70%"><font color="#00cc00">向前移动一个单词</font></td>
        </tr>
        <tr>
            <td width="30%"><font color="#00cc00">&lt;h&gt;</font></td>
            <td width="70%"><font color="#00cc00">向前移动一个字符</font></td>
        </tr>
        <tr>
            <td width="30%"><font color="#00cc00">&lt;j&gt;</font></td>
            <td width="70%"><font color="#00cc00">向上移动一行</font></td>
        </tr>
        <tr>
            <td width="30%"><font color="#00cc00">&lt;k&gt;</font></td>
            <td width="70%"><font color="#00cc00">向下移动一行</font></td>
        </tr>
        <tr>
            <td width="30%"><font color="#00cc00">&lt;l&gt;</font></td>
            <td width="70%"><font color="#00cc00">向后移动一个字符</font></td>
        </tr>
    </table>
</p>
<p><span class="Text1"><strong><a name="list3"><font color="#00cc00">删除操作命令</font></a></strong><br />
<br />
</span>
<table class="Text1" cellspacing="0" cellpadding="0" width="100%" border="1">
    <tr>
            <td width="100%" colspan="2">
            <p align="center"><font color="#00cc00">删除操作 </font></p>
            </td>
        </tr>
        <tr>
            <td width="30%"><font color="#00cc00">命令</font></td>
            <td width="70%"><font color="#00cc00">作用</font></td>
        </tr>
        <tr>
            <td width="30%"><font color="#00cc00">&lt;x&gt;</font></td>
            <td width="70%"><font color="#00cc00">删除光标所在的字符</font></td>
        </tr>
        <tr>
            <td width="30%"><font color="#00cc00">&lt;dw&gt;</font></td>
            <td width="70%"><font color="#00cc00">删除光标所在的单词</font></td>
        </tr>
        <tr>
            <td width="30%"><font color="#00cc00">&lt;d$&gt;</font></td>
            <td width="70%"><font color="#00cc00">删除光标至行尾的所有字符</font></td>
        </tr>
        <tr>
            <td width="30%"><font color="#00cc00">&lt;D&gt;</font></td>
            <td width="70%"><font color="#00cc00">同&lt;d$&gt;</font></td>
        </tr>
        <tr>
            <td width="30%"><font color="#00cc00">&lt;dd&gt;</font></td>
            <td width="70%"><font color="#00cc00">删除当前行</font></td>
        </tr>
    </table>
<br />
<font color="#00cc00">&nbsp;&nbsp;可在删除命令前加上数字，如&lt;5x&gt;表示删除5行。<br />
</font></p>
<p><span class="Text1"><strong><a name="list4"><font color="#00cc00">改变与替换操作命令</font></a></strong><br />
<br />
</span>
<table class="Text1" cellspacing="0" cellpadding="0" width="100%" border="1">
    <tr>
            <td width="100%" colspan="2">
            <p align="center"><font color="#00cc00">改变与替换操作 </font></p>
            </td>
        </tr>
        <tr>
            <td width="30%"><font color="#00cc00">命令</font></td>
            <td width="70%"><font color="#00cc00">作用</font></td>
        </tr>
        <tr>
            <td width="30%"><font color="#00cc00">&lt;r&gt;</font></td>
            <td width="70%"><font color="#00cc00">替换光标所在的字符</font></td>
        </tr>
        <tr>
            <td width="30%"><font color="#00cc00">&lt;R&gt;</font></td>
            <td width="70%"><font color="#00cc00">替换字符序列</font></td>
        </tr>
        <tr>
            <td width="30%"><font color="#00cc00">&lt;cw&gt;</font></td>
            <td width="70%"><font color="#00cc00">替换一个单词</font></td>
        </tr>
        <tr>
            <td width="30%"><font color="#00cc00">&lt;ce&gt;</font></td>
            <td width="70%"><font color="#00cc00">同&lt;cw&gt;</font></td>
        </tr>
        <tr>
            <td width="30%"><font color="#00cc00">&lt;cb&gt;</font></td>
            <td width="70%"><font color="#00cc00">替换光标所在的前一字符</font></td>
        </tr>
        <tr>
            <td width="30%"><font color="#00cc00">&lt;c$&gt;</font></td>
            <td width="70%"><font color="#00cc00">替换自光标位置至行尾的所有字符</font></td>
        </tr>
        <tr>
            <td width="30%"><font color="#00cc00">&lt;C&gt;</font></td>
            <td width="70%"><font color="#00cc00">同&lt;c$&gt;</font></td>
        </tr>
        <tr>
            <td width="30%"><font color="#00cc00">&lt;cc&gt;</font></td>
            <td width="70%"><font color="#00cc00">替换当前行</font></td>
        </tr>
    </table>
</p>
<p><span class="Text1"><strong><a name="list5"><font color="#00cc00">查询命令</font></a></strong><br />
<br />
</span>
<table class="Text1" cellspacing="0" cellpadding="0" width="100%" border="1">
    <tr>
            <td width="100%" colspan="2">
            <p align="center"><font color="#00cc00">查询 </font></p>
            </td>
        </tr>
        <tr>
            <td width="30%"><font color="#00cc00">命令</font></td>
            <td width="70%"><font color="#00cc00">作用</font></td>
        </tr>
        <tr>
            <td width="30%"><font color="#00cc00">&lt;/abc&gt;</font></td>
            <td width="70%"><font color="#00cc00">向前查询abc</font></td>
        </tr>
        <tr>
            <td width="30%"><font color="#00cc00">&lt;?abc&gt;</font></td>
            <td width="70%"><font color="#00cc00">向后查询abc</font></td>
        </tr>
        <tr>
            <td width="30%"><font color="#00cc00">&lt;n&gt;</font></td>
            <td width="70%"><font color="#00cc00">向前继续查询</font></td>
        </tr>
        <tr>
            <td width="30%"><font color="#00cc00">&lt;N&gt;</font></td>
            <td width="70%"><font color="#00cc00">向后继续查询</font></td>
        </tr>
    </table>
</p>
<p><span class="Text1"><strong><a name="list6"><font color="#00cc00">拷贝与粘贴命令</font></a></strong><br />
<br />
</span>
<table class="Text1" cellspacing="0" cellpadding="0" width="100%" border="1">
    <tr>
            <td width="100%" colspan="2">
            <p align="center"><font color="#00cc00">拷贝与粘贴 </font></p>
            </td>
        </tr>
        <tr>
            <td width="30%"><font color="#00cc00">命令</font></td>
            <td width="70%"><font color="#00cc00">作用</font></td>
        </tr>
        <tr>
            <td width="30%"><font color="#00cc00">&lt;/yw&gt;</font></td>
            <td width="70%"><font color="#00cc00">将光标所在单词拷入剪贴板</font></td>
        </tr>
        <tr>
            <td width="30%"><font color="#00cc00">&lt;y$&gt;</font></td>
            <td width="70%"><font color="#00cc00">将光标至行尾的字符拷入剪贴板</font></td>
        </tr>
        <tr>
            <td width="30%"><font color="#00cc00">&lt;Y&gt;</font></td>
            <td width="70%"><font color="#00cc00">同&lt;y$&gt;</font></td>
        </tr>
        <tr>
            <td width="30%"><font color="#00cc00">&lt;yy&gt;</font></td>
            <td width="70%"><font color="#00cc00">将当前行拷入剪贴板</font></td>
        </tr>
        <tr>
            <td width="30%"><font color="#00cc00">&lt;p&gt;</font></td>
            <td width="70%"><font color="#00cc00">将剪贴板中的内容粘贴在光标后</font></td>
        </tr>
        <tr>
            <td width="30%"><font color="#00cc00">&lt;P&gt;</font></td>
            <td width="70%"><font color="#00cc00">将剪贴板中的内容粘贴在光标前</font></td>
        </tr>
    </table>
</p>
<p><span class="Text1"><strong><a name="list7"><font color="#00cc00">文件保存及退出vi命令</font></a></strong><br />
<br />
</span>
<table class="Text1" cellspacing="0" cellpadding="0" width="100%" border="1">
    <tr>
            <td width="100%" colspan="2">
            <p align="center"><font color="#00cc00">文件保存及退出vi </font></p>
            </td>
        </tr>
        <tr>
            <td width="30%"><font color="#00cc00">命令</font></td>
            <td width="70%"><font color="#00cc00">作用</font></td>
        </tr>
        <tr>
            <td width="30%"><font color="#00cc00">&lt;:q&gt;</font></td>
            <td width="70%"><font color="#00cc00">不包存退出</font></td>
        </tr>
        <tr>
            <td width="30%"><font color="#00cc00">&lt;:q!&gt;</font></td>
            <td width="70%"><font color="#00cc00">不保存强制性退出</font></td>
        </tr>
        <tr>
            <td width="30%"><font color="#00cc00">&lt;:w&gt;</font></td>
            <td width="70%"><font color="#00cc00">保存编辑</font></td>
        </tr>
        <tr>
            <td width="30%"><font color="#00cc00">&lt;:w filename&gt;</font></td>
            <td width="70%"><font color="#00cc00">存入文件 filename 中</font></td>
        </tr>
        <tr>
            <td width="30%"><font color="#00cc00">&lt;:w! filename&gt;</font></td>
            <td width="70%"><font color="#00cc00">强制性存入文件 filename 中</font></td>
        </tr>
        <tr>
            <td width="30%"><font color="#00cc00">&lt;:wq&gt;</font></td>
            <td width="70%"><font color="#00cc00">保存退出</font></td>
        </tr>
        <tr>
            <td width="30%"><font color="#00cc00">&lt;:x&gt;</font></td>
            <td width="70%"><font color="#00cc00">同 &lt;:wq&gt;</font></td>
        </tr>
        <tr>
            <td width="30%"><font color="#00cc00">&lt;ZZ&gt;</font></td>
            <td width="70%"><font color="#00cc00">同 &lt;:wq&gt;</font></td>
        </tr>
    </table>
</p>
<div align="right">
<div class="postBy"></div>
</div>
<br />
<p class="diaryBody"></p>
<h2><a id="\" href="http://www.blogbus.com/"><font color="#cc00ff">vi使用手册</font></a></h2>
<div class="\"><font color="#cc00ff">进入vi的命令<br />
vi filename :打开或新建文件，并将光标置于第一行首<br />
vi +n filename ：打开文件，并将光标置于第n行首<br />
vi + filename ：打开文件，并将光标置于最后一行首<br />
vi +/pattern filename：打开文件，并将光标置于第一个与pattern匹配的串处<br />
vi -r filename ：在上次正用vi编辑时发生系统崩溃，恢复filename<br />
vi filename....filename ：打开多个文件，依次编辑<br />
<br />
移动光标类命令<br />
h ：光标左移一个字符<br />
l ：光标右移一个字符<br />
space：光标右移一个字符<br />
Backspace：光标左移一个字符<br />
k或Ctrl+p：光标上移一行<br />
j或Ctrl+n ：光标下移一行<br />
Enter ：光标下移一行<br />
w或W ：光标右移一个字至字首<br />
b或B ：光标左移一个字至字首<br />
e或E ：光标右移一个字j至字尾<br />
) ：光标移至句尾<br />
( ：光标移至句首<br />
}：光标移至段落开头<br />
{：光标移至段落结尾<br />
nG：光标移至第n行首<br />
n+：光标下移n行<br />
n-：光标上移n行<br />
n$：光标移至第n行尾<br />
H ：光标移至屏幕顶行<br />
M ：光标移至屏幕中间行<br />
L ：光标移至屏幕最后行<br />
0：（注意是数字零）光标移至当前行首<br />
$：光标移至当前行尾<br />
<br />
屏幕翻滚类命令<br />
Ctrl+u：向文件首翻半屏<br />
Ctrl+d：向文件尾翻半屏<br />
Ctrl+f：向文件尾翻一屏<br />
Ctrl＋b；向文件首翻一屏<br />
nz：将第n行滚至屏幕顶部，不指定n时将当前行滚至屏幕顶部。<br />
<br />
<strong>插入模式命令</strong><br />
i ：在光标前<br />
I ：在当前行首<br />
a：光标后<br />
A：在当前行尾<br />
o：在当前行之下新开一行<br />
O：在当前行之上新开一行<br />
r：替换当前字符<br />
R：替换当前字符及其后的字符，直至按ESC键<br />
s：从当前光标位置处开始，以输入的文本替代指定数目的字符<br />
S：删除指定数目的行，并以所输入文本代替之<br />
ncw或nCW：修改指定数目的字<br />
nCC：修改指定数目的行<br />
<br />
删除命令<br />
ndw或ndW：删除光标处开始及其后的n-1个字<br />
do：删至行首<br />
d$：删至行尾<br />
ndd：删除当前行及其后n-1行<br />
x或X：删除一个字符，x删除光标后的，而X删除光标前的<br />
Ctrl+u：删除输入方式下所输入的文本<br />
<br />
搜索及替换命令 :<br />
/pattern：从光标开始处向文件尾搜索pattern<br />
?pattern：从光标开始处向文件首搜索pattern<br />
n：在同一方向重复上一次搜索命令<br />
N：在反方向上重复上一次搜索命令<br />
：s/p1/p2/g：将当前行中所有p1均用p2替代<br />
：n1,n2s/p1/p2/g：将第n1至n2行中所有p1均用p2替代<br />
：g/p1/s//p2/g：将文件中所有p1均用p2替换<br />
<br />
选项设置<br />
all：列出所有选项设置情况<br />
term：设置终端类型<br />
ignorance：在搜索中忽略大小写<br />
list：显示制表位(Ctrl+I)和行尾标志（$)<br />
number：显示行号<br />
report：显示由面向行的命令修改过的数目<br />
terse：显示简短的警告信息<br />
warn：在转到别的文件时若没保存当前文件则显示NO write信息<br />
nomagic：允许在搜索模式中，使用前面不带&#8220;\\&#8221;的特殊字符<br />
nowrapscan：禁止vi在搜索到达文件两端时，又从另一端开始<br />
mesg：允许vi显示其他用户用write写到自己终端上的信息<br />
<br />
<strong>底行模式命令</strong><br />
：n1,n2 co n3：将n1行到n2行之间的内容拷贝到第n3行下<br />
：n1,n2 m n3：将n1行到n2行之间的内容移至到第n3行下<br />
：n1,n2 d ：将n1行到n2行之间的内容删除<br />
：w ：保存当前文件<br />
：e filename：打开文件filename进行编辑<br />
：x：保存当前文件并退出<br />
：q：退出vi<br />
：q!：不保存文件并退出vi<br />
：!command：执行shell命令command<br />
：n1,n2 w!command：将文件中n1行至n2行的内容作为command的输入并执行之，若不指定n1，n2，则表示将整个文件内容作为command的输入<br />
：r!command：将命令command的输出结果放到当前行 。</font></div>
<img src ="http://www.cnblogs.com/nclly/aggbug/1446560.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47998/" target="_blank">传诺基亚正在开发Android手机</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>手动配置linux（centos)的IP地址</title><link>http://www.cnblogs.com/nclly/archive/2009/04/29/1446542.html</link><dc:creator>嘎子</dc:creator><author>嘎子</author><pubDate>Wed, 29 Apr 2009 13:20:00 GMT</pubDate><guid>http://www.cnblogs.com/nclly/archive/2009/04/29/1446542.html</guid><wfw:comment>http://www.cnblogs.com/nclly/comments/1446542.html</wfw:comment><comments>http://www.cnblogs.com/nclly/archive/2009/04/29/1446542.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/nclly/comments/commentRss/1446542.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/nclly/services/trackbacks/1446542.html</trackback:ping><description><![CDATA[<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;今天在vmware server上装了个centos-4.7（免费的redhat,是小红帽的的克隆版本，跟小红帽的版本是对应的）,其中ip安装时没设好，一般&nbsp;&nbsp;&nbsp; </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;linux的网卡IP地址是存放在文件中的，这个配置文件在/etc/sysconfig/network-scripts下，<br />
名称分别为ifcfg-eth0,ifcfg-eth1....如果你有一块网卡，就只有ifcfg-eth0一个文件，如果你有两块或者两块以上的网卡，就会有ifcfg-eth1、ifcfg-eth2等文件的出现。<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong>文件结构：</strong> </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DEVICE=eth0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//指出设备名称</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ONBOOT=yes&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //是否启动应用</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BOOTPROTO=static&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//启动类型 静态&nbsp;（默认dhcp）</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;IPADDR=192.168.0.77&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//IP地址</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NETMASK=255.255.255.0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//子网掩码</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GATEWAY=192.168.0.1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //网关</p>
<p><br />
<strong>步骤：</strong>1、&nbsp; vi /etc/sysconfig/network-scripts/ifcfg-teh0&nbsp;（也可通过管理工具setup或netconfig命令设置）<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2 、 重新启动网络服务service network restart</p>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;要想和主机连接：还需配置xp主机， 在vmware上设置为 host-only模式，xp里修改vmnet1的IP地址为192.168.0.1, 修改linux IP为192.168.0.77&nbsp;</p>
<p><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 共享上网设置：xp里修改第一块虚拟网卡的网络属性为共享internet(属性-&gt;高级-&gt;钩选&#8220;允许其他网络用户通过此计算机的Internet连接来连接&#8221;)&nbsp;会自动把vmnet1改为192.168.0.1,linux就能上网了</p>
<img src ="http://www.cnblogs.com/nclly/aggbug/1446542.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47998/" target="_blank">传诺基亚正在开发Android手机</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item><item><title>PL/SQL中使用动态SQL编程</title><link>http://www.cnblogs.com/nclly/archive/2009/04/21/1440246.html</link><dc:creator>嘎子</dc:creator><author>嘎子</author><pubDate>Tue, 21 Apr 2009 02:36:00 GMT</pubDate><guid>http://www.cnblogs.com/nclly/archive/2009/04/21/1440246.html</guid><wfw:comment>http://www.cnblogs.com/nclly/comments/1440246.html</wfw:comment><comments>http://www.cnblogs.com/nclly/archive/2009/04/21/1440246.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnblogs.com/nclly/comments/commentRss/1440246.html</wfw:commentRss><trackback:ping>http://www.cnblogs.com/nclly/services/trackbacks/1440246.html</trackback:ping><description><![CDATA[<p>在PL/SQL程序设计过程中，会遇到很多必须使用动态sql的地方，oracle系统所提供的DMBS_SQL包可以帮助你解决问题。<br /></p>
<p><strong>(一)介绍</strong><br />DBMS_SQL系统包提供了很多函数及过程,现在简要阐述其中使用频率较高的几种:<br /><br />function open_cursor:打开一个动态游标,并返回一个整型;<br /><br />procedure close_cursor(c in out integer);关闭一个动态游标,参数为open_cursor所打开的游标;<br /><br />procedure parse(c in integer, statement in varchar2, language_flag in integer):对动态游标所提供的sql语句进行解析,参数C表示游标,statement为sql语句,language-flag为解析sql语句所用oracle版本,一般有V6,V7跟native(在不明白所连database版本时,使用native);<br /><br />procedure define_column(c in integer, position in integer, column any datatype, [column_size in integer]):定义动态游标所能得到的对应值,其中c为动态游标,positon为对应动态sql中的位置(从1开始),column为该值所对应的变量,可以为任何类型,column_size只有在column为定义长度的类型中使用如VARCHAR2,CHAR等(该过程有很多种情况,此处只对一般使用到的类型进行表述);<br /><br />function execute(c in integer):执行游标,并返回处理一个整型，1表示成功，0表示失败,代表处理结果(对insert,delete,update才有意义,而对select语句而言可以忽略);<br /><br />function fetch_rows(c in integer):对游标进行循环取数据,并返回一个整数,为0时表示已经取到游标末端;<br /><br />procedure column_value(c in integer, position in integer, value):将所取得的游标数据赋值到相应的变量,c为游标,position为位置,value则为对应的变量;<br /><br />procedure bind_variable(c in integer, name in varchar2, value):定义动态sql语句(DML)中所对应字段的值,c为游标,name为字段名称,value为字段的值;<br /><br />以上是在程序中经常使用到的几个函数及过程,其他函数及过程请参照oracle所提供定义语句dbmssql.sql<br /><br /><strong>(二)一般过程</strong><br />对于一般的select操作,如果使用动态的sql语句则需要进行以下几个步骤:<br />open cursor---&gt;parse---&gt;define column---&gt;excute---&gt;fetch rows---&gt;close cursor;<br />而对于dml操作(insert,update)则需要进行以下几个步骤:<br />open cursor---&gt;parse---&gt;bind variable---&gt;execute---&gt;close cursor;<br />对于delete操作只需要进行以下几个步骤:<br />open cursor---&gt;parse---&gt;execute---&gt;close cursor;<br /><br /><strong>(三)实例应用<br />1.</strong> declare<br />v_cid integer;<br />v_updatestr varchar2(100);<br />v_rowupdated integer;<br />begin<br />v_cid:=dbms_sql.open_cursor;<br />v_updatestr:='update emp set comm=400 where empno=7499';<br />dbms_sql.parse(v_cid,v_updatestr,dbms_sql.native);<br />v_rowupdated:=dbms_sql.execute(v_cid);<br />dbms_sql.close_cursor(v_cid);<br />exception<br />when others then<br />dbms_sql.close_cursor(v_cid);<br />raise;<br />end;<br /><strong>2.</strong>create or replace function updatecomm(p_comm emp.comm%type, p_empno emp.empno%type<br />return integer as<br />v_cid integer;<br />v_updatestr varchar2(100);<br />v_rowupdated integer;<br />begin<br />v_cid:=dbms_sql.open_cursor;<br />v_updatestr:='update emp set comm=:comm where empno=:empno';<br />dbms_sql.parse(v_cid,v_updatestr,dbms_sql.native);<br />dbms_sql.bind_variable(v_cid,'comm','p_comm');<br />dbms_sql.bind_variable(v_cid,'empno','p_empno');<br />v_rowupdated:=dbms_sql.execute(v_cid);<br />dbms_sql.close_cursor(v_cid);<br />return p_rowsupdated;<br />exception<br />when others then<br />dbms_sql.close_cursor(v_cid);<br />raise;<br />end;<br />调用--<br />declare<br />a integer;<br />begin<br />a:=updatecomm(5000,a);<br />dbms_output.put_line(a);<br />end;<br /><strong>3.</strong>create or replace procedure dynamiccopy(p_deptno1 emp.deptno%type default null,p_deptno2 emp.deptno%type default null)<br />as<br />v_cid integer;<br />v_select varchar2(100);<br />v_empno char(4); <br />v_ename varchar2(10);<br />v_deptno char(2);<br />v_dummy integer;<br />begin<br />v_cid:=dbms_sql.open_cursor;<br />v_select:='select empno,ename,deptno from emp where deptno in(:d1,:d2)';<br />dbms_sql.parse(v_cid,v_select,dbms_sql.native);<br />dbms_sql.bind_variable(v_cid,'d1',p_deptno1);<br />dbms_sql.bind_variable(v_cid,'d2',p_deptno2);<br />dbms_sql.define_column(v_cid,1,v_empno,4);<br />dbms_sql.define_column(v_cid,2,v_ename,10);<br />dbms_sql.define_column(v_cid,3,v_deptno,2);<br />v_dummy:=dbms_sql.execute(v_cid);<br />loop<br />if dbms_sql.fetch_rows(v_cid)=0 then<br />exit;<br />end if;<br />dbms_sql.column_value(v_cid,1,v_empno);<br />dbms_sql.column_value(v_cid,2,v_ename);<br />dbms_sql.column_value(v_cid,3,v_deptno);<br />insert into emp1(empno,ename,deptno) values(v_empno,v_ename,v_deptno);<br />end loop;<br />dbms_sql.close_cursor(v_cid);<br />commit;<br />exception<br />when others then<br />dbms_sql.close_cursor(v_cid);<br />raise;<br />end; <br /><strong>4.</strong>DDL语句：DDL中联编变量是非法的，即使在解析后不能够调用bind_variable过程。另外，DDL解析后立即执行，不需要调用EXECUTE过程，即使调用了也没有用。<br />create or replace procedure recreatetable(p_table in varchar2,p_description in varchar2)<br />as<br />v_cursor number;<br />v_createstring varchar2(100);<br />v_dropstring varchar2(100);<br />begin<br />v_cursor:=dbms_sql.open_cursor;<br />v_dropstring:='drop table'||p_table;<br />begin<br />dbms_sql.parse(v_cursor,v_dropstring,dbms_sql.v7);<br />exception<br />when others then<br />if sqlcode!=-942 then<br />raise;<br />end if;<br />end;<br />v_createstring:='create table'||p_table||p_description;<br />dbms_sql.parse(v_cursor,v_createstring,dbms_sql.native);<br />dbms_sql.close_cursor(v_cursor);<br />exception<br />when others then<br />dbms_sql.close_cursor(v_cursor);<br />raise;<br />end;</p><img src ="http://www.cnblogs.com/nclly/aggbug/1440246.html?type=1" width = "1" height = "1" /><br/><br/>--------------------------<br/>新闻：<a href="http://news.cnblogs.com/n/47996/" target="_blank">7月编程语言排行榜</a><br/>网站导航: <a href="http://www.cnblogs.com" target="_blank">博客园首页</a>&nbsp;&nbsp;<a href="http://news.cnblogs.com" target="_blank">新闻</a>&nbsp;&nbsp;<a href="http://dotnet.cnblogs.com" target="_blank">.NET频道</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com" target="_blank">社区</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/q/" target="_blank">博问</a>&nbsp;&nbsp;<a href="http://space.cnblogs.com/ing/" target="_blank">闪存</a>&nbsp;&nbsp;<a href="http://zzk.cnblogs.com" target="_blank">找找看</a>]]></description></item></channel></rss>