<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://sdt.sumida.com.cn:8080/cs/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en"><title type="html">Coolboy</title><subtitle type="html" /><id>http://sdt.sumida.com.cn:8080/cs/blogs/coolboy/atom.aspx</id><link rel="alternate" type="text/html" href="http://sdt.sumida.com.cn:8080/cs/blogs/coolboy/default.aspx" /><link rel="self" type="application/atom+xml" href="http://sdt.sumida.com.cn:8080/cs/blogs/coolboy/atom.aspx" /><generator uri="http://communityserver.org" version="3.1.20917.1142">Community Server</generator><updated>2007-09-03T12:11:00Z</updated><entry><title>2008北京奥运电视转播时间表</title><link rel="alternate" type="text/html" href="http://sdt.sumida.com.cn:8080/cs/blogs/coolboy/archive/2008/08/11/9964.aspx" /><link rel="enclosure" type="application/vnd.ms-excel" length="74240" href="http://sdt.sumida.com.cn:8080/cs/blogs/coolboy/attachment/9964.ashx" /><id>http://sdt.sumida.com.cn:8080/cs/blogs/coolboy/archive/2008/08/11/9964.aspx</id><published>2008-08-11T01:03:00Z</published><updated>2008-08-11T01:03:00Z</updated><content type="html">&lt;p&gt;Come on China.&lt;/p&gt;&lt;img src="http://sdt.sumida.com.cn:8080/cs/aggbug.aspx?PostID=9964" width="1" height="1"&gt;</content><author><name>Coolboy</name><uri>http://sdt.sumida.com.cn:8080/cs/members/Coolboy.aspx</uri></author><category term="2008北京奥运" scheme="http://sdt.sumida.com.cn:8080/cs/blogs/coolboy/archive/tags/2008_1753AC4E6559D08F_/default.aspx" /></entry><entry><title>Set Oralce processes</title><link rel="alternate" type="text/html" href="http://sdt.sumida.com.cn:8080/cs/blogs/coolboy/archive/2008/08/07/set-oralce-processes.aspx" /><id>http://sdt.sumida.com.cn:8080/cs/blogs/coolboy/archive/2008/08/07/set-oralce-processes.aspx</id><published>2008-08-07T08:24:00Z</published><updated>2008-08-07T08:24:00Z</updated><content type="html">&lt;p&gt;alter system set processes=300 scope=spfile;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="http://sdt.sumida.com.cn:8080/cs/aggbug.aspx?PostID=9931" width="1" height="1"&gt;</content><author><name>Coolboy</name><uri>http://sdt.sumida.com.cn:8080/cs/members/Coolboy.aspx</uri></author><category term="ORA-12516" scheme="http://sdt.sumida.com.cn:8080/cs/blogs/coolboy/archive/tags/ORA-12516/default.aspx" /><category term="processes" scheme="http://sdt.sumida.com.cn:8080/cs/blogs/coolboy/archive/tags/processes/default.aspx" /></entry><entry><title>软件测试</title><link rel="alternate" type="text/html" href="http://sdt.sumida.com.cn:8080/cs/blogs/coolboy/archive/2008/07/23/9770.aspx" /><id>http://sdt.sumida.com.cn:8080/cs/blogs/coolboy/archive/2008/07/23/9770.aspx</id><published>2008-07-23T14:13:00Z</published><updated>2008-07-23T14:13:00Z</updated><content type="html">&lt;p&gt;&lt;img height="1" alt="" width="1" border="0" /&gt;&lt;a href="http://sdt.sumida.com.cn:8080/cs/photos/coolboy/picture9768.aspx" target="_blank"&gt;&lt;a href="http://10.180.0.10:8080/cs/photos/coolboy/picture9768.aspx" target="_blank"&gt;&lt;img style="WIDTH:338px;HEIGHT:187px;" height="87" src="http://10.180.0.10:8080/cs/photos/coolboy/images/9768/thumb.aspx" width="303" border="0" alt="" /&gt;&lt;/a&gt;&lt;/a&gt;&lt;a href="http://sdt.sumida.com.cn:8080/cs/photos/coolboy/picture9769.aspx" target="_blank"&gt;&lt;a href="http://10.180.0.10:8080/cs/photos/coolboy/picture9769.aspx" target="_blank"&gt;&lt;img style="WIDTH:333px;HEIGHT:185px;" height="118" src="http://10.180.0.10:8080/cs/photos/coolboy/images/9769/thumb.aspx" width="483" border="0" alt="" /&gt;&lt;/a&gt;&lt;/a&gt;&lt;a href="http://sdt.sumida.com.cn:8080/cs/blogs/coolboy/o_%e5%85%a8%e6%99%af%e5%9b%be1.gif"&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://sdt.sumida.com.cn:8080/cs/aggbug.aspx?PostID=9770" width="1" height="1"&gt;</content><author><name>Coolboy</name><uri>http://sdt.sumida.com.cn:8080/cs/members/Coolboy.aspx</uri></author><category term="软件测试" scheme="http://sdt.sumida.com.cn:8080/cs/blogs/coolboy/archive/tags/_6F8FF64E4B6DD58B_/default.aspx" /></entry><entry><title>Asp.NET生成静态页面并分页</title><link rel="alternate" type="text/html" href="http://sdt.sumida.com.cn:8080/cs/blogs/coolboy/archive/2008/07/01/asp-net.aspx" /><id>http://sdt.sumida.com.cn:8080/cs/blogs/coolboy/archive/2008/07/01/asp-net.aspx</id><published>2008-07-01T14:43:00Z</published><updated>2008-07-01T14:43:00Z</updated><content type="html">&lt;p&gt;因为公司的产品用asp开发， 前一段时间用asp写了一个生成静态页面并分页的程序，但缘于对.net的热爱，写了这个.net下的生成静态页面并分页的程序。 &lt;br /&gt;&lt;br /&gt;主要的原理就是替换模板里的特殊字符。 &lt;br /&gt;&lt;br /&gt;1、静态模板页面 template.html，主要是定义了一些特殊字符，用来被替换。 &lt;br /&gt;&lt;br /&gt;&amp;lt;!DOCTYPE HTML PUBLIC &amp;quot;-//W3C//DTD HTML 4.01 Transitional//EN&amp;quot;&amp;quot;http://www.w3.org/TR/html4/loose.dtd&amp;quot;&amp;gt; &lt;br /&gt;&amp;lt;html&amp;gt; &lt;br /&gt;&amp;lt;head&amp;gt; &lt;br /&gt;&amp;lt;meta http-equiv=&amp;quot;Content-Type&amp;quot; content=&amp;quot;text/html; charset=gb2312&amp;quot;&amp;gt; &lt;br /&gt;&amp;lt;title&amp;gt;Title &amp;lt;/title&amp;gt; &lt;br /&gt;&amp;lt;/head&amp;gt; &lt;br /&gt;&amp;lt;body&amp;gt; &lt;br /&gt;&amp;lt;div style=&amp;quot;width: 417px; height: 54px&amp;quot; align=&amp;quot;center&amp;quot;&amp;gt; &lt;br /&gt;&amp;lt;br /&amp;gt; &lt;br /&gt;Title &amp;lt;/div&amp;gt; &lt;br /&gt;&amp;lt;div style=&amp;quot;width: 417px; height: 8px&amp;quot;&amp;gt; &lt;br /&gt;浏览 &amp;lt;font color=&amp;quot;red&amp;quot;&amp;gt; &amp;lt;script src=&amp;quot;http://localhost/.Net/NewsFiles/ClickCount.aspx?NewsId=NewsId&amp;quot;&amp;gt; &amp;lt;/script&amp;gt; &amp;lt;/font&amp;gt;次 Time &amp;lt;/div&amp;gt; &lt;br /&gt;&amp;lt;div style=&amp;quot;width: 417px; height: 100px&amp;quot;&amp;gt; &lt;br /&gt;Content &amp;lt;/div&amp;gt; &lt;br /&gt;&amp;lt;div style=&amp;quot;width: 416px; height: 9px&amp;quot;&amp;gt; &lt;br /&gt;Pager &amp;lt;/div&amp;gt; &lt;br /&gt;&amp;lt;div style=&amp;quot;width: 416px; height: 8px&amp;quot;&amp;gt; &lt;br /&gt;&amp;lt;form id=&amp;quot;form1&amp;quot; action=&amp;quot;../AddComment.aspx&amp;quot; style=&amp;quot;margin:0px&amp;quot;&amp;gt; &lt;br /&gt;&amp;lt;input id=&amp;quot;Text1&amp;quot; type=&amp;quot;text&amp;quot; /&amp;gt; &amp;lt;Img id=&amp;quot;Image1&amp;quot; src=&amp;quot;http://www.dwww.cn/UserInfo/CheckCode.aspx&amp;quot;/&amp;gt; &amp;lt;br /&amp;gt; &lt;br /&gt;&amp;lt;textarea id=&amp;quot;CommentContent&amp;quot; cols=&amp;quot;20&amp;quot; rows=&amp;quot;2&amp;quot;&amp;gt; &amp;lt;/textarea&amp;gt; &lt;br /&gt;&amp;lt;br /&amp;gt; &lt;br /&gt;&amp;lt;input id=&amp;quot;NewsId&amp;quot; type=&amp;quot;hidden&amp;quot; value=&amp;quot;NewsId&amp;quot;/&amp;gt; &lt;br /&gt;&amp;lt;input id=&amp;quot;Button1&amp;quot; type=&amp;quot;submit&amp;quot; value=&amp;quot;button&amp;quot; /&amp;gt; &lt;br /&gt;&amp;lt;a href=&amp;quot;http://www.dwww.cn/News/Display.aspx?NewsId=NewsId&amp;quot;&amp;gt;查看更多评论 &amp;lt;/a&amp;gt; &amp;lt;/form&amp;gt; &lt;br /&gt;&amp;lt;/div&amp;gt; &lt;br /&gt;&amp;lt;/body&amp;gt; &lt;br /&gt;&amp;lt;/html&amp;gt; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;2、前态页面 NewsAdd.aspx，就是一个表单，用来填写新闻的标题和内容。 &lt;br /&gt;&lt;br /&gt;&amp;lt;%@ Page Language=&amp;quot;C#&amp;quot; AutoEventWireup=&amp;quot;false&amp;quot; validateRequest=&amp;quot;false&amp;quot; CodeFile=&amp;quot;NewsAdd.aspx.cs&amp;quot; Inherits=&amp;quot;NewsAdd.Admin_AdminPanel_NewsAdd&amp;quot; %&amp;gt; &lt;br /&gt;&amp;lt;%@ Register TagPrefix=&amp;quot;FCKeditorV2&amp;quot; Namespace=&amp;quot;FredCK.FCKeditorV2&amp;quot; Assembly=&amp;quot;FredCK.FCKeditorV2&amp;quot; %&amp;gt; &lt;br /&gt;&amp;lt;!DOCTYPE html PUBLIC &amp;quot;-//W3C//DTD XHTML 1.0 Transitional//EN&amp;quot; &amp;quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&amp;quot;&amp;gt; &lt;br /&gt;&lt;br /&gt;&amp;lt;html xmlns=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot; &amp;gt; &lt;br /&gt;&amp;lt;head runat=&amp;quot;server&amp;quot;&amp;gt; &lt;br /&gt;&amp;lt;title&amp;gt;添加新闻 &amp;lt;/title&amp;gt; &lt;br /&gt;&amp;lt;/head&amp;gt; &lt;br /&gt;&amp;lt;body&amp;gt; &lt;br /&gt;&amp;lt;form id=&amp;quot;form1&amp;quot; runat=&amp;quot;server&amp;quot;&amp;gt; &lt;br /&gt;&amp;lt;div&amp;gt; &lt;br /&gt;&amp;lt;asp:Label ID=&amp;quot;Label2&amp;quot; runat=&amp;quot;server&amp;quot; Text=&amp;quot;标题&amp;quot;&amp;gt; &amp;lt;/asp:Label&amp;gt; &lt;br /&gt;&amp;lt;asp:TextBox ID=&amp;quot;Title&amp;quot; runat=&amp;quot;server&amp;quot; Width=&amp;quot;325px&amp;quot;&amp;gt; &amp;lt;/asp:TextBox&amp;gt; &amp;lt;br /&amp;gt; &lt;br /&gt;&amp;lt;asp:Label ID=&amp;quot;Label1&amp;quot; runat=&amp;quot;server&amp;quot; Text=&amp;quot;内容&amp;quot;&amp;gt; &amp;lt;/asp:Label&amp;gt; &lt;br /&gt;&amp;lt;FCKeditorV2:FCKeditor id=&amp;quot;Content&amp;quot; basePath=&amp;quot;~/FCKeditor/&amp;quot; runat=&amp;quot;server&amp;quot; Height=&amp;quot;400px&amp;quot; Width=&amp;quot;70%&amp;quot;&amp;gt; &amp;lt;/FCKeditorV2:FCKeditor&amp;gt; &lt;br /&gt;&amp;lt;asp:Button ID=&amp;quot;Button1&amp;quot; runat=&amp;quot;server&amp;quot; onClick=&amp;quot;Button1_Click&amp;quot; Text=&amp;quot;Button&amp;quot; /&amp;gt; &lt;br /&gt;&amp;lt;asp:Label ID=&amp;quot;Message&amp;quot; runat=&amp;quot;server&amp;quot; &amp;gt; &amp;lt;/asp:Label&amp;gt; &amp;lt;/div&amp;gt; &lt;br /&gt;&amp;lt;/form&amp;gt; &lt;br /&gt;&amp;lt;/body&amp;gt; &lt;br /&gt;&amp;lt;/html&amp;gt; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;3、后台页面 NewsAdd.aspx.cs &lt;br /&gt;&lt;br /&gt;using System; &lt;br /&gt;using System.Data; &lt;br /&gt;using System.Configuration; &lt;br /&gt;using System.Collections; &lt;br /&gt;using System.Web; &lt;br /&gt;using System.Web.Security; &lt;br /&gt;using System.Web.UI; &lt;br /&gt;using System.Web.UI.WebControls; &lt;br /&gt;using System.Web.UI.WebControls.WebParts; &lt;br /&gt;using System.Web.UI.HtmlControls; &lt;br /&gt;using Mysqlserver; &lt;br /&gt;using System.IO; &lt;br /&gt;using System.Text; &lt;br /&gt;namespace NewsAdd &lt;br /&gt;{ &lt;br /&gt;public partial class Admin_AdminPanel_NewsAdd : System.Web.UI.Page &lt;br /&gt;{ &lt;br /&gt;protected void Page_Load(object sender, EventArgs e) &lt;br /&gt;{ &lt;br /&gt;&lt;br /&gt;} &lt;br /&gt;protected void Button1_Click(object sender, EventArgs e) &lt;br /&gt;{ &lt;br /&gt;string strDate = DateTime.Now.ToString(&amp;quot;yyMMdd&amp;quot;) + &amp;quot;\&amp;quot; + DateTime.Now.ToString(&amp;quot;yyyymmddhhmmss&amp;quot;); &lt;br /&gt;string strFileName = strDate + &amp;quot;.shtml&amp;quot;;//存储到数据库中 &lt;br /&gt;string strTitle=Request.Form[&amp;quot;Title&amp;quot;].ToString().Trim();//接收传过来的标题 &lt;br /&gt;string strContent=Request.Form[&amp;quot;Content&amp;quot;].ToString().Trim();//接收传过来的内容 &lt;br /&gt;string[] content = strContent.Split(new Char[] {&amp;#39; ¦&amp;#39;});//对内容进行拆分，并保存到数组 &lt;br /&gt;int upbound = content.Length;//数组的上限 &lt;br /&gt;SqlServerDataBase db = new SqlServerDataBase(); &lt;br /&gt;bool success = db.Insert(&amp;quot;insert into inNews(Title,Content,FilePath)values(&amp;#39;&amp;quot; + strTitle + &amp;quot;&amp;#39;,&amp;#39;&amp;quot; + strContent + &amp;quot;&amp;#39;,&amp;#39;&amp;quot; + strFileName + &amp;quot;&amp;#39;)&amp;quot;, null); &lt;br /&gt;//if (success) &lt;br /&gt;// Message.Text = &amp;quot;添加成功！&amp;quot;; &lt;br /&gt;/**////////////////////////////创建当前日期的文件夹开始 &lt;br /&gt;string dir = Server.MapPath(&amp;quot;../../&amp;quot;+&amp;quot;NewsFiles/&amp;quot;+DateTime.Now.ToString(&amp;quot;yyMMdd&amp;quot;));//用来生成文件夹 &lt;br /&gt;if (!Directory.Exists(dir)) &lt;br /&gt;{ &lt;br /&gt;Directory.CreateDirectory(dir); &lt;br /&gt;} &lt;br /&gt;/**////////////////////////////创建当前日期的文件夹结束 &lt;br /&gt;try &lt;br /&gt;{ &lt;br /&gt;for (int i = 0; i &amp;lt; content.Length; i++) &lt;br /&gt;{ &lt;br /&gt;//string[] newContent = new string[4];//定义和html标记数目一致的数组 &lt;br /&gt;StringBuilder strhtml = new StringBuilder(); &lt;br /&gt;&lt;br /&gt;//创建StreamReader对象 &lt;br /&gt;using (StreamReader sr = new StreamReader(Server.MapPath(&amp;quot;../../&amp;quot; + &amp;quot;NewsFiles/&amp;quot;) + &amp;quot;\template.html&amp;quot;,Encoding.GetEncoding(&amp;quot;gb2312&amp;quot;))) &lt;br /&gt;{ &lt;br /&gt;String oneline; &lt;br /&gt;//读取指定的HTML文件模板 &lt;br /&gt;while ((oneline = sr.ReadLine()) != null) &lt;br /&gt;{ &lt;br /&gt;strhtml.Append(oneline); &lt;br /&gt;} &lt;br /&gt;sr.Close(); &lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;//为标记数组赋值 &lt;br /&gt;//SqlServerDataBase db = new SqlServerDataBase(); &lt;br /&gt;DataSet ds = db.Select(&amp;quot;select top 1 NewsId from inNews order by NewsId desc&amp;quot;, null);//获取id &lt;br /&gt;string strTable = &amp;quot; &amp;lt;table&amp;gt; &amp;lt;tr&amp;gt; &amp;lt;td&amp;gt;upUrl &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;Number &amp;lt;/td&amp;gt; &amp;lt;td&amp;gt;downUrl &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt; &amp;lt;/table&amp;gt;&amp;quot;;//上下页表格，注意此处的upUrl（上一页），Number（页码分页），downUrl（下一页） &lt;br /&gt;//这三个是用来替换的。 &lt;br /&gt;&lt;br /&gt;string FilePath=&amp;quot;&amp;quot;; &lt;br /&gt;strhtml = strhtml.Replace(&amp;quot;Title&amp;quot;, strTitle); &lt;br /&gt;strhtml = strhtml.Replace(&amp;quot;NewsId&amp;quot;, ds.Tables[0].Rows[0][&amp;quot;NewsId&amp;quot;].ToString()); &lt;br /&gt;strhtml = strhtml.Replace(&amp;quot;Time&amp;quot;, DateTime.Now.ToString(&amp;quot;yyyy/MM/dd&amp;quot;)); &lt;br /&gt;strhtml = strhtml.Replace(&amp;quot;Content&amp;quot;, content&lt;img src="http://sdt.sumida.com.cn:8080/cs/emoticons/emotion-55.gif" alt="Idea" /&gt;); &lt;br /&gt;string strNumber = &amp;quot;&amp;quot;;//数字分页1，2，3…… &lt;br /&gt;for (int m = 1; m &amp;lt;=upbound; m++) &lt;br /&gt;{ &lt;br /&gt;if (m == 1)//如果是第一页就显示成这个样子：20070524.shtml而不是20070524_1.shtml &lt;br /&gt;strNumber = strNumber + &amp;quot; [&amp;quot;+&amp;quot; &amp;lt;a href=&amp;quot; + &amp;quot;../&amp;quot; + strDate + &amp;quot;.shtml&amp;quot; + &amp;quot;&amp;gt;&amp;quot; + m + &amp;quot; &amp;lt;/a&amp;gt;&amp;quot;+&amp;quot;] &amp;quot;; &lt;br /&gt;else &lt;br /&gt;{ &lt;br /&gt;int n = m - 1;//第三页的连接应该是20070524_2.shtml，以此类推 &lt;br /&gt;strNumber = strNumber + &amp;quot; [&amp;quot; +&amp;quot; &amp;lt;a href=&amp;quot; + &amp;quot;../&amp;quot; + strDate + &amp;quot;_&amp;quot; + n + &amp;quot;.shtml&amp;quot; + &amp;quot;&amp;gt;&amp;quot; + m + &amp;quot; &amp;lt;/a&amp;gt;&amp;quot;+&amp;quot;] &amp;quot;; &lt;br /&gt;} &lt;br /&gt;} &lt;br /&gt;if (upbound == 0)//如果没有分页，就直接按日期时间保存 &lt;br /&gt;{ &lt;br /&gt;FilePath = Server.MapPath(&amp;quot;../../&amp;quot;) + &amp;quot;NewsFiles&amp;quot; + &amp;quot;//&amp;quot; + strDate + &amp;quot;.shtml&amp;quot;; &lt;br /&gt;strhtml = strhtml.Replace(&amp;quot;Pager&amp;quot;, &amp;quot;&amp;quot;); &lt;br /&gt;} &lt;br /&gt;else//否则按20070524.shtml、20070524_1.shtml 这种效果保存 &lt;br /&gt;{ &lt;br /&gt;if (i == 0) &lt;br /&gt;FilePath = Server.MapPath(&amp;quot;../../&amp;quot;) + &amp;quot;NewsFiles&amp;quot; + &amp;quot;//&amp;quot; + strDate + &amp;quot;.shtml&amp;quot;; &lt;br /&gt;else &lt;br /&gt;FilePath = Server.MapPath(&amp;quot;../../&amp;quot;) + &amp;quot;NewsFiles&amp;quot; + &amp;quot;//&amp;quot; + strDate + &amp;quot;_&amp;quot; + i + &amp;quot;.shtml&amp;quot;; &lt;br /&gt;&lt;br /&gt;if (i == 0)//第一页不显示上一页 &lt;br /&gt;strTable = strTable.Replace(&amp;quot;upUrl&amp;quot;, &amp;quot;&amp;quot;); &lt;br /&gt;&lt;br /&gt;if (i &amp;lt;= 1)//上一页分页 &lt;br /&gt;strTable = strTable.Replace(&amp;quot;upUrl&amp;quot;, &amp;quot; &amp;lt;a href=&amp;quot; + &amp;quot;../&amp;quot; + strDate + &amp;quot;.shtml&amp;quot; + &amp;quot;&amp;gt;上一页 &amp;lt;/a&amp;gt;&amp;quot;); &lt;br /&gt;else &lt;br /&gt;{ &lt;br /&gt;int p = i - 1; &lt;br /&gt;strTable = strTable.Replace(&amp;quot;upUrl&amp;quot;, &amp;quot; &amp;lt;a href=&amp;quot; + &amp;quot;../&amp;quot; + strDate + &amp;quot;_&amp;quot; + p + &amp;quot;.shtml&amp;quot; + &amp;quot;&amp;gt;上一页 &amp;lt;/a&amp;gt;&amp;quot;); &lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;if(upbound==1)//如果只有一页，则不显示页码 &lt;br /&gt;//strNumber=&amp;quot;&amp;quot;; &lt;br /&gt;strTable = strTable.Replace(&amp;quot;Number&amp;quot;, &amp;quot;&amp;quot;); &lt;br /&gt;else &lt;br /&gt;strTable = strTable.Replace(&amp;quot;Number&amp;quot;, strNumber);//页码替换 &lt;br /&gt;/**///////////////////////// &lt;br /&gt;if(i==upbound-1)//最后一页不显示下一页 &lt;br /&gt;strTable = strTable.Replace(&amp;quot;downUrl&amp;quot;, &amp;quot;&amp;quot;); &lt;br /&gt;&lt;br /&gt;if (i != upbound - 1)//下一页分页 &lt;br /&gt;{ &lt;br /&gt;int q = i + 1; &lt;br /&gt;strTable = strTable.Replace(&amp;quot;downUrl&amp;quot;, &amp;quot; &amp;lt;a href=&amp;quot; + &amp;quot;../&amp;quot; + strDate + &amp;quot;_&amp;quot; + q + &amp;quot;.shtml&amp;quot; + &amp;quot;&amp;gt;下一页 &amp;lt;/a&amp;gt;&amp;quot;); &lt;br /&gt;} &lt;br /&gt;else &lt;br /&gt;{ &lt;br /&gt;int j = upbound - 1; &lt;br /&gt;strTable = strTable.Replace(&amp;quot;downUrl&amp;quot;, &amp;quot; &amp;lt;a href=&amp;quot; + &amp;quot;../&amp;quot; + strDate + &amp;quot;_&amp;quot; + j + &amp;quot;.shtml&amp;quot; + &amp;quot;&amp;gt;下一页 &amp;lt;/a&amp;gt;&amp;quot;); &lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;strhtml = strhtml.Replace(&amp;quot;Pager&amp;quot;, strTable); &lt;br /&gt;} &lt;br /&gt;//创建文件信息对象-------------------------------------------- &lt;br /&gt;FileInfo finfo = new FileInfo(FilePath); &lt;br /&gt;//以打开或者写入的形式创建文件流 &lt;br /&gt;using (FileStream fs = finfo.OpenWrite()) &lt;br /&gt;{ &lt;br /&gt;//根据上面创建的文件流创建写数据流 &lt;br /&gt;StreamWriter sw = new StreamWriter(fs, System.Text.Encoding.Default); &lt;br /&gt;//把新的内容写到创建的HTML页面中 &lt;br /&gt;sw.WriteLine(strhtml); &lt;br /&gt;sw.Flush(); &lt;br /&gt;sw.Close(); &lt;br /&gt;} &lt;br /&gt;} &lt;br /&gt;} &lt;br /&gt;catch (Exception err) &lt;br /&gt;{ &lt;br /&gt;//输出异常信息 &lt;br /&gt;Response.Write(err.ToString()); &lt;br /&gt;} &lt;br /&gt;} &lt;br /&gt;} &lt;br /&gt;} &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;请不要直接拷贝使用，里面的路径需要更改，但程序绝对没问题，在我本地已经测试通过。 &lt;br /&gt;&lt;br /&gt;另外在使用时，比如我要把新闻的内容分成4页，就应该这样写：111 ¦222 ¦333 ¦444。 &lt;br /&gt;&lt;/p&gt;&lt;img src="http://sdt.sumida.com.cn:8080/cs/aggbug.aspx?PostID=9502" width="1" height="1"&gt;</content><author><name>Coolboy</name><uri>http://sdt.sumida.com.cn:8080/cs/members/Coolboy.aspx</uri></author><category term="静态页面" scheme="http://sdt.sumida.com.cn:8080/cs/blogs/coolboy/archive/tags/_5997016075986297_/default.aspx" /></entry><entry><title>再遇ORA-12516</title><link rel="alternate" type="text/html" href="http://sdt.sumida.com.cn:8080/cs/blogs/coolboy/archive/2008/07/01/ora-12516.aspx" /><id>http://sdt.sumida.com.cn:8080/cs/blogs/coolboy/archive/2008/07/01/ora-12516.aspx</id><published>2008-07-01T06:16:00Z</published><updated>2008-07-01T06:16:00Z</updated><content type="html">&lt;p&gt;記得以前有過一次，今天用戶再次反應又連不上數據庫了，遇到問題總要先查找原因，後尋找解決辦法，這個過程困難，也給心裡造成壓力。&lt;/p&gt;
&lt;p&gt;避免後續再次出現同樣的問題，能夠最快時間順利輕鬆解決，今天就記錄之，平衡心理壓力呵...&lt;/p&gt;
&lt;p&gt;問題描述：&lt;/p&gt;
&lt;p&gt;[oracle@test dbs]$ oerr ora 12516&lt;br /&gt;12516, 00000, &amp;quot;TNS:listener could not find available handler with matching protocol stack&amp;quot;&lt;br /&gt;// *Cause: None of the known and available service handlers for the given&lt;br /&gt;// SERVICE_NAME support the client&amp;#39;s protocol stack: transport, session,&lt;br /&gt;// and presentation protocols.&lt;br /&gt;// *Action: Check to make sure that the service handlers (e.g. dispatchers)&lt;br /&gt;// for the given SERVICE_NAME are registered with the listener, are accepting&lt;br /&gt;// connections, and that they are properly configured to support the desired&lt;br /&gt;// protocols.&lt;/p&gt;
&lt;p&gt;診斷過程：&lt;/p&gt;
&lt;p&gt;[oracle@test dbs]$ lsnrctl status&lt;/p&gt;
&lt;p&gt;LSNRCTL for Linux: Version 10.2.0.1.0 - Production on 23-MAY-2008 13:59:30&lt;/p&gt;
&lt;p&gt;Copyright (c) 1991, 2005, &lt;a target="_self"&gt;&lt;u&gt;&lt;strong&gt;Oracle&lt;/strong&gt;&lt;/u&gt;&lt;/a&gt;.&amp;nbsp; All rights reserved.&lt;/p&gt;
&lt;p&gt;Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=IPC)(KEY=EXTPROC1)))&lt;br /&gt;STATUS of the LISTENER&lt;br /&gt;------------------------&lt;br /&gt;Alias&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LISTENER&lt;br /&gt;Version&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TNSLSNR for Linux: Version 10.2.0.1.0 - Production&lt;br /&gt;Start Date&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 23-MAY-2008 13:20:03&lt;br /&gt;Uptime&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0 days 0 hr. 39 min. 27 sec&lt;br /&gt;Trace 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; off&lt;br /&gt;Security&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ON: Local OS Authentication&lt;br /&gt;SNMP&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; OFF&lt;br /&gt;Listener Parameter File&amp;nbsp;&amp;nbsp; /u01/app/oracle/oracle/product/10.2.0/db_1/network/admin/listener.ora&lt;br /&gt;Listener Log File&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /u01/app/oracle/oracle/product/10.2.0/db_1/network/log/listener.log&lt;br /&gt;Listening Endpoints Summary...&lt;br /&gt;&amp;nbsp; (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=EXTPROC1)))&lt;br /&gt;&amp;nbsp; (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=10.182.4.65)(PORT=1521)))&lt;br /&gt;Services Summary...&lt;br /&gt;Service &amp;quot;PLSExtProc&amp;quot; has 1 instance(s).&lt;br /&gt;&amp;nbsp; Instance &amp;quot;PLSExtProc&amp;quot;, status UNKNOWN, has 1 handler(s) for this service...&lt;br /&gt;Service &amp;quot;infuse01&amp;quot; has 1 instance(s).&lt;br /&gt;&amp;nbsp; Instance &amp;quot;infuse01&amp;quot;, status UNKNOWN, has 1 handler(s) for this service...&lt;br /&gt;Service &amp;quot;infuse02&amp;quot; has 1 instance(s).&lt;br /&gt;&amp;nbsp; Instance &amp;quot;infuse02&amp;quot;, status UNKNOWN, has 1 handler(s) for this service...&lt;br /&gt;Service &amp;quot;sgwmsdb&amp;quot; has 1 instance(s).&lt;br /&gt;&amp;nbsp; Instance &amp;quot;sgwmsdb&amp;quot;, status READY, has 1 handler(s) for this service...&lt;br /&gt;Service &amp;quot;sgwmsdbXDB&amp;quot; has 1 instance(s).&lt;br /&gt;&amp;nbsp; Instance &amp;quot;sgwmsdb&amp;quot;, status READY, has 1 handler(s) for this service...&lt;br /&gt;Service &amp;quot;sgwmsdb_XPT&amp;quot; has 1 instance(s).&lt;br /&gt;&amp;nbsp; Instance &amp;quot;sgwmsdb&amp;quot;, status READY, has 1 handler(s) for this service...&lt;br /&gt;Service &amp;quot;test&amp;quot; has 1 instance(s).&lt;br /&gt;&amp;nbsp; Instance &amp;quot;test&amp;quot;, status READY, has 1 handler(s) for this service...&lt;br /&gt;Service &amp;quot;testXDB&amp;quot; has 1 instance(s).&lt;br /&gt;&amp;nbsp; Instance &amp;quot;test&amp;quot;, status READY, has 1 handler(s) for this service...&lt;br /&gt;Service &amp;quot;test_XPT&amp;quot; has 1 instance(s).&lt;br /&gt;&amp;nbsp; Instance &amp;quot;test&amp;quot;, status READY, has 1 handler(s) for this service...&lt;br /&gt;The command completed successfully&lt;/p&gt;
&lt;p&gt;[oracle@test dbs]$ ps -ef|grep ora_&lt;/p&gt;
&lt;p&gt;oracle&amp;nbsp;&amp;nbsp;&amp;nbsp; 5018&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp; 0 Mar07 ?&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 00:00:41 ora_pmon_test&lt;br /&gt;oracle&amp;nbsp;&amp;nbsp;&amp;nbsp; 5020&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp; 0 Mar07 ?&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 00:01:45 ora_psp0_test&lt;br /&gt;oracle&amp;nbsp;&amp;nbsp;&amp;nbsp; 5022&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp; 0 Mar07 ?&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 00:00:01 ora_mman_test&lt;br /&gt;oracle&amp;nbsp;&amp;nbsp;&amp;nbsp; 5024&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp; 0 Mar07 ?&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 00:02:50 ora_dbw0_test&lt;br /&gt;oracle&amp;nbsp;&amp;nbsp;&amp;nbsp; 5026&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp; 0 Mar07 ?&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 00:07:52 ora_lgwr_test&lt;br /&gt;oracle&amp;nbsp;&amp;nbsp;&amp;nbsp; 5028&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp; 0 Mar07 ?&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 00:03:21 ora_ckpt_test&lt;br /&gt;oracle&amp;nbsp;&amp;nbsp;&amp;nbsp; 5030&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp; 0 Mar07 ?&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 00:04:53 ora_smon_test&lt;br /&gt;oracle&amp;nbsp;&amp;nbsp;&amp;nbsp; 5032&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp; 0 Mar07 ?&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 00:00:00 ora_reco_test&lt;br /&gt;oracle&amp;nbsp;&amp;nbsp;&amp;nbsp; 5034&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp; 0 Mar07 ?&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 00:01:46 ora_cjq0_test&lt;br /&gt;oracle&amp;nbsp;&amp;nbsp;&amp;nbsp; 5036&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp; 0 Mar07 ?&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 00:05:06 ora_mmon_test&lt;br /&gt;oracle&amp;nbsp;&amp;nbsp;&amp;nbsp; 5038&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp; 0 Mar07 ?&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 00:02:11 ora_mmnl_test&lt;br /&gt;oracle&amp;nbsp;&amp;nbsp;&amp;nbsp; 5040&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp; 0 Mar07 ?&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 00:00:00 ora_d000_test&lt;br /&gt;oracle&amp;nbsp;&amp;nbsp;&amp;nbsp; 5042&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp; 0 Mar07 ?&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 00:00:00 ora_s000_test&lt;br /&gt;oracle&amp;nbsp;&amp;nbsp;&amp;nbsp; 5052&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp; 0 Mar07 ?&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 00:01:12 ora_arc0_test&lt;br /&gt;oracle&amp;nbsp;&amp;nbsp;&amp;nbsp; 5054&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp; 0 Mar07 ?&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 00:01:11 ora_arc1_test&lt;br /&gt;oracle&amp;nbsp;&amp;nbsp;&amp;nbsp; 5058&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp; 0 Mar07 ?&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 00:00:00 ora_qmnc_test&lt;br /&gt;oracle&amp;nbsp;&amp;nbsp;&amp;nbsp; 5075&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp; 0 Mar07 ?&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 00:00:00 ora_q000_test&lt;/p&gt;
&lt;p&gt;發現缺少job進程ora_j000_test&lt;/p&gt;
&lt;p&gt;[oracle@test dbs]$ sqlplus / as sysdba&lt;/p&gt;
&lt;p&gt;SQL*Plus: Release 10.2.0.1.0 - Production on Fri May 23 13:23:22 &lt;a target="_self"&gt;&lt;u&gt;&lt;strong&gt;2008&lt;/strong&gt;&lt;/u&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Copyright (c) 1982, 2005, Oracle.&amp;nbsp; All rights reserved.&lt;/p&gt;
&lt;p&gt;Connected.&lt;br /&gt;SQL&amp;gt; select name from v$database;&lt;br /&gt;select name from v$database&lt;br /&gt;*&lt;br /&gt;ERROR at line 1:&lt;br /&gt;ORA-01012: not logged on&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;SQL&amp;gt; exit&lt;/p&gt;
&lt;p&gt;[oracle@test dbs]$ ps -ef|grep oracle|wc -l&lt;br /&gt;172&lt;/p&gt;
&lt;p&gt;而spfile文件中processes = 150,從而判斷，這個值太小導致新用戶無法再連入DB.&lt;/p&gt;
&lt;p&gt;數據庫處於not log on 狀態，無法直接修改相應參數，於是就先把相關oracle進程kill掉後，可以正常登錄數據庫.&lt;/p&gt;
&lt;p&gt;[oracle@test dbs]$ sqlplus / as sysdba&lt;/p&gt;
&lt;p&gt;SQL*Plus: Release 10.2.0.1.0 - Production on Fri May 23 14:08:52 2008&lt;/p&gt;
&lt;p&gt;Copyright (c) 1982, 2005, Oracle.&amp;nbsp; All rights reserved.&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;Connected to:&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;/p&gt;
&lt;p&gt;SQL&amp;gt; alter system set processes=300 scope=spfile;&lt;/p&gt;
&lt;p&gt;SQL&amp;gt; shutdown immediate;&lt;/p&gt;
&lt;p&gt;SQL&amp;gt; startup;&lt;/p&gt;
&lt;p&gt;以上，用戶正常使用.&lt;/p&gt;&lt;img src="http://sdt.sumida.com.cn:8080/cs/aggbug.aspx?PostID=9495" width="1" height="1"&gt;</content><author><name>Coolboy</name><uri>http://sdt.sumida.com.cn:8080/cs/members/Coolboy.aspx</uri></author><category term="ORA-12516" scheme="http://sdt.sumida.com.cn:8080/cs/blogs/coolboy/archive/tags/ORA-12516/default.aspx" /></entry><entry><title>iis6.0故障</title><link rel="alternate" type="text/html" href="http://sdt.sumida.com.cn:8080/cs/blogs/coolboy/archive/2008/06/20/iis6-0.aspx" /><id>http://sdt.sumida.com.cn:8080/cs/blogs/coolboy/archive/2008/06/20/iis6-0.aspx</id><published>2008-06-20T07:42:00Z</published><updated>2008-06-20T07:42:00Z</updated><content type="html">&lt;p&gt;IIS6.0服务器架站无法访问解决方案总结&lt;br /&gt;阅读: 时间:2004-10-4 5:07:25 来源:黑客基地 编辑:黑客基地　&lt;br /&gt;　虽然这些都是些简单的东西，但在IIS里很多网友经常问到，所以就总结了一下。&lt;br /&gt;&lt;br /&gt;--------------------------------------------------------------&lt;br /&gt;**************************************&lt;br /&gt;附：解决与“HTTP 500 - Internal Server Error”（HTTP 500 – 内部服务器错误）错误信息有关的问题&lt;br /&gt;http://support.microsoft.com/?kbid=311766&amp;amp;ln=zh-cn&lt;br /&gt;&lt;br /&gt;**************************************&lt;br /&gt;---------------------------------------------------------------------&lt;br /&gt;　　很多朋友在用IIS6架网站的时候遇到不少问题，而这些问题有些在过去的IIS5里面就遇到过，有些是新出来的，俺忙活了一下午，做了很多次试验，结合以前的排错经验，做出了这个总结，希望能给大家帮上忙&lt;br /&gt;&lt;br /&gt;　　如果你的服务器是2003的，它默认只支持.net,不支持asp所以须进行以下操作：&lt;br /&gt;&lt;br /&gt;打开iis6.0里面的本地计算机-&amp;gt;web服务扩展&lt;br /&gt;把active server pages 允许就行了&lt;br /&gt;&lt;br /&gt;问题1：未启用父路径&lt;br /&gt;&lt;br /&gt;症状举例：&lt;br /&gt;&lt;br /&gt;Server.MapPath() 错误 &amp;#39;ASP 0175 : 80004005&amp;#39;&lt;br /&gt;不允许的 Path 字符&lt;br /&gt;/0709/dqyllhsub/news/OpenDatabase.asp，行 4&lt;br /&gt;在 MapPath 的 Path 参数中不允许字符 &amp;#39;..&amp;#39;。&lt;br /&gt;&lt;br /&gt;原因分析：&lt;br /&gt;&lt;br /&gt;　　许多Web页面里要用到诸如../格式的语句（即回到上一层的页面，也就是父路径），而IIS6.0出于安全考虑，这一选项默认是关闭的。&lt;br /&gt;&lt;br /&gt;解决方法：&lt;br /&gt;&lt;br /&gt;在IIS中 属性-&amp;gt;主目录-&amp;gt;配置-&amp;gt;选项中。把”启用父路径“前面打上勾。确认刷新。&lt;br /&gt;&lt;br /&gt;问题2：ASP的Web扩展配置不当（同样适用于ASP.NET、CGI）&lt;br /&gt;&lt;br /&gt;症状举例：&lt;br /&gt;&lt;br /&gt;HTTP 错误 404 - 文件或目录未找到。&lt;br /&gt;&lt;br /&gt;原因分析：&lt;br /&gt;&lt;br /&gt;　　在IIS6.0中新增了web程序扩展这一选项，你可以在其中对ASP、ASP.NET、CGI、IDC等程序进行允许或禁止，默认情况下ASP等程序是禁止的。&lt;br /&gt;&lt;br /&gt;解决方法：&lt;br /&gt;&lt;br /&gt;　　在IIS中的Web服务扩展中选中Active Server Pages，点击“允许”。&lt;br /&gt;&lt;br /&gt;问题3：身份认证配置不当&lt;br /&gt;&lt;br /&gt;症状举例：&lt;br /&gt;&lt;br /&gt;HTTP 错误 401.2 - 未经授权：访问由于服务器配置被拒绝。&lt;br /&gt;&lt;br /&gt;原因分析：IIS 支持以下几种 Web 身份验证方法：&lt;br /&gt;&lt;br /&gt;匿名身份验证&lt;br /&gt;&lt;br /&gt;　　IIS 创建 IUSR_计算机名称 帐户（其中 计算机名称 是正在运行 IIS 的服务器的名称），用来在匿名用户请求 Web 内容时对他们进行身份验证。此帐户授予用户本地登录权限。你可以将匿名用户访问重置为使用任何有效的 Windows 帐户。&lt;br /&gt;&lt;br /&gt;基本身份验证&lt;br /&gt;&lt;br /&gt;　　使用基本身份验证可限制对 NTFS 格式 Web 服务器上的文件的访问。使用基本身份验证，用户必须输入凭据，而且访问是基于用户 ID 的。用户 ID 和密码都以明文形式在网络间进行发送。&lt;br /&gt;&lt;br /&gt;Windows 集成身份验证&lt;br /&gt;&lt;br /&gt;　　Windows 集成身份验证比基本身份验证安全，而且在用户具有 Windows 域帐户的内部网环境中能很好地发挥作用。在集成的 Windows 身份验证中，浏览器尝试使用当前用户在域登录过程中使用的凭据，如果尝试失败，就会提示该用户输入用户名和密码。如果你使用集成的 Windows 身份验证，则用户的密码将不传送到服务器。如果该用户作为域用户登录到本地计算机，则他在访问此域中的网络计算机时不必再次进行身份验证。&lt;br /&gt;&lt;br /&gt;摘要身份验证&lt;br /&gt;&lt;br /&gt;　　摘要身份验证克服了基本身份验证的许多缺点。在使用摘要身份验证时，密码不是以明文形式发送的。另外，你可以通过代理服务器使用摘要身份验证。摘要身份验证使用一种挑战/响应机制（集成 Windows 身份验证使用的机制），其中的密码是以加密形式发送的。&lt;br /&gt;&lt;br /&gt;.NET Passport 身份验证&lt;br /&gt;&lt;br /&gt;　　Microsoft .NET Passport 是一项用户身份验证服务，它允许单一签入安全性，可使用户在访问启用了 .NET Passport 的 Web 站点和服务时更加安全。启用了 .NET Passport 的站点会依靠 .NET Passport 中央服务器来对用户进行身份验证。但是，该中心服务器不会授权或拒绝特定用户访问各个启用了 .NET Passport 的站点。&lt;br /&gt;&lt;br /&gt;解决方法：&lt;br /&gt;&lt;br /&gt;　　根据需要配置不同的身份认证（一般为匿名身份认证，这是大多数站点使用的认证方法）。认证选项在IIS的属性-&amp;gt;安全性-&amp;gt;身份验证和访问控制下配置。&lt;br /&gt;&lt;br /&gt;问题4：IP限制配置不当&lt;br /&gt;&lt;br /&gt;症状举例：&lt;br /&gt;&lt;br /&gt;HTTP 错误 403.6 - 禁止访问：客户端的 IP 地址被拒绝。&lt;br /&gt;&lt;br /&gt;原因分析：&lt;br /&gt;&lt;br /&gt;　　IIS提供了IP限制的机制，你可以通过配置来限制某些IP不能访问站点，或者限制仅仅只有某些IP可以访问站点，而如果客户端在被你阻止的IP范围内，或者不在你允许的范围内，则会出现错误提示。&lt;br /&gt;&lt;br /&gt;解决方法：&lt;br /&gt;&lt;br /&gt;　　进入IIS的属性-&amp;gt;安全性-&amp;gt;IP地址和域名限制。如果要限制某些IP地址的访问，需要选择授权访问，点添加选择不允许的IP地址。反之则可以只允许某些IP地址的访问。&lt;br /&gt;&lt;br /&gt;问题5：IUSR账号被禁用&lt;br /&gt;&lt;br /&gt;症状举例：&lt;br /&gt;&lt;br /&gt;HTTP 错误 401.1 - 未经授权：访问由于凭据无效被拒绝。&lt;br /&gt;&lt;br /&gt;原因分析：&lt;br /&gt;&lt;br /&gt;　　由于用户匿名访问使用的账号是IUSR_机器名，因此如果此账号被禁用，将造成用户无法访问。&lt;br /&gt;&lt;br /&gt;解决办法：&lt;br /&gt;&lt;br /&gt;　　控制面板-&amp;gt;管理工具-&amp;gt;计算机管理-&amp;gt;本地用户和组，将IUSR_机器名账号启用。&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;问题6：NTFS权限设置不当&lt;br /&gt;&lt;br /&gt;症状举例：&lt;br /&gt;&lt;br /&gt;HTTP 错误 401.3 - 未经授权：访问由于 ACL 对所请求资源的设置被拒绝。&lt;br /&gt;&lt;br /&gt;原因分析：&lt;br /&gt;&lt;br /&gt;　　Web客户端的用户隶属于user组，因此，如果该文件的NTFS权限不足（例如没有读权限），则会导致页面无法访问。&lt;br /&gt;&lt;br /&gt;解决办法：&lt;br /&gt;&lt;br /&gt;　　进入该文件夹的安全选项卡，配置user的权限，至少要给读权限。关于NTFS权限设置这里不再馈述。&lt;br /&gt;&lt;br /&gt;问题7：IWAM账号不同步&lt;br /&gt;&lt;br /&gt;症状举例：&lt;br /&gt;&lt;br /&gt;HTTP 500 - 内部服务器错误&lt;br /&gt;&lt;br /&gt;原因分析：&lt;br /&gt;&lt;br /&gt;　　IWAM账号是安装IIS时系统自动建立的一个内置账号。IWAM账号建立后被Active Directory、IIS metabase数据库和COM+应用程序三方共同使用，账号密码被三方分别保存，并由操作系统负责这三方保存的IWAM密码的同步工作。系统对IWAM账号的密码同步工作有时会失效，导致IWAM账号所用密码不统一。&lt;br /&gt;&lt;br /&gt;解决办法：&lt;br /&gt;&lt;br /&gt;　　如果存在AD，选择开始-&amp;gt;程序-&amp;gt;管理工具-&amp;gt;Active Directory用户和计算机。为IWAM账号设置密码。&lt;br /&gt;&lt;br /&gt;运行c:\Inetpub\AdminScripts&amp;gt;adsutil SET w3svc/WAMUserPass +密码 同步IIS metabase数据库密码&lt;br /&gt;运行cscript c:\inetpub\adminscripts\synciwam.vbs -v 同步IWAM账号在COM+应用程序中的密码&lt;br /&gt;&lt;br /&gt;问题8：MIME设置问题导致某些类型文件无法下载（以ISO为例）&lt;br /&gt;&lt;br /&gt;症状举例：&lt;br /&gt;&lt;br /&gt;HTTP 错误 404 - 文件或目录未找到。&lt;br /&gt;&lt;br /&gt;原因分析：&lt;br /&gt;&lt;br /&gt;　　IIS6.0取消了对某些MIME类型的支持，例如ISO，致使客户端下载出错。&lt;br /&gt;&lt;br /&gt;解决方法：&lt;br /&gt;&lt;br /&gt;　　在IIS中 属性-&amp;gt;HTTP头-&amp;gt;MIME类型-&amp;gt;新建。在随后的对话框中，扩展名填入.ISO，MIME类型是application。&lt;br /&gt;&lt;br /&gt;　　另外，防火墙阻止，ODBC配置错误，Web服务器性能限制，线程限制等因素也是造成IIS服务器无法访问的可能原因，这里就不再一一馈述了。希望此帖能解决大家的大部分问题&lt;/p&gt;&lt;img src="http://sdt.sumida.com.cn:8080/cs/aggbug.aspx?PostID=9398" width="1" height="1"&gt;</content><author><name>Coolboy</name><uri>http://sdt.sumida.com.cn:8080/cs/members/Coolboy.aspx</uri></author></entry><entry><title>很多年不玩IIS了 ，装了6.0运行一些老的ASP 居然404错误 </title><link rel="alternate" type="text/html" href="http://sdt.sumida.com.cn:8080/cs/blogs/coolboy/archive/2008/06/20/iis-6-0-asp-404.aspx" /><id>http://sdt.sumida.com.cn:8080/cs/blogs/coolboy/archive/2008/06/20/iis-6-0-asp-404.aspx</id><published>2008-06-20T07:12:00Z</published><updated>2008-06-20T07:12:00Z</updated><content type="html">&lt;p&gt;很多年不玩IIS了 ，装了6.0运行一些老的ASP 居然404错误，搞了老半天 ，发现居然是IIS默认不支持ASP了 得的WEB扩展服务里面启用ASP &lt;/p&gt;&lt;img src="http://sdt.sumida.com.cn:8080/cs/aggbug.aspx?PostID=9396" width="1" height="1"&gt;</content><author><name>Coolboy</name><uri>http://sdt.sumida.com.cn:8080/cs/members/Coolboy.aspx</uri></author><category term="Asp.net" scheme="http://sdt.sumida.com.cn:8080/cs/blogs/coolboy/archive/tags/Asp.net/default.aspx" /><category term="iis" scheme="http://sdt.sumida.com.cn:8080/cs/blogs/coolboy/archive/tags/iis/default.aspx" /><category term="404" scheme="http://sdt.sumida.com.cn:8080/cs/blogs/coolboy/archive/tags/404/default.aspx" /></entry><entry><title>制造业的几个常用语</title><link rel="alternate" type="text/html" href="http://sdt.sumida.com.cn:8080/cs/blogs/coolboy/archive/2008/06/17/9354.aspx" /><id>http://sdt.sumida.com.cn:8080/cs/blogs/coolboy/archive/2008/06/17/9354.aspx</id><published>2008-06-17T01:41:00Z</published><updated>2008-06-17T01:41:00Z</updated><content type="html">&lt;p&gt;现品票 packing detail &lt;br /&gt;机种型号 Model Type &lt;br /&gt;生产日 Date of Manufacture &lt;br /&gt;数量 Quantitiy &lt;br /&gt;备考 For reference &lt;br /&gt;出货日: Date of shipment &lt;br /&gt;要因变更品 Manufacturing Factor Change &lt;br /&gt;&lt;/p&gt;&lt;img src="http://sdt.sumida.com.cn:8080/cs/aggbug.aspx?PostID=9354" width="1" height="1"&gt;</content><author><name>Coolboy</name><uri>http://sdt.sumida.com.cn:8080/cs/members/Coolboy.aspx</uri></author><category term="英文" scheme="http://sdt.sumida.com.cn:8080/cs/blogs/coolboy/archive/tags/_F1828765_/default.aspx" /><category term="制造业" scheme="http://sdt.sumida.com.cn:8080/cs/blogs/coolboy/archive/tags/_365220901A4E_/default.aspx" /></entry><entry><title>Unable to evaluate expression ... call stack</title><link rel="alternate" type="text/html" href="http://sdt.sumida.com.cn:8080/cs/blogs/coolboy/archive/2008/06/11/unable-to-evaluate-expression-call-stack.aspx" /><id>http://sdt.sumida.com.cn:8080/cs/blogs/coolboy/archive/2008/06/11/unable-to-evaluate-expression-call-stack.aspx</id><published>2008-06-11T02:27:00Z</published><updated>2008-06-11T02:27:00Z</updated><content type="html">&lt;h1 class="title"&gt;今天在调试project时有异常跳出:Unable to evaluate expression because the code is optimized or a native frame is on top of the call stack.&lt;/h1&gt;
&lt;h2 class="subTitle"&gt;SYMPTOMS&lt;/h2&gt;
&lt;div class="sbody"&gt;If you use the &lt;strong&gt;Response.End&lt;/strong&gt;, &lt;strong&gt;Response.Redirect&lt;/strong&gt;, or &lt;strong&gt;Server.Transfer&lt;/strong&gt; method, a &lt;strong&gt;ThreadAbortException&lt;/strong&gt; exception occurs. You can use a &lt;strong&gt;try-catch&lt;/strong&gt; statement to catch this exception. &lt;/div&gt;
&lt;h2 class="subTitle"&gt;CAUSE&lt;/h2&gt;
&lt;div class="sbody"&gt;The &lt;strong&gt;Response.End&lt;/strong&gt; method ends the page execution and shifts the execution to the &lt;strong&gt;Application_EndRequest&lt;/strong&gt; event in the application&amp;#39;s event pipeline. The line of code that follows &lt;strong&gt;Response.End&lt;/strong&gt; is not executed.&lt;br /&gt;&lt;br /&gt;This problem occurs in the &lt;strong&gt;Response.Redirect&lt;/strong&gt; and &lt;strong&gt;Server.Transfer&lt;/strong&gt; methods because both methods call &lt;strong&gt;Response.End&lt;/strong&gt; internally. &lt;/div&gt;
&lt;h2 class="subTitle"&gt;RESOLUTION&lt;/h2&gt;
&lt;div class="sbody"&gt;To work around this problem, use one of the following methods: 
&lt;table class="list ul" class="list ul"&gt;

