<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>罗兰小筑@NetFire(Fire.Rolland.Han) &#187; 代码生活</title>
	<atom:link href="http://netfire.name/archives/category/codelife/feed" rel="self" type="application/rss+xml" />
	<link>http://netfire.name</link>
	<description>Welcome to Rolland Town which Record fire&#039;s life.</description>
	<lastBuildDate>Mon, 06 Sep 2010 09:30:44 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>双机问题一则</title>
		<link>http://netfire.name/archives/20091028/342.html</link>
		<comments>http://netfire.name/archives/20091028/342.html#comments</comments>
		<pubDate>Wed, 28 Oct 2009 01:14:51 +0000</pubDate>
		<dc:creator>NetFire</dc:creator>
				<category><![CDATA[代码生活]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Solaris]]></category>

		<guid isPermaLink="false">http://netfire.name/?p=342</guid>
		<description><![CDATA[<p>很无敌的问题，最后归根结底居然是我首先排除的。低级问题！</p>
]]></description>
			<content:encoded><![CDATA[<p>双机的连接方式就不详说了，就是心跳线连接，A和B机都是两个网卡bge0和bge1。两个网卡配置的相同地址。A和B跑不同的应用，互为主备。</p>
<p>问题：A机或者B机莫名其妙无法远程连入，查看双机状况，发现A机或B机下线。<br />
解决：从A机背板或者远程管理端口连入，机器运行正常，查看/var/adm/messages有些异常，但是感觉没问题，只是一台机器两个网卡间切换而已。</p>
<p><span id="more-342"></span><br />
Sep  19 10:34:00 A fjgi: [ID 391805 kern.notice] fjgi1: network connection down<br />
Sep  19 10:34:00 A fjgi: [ID 391805 kern.notice] fjgi0: network connection down<br />
Sep  19 10:34:18 A fjgi: [ID 111774 kern.notice] fjgi0: network connection up<br />
Sep  19 10:34:18 A fjgi: [ID 513339 kern.notice]     autonegotiation: on<br />
Sep  19 10:34:18 A fjgi: [ID 268518 kern.notice]     speed:           100<br />
Sep  19 10:34:18 A fjgi: [ID 537610 kern.notice]     flowctrl:        none<br />
Sep  19 10:34:18 A fjgi: [ID 511210 kern.notice]     duplex:          full<br />
Sep  19 10:34:18 A fjgi: [ID 111774 kern.notice] fjgi1: network connection up<br />
Sep  19 10:34:18 A fjgi: [ID 513339 kern.notice]     autonegotiation: on<br />
Sep  19 10:34:18 A fjgi: [ID 268518 kern.notice]     speed:           100<br />
Sep  19 10:34:18 A fjgi: [ID 537610 kern.notice]     flowctrl:        none<br />
Sep  19 10:34:18 A fjgi: [ID 511210 kern.notice]     duplex:          full</p>
<p>最后只能尝试重启，重启后一切正常。问题是这个问题是不间断出现，可能相隔几天或者10几天。一直到10月中旬出现更多的异常。</p>
<p><strong>A机messages</strong>非常频繁的出现：<br />
Sep 12 03:06:52 A bge: [ID 801593 kern.notice] NOTICE: bge1: link up 100Mbps Full-Duplex<br />
Sep 12 03:06:52 A bge: [ID 801593 kern.notice] NOTICE: bge1: link down<br />
Sep 12 03:06:53 A bge: [ID 801593 kern.notice] NOTICE: bge1: link up 100Mbps Full-Duplex<br />
Sep 12 03:07:08 A bge: [ID 801593 kern.notice] NOTICE: bge1: link down</p>
<p><strong>B机messages</strong>频繁出现：<br />
Oct 15 13:12:30 B hanet: [ID 401137 user.error] ERROR: 87000: polling status changed: Primary polling failed. (bge0,target=192.168.1.1)<br />
Oct 15 13:13:13 B hanet: [ID 475251 user.error] INFO: 89600: path to standby interface is established. (sha0)<br />
Oct 15 13:13:13 B hanet: [ID 318666 user.error] INFO: 89700: immediate exchange to primary interface is canceled. (sha1)<br />
Oct 15 13:44:13 B hanet: [ID 361421 user.error] WARNING: 87500: standby interface failed. (sha0)<br />
Oct 15 13:44:28 B hanet: [ID 960721 user.error] INFO: 88500: standby interface recovered. (sha0)</p>
<p>Google无结果。询问一位朋友，给出了如下图：</p>
<p><img src="http://netfire.name/upload/111.jpg" alt="" /></p>
<p>检测线路！同时联系了双机软件提供商一起查找问题。最后提供商说软件没有问题。那就自查吧。</p>
<p>首先，重做了几个网线的接口，确定机房内线路良好。无结果。</p>
<p>其次，将自己笔记本作为网关192.168.1.1，将服务器和笔记本都接在一个HUB上，message内报错信息嘎然而止！到这里，我深信不疑就是网络问题，而且问题可能就出在网关。为了确认这个问题，我将笔记本电脑时钟调整的和服务器一样，开始不停的ping网管，将结果记录下来，然后发现有ping不通时，查看服务器的message文件，是否存在同一时间的“ERROR: 87000: polling status changed: Primary polling failed. (bge0,target=192.168.1.1)”这个错误，结果存在。更加肯定了我的推测。</p>
<p>结果，令人大跌眼镜。和网络的同事一起排错的时候，发现A和B两台服务器，4个接口的网线，都有问题，不是线序问题，就是不通。全部重做！可我首先就重做了网线接口啊？！重做之后，观察半小时，正常，1天、2天都正常，现在一个周了。</p>
<p>我实在没想通。除非当日我第一次让网络的同事重做接口时就埋下了隐患。或者说这个机房管理的问题，因为现在这个机房还在建设，来往的人很多，要调试没自带网线的人不是一个两个，随便弄一个来用下，久而久之就乱的一塌糊涂。因为刚做好双机之后2个多月，运行的很正常。我只能拿点扎带，将我们的服务器网线都理顺了，扎一起。</p>
<h2  class="related_post_title">相关文章</h2><ul class="related_post"><li><a href="http://netfire.name/archives/20090608/333.html" title="Oracle双机互为主备简单备份sh">Oracle双机互为主备简单备份sh</a></li><li><a href="http://netfire.name/archives/20090601/331.html" title="Oracle RAC问题一则（未解决）">Oracle RAC问题一则（未解决）</a></li><li><a href="http://netfire.name/archives/20090319/326.html" title="如何限制操作系统级用户影响Oracle数据">如何限制操作系统级用户影响Oracle数据</a></li><li><a href="http://netfire.name/archives/20090619/335.html" title="Solaris关机用户—sudo实现（090623更新）">Solaris关机用户—sudo实现（090623更新）</a></li><li><a href="http://netfire.name/archives/20090606/332.html" title="Oracle-HA实施步骤（20090607修改）">Oracle-HA实施步骤（20090607修改）</a></li><li><a href="http://netfire.name/archives/20090408/328.html" title="sun4v下安装Nginx">sun4v下安装Nginx</a></li><li><a href="http://netfire.name/archives/20080913/312.html" title="Sun服务器也玩儿覆盖安装和硬盘对拷">Sun服务器也玩儿覆盖安装和硬盘对拷</a></li><li><a href="http://netfire.name/archives/20080717/302.html" title="Solaris10问题？还是硬件问题？[20080720更新]">Solaris10问题？还是硬件问题？[20080720更新]</a></li><li><a href="http://netfire.name/archives/20080514/282.html" title="Solaris下一个或多个Resin的问题">Solaris下一个或多个Resin的问题</a></li><li><a href="http://netfire.name/archives/20080508/280.html" title="Oracle 联合单一表或多表为条件update">Oracle 联合单一表或多表为条件update</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://netfire.name/archives/20091028/342.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>自动改变RadioButtonList选择项目的背景颜色</title>
		<link>http://netfire.name/archives/20090822/340.html</link>
		<comments>http://netfire.name/archives/20090822/340.html#comments</comments>
		<pubDate>Sat, 22 Aug 2009 11:53:03 +0000</pubDate>
		<dc:creator>NetFire</dc:creator>
				<category><![CDATA[代码生活]]></category>
		<category><![CDATA[ASP.NET]]></category>

		<guid isPermaLink="false">http://netfire.name/?p=340</guid>
		<description><![CDATA[<p>　　最近用1.1的框架写个简单的测试程序。相信使用的人已经不多了，只是记录下，以后可能有用。</p>
]]></description>
			<content:encoded><![CDATA[<p>　　最近用1.1的框架写个简单的测试程序。相信使用的人已经不多了，只是记录下，以后可能有用。</p>
<p>　　测试由于题目很多，分批显示或者一个题目一个题目显示都不是很完美，所以采用全部显示，测试者选择问题答案之后采用js来控制选择结果。参考了<a href="http://blog.csdn.net/yx10/archive/2005/07/18/427758.aspx" target="_blank">自动改变CheckBoxList选择项目的背景颜色 </a>。我采用DataList嵌套RadioButtonList从数据库读取数据，稍微有些不同。js部分：</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;"><span style="color: #339933;">&lt;</span>script language<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;javascript&quot;</span><span style="color: #339933;">&gt;</span>
    <span style="color: #003366; font-weight: bold;">function</span> ChangeSelectedItemColor<span style="color: #009900;">&#40;</span>RadioButtonListNum<span style="color: #339933;">,</span>RadioButtonListId<span style="color: #339933;">,</span> numOfItems<span style="color: #009900;">&#41;</span>
    <span style="color: #009900;">&#123;</span>
    		<span style="color: #006600; font-style: italic;">//Get the RadioButtonList object.</span>
        <span style="color: #003366; font-weight: bold;">var</span> objCtrl <span style="color: #339933;">=</span> document.<span style="color: #660066;">getElementById</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'DataList1__ctl'</span> <span style="color: #339933;">+</span> RadioButtonListNum <span style="color: #339933;">+</span> <span style="color: #3366CC;">'_'</span> <span style="color: #339933;">+</span> RadioButtonListId<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
        <span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>objCtrl <span style="color: #339933;">==</span> <span style="color: #003366; font-weight: bold;">null</span><span style="color: #009900;">&#41;</span>
        <span style="color: #009900;">&#123;</span>
            <span style="color: #000066; font-weight: bold;">return</span><span style="color: #339933;">;</span>
        <span style="color: #009900;">&#125;</span>
&nbsp;
        <span style="color: #000066; font-weight: bold;">for</span><span style="color: #009900;">&#40;</span>i <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span> i <span style="color: #339933;">&lt;</span> numOfItems<span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span>
        <span style="color: #009900;">&#123;</span>
            <span style="color: #006600; font-style: italic;">//var name='DataList1__ctl' + checkBoxNum + '_' + checkBoxListId+':'+i;</span>
            <span style="color: #003366; font-weight: bold;">var</span> objItem <span style="color: #339933;">=</span> document.<span style="color: #660066;">getElementById</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'DataList1__ctl'</span> <span style="color: #339933;">+</span> RadioButtonListNum <span style="color: #339933;">+</span> <span style="color: #3366CC;">'_'</span> <span style="color: #339933;">+</span> RadioButtonListId <span style="color: #339933;">+</span> <span style="color: #3366CC;">'_'</span> <span style="color: #339933;">+</span> i<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
            <span style="color: #000066; font-weight: bold;">if</span><span style="color: #009900;">&#40;</span>objItem.<span style="color: #660066;">checked</span><span style="color: #009900;">&#41;</span>
            <span style="color: #009900;">&#123;</span>
                objItem.<span style="color: #660066;">parentElement</span>.<span style="color: #660066;">className</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">'ItemBgColor'</span><span style="color: #339933;">;</span>
            <span style="color: #009900;">&#125;</span>
            <span style="color: #000066; font-weight: bold;">else</span>
            <span style="color: #009900;">&#123;</span>
                objItem.<span style="color: #660066;">parentElement</span>.<span style="color: #660066;">className</span> <span style="color: #339933;">=</span> <span style="color: #3366CC;">''</span><span style="color: #339933;">;</span>
            <span style="color: #009900;">&#125;</span>
        <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span>
<span style="color: #339933;">&lt;/</span>script<span style="color: #339933;">&gt;</span></pre></div></div>

<p>代码端：<br/></p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">srbtnlist_stda.<span style="color: #660066;">Attributes</span>.<span style="color: #660066;">Add</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;onclick&quot;</span><span style="color: #339933;">,</span><span style="color: #3366CC;">&quot;ChangeSelectedItemColor('&quot;</span><span style="color: #339933;">+</span> <span style="color: #009900;">&#40;</span>i<span style="color: #339933;">+</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span><span style="color: #3366CC;">&quot;','srbtnlist_stda','&quot;</span><span style="color: #339933;">+</span>srbtnlist_stda.<span style="color: #660066;">Items</span>.<span style="color: #660066;">Count</span><span style="color: #339933;">+</span><span style="color: #3366CC;">&quot;');&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>//srbtnlist_stda是RadioButtonList的id。</p>
<h2  class="related_post_title">相关文章</h2><ul class="related_post"><li><a href="http://netfire.name/archives/20090712/336.html" title=".NET1.1Framework说，千万别让我的程序跑2.0下">.NET1.1Framework说，千万别让我的程序跑2.0下</a></li><li><a href="http://netfire.name/archives/20050404/207.html" title="ASP.NET DataGrid,DataList,Repeater的通用分页类">ASP.NET DataGrid,DataList,Repeater的通用分页类</a></li><li><a href="http://netfire.name/archives/20031226/498.html" title="ASP.NET 2.0的一些新特性（仅针对开发人员）">ASP.NET 2.0的一些新特性（仅针对开发人员）</a></li><li><a href="http://netfire.name/archives/20031027/487.html" title="从ASP.NET数据库某字段为空时的处理所衍生出来的思考">从ASP.NET数据库某字段为空时的处理所衍生出来的思考</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://netfire.name/archives/20090822/340.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>.NET1.1Framework说，千万别让我的程序跑2.0下</title>
		<link>http://netfire.name/archives/20090712/336.html</link>
		<comments>http://netfire.name/archives/20090712/336.html#comments</comments>
		<pubDate>Sun, 12 Jul 2009 07:14:45 +0000</pubDate>
		<dc:creator>NetFire</dc:creator>
				<category><![CDATA[代码生活]]></category>
		<category><![CDATA[ASP.NET]]></category>

		<guid isPermaLink="false">http://netfire.name/?p=336</guid>
		<description><![CDATA[<p>　　自从三年前用.Net1.1的框架写了最后一个ASP.NET的程序后再也没有捣鼓和.NET相关的东西，而是基本都把业余时间投入到了Solaris和Oracle。没想到几天前却发现那个程序被人攻击了。</p><br />
]]></description>
			<content:encoded><![CDATA[<p>　　自从三年前用.Net1.1的框架写了最后一个ASP.NET的程序后再也没有捣鼓和.NET相关的东西，而是基本都把业余时间投入到了Solaris和Oracle。没想到几天前却发现那个程序被人攻击了。</p>
<p>　　仔细看过对方服务器配置之后，发现两个问题：</p>
<p>　　1、原来基于1.1的框架写的，结果应用却跑在2.0下，<wbr></wbr>后台登陆的requiredfieldvalidato<wbr></wbr>r失效。</p>
<p>　　2、web.config中的配置错误，导致&ldquo;管理员&rdquo;身份登录验证失效。下面是验证代码：</p>
<div style="font-family: &quot;[object HTMLOptionElement]&quot;,&quot;Consolas&quot;,&quot;Lucida Console&quot;,&quot;Courier New&quot;; color: rgb(0, 0, 0);" class="source"><span style="color: rgb(0, 136, 0); font-style: italic;">//1表示用户类型选择的是管理员</span><br /><span style="color: rgb(0, 0, 128); font-weight: bold;">private</span> <span style="color: rgb(0, 0, 128); font-weight: bold;">string</span> <span style="color: rgb(0, 0, 0);">LoginMessage</span>(<span style="color: rgb(0, 0, 128); font-weight: bold;">string</span> <span style="color: rgb(0, 0, 0);">uid</span><span style="color: rgb(0, 0, 0);">,</span> <span style="color: rgb(0, 0, 128); font-weight: bold;">string</span> <span style="color: rgb(0, 0, 0);">pwd</span><span style="color: rgb(0, 0, 0);">,</span><span style="color: rgb(0, 0, 128); font-weight: bold;">string</span> <span style="color: rgb(0, 0, 0);">loginType</span>)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0, 0, 0);">{</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0, 0, 128); font-weight: bold;">string</span> <span style="color: rgb(0, 0, 0);">erroMessage</span> <span style="color: rgb(0, 0, 0);">=</span> <span style="color: rgb(0, 0, 255);">&quot;&quot;</span>;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0, 0, 128); font-weight: bold;">string</span> <span style="color: rgb(0, 0, 0);">configServer</span> <span style="color: rgb(0, 0, 0);">=</span> <span style="color: rgb(0, 0, 0);">ConfigurationSettings</span><span style="color: rgb(0, 0, 0);">.</span><span style="color: rgb(0, 0, 0);">AppSettings</span><span style="color: rgb(0, 0, 0);">[</span><span style="color: rgb(0, 0, 255);">&quot;dbserver&quot;</span><span style="color: rgb(0, 0, 0);">];</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0, 0, 128); font-weight: bold;">switch</span> (<span style="color: rgb(0, 0, 0);">loginType</span>)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0, 0, 0);">{</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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0, 0, 128); font-weight: bold;">case</span> <span style="color: rgb(0, 0, 255);">&quot;0&quot;</span><span style="color: rgb(0, 0, 0);">:</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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0, 0, 0);">erroMessage</span> <span style="color: rgb(0, 0, 0);">=</span> <span style="color: rgb(0, 0, 255);">&quot;请选择您所属的用户类型！&quot;</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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0, 0, 128); font-weight: bold;">break</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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0, 0, 128); font-weight: bold;">case</span> <span style="color: rgb(0, 0, 255);">&quot;1&quot;</span><span style="color: rgb(0, 0, 0);">:</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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0, 0, 128); font-weight: bold;">string</span> <span style="color: rgb(0, 0, 0);">sqlstr</span> <span style="color: rgb(0, 0, 0);">=</span> <span style="color: rgb(0, 0, 255);">&quot;server=&quot;</span> <span style="color: rgb(0, 0, 0);">+</span> <span style="color: rgb(0, 0, 0);">configServer</span> <span style="color: rgb(0, 0, 0);">+</span> <span style="color: rgb(0, 0, 255);">&quot;;uid=&quot;</span> <span style="color: rgb(0, 0, 0);">+</span> <span style="color: rgb(0, 0, 0);">uid</span> <span style="color: rgb(0, 0, 0);">+</span><br /><span style="color: rgb(0, 0, 255);">&quot;;PWD=&quot;</span> <span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 0);">pwd</span> <span style="color: rgb(0, 0, 0);">+</span><span style="color: rgb(0, 0, 255);">&quot;;DATABASE=jwc&quot;</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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0, 0, 0);">SqlConnection</span> <span style="color: rgb(0, 0, 0);">myConnection</span> <span style="color: rgb(0, 0, 0);">=</span> <span style="color: rgb(0, 0, 128); font-weight: bold;">new</span> <span style="color: rgb(0, 0, 0);">SqlConnection</span>(<span style="color: rgb(0, 0, 0);">sqlstr</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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0, 0, 128); font-weight: bold;">try</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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0, 0, 0);">{</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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0, 0, 0);">myConnection</span><span style="color: rgb(0, 0, 0);">.</span><span style="color: rgb(0, 0, 0);">Open</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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0, 0, 0);">}</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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0, 0, 128); font-weight: bold;">catch</span> (<span style="color: rgb(0, 0, 0);">SqlException</span> <span style="color: rgb(0, 0, 0);">exp</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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0, 0, 0);">{</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#038;nbs<br />
p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0, 0, 128); font-weight: bold;">if</span> (<span style="color: rgb(0, 0, 0);">exp</span><span style="color: rgb(0, 0, 0);">.</span><span style="color: rgb(0, 0, 0);">Number</span> <span style="color: rgb(0, 0, 0);">==</span> <span style="color: rgb(0, 0, 255);">18456</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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0, 0, 0);">{</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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0, 0, 0);">erroMessage</span> <span style="color: rgb(0, 0, 0);">=</span> <span style="color: rgb(0, 0, 255);">&quot;登陆错误，请确认您的用户名和密码，否则请勿尝试登陆！&quot;</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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0, 0, 0);">}</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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0, 0, 0);">myConnection</span><span style="color: rgb(0, 0, 0);">.</span><span style="color: rgb(0, 0, 0);">Close</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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0, 0, 0);">}</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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0, 0, 128); font-weight: bold;">break</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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0, 0, 128); font-weight: bold;">case</span> <span style="color: rgb(0, 0, 255);">&quot;2&quot;</span><span style="color: rgb(0, 0, 0);">:</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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0, 0, 128); font-weight: bold;">string</span> <span style="color: rgb(0, 0, 0);">countUser</span> <span style="color: rgb(0, 0, 0);">=</span> <span style="color: rgb(0, 0, 255);">&quot;select count(*) from sectionUser where</span><br /><span style="color: rgb(0, 0, 0);">sectionUserID</span> <span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(166, 23, 23); background-color: rgb(227, 210, 210);">&#8216;</span><span style="color: rgb(0, 0, 255);">&quot; + uid + &quot;</span><span style="color: rgb(166, 23, 23); background-color: rgb(227, 210, 210);">&#8216;</span><span style="color: rgb(0, 0, 255);">&quot;;</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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0, 0, 128); font-weight: bold;">string</span> <span style="color: rgb(0, 0, 0);">testUser</span> <span style="color: rgb(0, 0, 0);">=</span>&nbsp; <span style="color: rgb(0, 0, 255);">&quot;select sectionUserPwd from sectionUser where</span><br /><span style="color: rgb(0, 0, 0);">sectionUserID</span> <span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(166, 23, 23); background-color: rgb(227, 210, 210);">&#8216;</span><span style="color: rgb(0, 0, 255);">&quot;&nbsp; + uid + &quot;</span><span style="color: rgb(166, 23, 23); background-color: rgb(227, 210, 210);">&#8216;</span><span style="color: rgb(0, 0, 255);">&quot;;</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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0, 0, 128); font-weight: bold;">int</span> n <span style="color: rgb(0, 0, 0);">=</span> <span style="color: rgb(0, 0, 0);">myDb</span><span style="color: rgb(0, 0, 0);">.</span><span style="color: rgb(0, 0, 0);">GetCount</span>(<span style="color: rgb(0, 0, 0);">countUser</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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0, 0, 128); font-weight: bold;">if</span> (n<span style="color: rgb(0, 0, 0);">&gt;</span><span style="color: rgb(0, 0, 255);">0</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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0, 0, 0);">{</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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0, 0, 128); font-weight: bold;">string</span> <span style="color: rgb(0, 0, 0);">result</span> <span style="color: rgb(0, 0, 0);">=</span> <span style="color: rgb(0, 0, 0);">myDb</span><span style="color: rgb(0, 0, 0);">.</span><span style="color: rgb(0, 0, 0);">GetDbString</span>(<span style="color: rgb(0, 0, 0);">testUser</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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0, 0, 128); font-weight: bold;">if</span>(<span style="color: rgb(0, 0, 0);">pwd</span> <span style="color: rgb(0, 0, 0);">!=</span> <span style="color: rgb(0, 0, 0);">result</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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0, 0, 0);">{</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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0, 0, 0);">erroMessage</span> <span style="color: rgb(0, 0, 0);">=</span> <span style="color: rgb(0, 0, 255);">&quot;登陆错误，请确认您的用户名和密码，否则请勿尝试登陆！&quot;</span>;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&<br />
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0, 0, 0);">}</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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0, 0, 0);">}</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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0, 0, 128); font-weight: bold;">else</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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0, 0, 0);">{</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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0, 0, 0);">erroMessage</span> <span style="color: rgb(0, 0, 0);">=</span> <span style="color: rgb(0, 0, 255);">&quot;登陆错误，请确认您的用户名和密码，否则请勿尝试登陆！&quot;</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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0, 0, 0);">}</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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0, 0, 128); font-weight: bold;">break</span>;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0, 0, 0);">}</span><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0, 0, 128); font-weight: bold;">return</span> <span style="color: rgb(0, 0, 0);">erroMessage</span>;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: rgb(0, 0, 0);">}</span></div>
<p>　　第一个问题，很好解决。卸载IIS的所有.NET版本，然后重新安装。最后配置站点的时候将1.1和2.0分别设置两个程序池。站点属性里一定要设置对，1.1的程序别设成2.0。</p>
<p>　　第二个问题，当时很迷糊，也没有找到原因。因为程序代码在我本地调试正常，本地和服务器唯一的区别就是我没有安装2.0的框架。最后一句句检查web.config后确认原因，就是web.config中：&lt;add key=&quot;dbstring&quot; value=&quot;user id=xx; password=xxx; database=xxx; server=xxxx&quot; /&gt;server项没有设置对。改之！</p>
<p>　　本来还想将程序重新测试一下，但是实在觉得得不偿失，1.1多久远的事情了，改明儿用java重写这个站点的程序吧（算是练习java）。这反映一个问题，微软现在都.NET4.0了，如果向下兼容还做成这样，一定要让用户去确定框架，实在不是多完美的事情。</p>
<h2  class="related_post_title">相关文章</h2><ul class="related_post"><li><a href="http://netfire.name/archives/20090822/340.html" title="自动改变RadioButtonList选择项目的背景颜色">自动改变RadioButtonList选择项目的背景颜色</a></li><li><a href="http://netfire.name/archives/20050404/207.html" title="ASP.NET DataGrid,DataList,Repeater的通用分页类">ASP.NET DataGrid,DataList,Repeater的通用分页类</a></li><li><a href="http://netfire.name/archives/20031226/498.html" title="ASP.NET 2.0的一些新特性（仅针对开发人员）">ASP.NET 2.0的一些新特性（仅针对开发人员）</a></li><li><a href="http://netfire.name/archives/20031027/487.html" title="从ASP.NET数据库某字段为空时的处理所衍生出来的思考">从ASP.NET数据库某字段为空时的处理所衍生出来的思考</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://netfire.name/archives/20090712/336.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Solaris关机用户—sudo实现（090623更新）</title>
		<link>http://netfire.name/archives/20090619/335.html</link>
		<comments>http://netfire.name/archives/20090619/335.html#comments</comments>
		<pubDate>Fri, 19 Jun 2009 03:03:40 +0000</pubDate>
		<dc:creator>NetFire</dc:creator>
				<category><![CDATA[代码生活]]></category>
		<category><![CDATA[Solaris]]></category>

		<guid isPermaLink="false">http://netfire.name/?p=335</guid>
		<description><![CDATA[<p>　　需求：服务器归一个部门管理，但是由于数据的敏感性，所以root帐号不能交给这个部门。所以出现了这样一个需求。关机、重启等特殊命令给一个用户来执行。但是考虑到服务器上脚本的安全性，这个用户又不能去查看这些脚本。</p>
]]></description>
			<content:encoded><![CDATA[<p>　　需求：服务器归一个部门管理，但是由于数据的敏感性，所以root帐号不能交给这个部门。所以出现了这样一个需求。关机、重启等特殊命令给一个用户来执行。但是考虑到服务器上脚本的安全性，这个用户又不能去查看这些脚本。</p>
<p>　　首先，我想到的是Solaris的RABC来实现。通过SMC建立相应的角色，用户，并授权。可能由于我操作的问题，始终都没弄对。</p>
<p>　　然后一翻google。将能搜索到的办法都基本尝试了一下，居然没有一个可行，继续怀疑自己的问题。其实网上的办法是另外一种，就是通过shell来做文章，登陆后立刻执行一个shell关机，比如（如下办法我没成功）：</p>
<table cellspacing="1" cellpadding="1" border="1" width="95%">
<tbody>
<tr>
<td>要关机，必须有关机权限。什么人有关机权限？root。但不能把root口令告诉普通用户，怎么办？创建一个特殊的超级用户，他的登录shell是一个定制的文件：一条关机命令。具体做法如下：</p>
<p>            # vi /etc/passwd</p>
<p>            shutdown:x:0:1:shutdown user:/:/bin/shutdown 添加一个用户</p>
<p>            # vi /etc/shadow</p>
<p>            shutdown::::::::</p>
<p>            # vi /bin/shutdown</p>
<p>            /usr/sbin/shutdown -y -g0 -i5</p>
<p>            把别的用户logout，试着用shutdown用户登录。输入完用户名和口令后，系统就开始关机。</td>
</tr>
</tbody>
</table>
<p>　　最后大鱼儿和一个同事建议我使用sudo。尝试下总归是好的，去sunfreeware.com下载相关的包，上传到服务器。</p>
<table cellspacing="1" cellpadding="1" border="1" width="95%">
<tbody>
<tr>
<td>
<p># gunzip libgcc-3.4.6-sol10-sparc-local.gz<br />            # gunzip libiconv-1.11-sol10-sparc-local.gz <br />            # gunzip libintl-3.4.0-sol10-sparc-local.gz <br />            # gunzip sudo-1.7.1-sol10-sparc-local.gz<br />            # pkgadd -d /export/home/soft/libintl-3.4.0-sol10-sparc-local<br />            # pkgadd -d /export/home/soft/libiconv-1.11-sol10-sparc-local<br />            # pkgadd -d /export/home/soft/libgcc-3.4.6-sol10-sparc-local<br />            # pkgadd -d /export/home/soft/sudo-1.7.1-sol10-sparc-local<br />            # useradd -u 600 -m -d /export/home/shdUser -s /usr/bin/bash shdUser<br />            # vi /usr/local/etc/sudoers<br />            <strong>增加：shdUser ALL=(root) NOPASSWD: /usr/sbin/shutdown,/usr/sbin/showmount,/usr/ccs/bin/dump</strong><br />            <strong>//设置相关shell的权限</strong><br />            # chmod 700 /export/home/yourshell.sh</p>
</td>
</tr>
</tbody>
</table>
<p>　　一切准备就绪。然后用shdUser登陆。</p>
<table cellspacing="1" cellpadding="1" border="1" width="95%">
<tbody>
<tr>
<td>
<p>$ vi .profile<br />            <strong>//增加：export PATH=/usr/bin:/usr/ucb:/etc:/usr/local/bin:/usr/ccs/bin:.</strong><br />            <strong>//保存后退出重新登陆</strong><br />            $ sudo -l<br />            User shdUser may run the following commands on this host:<br />            &nbsp;&nbsp;&nbsp; (root) NOPASSWD: /usr/sbin/shutdown, (root) /usr/sbin/showmount, (root) /usr/ccs/bin/dump<br />            $ sudo shutdown -y -g0 -i5<br />            We trust you have received the usual lecture from the local System Administrator.<br />            It usually boils down to these three things:<br />            #1) Respect the privacy of others.<br />            #2) Think before you type<br />            #3) With great power comes great responsibility<br />            <strong>//输入shdUser密码</strong><br />            Sorry, user shdUser is not allowed to execute &#8216;/usr/ucb/shutdown -y -g0 -i5&#8242; as root on yourhostname.<br />            <strong>//看来不能简单些shutdown</strong><br />            <strong>//090623更新，感谢大鱼儿：由于profile中的目录优先级问题，所以没法直接使用shutdown。可以改一下profile中/usr/ucb/和<strong>/</strong>usr/local/bin的顺序即可。大鱼儿提到写个sh脚本让用户执行，这样应该更好一些。</strong><br />            $ sudo /usr/sbin/shutdown -y -g0 -i5<br />            <strong>//顺利关机！</strong></p>
</td>
</tr>
</tbody>
</table>
<p>　　更多sudo信息可以参考<a href="http://www.gratisoft.us/sudo/sudo.html" target="_blank">Sudo Main Page</a>。</p>
<h2  class="related_post_title">相关文章</h2><ul class="related_post"><li><a href="http://netfire.name/archives/20091028/342.html" title="双机问题一则">双机问题一则</a></li><li><a href="http://netfire.name/archives/20090608/333.html" title="Oracle双机互为主备简单备份sh">Oracle双机互为主备简单备份sh</a></li><li><a href="http://netfire.name/archives/20090601/331.html" title="Oracle RAC问题一则（未解决）">Oracle RAC问题一则（未解决）</a></li><li><a href="http://netfire.name/archives/20090408/328.html" title="sun4v下安装Nginx">sun4v下安装Nginx</a></li><li><a href="http://netfire.name/archives/20090319/326.html" title="如何限制操作系统级用户影响Oracle数据">如何限制操作系统级用户影响Oracle数据</a></li><li><a href="http://netfire.name/archives/20080913/312.html" title="Sun服务器也玩儿覆盖安装和硬盘对拷">Sun服务器也玩儿覆盖安装和硬盘对拷</a></li><li><a href="http://netfire.name/archives/20080717/302.html" title="Solaris10问题？还是硬件问题？[20080720更新]">Solaris10问题？还是硬件问题？[20080720更新]</a></li><li><a href="http://netfire.name/archives/20080514/282.html" title="Solaris下一个或多个Resin的问题">Solaris下一个或多个Resin的问题</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://netfire.name/archives/20090619/335.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Oracle双机互为主备简单备份sh</title>
		<link>http://netfire.name/archives/20090608/333.html</link>
		<comments>http://netfire.name/archives/20090608/333.html#comments</comments>
		<pubDate>Mon, 08 Jun 2009 08:51:50 +0000</pubDate>
		<dc:creator>NetFire</dc:creator>
				<category><![CDATA[代码生活]]></category>
		<category><![CDATA[HA]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Solaris]]></category>

		<guid isPermaLink="false">http://netfire.name/?p=333</guid>
		<description><![CDATA[<p>　　Oracle本身的备份策略很多，这里只说说简单的exp命令备份在双机互为主备的方案中shell怎么做。</p>
]]></description>
			<content:encoded><![CDATA[<p>　　Oracle本身的备份策略很多，这里只说说简单的exp命令备份在双机互为主备的方案中shell怎么做。</p>
<p>　　由于互为主备，平时AB机各自运行自己的实例，当然发生故障后有双机软件去实现自动切换。这样就导致了存储上挂接的同一个lum并不会同时出现两台主机上。那么传统的exp备份脚本就无法正常运行。比如常用的exp的shell脚本如下：</p>
<table cellspacing="0" cellpadding="0" border="1" width="95%">
<tbody>
<tr>
<td>ORACLE_BASE=/export/home/oracle<br />            export ORACLE_BASE<br />            ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1<br />            export ORACLE_HOME<br />            ORACLE_SID=test<br />            export ORACLE_SID<br />            LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib:/usr/openwin/lib<br />            export LD_LIBRARY_PATH<br />            NLS_LANG=&quot;simplified chinese&quot;_china.zhs16gbk<br />            export NLS_LANG<br />            ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data<br />            export ORA_NLS33<br />            PATH=$PATH:/opt/SUNWspro/bin:/usr/sbin:/opt/bin:$ORACLE_HOME/bin:/usr/ccs/bin<br />            export PATH</p>
<p>            DATE=`date +%Y%m%d`</p>
<p>            cd /databak<br />            exp userid=&#8217;test/test&#8217;@test compress=n&nbsp; file=test${DATE}.dmp log=test${DATE}.log</p>
<p>            gzip test${DATE}.dmp</td>
</tr>
</tbody>
</table>
<p>　　如果套用到互为备份的双机中，就有问题，这个shell到底放在A机还是B机呢？还是两台都放？</p>
<p>　　如果放在其中一台服务器上，假设放在A机上。A机出问题（网络故障或者系统故障），数据库B机自动接管了（这时存储上的lum都会挂接到B机）。A机脚本就无法工作。</p>
<p>　　如果A、B机都放，依然是问题。存储上的lum是无法同时挂接到两台服务器的。</p>
<p>　　因此，那就应该考虑，<strong>从判断监听是否启动或者判断数据库是否启动入手，通过shell生成一个flag文件，然后去判断这个flag文件大小</strong>。修改后的shell如下：</p>
<table cellspacing="0" cellpadding="0" border="1" width="95%">
<tbody>
<tr>
<td>ORACLE_BASE=/export/home/oracle<br />            export ORACLE_BASE<br />            ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1<br />            export ORACLE_HOME<br />            ORACLE_SID=test<br />            export ORACLE_SID<br />            LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib:/usr/openwin/lib<br />            export LD_LIBRARY_PATH<br />            NLS_LANG=&quot;simplified chinese&quot;_china.zhs16gbk<br />            export NLS_LANG<br />            ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data<br />            export ORA_NLS33<br />            PATH=$PATH:/opt/SUNWspro/bin:/usr/sbin:/opt/bin:$ORACLE_HOME/bin:/usr/ccs/bin<br />            export PATH</p>
<p>            DATE=`date +%Y%m%d`<br />            #这里是AB机种本地磁盘的目录<br />            cd /test/test_sh/<br />            rm -f&nbsp; lsnr.test<br />            ps -ef | grep &quot;/export/home/oracle/product/10.2.0/db_1/bin/tnslsnr LISTENER_test&quot; | grep -v grep &gt; lsnr.test<br />            if [ -s lsnr.test ]<br />            then<br />            #这里是存储上的目录<br />            cd /test/Backup<br />            exp userid=&#8217;test/test&#8217;@test compress=n&nbsp; file=test${DATE}.dmp log=test${DATE}.log<br />            gzip test${DATE}.dmp<br />            else<br />            echo（当然这里还可以和邮件结合起来，让每次备份什么的dba心中有数）<br />            fi</td>
</tr>
</tbody>
</table>
<p>　　最后，在AB机都放上这个脚本。在crontab中写好执行时间，也不会因为其中一台服务器down掉导致备份无法正常执行。<br />&nbsp;</p>
<h2  class="related_post_title">相关文章</h2><ul class="related_post"><li><a href="http://netfire.name/archives/20091028/342.html" title="双机问题一则">双机问题一则</a></li><li><a href="http://netfire.name/archives/20090606/332.html" title="Oracle-HA实施步骤（20090607修改）">Oracle-HA实施步骤（20090607修改）</a></li><li><a href="http://netfire.name/archives/20090601/331.html" title="Oracle RAC问题一则（未解决）">Oracle RAC问题一则（未解决）</a></li><li><a href="http://netfire.name/archives/20090319/326.html" title="如何限制操作系统级用户影响Oracle数据">如何限制操作系统级用户影响Oracle数据</a></li><li><a href="http://netfire.name/archives/20090619/335.html" title="Solaris关机用户—sudo实现（090623更新）">Solaris关机用户—sudo实现（090623更新）</a></li><li><a href="http://netfire.name/archives/20090408/328.html" title="sun4v下安装Nginx">sun4v下安装Nginx</a></li><li><a href="http://netfire.name/archives/20080913/312.html" title="Sun服务器也玩儿覆盖安装和硬盘对拷">Sun服务器也玩儿覆盖安装和硬盘对拷</a></li><li><a href="http://netfire.name/archives/20080717/302.html" title="Solaris10问题？还是硬件问题？[20080720更新]">Solaris10问题？还是硬件问题？[20080720更新]</a></li><li><a href="http://netfire.name/archives/20080514/282.html" title="Solaris下一个或多个Resin的问题">Solaris下一个或多个Resin的问题</a></li><li><a href="http://netfire.name/archives/20080508/280.html" title="Oracle 联合单一表或多表为条件update">Oracle 联合单一表或多表为条件update</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://netfire.name/archives/20090608/333.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Oracle-HA实施步骤（20090607修改）</title>
		<link>http://netfire.name/archives/20090606/332.html</link>
		<comments>http://netfire.name/archives/20090606/332.html#comments</comments>
		<pubDate>Sat, 06 Jun 2009 10:23:39 +0000</pubDate>
		<dc:creator>NetFire</dc:creator>
				<category><![CDATA[代码生活]]></category>
		<category><![CDATA[HA]]></category>
		<category><![CDATA[Oracle]]></category>

		<guid isPermaLink="false">http://netfire.name/?p=332</guid>
		<description><![CDATA[<p>　　Oralce做双机一般来说都是高可用的代名词，可以采用各种不同的HA软件来做，这里不具体涉及到HA软件，只是从Oracle本身出发。</p>
]]></description>
			<content:encoded><![CDATA[<p>　　Oralce做双机一般来说都是高可用的代名词，可以采用各种不同的HA软件来做，这里不具体涉及到HA软件，只是从Oracle本身出发。</p>
<p>　　常见的方式就是一主一备，这样一般数据库只有一个实例，这样的双机方案很多。而互为主备，就只能采用双实例方式，也就是说A机日常运行实例A，B机运行实例B。当故障发生时，在另外一台机器上启动数据库。</p>
<p>　　实施的时候很简单。<strong>在方案设计时，必须要将A、B机的实例A和实例B全部设计在存储上。</strong></p>
<p>　　1、在A机和B机上安装好数据库软件，仅软件本身，不创建数据库和监听。<strong>注意确保2台机器上oracle用户和dba组  id相同</strong>。</p>
<p>　　2、在A机或者B机上创建实例，比如这里A机创建实例A和数据库，之后再创建实例B和数据库。然后建立监听。</p>
<p>　　3、将A机的$ORACLE_HOME下,dbs下spfile,orapwfile等copy到B机，将 A机的 network/admin目录下listener.ora和tnsnames.ora文件也copy到B机。并修改listener.ora文件中host参数所指IP。将A机的$ORACLE_BASE目录下的admin目录下所有文件（包括&lt;SID&gt;中的bdump、udump、cdump等dump文件目录），全部copy到B机。<strong>注意：这里listener.ora对于互为主备的方案必须要是两个监听名，比如LISTENER_A和LISTENER_B。举例如下（粗体处请特别注意）：</strong></p>
<table width="95%" cellspacing="1" cellpadding="1" border="1" align="center">
<tbody>
<tr>
<td>
<p># listener.ora Network Configuration File: /export/home/oracle/product/10.2.0/db_1/network/admin/listener.ora<br />            # Generated by Oracle configuration tools.</p>
<p>            LISTENER_A =<br />            &nbsp; (DESCRIPTION_LIST =<br />            &nbsp;&nbsp;&nbsp; (DESCRIPTION =<br />            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.1)(PORT = 1521))<br />            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (ADDRESS = (PROTOCOL = IPC)(KEY = <strong>EXTPROC1</strong>))<br />            &nbsp;&nbsp;&nbsp; )<br />            &nbsp; )</p>
<p>LISTENER_B =<br />            &nbsp; (DESCRIPTION_LIST =<br />            &nbsp;&nbsp;&nbsp; (DESCRIPTION =<br />            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.2)(PORT = 1521))<br />            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (ADDRESS = (PROTOCOL = IPC)(KEY = <strong>EXTPROC0</strong>))<br />            &nbsp;&nbsp;&nbsp; )<br />            &nbsp; )</p>
<p>SID_LIST_LISTENER_A =<br />            &nbsp; (SID_LIST =<br />            &nbsp;&nbsp;&nbsp; (SID_DESC =<br />            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (SID_NAME = PLSExtProc)<br />            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (ORACLE_HOME = /export/home/oracle/product/10.2.0/db_1)<br />            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (PROGRAM = extproc)<br />            &nbsp;&nbsp;&nbsp; )<br />            &nbsp;&nbsp;&nbsp; (SID_DESC =<br />            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (GLOBAL_NAME = Adb)<br />            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (ORACLE_HOME = /export/home/oracle/product/10.2.0/db_1)<br />            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (SID_NAME = Adb)<br />            &nbsp;&nbsp;&nbsp; )<br />            &nbsp; )</p>
<p>            SID_LIST_LISTENER_B =<br />            &nbsp; (SID_LIST =<br />            &nbsp;&nbsp;&nbsp; (SID_DESC =<br />            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (SID_NAME = PLSExtProc)<br />            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (ORACLE_HOME = /export/home/oracle/product/10.2.0/db_1)<br />            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (PROGRAM = extproc)<br />            &nbsp;&nbsp;&nbsp; )<br />            &nbsp;&nbsp;&nbsp; (SID_DESC =<br />            &nbsp;&nbsp;&nbsp;&nbsp; (GLOBAL_NAME = Bdb)<br />            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (ORACLE_HOME = /export/home/oracle/product/10.2.0/db_1)<br />            &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (SID_NAME = Bdb)<br />            &nbsp;&nbsp;&nbsp; )<br />            &nbsp; )</p>
</td>
</tr>
</tbody>
</table>
<p>　　4、尝试在B机上启动实例B监听和数据库。如果有问题，再按照出错信息找原因（这句话有点白，实际上就是如果前面3步正确，那这里应该不会有问题。如果第三点listener.ora粗体处KEY一致，可能会在启动监听时报错：TNS-01106 Listener using listener name string has already been started）。</p>
<p>　　5、手工测试：尝试在A机上启动两个实例数据库，尝试在B机上启动两个实例的数据库。</p>
<p>　　6、HA软件测试：如果没问题，剩下的工作就交给HA软件了。只是在故障发生后，不管什么HA软件都需要手动切换回去。<strong>注意：这里和单机的Oracle区别在于不需要再去建立服务器重启后Oracle的重启脚本之类的，一切都应该是HA软件来完成，否则可能导致HA软件无法接管并启动数据库。</strong></p>
<p>　　回过头来，觉得真的很简单。但是实际在我实施的过程中遇到了些问题，都是因为上面的第三点，如果有文件拷贝不完整，就无法启动B机的数据库。还有，安装的时候一定要保持头脑清醒，我都做到最后一步了，发现昨晚1点在A机上创建的实例A没有放在存储上，简单的只能删除了重建（当然也有办法改，不过相对删除重建要麻烦点）。最后，这里不得不说到Unix系统，不像Windows一样有注册表的概念，才会有这样如此简单的办法。以上写的都相对简单。</p>
<h2  class="related_post_title">相关文章</h2><ul class="related_post"><li><a href="http://netfire.name/archives/20090608/333.html" title="Oracle双机互为主备简单备份sh">Oracle双机互为主备简单备份sh</a></li><li><a href="http://netfire.name/archives/20091028/342.html" title="双机问题一则">双机问题一则</a></li><li><a href="http://netfire.name/archives/20090601/331.html" title="Oracle RAC问题一则（未解决）">Oracle RAC问题一则（未解决）</a></li><li><a href="http://netfire.name/archives/20090319/326.html" title="如何限制操作系统级用户影响Oracle数据">如何限制操作系统级用户影响Oracle数据</a></li><li><a href="http://netfire.name/archives/20080508/280.html" title="Oracle 联合单一表或多表为条件update">Oracle 联合单一表或多表为条件update</a></li><li><a href="http://netfire.name/archives/20061122/265.html" title="[zt]Oracle 中如何删除重复数据">[zt]Oracle 中如何删除重复数据</a></li><li><a href="http://netfire.name/archives/20061117/264.html" title="[zt]两个有用的oracle数据库运算：intersect和minus运算">[zt]两个有用的oracle数据库运算：intersect和minus运算</a></li><li><a href="http://netfire.name/archives/20061031/260.html" title="删除大量Oracle数据方法总结">删除大量Oracle数据方法总结</a></li><li><a href="http://netfire.name/archives/20060826/255.html" title="Oracle下查询设定字符集">Oracle下查询设定字符集</a></li><li><a href="http://netfire.name/archives/20050926/236.html" title="美国海军衫、甲骨文和微软">美国海军衫、甲骨文和微软</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://netfire.name/archives/20090606/332.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Oracle RAC问题一则（未解决）</title>
		<link>http://netfire.name/archives/20090601/331.html</link>
		<comments>http://netfire.name/archives/20090601/331.html#comments</comments>
		<pubDate>Mon, 01 Jun 2009 03:29:50 +0000</pubDate>
		<dc:creator>NetFire</dc:creator>
				<category><![CDATA[代码生活]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Solaris]]></category>

		<guid isPermaLink="false">http://netfire.name/?p=331</guid>
		<description><![CDATA[<p>奇怪的问题，没解决。备查</p>
]]></description>
			<content:encoded><![CDATA[<p>1、solaris10 + oracle10.2.0.4 rac</p>
<p>2、连接时出现ORA-12545：增加两个节点的LOCAL_LISTENER设置。用sys帐号登录后分别在两个节点执行：<br />ALTER SYSTEM SET LOCAL_LISTENER = &#8216;(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.7)(PORT = 1521))&#8217;&nbsp;&nbsp; SID = &#8216;testdb1&#8242;;<br />ALTER SYSTEM SET LOCAL_LISTENER = &#8216;(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.8)(PORT = 1521))&#8217;&nbsp;&nbsp; SID = &#8216;testdb2&#8242;;</p>
<p>3、客户端tnsname.ora<br />testDB =<br />&nbsp;(DESCRIPTION =<br />&nbsp; (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.7)(PORT = 1521))<br />&nbsp; (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.8)(PORT = 1521))<br />&nbsp; (LOAD_BALANCE = yes)<br />&nbsp; (CONNECT_DATA =<br />&nbsp; &nbsp; (SERVER = DEDICATED)<br />&nbsp; &nbsp; (SERVICE_NAME = swpudb)<br />&nbsp; &nbsp; (FAILOVER_MODE =<br />&nbsp; &nbsp; &nbsp; (TYPE = SELECT)<br />&nbsp; &nbsp; &nbsp; (METHOD = BASIC)<br />&nbsp; &nbsp; &nbsp; (RETRIES = 180)<br />&nbsp; &nbsp; &nbsp; (DELAY = 5)<br />&nbsp; &nbsp; )<br />&nbsp; )<br />&nbsp;)</p>
<p>4、导入两个应用的数据做测试后，</p>
<p>5、<span style="color: rgb(255, 0, 0);">问题：就是在node1使用ssh连接时，键入命令有时停顿很严重，但是服务器负载很低。而且应用程序连接是也非常缓慢，这种情况一天内不间断发生</span>。尝试修改应用连接的VIP地址，将两个node的VIP互换，发现应用程序可正常连接，响应速度正常。说明node1有问题，但是至今无法确认到底是什么问题。无比头疼。</p>
<p>6、在node1中查看alter日志：<br />-bash-3.00$ tail -200 /export/home/oracle/admin/swpudb/bdump/alert_testdb1.log | grep ORA<br />Starting ORACLE instance (normal)<br />Starting up ORACLE RDBMS Version: 10.2.0.4.0.<br />WARNING: inbound connection timed out (ORA-3136)<br />WARNING: inbound connection timed out (ORA-3136)<br />在node2中查看alter日志：<br />-bash-3.00$ tail -200 /export/home/oracle/admin/swpudb/bdump/alert_testdb2.log | grep ORA<br />Starting ORACLE instance (normal)<br />Starting up ORACLE RDBMS Version: 10.2.0.4.0.<br />google出的一个文档：http://www.dbasky.net/archives/2009/05/oracle10gora-3136.html，按照文档所说在两个节点上都增加响应配置。<br />$ lsnrctl<br />LSNRCTL&gt; show inbound_connect_timeout<br />Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=hpcmdb2.transgd)(PORT=1521)))<br />LISTENER parameter &quot;inbound_connect_timeout&quot; set to 60<br />The command completed successfully<br />LSNRCTL&gt; set inbound_connect_timeout 0<br />Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=hpcmdb2.transgd)(PORT=1521)))<br />LISTENER parameter &quot;inbound_connect_timeout&quot; set to 0<br />The command completed successfully<br />LSNRCTL&gt; show inbound_connect_timeout<br />Connecting to (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=hpcmdb2.transgd)(PORT=1521)))<br />LISTENER parameter &quot;inbound_connect_timeout&quot; set to 0<br />The command completed successfully<br />LSNRCTL&gt; exit </p>
<p>7、节点1依然不正常&hellip;&hellip;</p>
<h2  class="related_post_title">相关文章</h2><ul class="related_post"><li><a href="http://netfire.name/archives/20091028/342.html" title="双机问题一则">双机问题一则</a></li><li><a href="http://netfire.name/archives/20090608/333.html" title="Oracle双机互为主备简单备份sh">Oracle双机互为主备简单备份sh</a></li><li><a href="http://netfire.name/archives/20090319/326.html" title="如何限制操作系统级用户影响Oracle数据">如何限制操作系统级用户影响Oracle数据</a></li><li><a href="http://netfire.name/archives/20090619/335.html" title="Solaris关机用户—sudo实现（090623更新）">Solaris关机用户—sudo实现（090623更新）</a></li><li><a href="http://netfire.name/archives/20090606/332.html" title="Oracle-HA实施步骤（20090607修改）">Oracle-HA实施步骤（20090607修改）</a></li><li><a href="http://netfire.name/archives/20090408/328.html" title="sun4v下安装Nginx">sun4v下安装Nginx</a></li><li><a href="http://netfire.name/archives/20080913/312.html" title="Sun服务器也玩儿覆盖安装和硬盘对拷">Sun服务器也玩儿覆盖安装和硬盘对拷</a></li><li><a href="http://netfire.name/archives/20080717/302.html" title="Solaris10问题？还是硬件问题？[20080720更新]">Solaris10问题？还是硬件问题？[20080720更新]</a></li><li><a href="http://netfire.name/archives/20080514/282.html" title="Solaris下一个或多个Resin的问题">Solaris下一个或多个Resin的问题</a></li><li><a href="http://netfire.name/archives/20080508/280.html" title="Oracle 联合单一表或多表为条件update">Oracle 联合单一表或多表为条件update</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://netfire.name/archives/20090601/331.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>phatfusion.net_multibox</title>
		<link>http://netfire.name/archives/20090418/330.html</link>
		<comments>http://netfire.name/archives/20090418/330.html#comments</comments>
		<pubDate>Sat, 18 Apr 2009 15:51:18 +0000</pubDate>
		<dc:creator>NetFire</dc:creator>
				<category><![CDATA[代码生活]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[lightbox]]></category>
		<category><![CDATA[multibox]]></category>

		<guid isPermaLink="false">http://netfire.name/?p=330</guid>
		<description><![CDATA[<p>　　multibox－this.contentToLoad.desc.injectInside is not a function原因</p>
]]></description>
			<content:encoded><![CDATA[<p>　　multibox肯定是个好东西。但是如果使用时忽略如下第二行，页面就会报错。</p>
<div style="background: rgb(253, 253, 253) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; color: black;"><u>HTML语言</u>: multibox</div>
<div class="source" style="font-family: &quot;[object HTMLOptionElement]&quot;,&quot;Lucida Console&quot;,&quot;Courier New&quot;,&quot;monospace&quot;; color: rgb(0, 0, 0); background-color: rgb(249, 247, 237);"><span style="color: rgb(170, 170, 170); font-style: italic;">1 </span> <span style="color: rgb(30, 144, 255); font-weight: bold;">&lt;a</span> <span style="color: rgb(30, 144, 255);">id=</span><span style="color: rgb(170, 85, 0);">&quot;mb8&quot;</span> <span style="color: rgb(30, 144, 255);">class=</span><span style="color: rgb(170, 85, 0);">&quot;mb&quot;</span> <span style="color: rgb(30, 144, 255);">href=</span><span style="color: rgb(170, 85, 0);">&quot;/video.flv&quot;</span> <span style="color: rgb(30, 144, 255);">rel=</span><span style="color: rgb(170, 85, 0);">&quot;type:flv,width:480,height:360&quot;</span><span style="color: rgb(30, 144, 255); font-weight: bold;">&gt;</span><br /><span style="color: rgb(170, 170, 170); font-style: italic;">2 </span> <span style="color: rgb(30, 144, 255); font-weight: bold;">&lt;div</span> <span style="color: rgb(30, 144, 255);">class=</span><span style="color: rgb(170, 85, 0);">&quot;multiBoxDesc mb8&quot;</span><span style="color: rgb(30, 144, 255); font-weight: bold;">&gt;</span><span style="color: rgb(0, 0, 0);">my description</span><span style="color: rgb(30, 144, 255); font-weight: bold;">&lt;/div&gt;</span></div>
<p>　　这个错误不影响浏览，在FireFox中从错误控制台可以看到错误－this.contentToLoad.desc.injectInside is not a function，IE则双击状态栏后看到&ldquo;对象不支持此属性或方法&rdquo;。仔细查看了multibox.js文件，发现作者在code时就要求每个展示对象都需要一个描述。如果没有这个描述就会这样。尝试更改整个代码结构，无功而返。给作者写了封mail，希望下个版本修正吧。其实也不算多大的错误。整个中文站点信息中都没有搜索到类似的问题信息，遂记录下来备查。</p>
<p>　　另外http://www.open-open.com/也是个很好的资源站，推荐一下。</p>
<h2  class="related_post_title">乱弹一下</h2><ul class="related_post"><li><a href="http://netfire.name/archives/20031002/24.html" title="给“程序春秋”杂志的稿子敲定了，11期用，呵呵~~~">给“程序春秋”杂志的稿子敲定了，11期用，呵呵~~~</a></li><li><a href="http://netfire.name/archives/20041111/192.html" title="有些日子需要纪念，有些工作需要完成，有些情绪需要打住……">有些日子需要纪念，有些工作需要完成，有些情绪需要打住……</a></li><li><a href="http://netfire.name/archives/20050824/232.html" title="安装自己做！">安装自己做！</a></li><li><a href="http://netfire.name/archives/20040225/101.html" title="偶得">偶得</a></li><li><a href="http://netfire.name/archives/20040923/185.html" title="[我的硕士之路]一点触动！">[我的硕士之路]一点触动！</a></li><li><a href="http://netfire.name/archives/20040224/100.html" title="雪儿，分手周年快乐！">雪儿，分手周年快乐！</a></li><li><a href="http://netfire.name/archives/20040509/138.html" title="计算机软件产品开发文件编制指南-国内标准">计算机软件产品开发文件编制指南-国内标准</a></li><li><a href="http://netfire.name/archives/20040601/159.html" title="生日就这么降临……">生日就这么降临……</a></li><li><a href="http://netfire.name/archives/20080804/305.html" title="汝每日300行，吾每日3000行；吾300行完成，汝3000行完成">汝每日300行，吾每日3000行；吾300行完成，汝3000行完成</a></li><li><a href="http://netfire.name/archives/20080514/282.html" title="Solaris下一个或多个Resin的问题">Solaris下一个或多个Resin的问题</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://netfire.name/archives/20090418/330.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>高校web应用系统架构（一）——浅议Sqiud等存在的可能</title>
		<link>http://netfire.name/archives/20090410/329.html</link>
		<comments>http://netfire.name/archives/20090410/329.html#comments</comments>
		<pubDate>Fri, 10 Apr 2009 02:39:21 +0000</pubDate>
		<dc:creator>NetFire</dc:creator>
				<category><![CDATA[代码生活]]></category>
		<category><![CDATA[Squid]]></category>
		<category><![CDATA[高校观察]]></category>

		<guid isPermaLink="false">http://netfire.name/?p=329</guid>
		<description><![CDATA[<p>　　最近一直在研究web应用系统的底层架构问题。初步了解了Squid等缓存软件，结合高校的现状，东拉西扯几句。</p>
]]></description>
			<content:encoded><![CDATA[<p>　　先说说高校内web应用的现状。</p>
<p>　　首先，学校官方主页肯定是由类似网管中心等部门制作，校内其他部门负责内容的更新。从技术层面来说这应该是学校技术力量的最强面，因此不管从应用的设计和编码，可能都高于其他校内二级部门网站。而校内其他二级部门网站往往都是各部门自己制作，可能会有熟悉的老师来设计。也许多数都是找勤工助学的学生制作占多数。当然上面所说到的只是一个基本情况，也有例外（不过已经是过去时了）。</p>
<p>　　那么用Sqiud这样的软件建一个cache-pool显得没有必要。因为可能只有学校的主页才生成了静态页面，而其他二级部门网站可能都是动态的脚本。cache-pool也就仅仅只能缓存css、图片和js了。再加上访问量也不大，兴许就一个普通的PC就能支持。退一步来讲，就算整个学校统一规划，将学校的所有部门网站全盘考虑，制作成一个大型的管理平台，各个部门各有特色的页面，那就很有可能都会生成静态的页面。但是对于各部门来讲也许不满意，因为需求不停的有变化，或者说审美有变化，那么维护和制作这样一个平台的部门就有的忙了。就算这样实现之后，建立cache-pool？还是显得没有必要。毕竟对于高校的站点，对内对外来说一天都不可能超过500w的ipview（这个不好估计，随便写了一个）。记得2002年那会儿，电子科技大学好像就做了一个这样的平台，但是各部门都是统一的样式，只是配色不同。刚才翻看了一下，已经不存在了，又是各个部门百花齐放的状态。</p>
<p>　　上面仅仅说到了高校对外的应用。那么对内的应用呢？比如OA、教务系统、财务系统、人事系统呢？更没必要。这些往往都是需要先登录方能使用。对于这样的应用cache-pool更是无用无之地。但是随着数字化校园的推动。各式各样的系统都会在统一的数据中心上做一个数据抽取。也就是说数据中心将各个系统可以公开查询的数据抽取出来，生成相应的页面，供校内师生员工查看。倘若这样的页面是静态的，倘若对于这样的数据展示页面有很大的访问量，那么cache-pool就有存在的理由了。如果学校对硬件投入不是很大，那么用一台普通的pcserver架一个cache-pool，如果按照Squid所说每G磁盘空间需要32M内存来算，16G的内存将会缓存512G的数据。足够满足校内大数据量访问的要求。关键是需要通过实际的测试来证明是否需要这样的cache-pool。</p>
<p>　　写了这么多，感觉都是废话，不过既然写了，就算整理自己的思路吧。</p>
<h2  class="related_post_title">相关文章</h2><ul class="related_post"><li><a href="http://netfire.name/archives/20100324/524.html" title="从苹果落地说起">从苹果落地说起</a></li><li><a href="http://netfire.name/archives/20091110/344.html" title="高考冒名顶替上大学的孰是孰非">高考冒名顶替上大学的孰是孰非</a></li><li><a href="http://netfire.name/archives/20090611/334.html" title="读“大学的专业，不能按职业来设置”有感">读“大学的专业，不能按职业来设置”有感</a></li><li><a href="http://netfire.name/archives/20090324/327.html" title="我的名字，我的姓氏，我的身份证号码">我的名字，我的姓氏，我的身份证号码</a></li><li><a href="http://netfire.name/archives/20081216/319.html" title="谈高校内学生类站点存在的可能性">谈高校内学生类站点存在的可能性</a></li><li><a href="http://netfire.name/archives/20081128/318.html" title="从大学生思政课看中国">从大学生思政课看中国</a></li><li><a href="http://netfire.name/archives/20080829/308.html" title="那一刻，鲁迅附体的黑客呐喊了！">那一刻，鲁迅附体的黑客呐喊了！</a></li><li><a href="http://netfire.name/archives/20080624/298.html" title="半夜起来吃饼干？梦游？！">半夜起来吃饼干？梦游？！</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://netfire.name/archives/20090410/329.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>sun4v下安装Nginx</title>
		<link>http://netfire.name/archives/20090408/328.html</link>
		<comments>http://netfire.name/archives/20090408/328.html#comments</comments>
		<pubDate>Wed, 08 Apr 2009 08:05:02 +0000</pubDate>
		<dc:creator>NetFire</dc:creator>
				<category><![CDATA[代码生活]]></category>
		<category><![CDATA[Nginx]]></category>
		<category><![CDATA[Solaris]]></category>

		<guid isPermaLink="false">http://netfire.name/?p=328</guid>
		<description><![CDATA[<p>其实一切很简单，总结一条就是不能不学无术，还是要继续深入的加强学习，不然类似安装过程中笑掉大牙的情况还会发生。</p>
]]></description>
			<content:encoded><![CDATA[<p>　　清明期间看到大鱼儿写的<a target="_blank" href="http://blog.dayuer.com/archives/2009/04/05/590.html">Nginx并发逼近1万大关</a>，想想学校的教务系统的web端，应该也可以用到Nginx。因为之前用Apache加载resin来做的负载均衡，但是偶尔会出现登录后500的错误，百思不得其解，但是只要刷新一下就好了。所以后来放弃了用Apache加载resin做负载均衡。所以看了大鱼儿的blog就跃跃欲试。</p>
<p>　　1、服务器是sun4v系列的，查看了官方的说明可以支持，直接下载了稳定版。</p>
<p>　　2、由于自己只是做一个负载均衡，不需要其他一些模块，所以连PCRE我也放弃了。</p>
<p>　　3、需要gcc或者其他来编译，操作系统没装，我就去down了个gcc回来。</p>
<p>　　准备工作就绪，把包传到服务器上去。开工。</p>
<table cellspacing="1" cellpadding="1" border="1" width="100%">
<tbody>
<tr>
<td># gunzip gcc-3.4.6-sol10-sparc-local.gz <br />            # pkgadd -d ./gcc-3.4.6-sol10-sparc-local <br />            # gunzip libiconv-1.11-sol10-sparc-local.gz <br />            # pkgadd -d ./libiconv-1.11-sol10-sparc-local <br />            # PATH=$PATH:/opt/gnome/bin:/usr/local/bin:/opt/netscape:/usr/ccs/bin<br />            # exprot PATH<br />            # gzip -d nginx-0.6.36.tar.gz <br />            # tar xvf nginx-0.6.36.tar<br />            <font color="#000000" style="font-size: 9pt; font-family: '宋体','MS Sans Serif',sans-serif;">#&nbsp;./configure&nbsp;&#8211;without-http_rewrite_module&nbsp;&#8211;user=webadmin&nbsp;&#8211;group=webadmin&nbsp;&#8211;with-http_stub_status_module<br />            checking&nbsp;for&nbsp;OS<br />            &nbsp;+&nbsp;SunOS&nbsp;5.10&nbsp;sun4v<br />            checking&nbsp;for&nbsp;C&nbsp;compiler&nbsp;&#8230;&nbsp;found<br />            &nbsp;+&nbsp;using&nbsp;GNU&nbsp;C&nbsp;compiler<br />            &nbsp;+&nbsp;gcc&nbsp;version:&nbsp;3.4.6<br />            checking&nbsp;for&nbsp;gcc&nbsp;-pipe&nbsp;switch&nbsp;&#8230;&nbsp;found<br />            checking&nbsp;for&nbsp;gcc&nbsp;variadic&nbsp;macros&nbsp;&#8230;&nbsp;found<br />            checking&nbsp;for&nbsp;C99&nbsp;variadic&nbsp;macros&nbsp;&#8230;&nbsp;found<br />            checking&nbsp;for&nbsp;unistd.h&nbsp;&#8230;&nbsp;found<br />            checking&nbsp;for&nbsp;inttypes.h&nbsp;&#8230;&nbsp;found<br />            checking&nbsp;for&nbsp;limits.h&nbsp;&#8230;&nbsp;found<br />            checking&nbsp;for&nbsp;sys/filio.h&nbsp;&#8230;&nbsp;found<br />            checking&nbsp;for&nbsp;crypt.h&nbsp;&#8230;&nbsp;found<br />            checking&nbsp;for&nbsp;SunOS&nbsp;specific&nbsp;features<br />            checking&nbsp;for&nbsp;sendfilev()&nbsp;&#8230;&nbsp;found<br />            checking&nbsp;for&nbsp;event&nbsp;ports&nbsp;&#8230;&nbsp;found<br />            checking&nbsp;for&nbsp;poll()&nbsp;&#8230;&nbsp;found<br />            checking&nbsp;for&nbsp;/dev/poll&nbsp;&#8230;&nbsp;found<br />            checking&nbsp;for&nbsp;kqueue&nbsp;&#8230;&nbsp;not&nbsp;found<br />            checking&nbsp;for&nbsp;crypt()&nbsp;&#8230;&nbsp;found<br />            checking&nbsp;for&nbsp;zlib&nbsp;library&nbsp;&#8230;&nbsp;found<br />            checking&nbsp;for&nbsp;int&nbsp;size&nbsp;&#8230;&nbsp;4&nbsp;bytes<br />            checking&nbsp;for&nbsp;long&nbsp;size&nbsp;&#8230;&nbsp;4&nbsp;bytes<br />            checking&nbsp;for&nbsp;long&nbsp;long&nbsp;size&nbsp;&#8230;&nbsp;8&nbsp;bytes<br />            checking&nbsp;for&nbsp;void&nbsp;*&nbsp;size&nbsp;&#8230;&nbsp;4&nbsp;bytes<br />            checking&nbsp;for&nbsp;uint64_t&nbsp;&#8230;&nbsp;found<br />            checking&nbsp;for&nbsp;sig_atomic_t&nbsp;&#8230;&nbsp;found<br />            checking&nbsp;for&nbsp;sig_atomic_t&nbsp;size&nbsp;&#8230;&nbsp;4&nbsp;bytes<br />            checking&nbsp;for&nbsp;socklen_t&nbsp;&#8230;&nbsp;found<br />            checking&nbsp;for&nbsp;in_addr_t&nbsp;&#8230;&nbsp;found<br />            checking&nbsp;for&nbsp;in_port_t&nbsp;&#8230;&nbsp;found<br />            checking&nbsp;for&nbsp;rlim_t&nbsp;&#8230;&nbsp;found<br />            checking&nbsp;for&nbsp;uintptr_t&nbsp;&#8230;&nbsp;uintptr_t&nbsp;found<br />            checking&nbsp;for&nbsp;system&nbsp;endianess&nbsp;&#8230;&nbsp;big&nbsp;endianess<br />            checking&nbsp;for&nbsp;size_t&nbsp;size&nbsp;&#8230;&nbsp;4&nbsp;bytes<br />            checking&nbsp;for&nbsp;off_t&nbsp;size&nbsp;&#8230;&nbsp;8&nbsp;bytes<br />            checking&nbsp;for&nbsp;time_t&nbsp;size&nbsp;&#8230;&nbsp;4&nbsp;bytes<br />            checking&nbsp;for&nbsp;setproctitle()&nbsp;&#8230;&nbsp;not&nbsp;found<br />            checking&nbsp;for&nbsp;pread()&nbsp;&#8230;&nbsp;found<br />            checking&nbsp;for&nbsp;pwrite()&nbsp;&#8230;&nbsp;found<br />            checking&nbsp;for&nbsp;strerror_r()&nbsp;&#8230;&nbsp;found<br />            checking&nbsp;for&nbsp;gnu&nbsp;style&nbsp;strerror_r()&nbsp;&#8230;&nbsp;found&nbsp;but&nbsp;is&nbsp;not&nbsp;working<br />            checking&nbsp;for&nbsp;localtime_r()&nbsp;&#8230;&nbsp;found<br />            checking&nbsp;for&nbsp;posix_memalign()&nbsp;&#8230;&nbsp;not&nbsp;found<br />            checking&nbsp;for&nbsp;memalign()&nbsp;&#8230;&nbsp;found<br />            checking&nbsp;for&nbsp;sched_yield()&nbsp;&#8230;&nbsp;found<br />            checking&nbsp;for&nbsp;mmap(MAP_ANON|MAP_SHARED)&nbsp;&#8230;&nbsp;found<br />            checking&nbsp;for&nbsp;mmap(&quot;/dev/zero&quot;,&nbsp;MAP_SHARED)&nbsp;&#8230;&nbsp;found<br />            checking&nbsp;for&nbsp;System&nbsp;V&nbsp;shared&nbsp;memory&nbsp;&#8230;&nbsp;found<br />            checking&nbsp;for&nbsp;struct&nbsp;msghdr.msg_control&nbsp;&#8230;&nbsp;not&nbsp;found<br />            checking&nbsp;for&nbsp;ioctl(FIONBIO)&nbsp;&#8230;&nbsp;found<br />            checking&nbsp;for&nbsp;struct&nbsp;tm.tm_gmtoff&nbsp;&#8230;&nbsp;not&nbsp;found</p>
<p>            Configuration&nbsp;summary<br />            &nbsp;&nbsp;+&nbsp;PCRE&nbsp;library&nbsp;is&nbsp;not&nbsp;used<br />            &nbsp;&nbsp;+&nbsp;OpenSSL&nbsp;library&nbsp;is&nbsp;not&nbsp;used<br />            &nbsp;&nbsp;+&nbsp;md5&nbsp;library&nbsp;is&nbsp;not&nbsp;used<br />            &nbsp;&nbsp;+&nbsp;sha1&nbsp;library&nbsp;is&nbsp;not&nbsp;used<br />            &nbsp;&nbsp;+&nbsp;using&nbsp;system&nbsp;zlib&nbsp;library</p>
<p>            &nbsp;&nbsp;nginx&nbsp;path&nbsp;prefix:&nbsp;&quot;/usr/local/nginx&quot;<br />            &nbsp;&nbsp;nginx&nbsp;binary&nbsp;file:&nbsp;&quot;/usr/local/nginx/sbin/nginx&quot;<br />            &nbsp;&nbsp;nginx&nbsp;configuration&nbsp;prefix:&nbsp;&quot;/usr/local/nginx/conf&quot;<br />            &nbsp;&nbsp;nginx&nbsp;configuration&nbsp;file:&nbsp;&quot;/usr/local/nginx/conf/nginx.conf&quot;<br />            &nbsp;&nbsp;nginx&nbsp;pid&nbsp;file:&nbsp;&quot;/usr/local/nginx/logs/nginx.pid&quot;<br />            &nbsp;&nbsp;nginx&nbsp;error&nbsp;log&nbsp;file:&nbsp;&quot;/usr/local/nginx/logs/error.log&quot;<br />            &nbsp;&nbsp;nginx&nbsp;http&nbsp;access&nbsp;log&nbsp;file:&nbsp;&quot;/usr/local/nginx/logs/access.log&quot;<br />            &nbsp;&nbsp;nginx&nbsp;http&nbsp;client&nbsp;request&nbsp;body&nbsp;temporary&nbsp;files:&nbsp;&quot;/usr/local/nginx/client_body_temp&quot;<br />            &nbsp;&nbsp;nginx&nbsp;http&nbsp;proxy&nbsp;temporary&nbsp;files:&nbsp;&quot;/usr/local/nginx/proxy_temp&quot;<br />            &nbsp;&nbsp;nginx&nbsp;http&nbsp;fastcgi&nbsp;temporary&nbsp;files:&nbsp;&quot;/usr/local/nginx/fastcgi_temp&quot;<br />            </font># make<br />            make -f objs/Makefile<br />            gcc -c -mcpu=v9 -O -pipe&nbsp; -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Wno-unused-function -Wunused-variable -Wunused-value -Werror -g -I src/core&nbsp; -I src/event&nbsp; -I src/event/modules&nbsp; -I src/os/unix&nbsp; -I objs \<br />            &#8230;&#8230;&#8230;省略&#8230;&#8230;&#8230;.<br />            # makeinstall</td>
</tr>
</tbody>
</table>
<p>　　<strong>要让人笑掉大牙的地方就在make那里，我几乎耗费了整整一天的时间来找原因。我make的时候看到有error字样就以为是错误，屏幕显示问题成了-W在上一行的最后部分，error在第二行开头。我就以为是错误，然后到邮件列表啊什么的里面去海找。</p>
<h2  class="related_post_title">相关文章</h2><ul class="related_post"><li><a href="http://netfire.name/archives/20091028/342.html" title="双机问题一则">双机问题一则</a></li><li><a href="http://netfire.name/archives/20090619/335.html" title="Solaris关机用户—sudo实现（090623更新）">Solaris关机用户—sudo实现（090623更新）</a></li><li><a href="http://netfire.name/archives/20090608/333.html" title="Oracle双机互为主备简单备份sh">Oracle双机互为主备简单备份sh</a></li><li><a href="http://netfire.name/archives/20090601/331.html" title="Oracle RAC问题一则（未解决）">Oracle RAC问题一则（未解决）</a></li><li><a href="http://netfire.name/archives/20090319/326.html" title="如何限制操作系统级用户影响Oracle数据">如何限制操作系统级用户影响Oracle数据</a></li><li><a href="http://netfire.name/archives/20080913/312.html" title="Sun服务器也玩儿覆盖安装和硬盘对拷">Sun服务器也玩儿覆盖安装和硬盘对拷</a></li><li><a href="http://netfire.name/archives/20080717/302.html" title="Solaris10问题？还是硬件问题？[20080720更新]">Solaris10问题？还是硬件问题？[20080720更新]</a></li><li><a href="http://netfire.name/archives/20080514/282.html" title="Solaris下一个或多个Resin的问题">Solaris下一个或多个Resin的问题</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://netfire.name/archives/20090408/328.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