&lt;tr&gt;
&lt;td class="bullet" class="bullet"&gt;•&lt;/td&gt;
&lt;td class="text" class="text"&gt;For &lt;strong&gt;Response.End&lt;/strong&gt;, call the &lt;strong&gt;HttpContext.Current.ApplicationInstance.CompleteRequest &lt;/strong&gt;method instead of &lt;strong&gt;Response.End&lt;/strong&gt; to bypass the code execution to the &lt;strong&gt;Application_EndRequest&lt;/strong&gt; event.&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="bullet" class="bullet"&gt;•&lt;/td&gt;
&lt;td class="text" class="text"&gt;For &lt;strong&gt;Response.Redirect&lt;/strong&gt;, use an overload, &lt;strong&gt;Response.Redirect(String url, bool endResponse)&lt;/strong&gt; that passes &lt;strong&gt;false&lt;/strong&gt; for the &lt;strong&gt;endResponse&lt;/strong&gt; parameter to suppress the internal call to &lt;strong&gt;Response.End&lt;/strong&gt;. For example: &lt;code&gt;&lt;pre class="code"&gt;&amp;nbsp;&amp;nbsp; Response.Redirect (&amp;quot;nextpage.aspx&amp;quot;, false);
      &lt;/pre&gt;&lt;/code&gt;&lt;font face="Times New Roman"&gt;If you use this workaround, the code that follows &lt;strong&gt;Response.Redirect&lt;/strong&gt; is executed.&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td class="bullet" class="bullet"&gt;•&lt;/td&gt;
&lt;td class="text" class="text"&gt;For &lt;strong&gt;Server.Transfer&lt;/strong&gt;, use the &lt;strong&gt;Server.Execute&lt;/strong&gt; method instead.&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;img src="http://sdt.sumida.com.cn:8080/cs/aggbug.aspx?PostID=9287" width="1" height="1"&gt;</content><author><name>Coolboy</name><uri>http://sdt.sumida.com.cn:8080/cs/members/Coolboy.aspx</uri></author><category term="call stack" scheme="http://sdt.sumida.com.cn:8080/cs/blogs/coolboy/archive/tags/call+stack/default.aspx" /><category term="evaluate expression" scheme="http://sdt.sumida.com.cn:8080/cs/blogs/coolboy/archive/tags/evaluate+expression/default.aspx" /></entry><entry><title>隐藏文件方法 </title><link rel="alternate" type="text/html" href="http://sdt.sumida.com.cn:8080/cs/blogs/coolboy/archive/2008/06/02/9188.aspx" /><id>http://sdt.sumida.com.cn:8080/cs/blogs/coolboy/archive/2008/06/02/9188.aspx</id><published>2008-06-02T13:32:00Z</published><updated>2008-06-02T13:32:00Z</updated><content type="html">&lt;p&gt;&lt;br /&gt;分享一下。。。要是觉得还不错的话。请顶一下。 &lt;br /&gt;&lt;br /&gt;首先，建一个文件夹，把你要隐藏的文件放在里面，AV啊什么的。 &lt;br /&gt;&lt;br /&gt;假设你建的文件夹叫 avxx &lt;br /&gt;&lt;br /&gt;然后呢，我们给这个文件夹加个扩展名（后缀） &lt;br /&gt;avxxaa.{20D04FE0-3AEA-1069-A2D8-08002B30309D} &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;把它放在桌面 &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;你会惊奇滴发现，原来的文件夹变成了 “我的电脑” &lt;br /&gt;&lt;br /&gt;嘿嘿。。。。~你怎么点它都只会进“我的电脑”了。。。。 &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;回收站： &lt;br /&gt;{645ff040-5081-101b-9f08-00aa002f954e} &lt;br /&gt;拔号网络： &lt;br /&gt;{992CFFA0-F557-101A-88EC-00DD010CCC48} &lt;br /&gt;打印机： &lt;br /&gt;{2227a280-3aea-1069-a2de-08002b30309d} &lt;br /&gt;控制面板： &lt;br /&gt;{21ec2020-3aea-1069-a2dd-08002b30309d} &lt;br /&gt;网上邻居： &lt;br /&gt;{208D2C60-3AEA-1069-A2D7-08002B30309D} &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;别人怎么点也看不到你里面的文件。 &lt;br /&gt;&lt;/p&gt;&lt;img src="http://sdt.sumida.com.cn:8080/cs/aggbug.aspx?PostID=9188" width="1" height="1"&gt;</content><author><name>Coolboy</name><uri>http://sdt.sumida.com.cn:8080/cs/members/Coolboy.aspx</uri></author><category term="隐藏文件" scheme="http://sdt.sumida.com.cn:8080/cs/blogs/coolboy/archive/tags/_9096CF858765F64E_/default.aspx" /></entry><entry><title>Unix/Linux中编辑文件的命令VI详细介绍</title><link rel="alternate" type="text/html" href="http://sdt.sumida.com.cn:8080/cs/blogs/coolboy/archive/2008/05/30/unix-linux-vi.aspx" /><id>http://sdt.sumida.com.cn:8080/cs/blogs/coolboy/archive/2008/05/30/unix-linux-vi.aspx</id><published>2008-05-30T02:11:00Z</published><updated>2008-05-30T02:11:00Z</updated><content type="html">&lt;h3&gt;Unix/Linux中编辑文件的命令VI详细介绍&lt;/h3&gt;
&lt;div class="t_msgfont" id="message154083"&gt;
&lt;div id="ad_thread3_1"&gt;&lt;/div&gt;-=-=-=-=-=&amp;gt; &lt;br /&gt;&lt;br /&gt;VI命令可以说是Unix/Linux世界里最常用的编辑文件的命令了，但是因为它的命令集众多，很多人都不习惯使用它，其实您只需要掌握基.令，然后加以灵活运用，就会发现它的优势，并会逐渐喜欢使用这种方法。本文旨在介绍VI的一些最常用命令和高级应用技巧。 &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;一、基.令介绍 &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;---- 1．光标命令 &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;k、j、h、l——上、下、左、右光标移动命令。虽然您可以在Linux中使用键盘右边的4个光标键，但是记住这4个命令还是非常有用的。这4个键正是右手在键盘上放置的基本位置。 &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;nG——跳转命令。n为行数，该命令立即使光标跳到指定行。 &lt;br /&gt;&lt;br /&gt;Ctrl G——光标所在位置的行数和列数报告。 &lt;br /&gt;&lt;br /&gt;w、b——使光标向前或向后跳过一个单词。 &lt;br /&gt;&lt;br /&gt;---- 2．编辑命令 &lt;br /&gt;&lt;br /&gt;i、a、r——在光标的前、后以及所在处插入字符命令(i=insert、a=append、r=replace)。 &lt;br /&gt;&lt;br /&gt;cw、dw——改变(置换)/删除光标所在处的单词的命令 (c=change、d=delete)。 &lt;br /&gt;&lt;br /&gt;x、d$、dd——删除一个字符、删除光标所在处到行尾的所有字符以及删除整行的命令。 &lt;br /&gt;&lt;br /&gt;---- 3．查找命令 &lt;br /&gt;&lt;br /&gt;---- /string、?string——从光标所在处向后或向前查找相应的字符串的命令。 &lt;br /&gt;&lt;br /&gt;---- 4．拷贝复制命令 &lt;br /&gt;&lt;br /&gt;---- yy、p——拷贝一行到剪贴板或取出剪贴板中内容的命令。 &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;二、常见问题及应用技巧 &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;---- 1．在一个新文件中读/etc/passwd中的内容，取出用户名部分。 &lt;br /&gt;&lt;br /&gt;---- vi file &lt;br /&gt;&lt;br /&gt;---- :r /etc/passwd 在打开的文件file中光标所在处读入/etc/passwd &lt;br /&gt;&lt;br /&gt;---- :%s/:.*//g 删除/etc/passwd中用户名后面的从冒号开始直到行尾的所有部分。 &lt;br /&gt;&lt;br /&gt;---- 您也可以在指定的行号后读入文件内容，例如使用命令“:3r /etc/passwd”从新文件的第3行开始读入 /etc/passwd的所有内容。 &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;---- 我们还可以使用以下方法删掉文件中所有的空行及以#开始的注释行。 &lt;br /&gt;&lt;br /&gt;---- #cat squid.conf.default | grep -v &amp;#39;^$&amp;#39; | grep -v &amp;#39;^#&amp;#39; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;---- 2．在打开一个文件编辑后才知道登录的用户对该文件没有写的权限，不能存盘，需要将所做修改存入临时文件。 &lt;br /&gt;&lt;br /&gt;---- vi file &lt;br /&gt;&lt;br /&gt;---- :w /tmp/1 保存所做的所有修改，也可以将其中的某一部分修改保存到临时文件，例如仅仅把第20～59行之间的内容存盘成文件/tmp/1，我们可以键入如下命令。 &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;---- vi file &lt;br /&gt;&lt;br /&gt;---- :20,59w /tmp/1 &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;---- 3．用VI编辑一个文件，但需要删除大段的内容。 &lt;br /&gt;&lt;br /&gt;---- 首先利用编辑命令“vi file”打开文件，然后将光标移到需要删除的行处按Ctrl G显示行号，再到结尾处再按Ctrl G，显示文件结尾的行号。 &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;---- :23,1045d 假定2次得到的行号为23和1045，则把这期间的内容全删除，也可以在要删除的开始行和结束行中用ma、mb命令标记，然后利用“:&amp;#39;a,&amp;#39;bd”命令删除。 &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;---- 4．在整个文件的各行或某几行的行首或行尾加一些字符串。 &lt;br /&gt;&lt;br /&gt;---- vi file &lt;br /&gt;&lt;br /&gt;---- :3,$s/^/some string / 在文件的第一行至最后一行的行首插入“some string”。 &lt;br /&gt;&lt;br /&gt;---- :%s/$/some string/g 在整个文件每一行的行尾添加“some string”。 &lt;br /&gt;&lt;br /&gt;---- :%s/string1/string2/g 在整个文件中替换“string1”成“string2”。 &lt;br /&gt;&lt;br /&gt;---- :3,7s/string1/string2/ 仅替换文件中的第3行到第7行中的“string1”成“string2”。 &lt;br /&gt;&lt;br /&gt;---- 注意: 其中s为substitute，%表示所有行，g表示global。 &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;---- 5．同时编辑2个文件，拷贝一个文件中的文本并粘贴到另一个文件中。 &lt;br /&gt;&lt;br /&gt;---- vi file1 file2 &lt;br /&gt;&lt;br /&gt;---- yy 在文件1的光标处拷贝所在行 &lt;br /&gt;&lt;br /&gt;---- :n 切换到文件2 (n=next) &lt;br /&gt;&lt;br /&gt;---- p 在文件2的光标所在处粘贴所拷贝的行 &lt;br /&gt;&lt;br /&gt;---- :n 切换回文件1 &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;---- 6．替换文件中的路径。 &lt;br /&gt;&lt;br /&gt;---- 使用命令“:%s#/usr/bin#/bin#g”可以把文件中所有路径/usr/bin换成/bin。也可以使用命令“:%s//usr/bin//bin/g”实现，其中“”是转义字符，表明其后的“/”字符是具有实际意义的字符，不是分隔符。&lt;/div&gt;&lt;img src="http://sdt.sumida.com.cn:8080/cs/aggbug.aspx?PostID=9150" width="1" height="1"&gt;</content><author><name>Coolboy</name><uri>http://sdt.sumida.com.cn:8080/cs/members/Coolboy.aspx</uri></author><category term="VI" scheme="http://sdt.sumida.com.cn:8080/cs/blogs/coolboy/archive/tags/VI/default.aspx" /></entry><entry><title>linux的rar命令 安装和使用</title><link rel="alternate" type="text/html" href="http://sdt.sumida.com.cn:8080/cs/blogs/coolboy/archive/2008/05/28/linux-rar.aspx" /><id>http://sdt.sumida.com.cn:8080/cs/blogs/coolboy/archive/2008/05/28/linux-rar.aspx</id><published>2008-05-28T06:31:00Z</published><updated>2008-05-28T06:31:00Z</updated><content type="html">&lt;p&gt;关于&lt;a target="_self"&gt;&lt;u&gt;&lt;strong&gt;linux&lt;/strong&gt;&lt;/u&gt;&lt;/a&gt;的&lt;a target="_self"&gt;&lt;u&gt;&lt;strong&gt;rar&lt;/strong&gt;&lt;/u&gt;&lt;/a&gt;命令的安装和使用, 某些时候还是有这个必要的, 比如某些客户已经用ftp把一个超大的rar文件传了上去, 要求你去解压的时候&lt;/p&gt;
&lt;p&gt;首先下载rarlinux-3.7.1.tar.gz&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.google.cn/search?complete=1&amp;amp;hl=zh-CN&amp;amp;newwindow=1&amp;amp;q=rarlinux-3.7.1.tar.gz+intitle%3Aindex&amp;amp;meta=&amp;amp;aq=f" target="_blank"&gt;点击下载&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;2然后解压&lt;br /&gt;# tar xvfz&amp;nbsp;&amp;nbsp;&amp;nbsp; rarlinux-3.7.b1.tar.gz&lt;br /&gt;3安装&lt;br /&gt;# make install&lt;br /&gt;mkdir -p /usr/local/bin&lt;br /&gt;mkdir -p /usr/local/lib&lt;br /&gt;cp rar unrar /usr/local/bin&lt;br /&gt;cp rarfiles.lst /etc&lt;br /&gt;cp default.sfx /usr/local/lib&lt;br /&gt;4解压文件：&lt;/p&gt;
&lt;p&gt;# rar x test.rar /&lt;br /&gt;rar: /lib/tls/libc.so.6: version `GLIBC_2.4&amp;#39; not found (required by rar)&lt;/p&gt;
&lt;p&gt;5需要GLIBC_2.4。如果没有GLIBC_2.4可以&lt;/p&gt;
&lt;p&gt;# cp ./rar/rar_static /usr/local/bin/rar&lt;/p&gt;
&lt;p&gt;rar_static 版是 static linking 版本，不会有 glibc 程式库版本不和的问题。&lt;/p&gt;
&lt;p&gt;再次解压：&lt;br /&gt;[root@xxxx ~]# rar x test.rar /&lt;br /&gt;RAR 3.71&amp;nbsp;&amp;nbsp; Copyright (c) 1993-2007 Alexander Roshal&amp;nbsp;&amp;nbsp; 20 Sep 2007&lt;br /&gt;Shareware version&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Type RAR -? &lt;a target="_self"&gt;&lt;u&gt;&lt;strong&gt;for&lt;/strong&gt;&lt;/u&gt;&lt;/a&gt; help&lt;/p&gt;
&lt;p&gt;Extracting from test.rar&lt;br /&gt;Extracting&amp;nbsp; /test.txt&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; OK&lt;br /&gt;All OK&lt;/p&gt;
&lt;p&gt;6打包&lt;br /&gt;rar a install.rar ./install.log&lt;/p&gt;
&lt;p&gt;这样就可以了&lt;/p&gt;&lt;img src="http://sdt.sumida.com.cn:8080/cs/aggbug.aspx?PostID=9126" width="1" height="1"&gt;</content><author><name>Coolboy</name><uri>http://sdt.sumida.com.cn:8080/cs/members/Coolboy.aspx</uri></author><category term="Linux" scheme="http://sdt.sumida.com.cn:8080/cs/blogs/coolboy/archive/tags/Linux/default.aspx" /></entry><entry><title>Linux菜鸟入门级命令3344</title><link rel="alternate" type="text/html" href="http://sdt.sumida.com.cn:8080/cs/blogs/coolboy/archive/2008/05/28/linux-3344.aspx" /><id>http://sdt.sumida.com.cn:8080/cs/blogs/coolboy/archive/2008/05/28/linux-3344.aspx</id><published>2008-05-28T05:35:00Z</published><updated>2008-05-28T05:35:00Z</updated><content type="html">&lt;p&gt;1. man 对你熟悉或不熟悉的命令提供帮助解释&lt;br /&gt;&lt;br /&gt;eg:man ls 就可以查看ls相关的用法&lt;br /&gt;&lt;br /&gt;注：按q键或者ctrl+c退出，在linux下可以使用ctrl+c终止当前程序运行。&lt;br /&gt;&lt;br /&gt;2. ls 查看目录或者文件的属*，列举出任一目录下面的文件&lt;br /&gt;&lt;br /&gt;eg: ls /usr/man&lt;br /&gt;&lt;br /&gt;ls -l&lt;br /&gt;&lt;br /&gt;a.d表示目录(directory)，如果是一个&amp;quot;-&amp;quot;表示是文件，如果是l则表示是一个连接文件(link)&lt;br /&gt;&lt;br /&gt;b.表示文件或者目录许可权限.分别用可读(r)，可写(w)，可运行(x)。&lt;br /&gt;&lt;br /&gt;3. cp 拷贝文件&lt;br /&gt;&lt;br /&gt;eg: cp filename1 filename2 //把filename1拷贝成filename2 &lt;br /&gt;&lt;br /&gt;cp 1.c netseek/2.c //将1.c拷到netseek目录下命名为2.c &lt;br /&gt;&lt;br /&gt;4. rm 删除文件和目录&lt;br /&gt;&lt;br /&gt;eg: rm 1.c //将1.c这个文件删除&lt;br /&gt;&lt;br /&gt;5. mv 移走目录或者改文件名&lt;br /&gt;&lt;br /&gt;eg: mv filename1 filename2 //将filename1 改名为filename2&lt;br /&gt;&lt;br /&gt;mv qib.tgz ../qib.tgz //移到上一级目录&lt;br /&gt;&lt;br /&gt;6. cd 改变当前目录 pwd 查看当前所在目录完整路径&lt;br /&gt;&lt;br /&gt;eg: pwd //查看当前所在目录路径&lt;br /&gt;&lt;br /&gt;cd netseek //进入netseek这个目录&lt;br /&gt;&lt;br /&gt;cd //退出当前目录&lt;br /&gt;&lt;br /&gt;7. cat，more命令&lt;br /&gt;&lt;br /&gt;将某个文件的内容显示出来。两个命令所不同的是:cat把文件内容一直打印出来，而 more则分屏显示&lt;br /&gt;&lt;br /&gt;eg; cat&amp;gt;1.c //就可以把代码粘帖到1.c文件里，按ctrl+d 保存代码。&lt;br /&gt;&lt;br /&gt;cat 1.c 或more 1.c //都可以查看里面的内容。&lt;br /&gt;&lt;br /&gt;gcc -o 1 1.c //将1.c编译成.exe文件，我们可以用此命编译出代码。&lt;br /&gt;&lt;br /&gt;8.chmod 命令 权限修改 用法：chmod 一位8进制数 filename。&lt;br /&gt;&lt;br /&gt;eg: chmod u+x filenmame //只想给自己运行，别人只能读&lt;br /&gt;&lt;br /&gt;//u表示文件主人， g 表示文件文件所在组。 o 表示其他人 ;r 表可读，w 表可写，x 表可以运行&lt;br /&gt;&lt;br /&gt;chmod g+x filename //同组的人来执行&lt;br /&gt;&lt;br /&gt;9. clear，date命令&lt;br /&gt;&lt;br /&gt;clear:清屏，相当与DOS下的cls;date:显示当前时间。&lt;br /&gt;&lt;br /&gt;10. mount 加载一个硬件设备&lt;br /&gt;&lt;br /&gt;用法:mount [参数] 要加载的设备 载入点&lt;br /&gt;&lt;br /&gt;eg: mount /dev/cdrom&lt;br /&gt;&lt;br /&gt;cd /mnt/cdrom //进入光盘目录&lt;br /&gt;&lt;br /&gt;11. su 在不退出登陆的情况下，切换到另外一个人的身份&lt;br /&gt;&lt;br /&gt;用法: su -l 用户名(如果用户名缺省，则切换到root状态)&lt;br /&gt;&lt;br /&gt;eg:su -l netseek (切换到netseek这个用户，将提示输入密码)&lt;br /&gt;&lt;br /&gt;12.whoami，whereis，which，id&lt;br /&gt;&lt;br /&gt;//whoami:确认自己身份&lt;br /&gt;&lt;br /&gt;//whereis:查询命令所在目录以及帮助文档所在目录&lt;br /&gt;&lt;br /&gt;//which:查询该命令所在目录(类似whereis)&lt;br /&gt;&lt;br /&gt;//id:打印出自己的UID以及GID。(UID:用户身份唯一标识。GID:用户组身份唯一标识。每一个用户只能有一个唯一的UID和 GID)&lt;br /&gt;&lt;br /&gt;eg: whoami //显示你自已登陆的用户名&lt;br /&gt;&lt;br /&gt;whereis bin 显示bin所在的目录，将显示为：/usr/local/bin &lt;br /&gt;&lt;br /&gt;which bin &lt;br /&gt;&lt;br /&gt;13. grep，find&lt;br /&gt;&lt;br /&gt;grep:文本内容搜索;find:文件或者目录名以及权限属主等匹配搜索&lt;br /&gt;&lt;br /&gt;eg: grep success * 　　 /*查找当前目录下面所有文件里面含有success字符的文件&lt;br /&gt;&lt;br /&gt;14. kill 可以杀死某个正在进行或者已经是dest状态的进程&lt;br /&gt;&lt;br /&gt;eg; ps ax&lt;br /&gt;&lt;br /&gt;15. passwd 可以设置口令&lt;br /&gt;&lt;br /&gt;16. history 用户用过的命令&lt;br /&gt;&lt;br /&gt;eg: history //可以显示用户过去使用的命令&lt;br /&gt;&lt;br /&gt;17. !! 执行最近一次的命令&lt;br /&gt;&lt;br /&gt;18. mkdir命令&lt;br /&gt;&lt;br /&gt;eg: mkdir netseek //创建netseek这个目录&lt;br /&gt;&lt;br /&gt;19. tar 解压命令&lt;br /&gt;&lt;br /&gt;eg: tar -zxvf nmap-3.45.tgz //将这个解压到nmap-3.45这个目录里&lt;br /&gt;&lt;br /&gt;20. finger 可以让使用者查询一些其他使用者的资料 &lt;br /&gt;&lt;br /&gt;eg: finger //查看所用用户的使用资料&lt;br /&gt;&lt;br /&gt;finger root //查看root的资料&lt;br /&gt;&lt;/p&gt;&lt;img src="http://sdt.sumida.com.cn:8080/cs/aggbug.aspx?PostID=9125" width="1" height="1"&gt;</content><author><name>Coolboy</name><uri>http://sdt.sumida.com.cn:8080/cs/members/Coolboy.aspx</uri></author><category term="linux3234" scheme="http://sdt.sumida.com.cn:8080/cs/blogs/coolboy/archive/tags/linux3234/default.aspx" /></entry><entry><title>Linux命令集2</title><link rel="alternate" type="text/html" href="http://sdt.sumida.com.cn:8080/cs/blogs/coolboy/archive/2008/05/28/linux-2.aspx" /><id>http://sdt.sumida.com.cn:8080/cs/blogs/coolboy/archive/2008/05/28/linux-2.aspx</id><published>2008-05-28T05:33:00Z</published><updated>2008-05-28T05:33:00Z</updated><content type="html">&lt;div class="article"&gt;
&lt;div class="titlepage"&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h1 class="title"&gt;&lt;a class="" title="id2875166" name="id2875166"&gt;&lt;/a&gt;Linux命令集&lt;/h1&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div class="author"&gt;
&lt;h3 class="author"&gt;&lt;span class="firstname"&gt;整理：Jims of &lt;a href="http://www.ringkee.com/" target="_top"&gt;肥肥世家&lt;/a&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;div class="affiliation"&gt;
&lt;div class="address"&gt;
&lt;p&gt;&lt;font face="Courier New"&gt;&amp;lt;&lt;/font&gt;&lt;a href="mailto:jims.yang@gmail.com"&gt;&lt;font face="Courier New"&gt;jims.yang@gmail.com&lt;/font&gt;&lt;/a&gt;&lt;font face="Courier New"&gt;&amp;gt;&lt;/font&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div&gt;
&lt;p class="copyright"&gt;Copyright © 2004 本文遵从GNU 的自由文档许可证(Free Document License)的条款，欢迎转载、修改、散布。&lt;/p&gt;&lt;/div&gt;
&lt;div&gt;
&lt;p class="pubdate"&gt;发布时间:2004年7月20日&lt;/p&gt;&lt;/div&gt;
&lt;div&gt;
&lt;p class="pubdate"&gt;更新时间:2005年03月16日&lt;/p&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div class="abstract"&gt;
&lt;p class="title"&gt;&lt;b&gt;Abstract&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;在安装、使用和维护Linux系统中，我们都会用到大量的命令，而且命令参数繁多，这也可说是linux系统的一大特色，所以经常会忘记。这里记录我使用Linux当中用到过的命令，用于备查。&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;
&lt;hr /&gt;
&lt;/div&gt;
&lt;div class="toc"&gt;
&lt;p&gt;&lt;b&gt;Table of Contents&lt;/b&gt;&lt;/p&gt;

&lt;span class="sect1"&gt;&lt;a href="http://man.lupaworld.com/content/manage/ringkee/command.htm#id2875121"&gt;1. 最常用的命令列表&lt;/a&gt;&lt;/span&gt; 
&lt;span class="sect1"&gt;&lt;a href="http://man.lupaworld.com/content/manage/ringkee/command.htm#id2811845"&gt;2. chmod----改变一个或多个文件的存取模式(mode)&lt;/a&gt;&lt;/span&gt; 
&lt;span class="sect1"&gt;&lt;a href="http://man.lupaworld.com/content/manage/ringkee/command.htm#id2810443"&gt;3. chgrp----修改文件或目录的所属组&lt;/a&gt;&lt;/span&gt; 
&lt;span class="sect1"&gt;&lt;a href="http://man.lupaworld.com/content/manage/ringkee/command.htm#id2861424"&gt;4. chown----设置一个或多个文件或目录的属主身份&lt;/a&gt;&lt;/span&gt; 
&lt;span class="sect1"&gt;&lt;a href="http://man.lupaworld.com/content/manage/ringkee/command.htm#id2861661"&gt;5. date----显示、修改系统时间&lt;/a&gt;&lt;/span&gt; 
&lt;span class="sect1"&gt;&lt;a href="http://man.lupaworld.com/content/manage/ringkee/command.htm#id2861686"&gt;6. df-----显示已安装文件系统的磁盘容量状态&lt;/a&gt;&lt;/span&gt; 
&lt;span class="sect1"&gt;&lt;a href="http://man.lupaworld.com/content/manage/ringkee/command.htm#id2861714"&gt;7. fdisk----分区表查询工具&lt;/a&gt;&lt;/span&gt; 
&lt;span class="sect1"&gt;&lt;a href="http://man.lupaworld.com/content/manage/ringkee/command.htm#id2861750"&gt;8. hdparm----硬盘管理&lt;/a&gt;&lt;/span&gt; 
&lt;span class="sect1"&gt;&lt;a href="http://man.lupaworld.com/content/manage/ringkee/command.htm#id2861772"&gt;9. ln-----为文件建立别名&lt;/a&gt;&lt;/span&gt; 
&lt;span class="sect1"&gt;&lt;a href="http://man.lupaworld.com/content/manage/ringkee/command.htm#id2861819"&gt;10. shutdown-----终止所有进程序，关闭计算机。&lt;/a&gt;&lt;/span&gt; 
&lt;span class="sect1"&gt;&lt;a href="http://man.lupaworld.com/content/manage/ringkee/command.htm#id2861848"&gt;11. sleep-----执行另一个命令之前等待的时间&lt;/a&gt;&lt;/span&gt; 
&lt;span class="sect1"&gt;&lt;a href="http://man.lupaworld.com/content/manage/ringkee/command.htm#id2861880"&gt;12. swapon/swapoff-----启动和关闭交换分区&lt;/a&gt;&lt;/span&gt; 
&lt;span class="sect1"&gt;&lt;a href="http://man.lupaworld.com/content/manage/ringkee/command.htm#id2861900"&gt;13. tune2fs-----调整Linux第二扩展文件系统的参数&lt;/a&gt;&lt;/span&gt; 
&lt;span class="sect1"&gt;&lt;a href="http://man.lupaworld.com/content/manage/ringkee/command.htm#id2861925"&gt;14. uniq----过滤、统计、删除重复行&lt;/a&gt;&lt;/span&gt; 
&lt;span class="sect1"&gt;&lt;a href="http://man.lupaworld.com/content/manage/ringkee/command.htm#id2861954"&gt;15. wc-----输出每个文件中的字符数、单词数及行数。&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class="sect1"&gt;
&lt;div class="titlepage"&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 class="title" style="CLEAR:both;"&gt;&lt;a class="" title="id2875121" name="id2875121"&gt;&lt;/a&gt;1.&amp;nbsp;最常用的命令列表&lt;/h2&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;下面列出十个在使用linux过程中使用频率最高的命令。这里只作简单介绍，具体用法请参考后面内容。&lt;/p&gt;
&lt;div class="itemizedlist"&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;cat，显示文件内容。&lt;/p&gt;
&lt;li&gt;
&lt;p&gt;cd，改变目录路径。&lt;/p&gt;
&lt;li&gt;
&lt;p&gt;cp，复制文件。&lt;/p&gt;
&lt;li&gt;
&lt;p&gt;find，查找文件。&lt;/p&gt;
&lt;li&gt;
&lt;p&gt;grep，搜索、过滤信息。&lt;/p&gt;
&lt;li&gt;
&lt;p&gt;ls，列出目录信息。&lt;/p&gt;
&lt;li&gt;
&lt;p&gt;more，分页显示。&lt;/p&gt;
&lt;li&gt;
&lt;p&gt;rm，删除文件或目录。&lt;/p&gt;
&lt;li&gt;
&lt;p&gt;vi，调用vi文本编辑器。&lt;/p&gt;
&lt;li&gt;
&lt;p&gt;who，显示登录用户信息。&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class="sect1"&gt;
&lt;div class="titlepage"&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 class="title" style="CLEAR:both;"&gt;&lt;a class="" title="id2811845" name="id2811845"&gt;&lt;/a&gt;2.&amp;nbsp;chmod----改变一个或多个文件的存取模式(mode)&lt;/h2&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;chmod [options] mode files&lt;/p&gt;
&lt;p&gt;只能文件属主或特权用户才能使用该功能来改变文件存取模式。mode可以是数字形式或以who opcode permission形式表示。who是可选的，默认是a(所有用户)。只能选择一个opcode(操作码)。可指定多个mode，以逗号分开。&lt;/p&gt;
&lt;div class="itemizedlist"&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;options：&lt;/p&gt;
&lt;div class="variablelist"&gt;

&lt;span class="term"&gt;-c，--changes&lt;/span&gt; 

&lt;p&gt;只输出被改变文件的信息&lt;/p&gt;
&lt;span class="term"&gt;-f，--silent，--quiet&lt;/span&gt; 

&lt;p&gt;当chmod不能改变文件模式时，不通知文件的用户&lt;/p&gt;
&lt;span class="term"&gt;--help&lt;/span&gt; 

&lt;p&gt;输出帮助信息。&lt;/p&gt;
&lt;span class="term"&gt;-R，--recursive&lt;/span&gt; 

&lt;p&gt;可递归遍历子目录，把修改应到目录下所有文件和子目录&lt;/p&gt;
&lt;span class="term"&gt;--reference=filename&lt;/span&gt; 

&lt;p&gt;参照filename的权限来设置权限&lt;/p&gt;
&lt;span class="term"&gt;-v，--verbose&lt;/span&gt; 

&lt;p&gt;无论修改是否成功，输出每个文件的信息&lt;/p&gt;
&lt;span class="term"&gt;--version&lt;/span&gt; 

&lt;p&gt;输出版本信息。&lt;/p&gt;&lt;/div&gt;
&lt;li&gt;
&lt;p&gt;who&lt;/p&gt;
&lt;div class="variablelist"&gt;

&lt;span class="term"&gt;u&lt;/span&gt; 

&lt;p&gt;用户&lt;/p&gt;
&lt;span class="term"&gt;g&lt;/span&gt; 

&lt;p&gt;组&lt;/p&gt;
&lt;span class="term"&gt;o&lt;/span&gt; 

&lt;p&gt;其它&lt;/p&gt;
&lt;span class="term"&gt;a&lt;/span&gt; 

&lt;p&gt;所有用户(默认)&lt;/p&gt;&lt;/div&gt;
&lt;li&gt;
&lt;p&gt;opcode&lt;/p&gt;
&lt;div class="variablelist"&gt;

&lt;span class="term"&gt;+&lt;/span&gt; 

&lt;p&gt;增加权限&lt;/p&gt;
&lt;span class="term"&gt;-&lt;/span&gt; 

&lt;p&gt;删除权限&lt;/p&gt;
&lt;span class="term"&gt;=&lt;/span&gt; 

&lt;p&gt;重新分配权限&lt;/p&gt;&lt;/div&gt;
&lt;p&gt;permission&lt;/p&gt;
&lt;div class="variablelist"&gt;

&lt;span class="term"&gt;r&lt;/span&gt; 

&lt;p&gt;读&lt;/p&gt;
&lt;span class="term"&gt;w&lt;/span&gt; 

&lt;p&gt;写&lt;/p&gt;
&lt;span class="term"&gt;x&lt;/span&gt; 

&lt;p&gt;执行&lt;/p&gt;
&lt;span class="term"&gt;s&lt;/span&gt; 

&lt;p&gt;设置用户(或组)的ID号&lt;/p&gt;
&lt;span class="term"&gt;t&lt;/span&gt; 

&lt;p&gt;设置粘着位(sticky bit)，防止文件或目录被非属主删除&lt;/p&gt;
&lt;span class="term"&gt;u&lt;/span&gt; 

&lt;p&gt;用户的当前权限&lt;/p&gt;
&lt;span class="term"&gt;g&lt;/span&gt; 

&lt;p&gt;组的当前权限&lt;/p&gt;
&lt;span class="term"&gt;o&lt;/span&gt; 

&lt;p&gt;其他用户的当前权限&lt;/p&gt;&lt;/div&gt;
&lt;li&gt;
&lt;p&gt;作为选择，我们多数用三位八进制数字的形式来表示权限，第一位指定属主的权限，第二位指定组权限，第三位指定其他用户的权限，每位通过4(读)、2(写)、1(执行)三种数值的和来确定权限。如6(4+2)代表有读写权，7(4+2+1)有读、写和执行的权限。&lt;/p&gt;
&lt;li&gt;
&lt;p&gt;还可设置第四位，它位于三位权限序列的前面，第四位数字取值是4，2，1，代表意思如下：&lt;/p&gt;
&lt;div class="itemizedlist"&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;4，执行时设置用户ID，用于授权给基于文件属主的进程，而不是给创建此进程的用户。&lt;/p&gt;
&lt;li&gt;
&lt;p&gt;2，执行时设置用户组ID，用于授权给基于文件所在组的进程，而不是基于创建此进程的用户。&lt;/p&gt;
&lt;li&gt;
&lt;p&gt;1，设置粘着位。&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;
&lt;li&gt;
&lt;p&gt;实例：&lt;/p&gt;&lt;pre class="screen"&gt;$ chmod u+x file                给file的属主增加执行权限
$ chmod 751 file                给file的属主分配读、写、执行(7)的权限，给file的所在组分配读、执行(5)的权限，给其他用户分配执行(1)的权限
$ chmod u=rwx,g=rx,o=x file    上例的另一种形式
$ chmod =r file                为所有用户分配读权限
$ chmod 444 file               同上例
$ chmod a-wx,a+r               同上例
$ chmod -R u+r directory       递归地给directory目录下所有文件和子目录的属主分配读的权限
$ chmod 4755                   设置用ID，给属主分配读、写和执行权限，给组和其他用户分配读、执行的权限。
&lt;/pre&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class="sect1"&gt;
&lt;div class="titlepage"&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 class="title" style="CLEAR:both;"&gt;&lt;a class="" title="id2810443" name="id2810443"&gt;&lt;/a&gt;3.&amp;nbsp;chgrp----修改文件或目录的所属组&lt;/h2&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;chgrp [options] newgroup files/directorys&lt;/p&gt;
&lt;p&gt;组名可以用组的ID号，也可用/etc/group中的组名。只有文件的属主或特权用户(root)才可改变它的组。&lt;/p&gt;
&lt;div class="itemizedlist"&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;options：&lt;/p&gt;
&lt;div class="variablelist"&gt;

&lt;span class="term"&gt;-c，--changes&lt;/span&gt; 

&lt;p&gt;只输出被改变文件的信息&lt;/p&gt;
&lt;span class="term"&gt;-f，--silent，--quiet&lt;/span&gt; 

&lt;p&gt;当不能改变文件组属性时，不通知文件的用户&lt;/p&gt;
&lt;span class="term"&gt;--help&lt;/span&gt; 

&lt;p&gt;输出帮助信息。&lt;/p&gt;
&lt;span class="term"&gt;-R，--recursive&lt;/span&gt; 

&lt;p&gt;可递归遍历子目录，把修改应到目录下所有文件和子目录&lt;/p&gt;
&lt;span class="term"&gt;--reference=filename&lt;/span&gt; 

&lt;p&gt;参照filename的组信息来设置当前文件的组&lt;/p&gt;
&lt;span class="term"&gt;-v，--verbose&lt;/span&gt; 

&lt;p&gt;输出详细信息&lt;/p&gt;
&lt;span class="term"&gt;--version&lt;/span&gt; 

&lt;p&gt;输出版本信息。&lt;/p&gt;&lt;/div&gt;
&lt;li&gt;
&lt;p&gt;实例：&lt;/p&gt;&lt;pre class="screen"&gt;$ chgrp root test           把test的所属组更改root组
$ chgrp -R mysql test       递归地把test目录及该目录下所有文件和子目录的组属性设置成mysql
$ chgrp root *              把当前目录中所有文件的组属性设置成root
&lt;/pre&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class="sect1"&gt;
&lt;div class="titlepage"&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 class="title" style="CLEAR:both;"&gt;&lt;a class="" title="id2861424" name="id2861424"&gt;&lt;/a&gt;4.&amp;nbsp;chown----设置一个或多个文件或目录的属主身份&lt;/h2&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;chown [options] newowner files/directorys&lt;/p&gt;
&lt;p&gt;新的属主可以是用户的ID号，也可以是/etc/passwd里的登录名。chown也可接受这样的形式：newowner:newgroup或newowner.newgroup。同时改变所属组的属性。如果句点和冒号后没有组名，则组改变为新属主的组。只有文件或目录的当前属主才有权改变它的属性。&lt;/p&gt;
&lt;div class="itemizedlist"&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;options：&lt;/p&gt;
&lt;div class="variablelist"&gt;

&lt;span class="term"&gt;-c，--changes&lt;/span&gt; 

&lt;p&gt;只输出被改变文件的信息&lt;/p&gt;
&lt;span class="term"&gt;--dereference&lt;/span&gt; 

&lt;p&gt;跟踪符号链接&lt;/p&gt;
&lt;span class="term"&gt;-h，--no-dereference&lt;/span&gt; 

&lt;p&gt;改变每一个符号链的属主身份，而不是被引用文件的属主身份&lt;/p&gt;
&lt;span class="term"&gt;-f，--silent，--quiet&lt;/span&gt; 

&lt;p&gt;当不能改变文件属主属性时，不通知文件的用户&lt;/p&gt;
&lt;span class="term"&gt;--help&lt;/span&gt; 

&lt;p&gt;输出帮助信息。&lt;/p&gt;
&lt;span class="term"&gt;-R，--recursive&lt;/span&gt; 

&lt;p&gt;可递归遍历子目录，把修改应到目录下所有文件和子目录&lt;/p&gt;
&lt;span class="term"&gt;--reference=filename&lt;/span&gt; 

&lt;p&gt;把属主改变成filename文件的属主&lt;/p&gt;
&lt;span class="term"&gt;-v，--verbose&lt;/span&gt; 

&lt;p&gt;输出详细信息&lt;/p&gt;
&lt;span class="term"&gt;--version&lt;/span&gt; 

&lt;p&gt;输出版本信息。&lt;/p&gt;&lt;/div&gt;
&lt;li&gt;
&lt;p&gt;实例：&lt;/p&gt;&lt;pre class="screen"&gt;$ chown  root test                       把test文件的属主改进root
$ chown -R root test_directory           递归地把test_directory目录下的所有文件属主改成root
$ chown --dereference root test_link     把test_link链接的原文件属主改成root，链接文件属主不变
$ chown --no-dereference root test_link  把test_link的链接文件属主改成root，原文件属主不变
&lt;/pre&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div class="sect1"&gt;
&lt;div class="titlepage"&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 class="title" style="CLEAR:both;"&gt;&lt;a class="" title="id2861661" name="id2861661"&gt;&lt;/a&gt;5.&amp;nbsp;date----显示、修改系统时间&lt;/h2&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;date [options][+format][date]&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;pre class="screen"&gt;$ date -s 06/09/2004	修改日期（按月日年格式）
$ date -s 13:56:00	修改时间（按时分秒格式）
$ date -r test		显示test文件最后一次的修改时间
$ date +&amp;#39;%Y-%m-%d&amp;#39;	以yyyy-mm-dd格式显示日期,其它格式请参考帮助
$ clock -r		查询BIOS时间
$ clock -w		把修改后的时间写回BIOS
			  
		  &lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/div&gt;
&lt;div class="sect1"&gt;
&lt;div class="titlepage"&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 class="title" style="CLEAR:both;"&gt;&lt;a class="" title="id2861686" name="id2861686"&gt;&lt;/a&gt;6.&amp;nbsp;df-----显示已安装文件系统的磁盘容量状态&lt;/h2&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;df [options][name]&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;pre class="screen"&gt;$ df -h		以友好的格式输出所有已安装文件系统的磁盘容量状态
$ df -m /home	以M为单位输出home目录的磁盘容量状态
$ df -k		以K为单位输出所有已安装文件系统的磁盘容量状态
$ df -i		报告空闲的、用过的或部份用过的（百份比）索引节点
$ df -t ext3	仅显示文件类型为ext3的文件系统的磁盘状态
$ df -x ext3	仅显示文件类型不为ext3的文件系统的磁盘状态
$ df -T		除显示文件系统磁盘容量大小外还显示文件系统类型
$ df -l		仅显示本地文件系统。
			  
		  &lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/div&gt;
&lt;div class="sect1"&gt;
&lt;div class="titlepage"&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 class="title" style="CLEAR:both;"&gt;&lt;a class="" title="id2861714" name="id2861714"&gt;&lt;/a&gt;7.&amp;nbsp;fdisk----分区表查询工具&lt;/h2&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;fdisk [options][driver]&lt;/p&gt;&lt;pre class="screen"&gt;$ fdisk -l          列出所有分区信息
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="sect1"&gt;
&lt;div class="titlepage"&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 class="title" style="CLEAR:both;"&gt;&lt;a class="" title="id2861750" name="id2861750"&gt;&lt;/a&gt;8.&amp;nbsp;hdparm----硬盘管理&lt;/h2&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;hdparm [options][driver]&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;pre class="screen"&gt;$ hdparm -d  /dev/hda           显示硬盘的DMA模式是不打开，1代表on
$ hdparm -tT /dev/hda           测试硬盘的写性能
$ hdparm -d1 /dev/hda		开启dma功能
$ hdparm -d1 -X68 -c3 -m16 /dev/hda  
选项说明：
-c3：把硬盘的IO模式从16位转成32位。
-m16：改变硬盘的多路扇区的读功能，-m16使硬盘在一次I/O中断中读入16个扇区的数据。
-d1：打开DMA模式。
-X68：支持ATA66的数据传输模式。下面是其它模式的设置对照
ATA33.......参数是-X66 
ATA66.......参数是-X68 
ATA100......参数是-X69
$ hdparm -k1 /dev/hda            保存设置
			  
		  &lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/div&gt;
&lt;div class="sect1"&gt;
&lt;div class="titlepage"&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 class="title" style="CLEAR:both;"&gt;&lt;a class="" title="id2861772" name="id2861772"&gt;&lt;/a&gt;9.&amp;nbsp;ln-----为文件建立别名&lt;/h2&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;ln [options] sourcename [destname]&lt;/p&gt;
&lt;p&gt;ln [options] sourcenames destdirectory&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;pre class="screen"&gt;$ ln -s file1 file2       建立一个到file1的符号链接file2，删除file2不会影响file1
$ ln -s -f file1 file2    建立一个到file1的符号链接file2，并不提示是否重写
&lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/div&gt;
&lt;div class="sect1"&gt;
&lt;div class="titlepage"&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 class="title" style="CLEAR:both;"&gt;&lt;a class="" title="id2861819" name="id2861819"&gt;&lt;/a&gt;10.&amp;nbsp;shutdown-----终止所有进程序，关闭计算机。&lt;/h2&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;shutdown [options] when [message]&lt;/p&gt;
&lt;p&gt;用when可以是指定的关机时间(以hh:mm格式)、关机前要等待的时间(以+m格式)、或者now。message指定一条广播消息通知所有用户退出系统。showdown给所有进程发送SIGTERM信号，并调用init 1执行实际的关机动作。&lt;/p&gt;&lt;pre class="screen"&gt;$ shutdown -c          取消正在进行的关闭操作
$ shutdown -f          快速重新启动，在重新启动时禁止对fsck的常规调用
$ shutdown -h          当关闭完成时停止系统
$ shutdown -k          输出警告信息，但禁止实际的关闭
$ shutdown -n          不调用init就执行关闭
$ shutdown -r          当关闭完成时重新启动系统
$ shutdown -t 5        在杀死进程和改变运行级别之间确保延时5秒
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="sect1"&gt;
&lt;div class="titlepage"&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 class="title" style="CLEAR:both;"&gt;&lt;a class="" title="id2861848" name="id2861848"&gt;&lt;/a&gt;11.&amp;nbsp;sleep-----执行另一个命令之前等待的时间&lt;/h2&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;sleep amount [units]&lt;/p&gt;
&lt;p&gt;units默认为秒(s)，m表示分钟，h表示小时，d表示天。&lt;/p&gt;&lt;/div&gt;
&lt;div class="sect1"&gt;
&lt;div class="titlepage"&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 class="title" style="CLEAR:both;"&gt;&lt;a class="" title="id2861880" name="id2861880"&gt;&lt;/a&gt;12.&amp;nbsp;swapon/swapoff-----启动和关闭交换分区&lt;/h2&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;swapon/swapoff [options] device&lt;/p&gt;&lt;pre class="screen"&gt;$ swapon -s            显示交换分区信息
$ swapon -a            激活所有在/etc/fstab中有sw标记的分区
$ swapon -p 1          设置交换分区优先级为1
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="sect1"&gt;
&lt;div class="titlepage"&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 class="title" style="CLEAR:both;"&gt;&lt;a class="" title="id2861900" name="id2861900"&gt;&lt;/a&gt;13.&amp;nbsp;tune2fs-----调整Linux第二扩展文件系统的参数&lt;/h2&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;tune2fs [options] device&lt;/p&gt;&lt;pre class="screen"&gt;$ tune2fs -l /dev/hda1       显示hda1分区的超级块内容
$ tune2fs -c 100 /dev/hda1   设置hda1分区每mount100次就进行磁盘检查
&lt;/pre&gt;&lt;/div&gt;
&lt;div class="sect1"&gt;
&lt;div class="titlepage"&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 class="title" style="CLEAR:both;"&gt;&lt;a class="" title="id2861925" name="id2861925"&gt;&lt;/a&gt;14.&amp;nbsp;uniq----过滤、统计、删除重复行&lt;/h2&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;uniq [options][file1 [files]]&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;pre class="screen"&gt;$ uniq -c file		file中的重复行输出一次，并在每行前显示重复次数
$ uniq -d file		file中的重复行输出一次，但不输出唯一的行
$ uniq -u file          只输出file中的唯一行
$ uniq file1 file2	把file1中的重复的相邻行删除，并把每行的一个拷贝送到file2
			  
		  &lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/div&gt;
&lt;div class="sect1"&gt;
&lt;div class="titlepage"&gt;
&lt;div&gt;
&lt;div&gt;
&lt;h2 class="title" style="CLEAR:both;"&gt;&lt;a class="" title="id2861954" name="id2861954"&gt;&lt;/a&gt;15.&amp;nbsp;wc-----输出每个文件中的字符数、单词数及行数。&lt;/h2&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;wc [options][files]&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;pre class="screen"&gt;$ wc -l file		输出file中的行数
$ wc -w file		输出file中的单词数
$ wc -c file		输出file中的字符数
			  
		  &lt;/pre&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;img src="http://sdt.sumida.com.cn:8080/cs/aggbug.aspx?PostID=9124" width="1" height="1"&gt;</content><author><name>Coolboy</name><uri>http://sdt.sumida.com.cn:8080/cs/members/Coolboy.aspx</uri></author><category term="Linux命令集" scheme="http://sdt.sumida.com.cn:8080/cs/blogs/coolboy/archive/tags/Linux_7D54E44EC696_/default.aspx" /></entry><entry><title>扫盲行动之一：Linux常用命令简介</title><link rel="alternate" type="text/html" href="http://sdt.sumida.com.cn:8080/cs/blogs/coolboy/archive/2008/05/28/linux.aspx" /><id>http://sdt.sumida.com.cn:8080/cs/blogs/coolboy/archive/2008/05/28/linux.aspx</id><published>2008-05-28T05:29:00Z</published><updated>2008-05-28T05:29:00Z</updated><content type="html">&lt;span class="a14c" id="zoom"&gt;&lt;/span&gt;&lt;span class="a14c" id="zoom"&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;su 
&lt;p style="TEXT-INDENT:2em;"&gt;su命令是最基本的命令之一，常用于不同用户间切换。例如，如果登录为 user1，要切换为user2，只要用如下命令： 
&lt;p style="TEXT-INDENT:2em;"&gt;$su user2 
&lt;p style="TEXT-INDENT:2em;"&gt;然后系统提示输入user2口令，输入正确的口令之后就可以切换到user2。完成之后就可以用exit命令返回到user1。 
&lt;p style="TEXT-INDENT:2em;"&gt;su命令的常见用法是变成根用户或超级用户。如果发出不带用户名的su命令 ，则系统提示输入根口令，输入之后则可切换为根用户。 
&lt;p style="TEXT-INDENT:2em;"&gt;如果登录为根用户，则可以用su命令成为系统上任何用户而不需要口令。 
&lt;p style="TEXT-INDENT:2em;"&gt;pwd 
&lt;p style="TEXT-INDENT:2em;"&gt;pwd命令也是最常用最基本的命令之一，用于显示用户当前所在的目录。 
&lt;p style="TEXT-INDENT:2em;"&gt;cd 
&lt;p style="TEXT-INDENT:2em;"&gt;cd命令不仅显示当前状态，还改变当前状态，它的用发跟dos下的cd命令基本一致。 
&lt;p style="TEXT-INDENT:2em;"&gt;cd ..可进入上一层目录 
&lt;p style="TEXT-INDENT:2em;"&gt;cd -可进入上一个进入的目录 
&lt;p style="TEXT-INDENT:2em;"&gt;cd ~可进入用户的home目录 
&lt;p style="TEXT-INDENT:2em;"&gt;ls 
&lt;p style="TEXT-INDENT:2em;"&gt;ls命令跟dos下的dir命令一样，用于显示当前目录的内容。 
&lt;p style="TEXT-INDENT:2em;"&gt;如果想取得详细的信息，可用ls -l命令， 这样就可以显示目录内容的详细信息。 
&lt;p style="TEXT-INDENT:2em;"&gt;如果目录下的文件太多，用一屏显示不了，可以用ls -l |more分屏显示 。 
&lt;p style="TEXT-INDENT:2em;"&gt;find 
&lt;p style="TEXT-INDENT:2em;"&gt;find命令用于查找文件。这个命令可以按文件名、建立或修改日期、所有者(通常是建立文件的用户)、文件长度或文件类型进行搜索。 
&lt;p style="TEXT-INDENT:2em;"&gt;find命令的基本结构如下： 
&lt;p style="TEXT-INDENT:2em;"&gt;$find 
&lt;p style="TEXT-INDENT:2em;"&gt;其中指定从哪个目录开始搜索。指定搜索条件。表示找到文件怎么处理。一般来说，要用-print动作，显示 整个文件路径和名称。如果没有这个动作，则find命令进行所要搜索而不显示结果，等于白费劲。 
&lt;p style="TEXT-INDENT:2em;"&gt;例如，要搜索系统上所有名称为ye的文件，可用如下命令： 
&lt;p style="TEXT-INDENT:2em;"&gt;$find / -name ye -print 
&lt;p style="TEXT-INDENT:2em;"&gt;这样就可以显示出系统上所有名称为ye的文件。 
&lt;p style="TEXT-INDENT:2em;"&gt;tar 
&lt;p style="TEXT-INDENT:2em;"&gt;tar最初用于建立磁带备份系统，目前广泛用于建立文件发布档案。可用如下方法建立tar档案： 
&lt;p style="TEXT-INDENT:2em;"&gt;$tar cvf 
&lt;p style="TEXT-INDENT:2em;"&gt;例如，如果要将当前目录中所有文件存档到ye.tar中，可用如下命令： 
&lt;p style="TEXT-INDENT:2em;"&gt;$tar cvf ye.tar *.* 
&lt;p style="TEXT-INDENT:2em;"&gt;要浏览档案内容，将c选项变成t。如果要浏览ye.tar档案中的内容，可用如下命令： 
&lt;p style="TEXT-INDENT:2em;"&gt;$tar tvf ye.tar 
&lt;p style="TEXT-INDENT:2em;"&gt;要取出档案内的内容，将c选项变成x。如果要将ye.tar档案中的内容取到当前目录中，可用如下命令： 
&lt;p style="TEXT-INDENT:2em;"&gt;$tar xvf ye.tar 
&lt;p style="TEXT-INDENT:2em;"&gt;gzip 
&lt;p style="TEXT-INDENT:2em;"&gt;gzip命令用于压缩文件。 例如，如果要将ye.txt文件压缩，可用如下命令： 
&lt;p style="TEXT-INDENT:2em;"&gt;$gzip ye.txt 
&lt;p style="TEXT-INDENT:2em;"&gt;这样就可以压缩文件并在文件名后面加上gz扩展名，变成文件ye.txt.gz。 
&lt;p style="TEXT-INDENT:2em;"&gt;解压缩文件可用gzip -d命令实现： 
&lt;p style="TEXT-INDENT:2em;"&gt;$gzip -d ye.txt.gz 
&lt;p style="TEXT-INDENT:2em;"&gt;这样就可以解压缩文件并删除gz扩展名。除此之外还可以用gunzip命令来解 压缩文件，效果跟用gzip -d命令一样。 
&lt;p style="TEXT-INDENT:2em;"&gt;旧版的tar命令不压缩档案，可用gzip压缩。例如： 
&lt;p style="TEXT-INDENT:2em;"&gt;$tar cvf ye.tar *.txt 
&lt;p style="TEXT-INDENT:2em;"&gt;$gzip ye.tar 
&lt;p style="TEXT-INDENT:2em;"&gt;则可建立压缩档案ye.tar.gz。 
&lt;p style="TEXT-INDENT:2em;"&gt;新版的tar可以直接访问和建立gzip压缩的tar档案，只要在tar命令中加上z 选项就可以了。例如： 
&lt;p style="TEXT-INDENT:2em;"&gt;$tar czvf ye.tar *.txt 
&lt;p style="TEXT-INDENT:2em;"&gt;生成压缩档案ye.tar.gz， 
&lt;p style="TEXT-INDENT:2em;"&gt;$tar tzvf ye.tar *.txt 
&lt;p style="TEXT-INDENT:2em;"&gt;显示压缩档案ye.tar.gz的内容，而 
&lt;p style="TEXT-INDENT:2em;"&gt;$tar xzvf ye.tar *.txt 
&lt;p style="TEXT-INDENT:2em;"&gt;取出压缩档案ye.tar.gz的内容。 
&lt;p style="TEXT-INDENT:2em;"&gt;mkdir 
&lt;p style="TEXT-INDENT:2em;"&gt;这个命令很简单，跟dos的md命令用法几乎一样，用于建立目录。 
&lt;p style="TEXT-INDENT:2em;"&gt;cp 
&lt;p style="TEXT-INDENT:2em;"&gt;cp命令用于复制文件或目录。 
&lt;p style="TEXT-INDENT:2em;"&gt;cp命令可以一次复制多个文件，例如： 
&lt;p style="TEXT-INDENT:2em;"&gt;$cp *.txt *.doc *.bak /home 
&lt;p style="TEXT-INDENT:2em;"&gt;将当前目录中扩展名为txt、doc和bak的文件全部复制到/home目录中。 
&lt;p style="TEXT-INDENT:2em;"&gt;如果要复制整个目录及其所有子目录，可以用cp -R命令。 
&lt;p style="TEXT-INDENT:2em;"&gt;rm 
&lt;p style="TEXT-INDENT:2em;"&gt;rm命令用于删除文件或目录。 
&lt;p style="TEXT-INDENT:2em;"&gt;rm命令会强制删除文件，如果想要在删除时提示确认，可用rm -i命令。 
&lt;p style="TEXT-INDENT:2em;"&gt;如果要删除目录，可用rm -r命令。rm -r命令在删除目录时，每删除一个文件或目录都会显示提示，如果目录太大，响应每个提示是不现实的。这时可以用 rm -rf命令来强制删除目录，这样即使用了-i标志也当无效处理。 
&lt;p style="TEXT-INDENT:2em;"&gt;mv 
&lt;p style="TEXT-INDENT:2em;"&gt;mv命令用于移动文件和更名文件。例如： 
&lt;p style="TEXT-INDENT:2em;"&gt;$mv ye.txt /home 
&lt;p style="TEXT-INDENT:2em;"&gt;将当前目录下的ye.txt文件移动到/home目录下， 
&lt;p style="TEXT-INDENT:2em;"&gt;$mv ye.txt ye1.txt 
&lt;p style="TEXT-INDENT:2em;"&gt;将ye.txt文件改名为ye1.txt。 
&lt;p style="TEXT-INDENT:2em;"&gt;类似于跟cp命令，mv命令也可以一次移动多个文件，在此不再赘叙。 
&lt;p style="TEXT-INDENT:2em;"&gt;reboot 
&lt;p style="TEXT-INDENT:2em;"&gt;重启命令，不必多说。 
&lt;p style="TEXT-INDENT:2em;"&gt;halt 
&lt;p style="TEXT-INDENT:2em;"&gt;关机命令，不必多说。 &lt;/p&gt;&lt;/span&gt;&lt;img src="http://sdt.sumida.com.cn:8080/cs/aggbug.aspx?PostID=9123" width="1" height="1"&gt;</content><author><name>Coolboy</name><uri>http://sdt.sumida.com.cn:8080/cs/members/Coolboy.aspx</uri></author><category term="Linux" scheme="http://sdt.sumida.com.cn:8080/cs/blogs/coolboy/archive/tags/Linux/default.aspx" /><category term="linux命令" scheme="http://sdt.sumida.com.cn:8080/cs/blogs/coolboy/archive/tags/linux_7D54E44E_/default.aspx" /></entry><entry><title>oracle中查询时指定索引的方法,优化是一种学问</title><link rel="alternate" type="text/html" href="http://sdt.sumida.com.cn:8080/cs/blogs/coolboy/archive/2008/05/14/oracle.aspx" /><id>http://sdt.sumida.com.cn:8080/cs/blogs/coolboy/archive/2008/05/14/oracle.aspx</id><published>2008-05-13T16:18:00Z</published><updated>2008-05-13T16:18:00Z</updated><content type="html">&lt;div class="tit"&gt;oracle中查询时指定索引的方法&lt;/div&gt;
&lt;div class="date"&gt;2008-01-11 16:00&lt;/div&gt;
&lt;table class="" style="TABLE-LAYOUT:fixed;"&gt;

&lt;tr&gt;
&lt;td class=""&gt;
&lt;div class="cnt" id="blog_text"&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;五、索引Index的优化设计&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;1、管理组织索引&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; 索引可以大大加快数据库的查询速度，索引把表中的逻辑值映射到安全的RowID，因此索引能进行快速定位数据的物理地址。但是有些DBA发现，对一个大 型表建立的索引，并不能改善数据查询速度，反而会影响整个数据库的性能。这主要是和SGA的数据管理方式有关。ORACLE在进行数据块高速缓存管理时， 索引数据比普通数据具有更高的驻留权限，在进行空间竞争时，ORACLE会先移出普通数据。对一个建有索引的大型表的查询时，索引数据可能会用完所有的数 据块缓存空间，ORACLE不得不频繁地进行磁盘读写来获取数据，因此在对一个大型表进行分区之后，可以根据相应的分区建立分区索引。如果对这样大型表的 数据查询比较频繁，或者干脆不建索引。另外，DBA创建索引时，应尽量保证该索引最可能地被用于where子句中，如果对查询只简单地制定一个索引，并不 一定会加快速度，因为索引必须指定一个适合所需的访问路径。2、聚簇的使用&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;Oracle提供了另一种方法来提高查询速度，就是聚簇（Cluster）。所谓聚簇，简单地说就是把几个表放在一起，按一定公共属性混合存放。聚簇根 据共同码值将多个表的数据存储在同一个Oracle块中，这时检索一组Oracle块就同时得到两个表的数据，这样就可以减少需要存储的Oracle块， 从而提高应用程序的性能。&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;3、优化设置的索引，就必须充分利用才能加快数据库访问速度。ORACLE要使用一个索引， 有一些最基本的条件：1）、where子名中的这个字段，必须是复合索引的第一个字段；2）、where子名中的这个字段，不应该参与任何形式的计算。 Sal*(2*90/100)&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;六、多CPU和并行查询PQO(Parallel Query Option)方式的利用&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;1、尽量利用多个CPU处理器来执行事务处理和查询&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;CPU的快速发展使得ORACLE越来越重视对多CPU的并行技术的应用，一个数据库的访问工作可以用多个CPU相互配合来完成，加上分布式计算已经相 当普遍，只要可能，应该将数据库服务器和应用程序的CPU请求分开，或将CPU请求从一个服务器移到另一个服务器。对于多CPU系统尽量采用 Parallel Query Option(PQO,并行查询选项)方式进行数据库操作。&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;2、使用Parallel Query Option(PQO,并行查询选择)方式进行数据查询&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;&amp;nbsp;&amp;nbsp; 使用PQO方式不仅可以在多个CPU间分配SQL语句的请求处理，当所查询的数据处于不同的磁盘时，一个个独立的进程可以同时进行数据读取。&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;3、使用SQL*Loader Direct Path选项进行大量数据装载&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;使用该方法进行数据装载时，程序创建格式化数据块直接写入数据文件中，不要求数据库内核的其他I/O。&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;七、实施系统资源管理分配计划&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;ORACLE提供了Database Resource Manager（DRM,数据库资源管理器）来控制用户的资源分配，DBA可以用它分配用户类和作业类的系统资源百分比。在一个OLDP系统中，可给联机 用户分配75%的CPU资源，剩下的25%留给批用户。另外，还可以进行CPU的多级分配。除了进行CPU资源分配外，DRM还可以对资源用户组执行并行 操作的限制。&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;八、使用最和SQL优化方优的数据库连接案&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;1、使用直接的OLE DB数据库连接方式。&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;通过ADO可以使用两种方式连接数据库，一种是传统的ODBC方式，一种是OLE DB方式。ADO是建立在OLE DB技术上的，为了支持ODBC，必须建立相应的OLE DB到ODBC的调用转换，而使用直接的OLE DB方式则不需转换，从而提高处理速度。&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;2、使用Connection Pool机制&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;在数据库处理中，资源花销最大的是建立数据库连接，而且用户还会有一个较长的连接等待时间。解决的办法就是复用现有的Connection，也就是使用Connection Pool对象机制。&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;Connection Pool的原理是：IIS+ASP体系中维持了一个连接缓冲池，这样，当下一个用户访问时，直接在连接缓冲池中取得一个数据库连接，而不需重新连接数据库，因此可以大大地提高系统的响应速度。&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;3、高效地进行SQL语句设计&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;通常情况下，可以采用下面的方法优化SQL对数据操作的表现：&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;（1）减少对数据库的查询次数，即减少对系统资源的请求，使用快照和显形图等分布式数据库对象可以减少对数据库的查询次数。&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;（2）尽量使用相同的或非常类似的SQL语句进行查询，这样不仅充分利用SQL共享池中的已经分析的语法树，要查询的数据在SGA中命中的可能性也会大大增加。&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;（3）限制动态SQL的使用，虽然动态SQL很好用，但是即使在SQL共享池中有一个完全相同的查询值，动态SQL也会重新进行语法分析。&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;（4）避免不带任何条件的SQL语句的执行。没有任何条件的SQL语句在执行时，通常要进行FTS，数据库先定位一个数据块，然后按顺序依次查找其它数据，对于大型表这将是一个漫长的过程。&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;（5）如果对有些表中的数据有约束，最好在建表的SQL语句用描述完整性来实现，而不是用SQL程序中实现。&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;（6）可以通过取消自动提交模式，将SQL语句汇集一组执行后集中提交，程序还可以通过显式地用COMMIT和ROLLBACL进行提交和回滚该事务。&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;（7）检索大量数据时费时很长，设置行预取数则能改善系统的工作表现，设置一个最大值，当SQL语句返回行超过该值，数值库暂时停止执行，除非用户发出新的指令，开始组织并显示数据，而不是让用户继续等待。&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;九、充分利用数据的后台处理方案减少网络流量&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;1、合理创建临时表或视图&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;所谓创建临时表或视图，就是根据需要在数据库基础上创建新表或视图，对于多表关联后再查询信息的可建新表，对于单表查询的可创建视图，这样可充分利用数 据库的容量大、可扩充性强等特点，所有条件的判断、数值计算统计均可在数据库服务器后台统一处理后追加到临时表中，形成数据结果的过程可用数据库的过程或 函数来实现。&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;2、数据库打包技术的充分利用&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;利用数据库描述语言编写数据库的过程或函数，然后把过程或函数打成包在数据库后台统一运行包即可。&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;3、数据复制、快照、视图，远程过程调用技术的运用&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;数据复制，即将数据一次复制到本地，这样以后的查询就使用本地数据，但是只适合那些变化不大的数据。使用快照也可以在分布式数据库之间动态复制数据，定义 快照的自动刷新时间或手工刷新，以保证数据的引用参照完整性。调用远程过程也会大大减少因频繁的SQL语句调用而带来的网络拥挤。&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 总之，对所有的性能问题，没有一个统一的解决方法，但ORACLE提供了丰富的选择环境，可以从ORACLE数据库的体系结构、软件结构、模式对象 以及具体的业务和技术实现出发，进行统筹考虑。提高系统性能需要一种系统的整体的方法，在对数据库进行优化时，应对应用程序、I/O子系统和操作系统 （OS）进行相应的优化。优化是有目的地更改系统的一个或多个组件，使其满足一个或多个目标的过程。对Oracle来说，优化是进行有目的的调整组件级以 改善性能，即增加吞吐量，减少响应时间。如果DBA能从上述九个方面综合考虑优化方案，相信多数ORACLE应用可以做到按最优的方式来存取数据。&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;我们要做到不但会写SQL,还要做到写出性能优良的SQL,以下为笔者学习、摘录、并汇总部分资料与大家分享！&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;（1）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 选择最有效率的表名顺序(只在基于规则的优化器中有效)：&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名，FROM子句中写在最后的表(基础表 driving table)将被最先处理，在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表。&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;如果有3个以上的表连接查询, 那就需要选择交叉表(intersection table)作为基础表, 交叉表是指那个被其他表所引用的表.把数据少的表放在FROM后面的最后&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;（2）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; WHERE子句中的连接顺序．：&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;ORACLE采用自下而上的顺序解析WHERE子句,根据这个原理,表之间的连接必须写在其他WHERE条件之前, 那些可以过滤掉最大数量记录的条件必须写在WHERE子句的末尾.&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;（3）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SELECT子句中避免使用 ‘ * ‘：&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;ORACLE在解析的过程中, 会将&amp;#39;*&amp;#39; 依次转换成所有的列名, 这个工作是通过查询数据字典完成的, 这意味着将耗费更多的时间&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;（4）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 减少访问数据库的次数：&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;ORACLE在内部执行了许多工作: 解析SQL语句, 估算索引的利用率, 绑定变量 , 读数据块等；&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;（5）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 在SQL*Plus , SQL*Forms和Pro*C中重新设置ARRAYSIZE参数, 可以增加每次数据库访问的检索数据量 ,建议值为200&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;（6）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 使用DECODE函数来减少处理时间：******************************&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;使用DECODE函数可以避免重复扫描相同记录或重复连接相同的表.&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;table class="" cellpadding="0"&gt;

&lt;tr&gt;
&lt;td class=""&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;decode (expression, search_1, result_1)&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;decode (expression, search_1, result_1, search_2, result_2)&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;decode (expression, search_1, result_1, search_2, result_2, ...., search_n, result_n)&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;decode (expression, search_1, result_1, default)&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;decode (expression, search_1, result_1, search_2, result_2, default)&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;decode (expression, search_1, result_1, search_2, result_2, ...., search_n, result_n, default)&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;decode函数比较表达式和搜索字，如果匹配，返回结果；如果不匹配，返回default值；如果未定义default值，则返回空值。&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;以下是一个简单测试，用于说明Decode函数的用法:&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;table class="" cellpadding="0"&gt;

&lt;tr&gt;
&lt;td class=""&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;SQL&amp;gt; create table t as select username,default_tablespace,lock_date from dba_users;&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;Table created.&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;SQL&amp;gt; select * from t;&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;USERNAME&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DEFAULT_TABLESPACE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; LOCK_DATE&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;------------------------------ ------------------------------ ---------&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;SYS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SYSTEM&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;SYSTEM&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SYSTEM&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;OUTLN&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SYSTEM&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;CSMIG&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SYSTEM&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;SCOTT &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SYSTEM&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;EYGLE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; USERS&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;DBSNMP&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SYSTEM&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;WMSYS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SYSTEM&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 20-OCT-04&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;8 rows selected.&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;SQL&amp;gt; select username,decode(lock_date,null,&amp;#39;unlocked&amp;#39;,&amp;#39;locked&amp;#39;) status from t;&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;USERNAME&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; STATUS&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;------------------------------ --------&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;SYS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; unlocked&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;SYSTEM&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; unlocked&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;OUTLN&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; unlocked&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;CSMIG&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; unlocked&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;SCOTT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; unlocked&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;EYGLE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; unlocked&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;DBSNMP&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; unlocked&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;WMSYS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; locked&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;8 rows selected.&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;SQL&amp;gt; select username,decode(lock_date,null,&amp;#39;unlocked&amp;#39;) status from t;&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;USERNAME&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; STATUS&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;------------------------------ --------&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;SYS&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; unlocked&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;SYSTEM&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; unlocked&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;OUTLN&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; unlocked&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;CSMIG&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; unlocked&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;SCOTT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; unlocked&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;EYGLE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; unlocked&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;DBSNMP&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; unlocked&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;WMSYS&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;8 rows selected.&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;（7）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 整合简单,无关联的数据库访问：&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;如果你有几个简单的数据库查询语句,你可以把它们整合到一个查询中(即使它们之间没有关系)&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;（8）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 删除重复记录：&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;最高效的删除重复记录方法 ( 因为使用了ROWID)例子：&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;DELETE FROM EMP E WHERE E.ROWID &amp;gt; (SELECT MIN(X.ROWID)&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;FROM EMP X WHERE X.EMP_NO = E.EMP_NO);&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;（9）&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 用TRUNCATE替代DELETE：&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;当删除表中的记录时,在通常情况下, 回滚段(rollback segments ) 用来存放可以被恢复的信息. 如果你没有COMMIT事务,ORACLE会将数据恢复到删除之前的状态(准确地说是恢复到执行删除命令之前的状况) 而当运用TRUNCATE时, 回滚段不再存放任何可被恢复的信息.当命令运行后,数据不能被恢复.因此很少的资源被调用,执行时间也会很短. (译者按: TRUNCATE只在删除全表适用,TRUNCATE是DDL不是DML)&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;（10） 尽量多使用COMMIT：&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;只要有可能,在程序中尽量多使用COMMIT, 这样程序的性能得到提高,需求也会因为COMMIT所释放的资源而减少:&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;COMMIT所释放的资源:&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;a. 回滚段上用于恢复数据的信息.&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;b. 被程序语句获得的锁&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;c. redo log buffer 中的空间&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;d. ORACLE为管理上述3种资源中的内部花费&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;（11） 用Where子句替换HAVING子句：&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;避免使用HAVING子句, HAVING 只会在检索出所有记录之后才对结果集进行过滤. 这个处理需要排序,总计等操作. 如果能通过WHERE子句限制记录的数目,那就能减少这方面的开销. (非oracle中)on、where、having这三个都可以加条件的子句中，on是最先执行，where次之，having最后，因为on是先把不 符合条件的记录过滤后才进行统计，它就可以减少中间运算要处理的数据，按理说应该速度是最快的，where也应该比having快点的，因为它过滤数据后 才进行sum，在两个表联接时才用on的，所以在一个表的时候，就剩下where跟having比较了。在这单表查询统计的情况下，如果要过滤的条件没有 涉及到要计算字段，那它们的结果是一样的，只是where可以使用rushmore技术，而having就不能，在速度上后者要慢如果要涉及到计算的字 段，就表示在没计算之前，这个字段的值是不确定的，根据上篇写的工作流程，where的作用时间是在计算之前就完成的，而having就是在计算后才起作 用的，所以在这种情况下，两者的结果会不同。在多表联接查询时，on比where更早起作用。系统首先根据各个表之间的联接条件，把多个表合成一个临时表 后，再由where进行过滤，然后再计算，计算完后再由having进行过滤。由此可见，要想过滤条件起到正确的作用，首先要明白这个条件应该在什么时候 起作用，然后再决定放在那里&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;（12） 减少对表的查询：&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;在含有子查询的SQL语句中,要特别注意减少对表的查询.例子：&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&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; SELECT TAB_NAME FROM TABLES WHERE (TAB_NAME,DB_VER) = ( SELECT&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;TAB_NAME,DB_VER FROM TAB_COLUMNS WHERE VERSION = 604)&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;（13） 通过内部函数提高SQL效率.：&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;复杂的SQL往往牺牲了执行效率. 能够掌握上面的运用函数解决问题的方法在实际工作中是非常有意义的&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;（14） 使用表的别名(Alias)：&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;当在SQL语句中连接多个表时, 请使用表的别名并把别名前缀于每个Column上.这样一来,就可以减少解析的时间并减少那些由Column歧义引起的语法错误.&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;（15） 用EXISTS替代IN、用NOT EXISTS替代NOT IN：&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;在许多基于基础表的查询中,为了满足一个条件,往往需要对另一个表进行联接.在这种情况下, 使用EXISTS(或NOT EXISTS)通常将提高查询的效率. 在子查询中,NOT IN子句将执行一个内部的排序和合并. 无论在哪种情况下,NOT IN都是最低效的 (因为它对子查询中的表执行了一个全表遍历). 为了避免使用NOT IN ,我们可以把它改写成外连接(Outer Joins)或NOT EXISTS.&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;例子：&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;（高效）SELECT * FROM EMP (基础表) WHERE EMPNO &amp;gt; 0 AND EXISTS (SELECT 1 FROM DEPT WHERE DEPT.DEPTNO = EMP.DEPTNO AND LOC = ‘MELB&amp;#39;)&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;(低效)SELECT * FROM EMP (基础表) WHERE EMPNO &amp;gt; 0 AND DEPTNO IN(SELECT DEPTNO FROM DEPT WHERE LOC = ‘MELB&amp;#39;)&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;（16） 识别&amp;#39;低效执行&amp;#39;的SQL语句：&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;虽然目前各种关于SQL优化的图形化工具层出不穷,但是写出自己的SQL工具来解决问题始终是一个最好的方法：&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;SELECT EXECUTIONS , DISK_READS, BUFFER_GETS,&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;ROUND((BUFFER_GETS-DISK_READS)/BUFFER_GETS,2) Hit_radio,&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;ROUND(DISK_READS/EXECUTIONS,2) Reads_per_run,&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;SQL_TEXT&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;FROM V$SQLAREA&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;WHERE EXECUTIONS&amp;gt;0&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;AND BUFFER_GETS &amp;gt; 0&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;AND (BUFFER_GETS-DISK_READS)/BUFFER_GETS &amp;lt; 0.8&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;ORDER BY 4 DESC;&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;（17） 用索引提高效率：&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;索引是表的一个概念部分,用来提高检索数据的效率，ORACLE使用了一个复杂的自平衡B- tree结构. 通常,通过索引查询数据比全表扫描要快. 当ORACLE找出执行查询和Update语句的最佳路径时, ORACLE优化器将使用索引. 同样在联结多个表时使用索引也可以提高效率. 另一个使用索引的好处是,它提供了主键(primary key)的唯一性验证.。那些LONG或LONG RAW数据类型, 你可以索引几乎所有的列. 通常, 在大型表中使用索引特别有效. 当然,你也会发现, 在扫描小表时,使用索引同样能提高效率. 虽然使用索引能得到查询效率的提高,但是我们也必须注意到它的代价. 索引需要空间来存储,也需要定期维护, 每当有记录在表中增减或索引列被修改时, 索引本身也会被修改. 这意味着每条记录的INSERT , DELETE , UPDATE将为此多付出4 , 5 次的磁盘I/O . 因为索引需要额外的存储空间和处理,那些不必要的索引反而会使查询反应时间变慢.。定期的重构索引是有必要的.：在“系统维护清理”里有个“垃圾文件清 理”&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;ALTER INDEX REBUILD &lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;（18） 用EXISTS替换DISTINCT：&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;当提交一个包含一对多表信息(比如部门表和雇员表)的查询时,避免在SELECT子句中使用DISTINCT. 一般可以考虑用EXIST替换, EXISTS 使查询更为迅速,因为RDBMS核心模块将在子查询的条件一旦满足后,立刻返回结果. 例子：&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; (低效):&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;SELECT DISTINCT DEPT_NO,DEPT_NAME FROM DEPT D , EMP E&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;WHERE D.DEPT_NO = E.DEPT_NO&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;(高效):&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;SELECT DEPT_NO,DEPT_NAME FROM DEPT D WHERE EXISTS ( SELECT ‘X&amp;#39;&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;FROM EMP E WHERE E.DEPT_NO = D.DEPT_NO);&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;（19） sql语句用大写的；因为oracle总是先解析sql语句，把小写的字母转换成大写的再执行&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;（20） 在java代码中尽量少用连接符“＋”连接字符串！&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;（21） 避免在索引列上使用NOT 通常，　&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;我们要避免在索引列上使用NOT, NOT会产生在和在索引列上使用函数相同的影响. 当ORACLE”遇到”NOT,他就会停止使用索引转而执行全表扫描.&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;（22） 避免在索引列上使用计算．&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;WHERE子句中，如果索引列是函数的一部分．优化器将不使用索引而使用全表扫描．&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;举例:&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;低效：&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;SELECT … FROM DEPT WHERE SAL * 12 &amp;gt; 25000;&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;高效:&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;SELECT … FROM DEPT WHERE SAL &amp;gt; 25000/12;&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;（23） 用&amp;gt;=替代&amp;gt;&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;高效:&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;SELECT * FROM EMP WHERE DEPTNO &amp;gt;=4&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;低效:&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;SELECT * FROM EMP WHERE DEPTNO &amp;gt;3&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;两者的区别在于, 前者DBMS将直接跳到第一个DEPT等于4的记录而后者将首先定位到DEPTNO=3的记录并且向前扫描到第一个DEPT大于3的记录.&lt;/p&gt;
&lt;p style="TEXT-INDENT:2em;"&gt;（24） 用UNION替换OR (适用于索引列)&l