<?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>DBAlife</title>
	<atom:link href="http://www.dbalife.com/feed" rel="self" type="application/rss+xml" />
	<link>http://www.dbalife.com</link>
	<description>星光照耀前方</description>
	<lastBuildDate>Tue, 10 Aug 2010 03:34:25 +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>优化Linux下的内核TCP参数来提高服务器负载能力</title>
		<link>http://www.dbalife.com/archives/398.html</link>
		<comments>http://www.dbalife.com/archives/398.html#comments</comments>
		<pubDate>Tue, 10 Aug 2010 03:34:25 +0000</pubDate>
		<dc:creator>skywalker</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[kernel]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[sysctl]]></category>
		<category><![CDATA[tcp]]></category>
		<category><![CDATA[time_wait]]></category>
		<category><![CDATA[tuning]]></category>

		<guid isPermaLink="false">http://www.dbalife.com/?p=398</guid>
		<description><![CDATA[本文转载自 Ren的Linux大杂坛 提高服务器的负载能力，是一个永恒的话题。在一台服务器CPU和内存资源额定有限的情况下，最大的压榨服务器的性能，是最终的目的。要提高Linux系统下的负载能力，可以先启用Apache的Worker模式，来提高单位时间内的并发量。但是即使这么做了，当网站发展起来之后，连接数过多的问题就会日益明显。在节省成本的情况下，可以考虑修改Linux的内核TCP/IP参数，来最大的压榨服务器的性能。当然，如果通过修改内核参数也无法解决的负载问题，也只能考虑升级服务器了，这是硬件所限，没有办法的事。 Linux系统下，TCP/IP连接断开后，会以TIME_WAIT状态保留一定的时间，然后才会释放端口。当并发请求过多的时候，就会产生大量的TIME_WAIT状态的连接，无法及时断开的话，会占用大量的端口资源和服务器资源（因为关闭后进程才会退出）。这个时候我们可以考虑优化TCP/IP的内核参数，来及时将TIME_WAIT状态的端口清理掉。 本文介绍的方法只对拥有大量TIME_WAIT状态的连接导致系统资源消耗有效，不是这个原因的情况下，效果可能不明显。那么，到哪儿去查TIME_WAIT状态的连接呢？那就是使用netstat命令。我们可以输入一个复核命令，去查看当前TCP/IP连接的状态和对应的个数： #netstat -n &#124; awk ‘/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}’ 这个命令会显示出类似下面的结果： LAST_ACK 14 SYN_RECV 348 ESTABLISHED 70 FIN_WAIT1 229 FIN_WAIT2 30 CLOSING 33 TIME_WAIT 18122 我们只用关心TIME_WAIT的个数，在这里可以看到，有18000多个TIME_WAIT，这样就占用了18000多个端口。要知道端口的数量只有65535个，占用一个少一个，会严重的影响到后继的新连接。这种情况下，我们就有必要调整下Linux的TCP/IP内核参数，让系统更快的释放TIME_WAIT连接。 我们用vim打开配置文件： #vim /etc/sysctl.conf 然后，在这个文件中，加入下面的几行内容： net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_tw_recycle = 1 net.ipv4.tcp_fin_timeout = 30 最后输入下面的命令，让内核参数生效： #/sbin/sysctl -p 简单的说明下，上面的参数的含义： net.ipv4.tcp_syncookies [...]


Related posts:<ol><li><a href='http://www.dbalife.com/archives/396.html' rel='bookmark' title='Permanent Link: 优化内核参数，减少TCP连接中的TIME_WAIT'>优化内核参数，减少TCP连接中的TIME_WAIT</a></li>
<li><a href='http://www.dbalife.com/archives/207.html' rel='bookmark' title='Permanent Link: 如何在Linux中防御SYN型DOS攻击'>如何在Linux中防御SYN型DOS攻击</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>本文转载自 <a title="Ren的Linux大杂坛" href="http://blog.renhao.org/">Ren的Linux大杂坛</a></p>
<p>提高服务器的负载能力，是一个永恒的话题。在一台服务器CPU和内存资源额定有限的情况下，最大的压榨服务器的性能，是最终的目的。要提高Linux系统下的负载能力，可以先启用Apache的Worker模式，来提高单位时间内的并发量。但是即使这么做了，当网站发展起来之后，连接数过多的问题就会日益明显。在节省成本的情况下，可以考虑修改Linux的内核TCP/IP参数，来最大的压榨服务器的性能。当然，如果通过修改内核参数也无法解决的负载问题，也只能考虑升级服务器了，这是硬件所限，没有办法的事。</p>
<p>Linux系统下，TCP/IP连接断开后，会以TIME_WAIT状态保留一定的时间，然后才会释放端口。当并发请求过多的时候，就会产生大量的TIME_WAIT状态的连接，无法及时断开的话，会占用大量的端口资源和服务器资源（因为关闭后进程才会退出）。这个时候我们可以考虑优化TCP/IP的内核参数，来及时将TIME_WAIT状态的端口清理掉。<br />
本文介绍的方法只对拥有大量TIME_WAIT状态的连接导致系统资源消耗有效，不是这个原因的情况下，效果可能不明显。那么，到哪儿去查TIME_WAIT状态的连接呢？那就是使用netstat命令。我们可以输入一个复核命令，去查看当前TCP/IP连接的状态和对应的个数：</p>
<p>#netstat -n | awk ‘/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}’</p>
<p>这个命令会显示出类似下面的结果：</p>
<p>LAST_ACK 14<br />
SYN_RECV 348<br />
ESTABLISHED 70<br />
FIN_WAIT1 229<br />
FIN_WAIT2 30<br />
CLOSING 33<br />
TIME_WAIT 18122</p>
<p>我们只用关心TIME_WAIT的个数，在这里可以看到，有18000多个TIME_WAIT，这样就占用了18000多个端口。要知道端口的数量只有65535个，占用一个少一个，会严重的影响到后继的新连接。这种情况下，我们就有必要调整下Linux的TCP/IP内核参数，让系统更快的释放TIME_WAIT连接。</p>
<p>我们用vim打开配置文件：</p>
<p>#vim /etc/sysctl.conf</p>
<p>然后，在这个文件中，加入下面的几行内容：</p>
<p>net.ipv4.tcp_syncookies = 1<br />
net.ipv4.tcp_tw_reuse = 1<br />
net.ipv4.tcp_tw_recycle = 1<br />
net.ipv4.tcp_fin_timeout = 30</p>
<p>最后输入下面的命令，让内核参数生效：</p>
<p>#/sbin/sysctl -p</p>
<p>简单的说明下，上面的参数的含义：</p>
<p>net.ipv4.tcp_syncookies = 1 表示开启SYN Cookies。当出现SYN等待队列溢出时，启用cookies来处理，可防范少量SYN攻击，默认为0，表示关闭；<br />
net.ipv4.tcp_tw_reuse = 1 表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接，默认为0，表示关闭；<br />
net.ipv4.tcp_tw_recycle = 1 表示开启TCP连接中TIME-WAIT sockets的快速回收，默认为0，表示关闭；<br />
net.ipv4.tcp_fin_timeout 修改系統默认的 TIMEOUT 时间。</p>
<p>在经过这样的调整之后，除了会进一步提升服务器的负载能力之外，还能够防御一定程度的DDoS、CC和SYN攻击，是个一举两得的做法。</p>
<p>此外，如果你的连接数本身就很多，我们可以再优化一下TCP/IP的可使用端口范围，进一步提升服务器的并发能力。依然是往上面的参数文件中，加入下面这些配置：</p>
<p>net.ipv4.tcp_keepalive_time = 1200<br />
net.ipv4.ip_local_port_range = 10000 65000<br />
net.ipv4.tcp_max_syn_backlog = 8192<br />
net.ipv4.tcp_max_tw_buckets = 5000</p>
<p>这几个参数，建议只在流量非常大的服务器上开启，会有显著的效果。一般的流量小的服务器上，没有必要去设置这几个参数。这几个参数的含义如下：</p>
<p>net.ipv4.tcp_keepalive_time = 1200 表示当keepalive起用的时候，TCP发送keepalive消息的频度。缺省是2小时，改为20分钟。<br />
net.ipv4.ip_local_port_range = 10000 65000 表示用于向外连接的端口范围。缺省情况下很小：32768到61000，改为10000到65000。（注意：这里不要将最低值设的太低，否则可能会占用掉正常的端口！）<br />
net.ipv4.tcp_max_syn_backlog = 8192 表示SYN队列的长度，默认为1024，加大队列长度为8192，可以容纳更多等待连接的网络连接数。<br />
net.ipv4.tcp_max_tw_buckets = 5000 表示系统同时保持TIME_WAIT的最大数量，如果超过这个数字，TIME_WAIT将立刻被清除并打印警告信息。默 认为180000，改为5000。对于Apache、Nginx等服务器，上几行的参数可以很好地减少TIME_WAIT套接字数量，但是对于 Squid，效果却不大。此项参数可以控制TIME_WAIT的最大数量，避免Squid服务器被大量的TIME_WAIT拖死。</p>
<p>经过这样的配置之后，你的服务器的TCP/IP并发能力又会上一个新台阶。</p>


<p>Related posts:<ol><li><a href='http://www.dbalife.com/archives/396.html' rel='bookmark' title='Permanent Link: 优化内核参数，减少TCP连接中的TIME_WAIT'>优化内核参数，减少TCP连接中的TIME_WAIT</a></li>
<li><a href='http://www.dbalife.com/archives/207.html' rel='bookmark' title='Permanent Link: 如何在Linux中防御SYN型DOS攻击'>如何在Linux中防御SYN型DOS攻击</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.dbalife.com/archives/398.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>优化内核参数，减少TCP连接中的TIME_WAIT</title>
		<link>http://www.dbalife.com/archives/396.html</link>
		<comments>http://www.dbalife.com/archives/396.html#comments</comments>
		<pubDate>Tue, 10 Aug 2010 03:20:08 +0000</pubDate>
		<dc:creator>skywalker</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[kernel]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[sysctl]]></category>
		<category><![CDATA[tcp]]></category>
		<category><![CDATA[time_wait]]></category>

		<guid isPermaLink="false">http://www.dbalife.com/?p=396</guid>
		<description><![CDATA[　　vi /etc/sysctl.conf 　　编辑/etc/sysctl.conf文件，增加三行：        引用         net.ipv4.tcp_syncookies = 1         net.ipv4.tcp_tw_reuse = 1        net.ipv4.tcp_tw_recycle = 1 　　说明： 　　net.ipv4.tcp_syncookies = 1 表示开启SYN Cookies。当出现SYN等待队列溢出时，启用cookies来处理，可防范少量SYN攻击，默认为0，表示关闭； 　　net.ipv4.tcp_tw_reuse = 1   表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接，默认为0，表示关闭； 　　net.ipv4.tcp_tw_recycle = 1 表示开启TCP连接中TIME-WAIT sockets的快速回收，默认为0，表示关闭。 　　再执行以下命令，让修改结果立即且永久生效： 　　/sbin/sysctl -p 　　用以下语句看了一下服务器的TCP状态： 　　netstat -n &#124; awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' 　　返回结果如下： 　　ESTABLISHED 1423 　　FIN_WAIT1 1 [...]


Related posts:<ol><li><a href='http://www.dbalife.com/archives/398.html' rel='bookmark' title='Permanent Link: 优化Linux下的内核TCP参数来提高服务器负载能力'>优化Linux下的内核TCP参数来提高服务器负载能力</a></li>
<li><a href='http://www.dbalife.com/archives/207.html' rel='bookmark' title='Permanent Link: 如何在Linux中防御SYN型DOS攻击'>如何在Linux中防御SYN型DOS攻击</a></li>
<li><a href='http://www.dbalife.com/archives/29.html' rel='bookmark' title='Permanent Link: 偶遇攻击'>偶遇攻击</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>　　vi /etc/sysctl.conf<br />
　　编辑/etc/sysctl.conf文件，增加三行：</p>
<p>       引用<br />
        net.ipv4.tcp_syncookies = 1<br />
        net.ipv4.tcp_tw_reuse = 1<br />
       net.ipv4.tcp_tw_recycle = 1</p>
<p>　　说明：<br />
　　net.ipv4.tcp_syncookies = 1 表示开启SYN Cookies。当出现SYN等待队列溢出时，启用cookies来处理，可防范少量SYN攻击，默认为0，表示关闭；<br />
　　net.ipv4.tcp_tw_reuse = 1   表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接，默认为0，表示关闭；<br />
　　net.ipv4.tcp_tw_recycle = 1 表示开启TCP连接中TIME-WAIT sockets的快速回收，默认为0，表示关闭。</p>
<p>　　再执行以下命令，让修改结果立即且永久生效：<br />
　　/sbin/sysctl -p</p>
<p>　　用以下语句看了一下服务器的TCP状态：<br />
　　netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'<br />
　　返回结果如下：<br />
　　ESTABLISHED 1423<br />
　　FIN_WAIT1 1<br />
　　FIN_WAIT2 262<br />
　　SYN_SENT 1<br />
　　TIME_WAIT 962</p>
<p>　　效果：处于TIME_WAIT状态的sockets从原来的10000多减少到1000左右。处于SYN_RECV等待处理状态的sockets为0，原来的为50～300。</p>
<p>        对于上面产生的FIN_WAIT进行优化，可以设置tcp_fin_timeout加快FIN_WAIT状态结束。<br />
        net.ipv4.tcp_fin_timeout = 60</p>
<p>       设置完后再执行以下命令，让修改结果立即且永久生效：<br />
　　/sbin/sysctl -p</p>
<p>       对于上面的设置也可以在/proc/sys/net/ipv4这里进行设置，这里设置为即时生效重启还原。</p>


<p>Related posts:<ol><li><a href='http://www.dbalife.com/archives/398.html' rel='bookmark' title='Permanent Link: 优化Linux下的内核TCP参数来提高服务器负载能力'>优化Linux下的内核TCP参数来提高服务器负载能力</a></li>
<li><a href='http://www.dbalife.com/archives/207.html' rel='bookmark' title='Permanent Link: 如何在Linux中防御SYN型DOS攻击'>如何在Linux中防御SYN型DOS攻击</a></li>
<li><a href='http://www.dbalife.com/archives/29.html' rel='bookmark' title='Permanent Link: 偶遇攻击'>偶遇攻击</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.dbalife.com/archives/396.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nginx与PCRE</title>
		<link>http://www.dbalife.com/archives/393.html</link>
		<comments>http://www.dbalife.com/archives/393.html#comments</comments>
		<pubDate>Wed, 14 Jul 2010 08:13:46 +0000</pubDate>
		<dc:creator>skywalker</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[PRCE]]></category>

		<guid isPermaLink="false">http://www.dbalife.com/?p=393</guid>
		<description><![CDATA[Nginx的Urlrewrite模块依赖PCRE，而Nginx不能很好的识别到系统中的PCRE，在make时可能遇到类似这样的错误： make -f objs/Makefile make[1]: Entering directory `/root/nginx-0.7.65' cd /usr/local/lib/pcre \         &#38;&#38; if [ -f Makefile ]; then make distclean; fi \         &#38;&#38; CC="gcc" CFLAGS="-O2 -fomit-frame-pointer -pipe " \         ./configure --disable-shared /bin/sh: line 0: cd: /usr/local/lib/pcre: No such file or directory make[1]: *** [/usr/local/lib/pcre/Makefile] Error 1 make[1]: Leaving directory `/root/nginx-0.7.65' make: *** [...]


Related posts:<ol><li><a href='http://www.dbalife.com/archives/82.html' rel='bookmark' title='Permanent Link: ubuntu7.10 JDK手动安装'>ubuntu7.10 JDK手动安装</a></li>
<li><a href='http://www.dbalife.com/archives/135.html' rel='bookmark' title='Permanent Link: PIX Logging Architecture 2 安装教程'>PIX Logging Architecture 2 安装教程</a></li>
<li><a href='http://www.dbalife.com/archives/25.html' rel='bookmark' title='Permanent Link: 如何保持Linux服务器间的文件同步'>如何保持Linux服务器间的文件同步</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Nginx的Urlrewrite模块依赖PCRE，而Nginx不能很好的识别到系统中的PCRE，在make时可能遇到类似这样的错误：</p>
<p>make -f objs/Makefile<br />
make[1]: Entering directory `/root/nginx-0.7.65'<br />
cd /usr/local/lib/pcre \<br />
        &amp;&amp; if [ -f Makefile ]; then make distclean; fi \<br />
        &amp;&amp; CC="gcc" CFLAGS="-O2 -fomit-frame-pointer -pipe " \<br />
        ./configure --disable-shared<br />
/bin/sh: line 0: cd: /usr/local/lib/pcre: No such file or directory<br />
make[1]: *** [/usr/local/lib/pcre/Makefile] Error 1<br />
make[1]: Leaving directory `/root/nginx-0.7.65'<br />
make: *** [build] Error 2</p>
<p>原因是nginx不能自动找到pcre的库文件，下载最新的pcre源码包安装后：</p>
<p>#mkdir -p /usr/local/lib/.libs/<br />
# cp /usr/local/lib/libpcre.a /usr/local/lib/.libs/libpcre.a</p>


<p>Related posts:<ol><li><a href='http://www.dbalife.com/archives/82.html' rel='bookmark' title='Permanent Link: ubuntu7.10 JDK手动安装'>ubuntu7.10 JDK手动安装</a></li>
<li><a href='http://www.dbalife.com/archives/135.html' rel='bookmark' title='Permanent Link: PIX Logging Architecture 2 安装教程'>PIX Logging Architecture 2 安装教程</a></li>
<li><a href='http://www.dbalife.com/archives/25.html' rel='bookmark' title='Permanent Link: 如何保持Linux服务器间的文件同步'>如何保持Linux服务器间的文件同步</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.dbalife.com/archives/393.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>编译Google perftools的小问题</title>
		<link>http://www.dbalife.com/archives/391.html</link>
		<comments>http://www.dbalife.com/archives/391.html#comments</comments>
		<pubDate>Wed, 14 Jul 2010 08:07:50 +0000</pubDate>
		<dc:creator>skywalker</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[perftools]]></category>

		<guid isPermaLink="false">http://www.dbalife.com/?p=391</guid>
		<description><![CDATA[在编译时可能会遇到这个错误： error Cannot calculate stack trace: need either libunwind or frame-pointers 解决方法是在编译参数里增加 --enable-frame-pointers Related posts:Nginx与PCRE


Related posts:<ol><li><a href='http://www.dbalife.com/archives/393.html' rel='bookmark' title='Permanent Link: Nginx与PCRE'>Nginx与PCRE</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>在编译时可能会遇到这个错误：</p>
<p>error Cannot calculate stack trace: need either libunwind or frame-pointers</p>
<p>解决方法是在编译参数里增加 --enable-frame-pointers</p>


<p>Related posts:<ol><li><a href='http://www.dbalife.com/archives/393.html' rel='bookmark' title='Permanent Link: Nginx与PCRE'>Nginx与PCRE</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.dbalife.com/archives/391.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>64位centOS编译php5.3时的小问题</title>
		<link>http://www.dbalife.com/archives/389.html</link>
		<comments>http://www.dbalife.com/archives/389.html#comments</comments>
		<pubDate>Wed, 07 Jul 2010 05:48:33 +0000</pubDate>
		<dc:creator>skywalker</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[64bit]]></category>
		<category><![CDATA[centos]]></category>
		<category><![CDATA[libmysqlclient]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.dbalife.com/?p=389</guid>
		<description><![CDATA[64位CentOS5.5在编译php5.3时，提示找不到libmysqlclient， checking for MING support... no checking for mSQL support... no checking for MSSQL support via FreeTDS... no checking for MySQL support... yes, shared checking for specified location of the MySQL UNIX socket... no checking for MySQL UNIX socket location... no configure: error: Cannot find libmysqlclient under /usr. Note that the MySQL client library is [...]


Related posts:<ol><li><a href='http://www.dbalife.com/archives/133.html' rel='bookmark' title='Permanent Link: PIX logging Architecture所需perl module的几点注意'>PIX logging Architecture所需perl module的几点注意</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>64位CentOS5.5在编译php5.3时，提示找不到libmysqlclient，</p>
<p>checking for MING support... no<br />
checking for mSQL support... no<br />
checking for MSSQL support via FreeTDS... no<br />
checking for MySQL support... yes, shared<br />
checking for specified location of the MySQL UNIX socket... no<br />
checking for MySQL UNIX socket location... no<br />
configure: error: Cannot find libmysqlclient under /usr.<br />
Note that the MySQL client library is not bundled anymore!</p>
<p>这是由于搜索路径有误，需在编译时增加一个参数： "--with-libdir=lib64"</p>


<p>Related posts:<ol><li><a href='http://www.dbalife.com/archives/133.html' rel='bookmark' title='Permanent Link: PIX logging Architecture所需perl module的几点注意'>PIX logging Architecture所需perl module的几点注意</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.dbalife.com/archives/389.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>JVM调优</title>
		<link>http://www.dbalife.com/archives/385.html</link>
		<comments>http://www.dbalife.com/archives/385.html#comments</comments>
		<pubDate>Wed, 24 Mar 2010 09:20:23 +0000</pubDate>
		<dc:creator>skywalker</dc:creator>
				<category><![CDATA[Program]]></category>
		<category><![CDATA[gc]]></category>
		<category><![CDATA[jvm]]></category>
		<category><![CDATA[优化]]></category>
		<category><![CDATA[调优]]></category>

		<guid isPermaLink="false">http://www.dbalife.com/?p=385</guid>
		<description><![CDATA[堆大小设置 JVM 中最大堆大小有三方面限制：相关操作系统的数据模型（32-bt还是64-bit）限制；系统的可用虚拟内存限制；系统的可用物理内存限制。32位系统下，一般限制在1.5G~2G；64为操作系统对内存无限制。我在Windows Server 2003 系统，3.5G物理内存，JDK5.0下测试，最大可设置为1478m。 典型设置： java -Xmx3550m -Xms3550m -Xmn2g -Xss128k -Xmx3550m：设置JVM最大可用内存为3550M。 -Xms3550m：设置JVM促使内存为3550m。此值可以设置与-Xmx相同，以避免每次垃圾回收完成后JVM重新分配内存。 -Xmn2g：设置年轻代大小为2G。整个堆大小=年轻代大小 + 年老代大小 + 持久代大小。持久代一般固定大小为64m，所以增大年轻代后，将会减小年老代大小。此值对系统性能影响较大，Sun官方推荐配置为整个堆的3/8。 -Xss128k：设置每个线程的堆栈大小。JDK5.0以后每个线程堆栈大小为1M，以前每个线程堆栈大小为256K。更具应用的线程所需内存大小进行调整。在相同物理内存下，减小这个值能生成更多的线程。但是操作系统对一个进程内的线程数还是有限制的，不能无限生成，经验值在3000~5000左右。 java -Xmx3550m -Xms3550m -Xss128k -XX:NewRatio=4 -XX:SurvivorRatio=4 -XX:MaxPermSize=16m -XX:MaxTenuringThreshold=0 -XX:NewRatio=4:设置年轻代（包括Eden和两个Survivor区）与年老代的比值（除去持久代）。设置为4，则年轻代与年老代所占比值为1：4，年轻代占整个堆栈的1/5 -XX:SurvivorRatio=4：设置年轻代中Eden区与Survivor区的大小比值。设置为4，则两个Survivor区与一个Eden区的比值为2:4，一个Survivor区占整个年轻代的1/6 -XX:MaxPermSize=16m:设置持久代大小为16m。 -XX:MaxTenuringThreshold=0：设置垃圾最大年龄。如果设置为0的话，则年轻代对象不经过Survivor区，直接进入年老代。对于年老代比较多的应用，可以提高效率。如果将此值设置为一个较大值，则年轻代对象会在Survivor区进行多次复制，这样可以增加对象再年轻代的存活时间，增加在年轻代即被回收的概论。 回收器选择 JVM给了三种选择：串行收集器、并行收集器、并发收集器，但是串行收集器只适用于小数据量的情况，所以这里的选择主要针对并行收集器和并发收集器。默认情况下，JDK5.0以前都是使用串行收集器，如果想使用其他收集器需要在启动时加入相应参数。JDK5.0以后，JVM会根据当前系统配置进行判断。 吞吐量优先的并行收集器 如上文所述，并行收集器主要以到达一定的吞吐量为目标，适用于科学技术和后台处理等。 典型配置： java -Xmx3800m -Xms3800m -Xmn2g -Xss128k -XX:+UseParallelGC -XX:ParallelGCThreads=20 -XX:+UseParallelGC：选择垃圾收集器为并行收集器。此配置仅对年轻代有效。即上述配置下，年轻代使用并发收集，而年老代仍旧使用串行收集。 -XX:ParallelGCThreads=20：配置并行收集器的线程数，即：同时多少个线程一起进行垃圾回收。此值最好配置与处理器数目相等。 java -Xmx3550m -Xms3550m -Xmn2g -Xss128k -XX:+UseParallelGC -XX:ParallelGCThreads=20 -XX:+UseParallelOldGC -XX:+UseParallelOldGC：配置年老代垃圾收集方式为并行收集。JDK6.0支持对年老代并行收集。 [...]


Related posts:<ol><li><a href='http://www.dbalife.com/archives/26.html' rel='bookmark' title='Permanent Link: Java日期操作常用方法'>Java日期操作常用方法</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p><span><strong>堆大小设置</strong></span><br />
JVM 中最大堆大小有三方面限制：相关操作系统的数据模型（32-bt还是64-bit）限制；系统的可用虚拟内存限制；系统的可用物理内存限制。32位系统下，一般限制在1.5G~2G；64为操作系统对内存无限制。我在Windows Server 2003 系统，3.5G物理内存，JDK5.0下测试，最大可设置为1478m。<br />
典型设置：<br />
java -Xmx3550m -Xms3550m -Xmn2g -Xss128k<br />
-Xmx3550m：设置JVM最大可用内存为3550M。<br />
-Xms3550m：设置JVM促使内存为3550m。此值可以设置与-Xmx相同，以避免每次垃圾回收完成后JVM重新分配内存。<br />
-Xmn2g：设置年轻代大小为2G。整个堆大小=年轻代大小 + 年老代大小 + 持久代大小。持久代一般固定大小为64m，所以增大年轻代后，将会减小年老代大小。此值对系统性能影响较大，Sun官方推荐配置为整个堆的3/8。<br />
-Xss128k：设置每个线程的堆栈大小。JDK5.0以后每个线程堆栈大小为1M，以前每个线程堆栈大小为256K。更具应用的线程所需内存大小进行调整。在相同物理内存下，减小这个值能生成更多的线程。但是操作系统对一个进程内的线程数还是有限制的，不能无限生成，经验值在3000~5000左右。</p>
<p>java -Xmx3550m -Xms3550m -Xss128k -XX:NewRatio=4 -XX:SurvivorRatio=4 -XX:MaxPermSize=16m -XX:MaxTenuringThreshold=0<br />
-XX:NewRatio=4:设置年轻代（包括Eden和两个Survivor区）与年老代的比值（除去持久代）。设置为4，则年轻代与年老代所占比值为1：4，年轻代占整个堆栈的1/5<br />
-XX:SurvivorRatio=4：设置年轻代中Eden区与Survivor区的大小比值。设置为4，则两个Survivor区与一个Eden区的比值为2:4，一个Survivor区占整个年轻代的1/6<br />
-XX:MaxPermSize=16m:设置持久代大小为16m。<br />
-XX:MaxTenuringThreshold=0：设置垃圾最大年龄。如果设置为0的话，则年轻代对象不经过Survivor区，直接进入年老代。对于年老代比较多的应用，可以提高效率。如果将此值设置为一个较大值，则年轻代对象会在Survivor区进行多次复制，这样可以增加对象再年轻代的存活时间，增加在年轻代即被回收的概论。<br />
<strong><span>回收器选择</span></strong><br />
JVM给了三种选择：串行收集器、并行收集器、并发收集器，但是串行收集器只适用于小数据量的情况，所以这里的选择主要针对并行收集器和并发收集器。默认情况下，JDK5.0以前都是使用串行收集器，如果想使用其他收集器需要在启动时加入相应参数。JDK5.0以后，JVM会根据当前系统配置进行判断。<br />
吞吐量优先的并行收集器<br />
如上文所述，并行收集器主要以到达一定的吞吐量为目标，适用于科学技术和后台处理等。<br />
典型配置：<br />
java -Xmx3800m -Xms3800m -Xmn2g -Xss128k -XX:+UseParallelGC -XX:ParallelGCThreads=20<br />
-XX:+UseParallelGC：选择垃圾收集器为并行收集器。此配置仅对年轻代有效。即上述配置下，年轻代使用并发收集，而年老代仍旧使用串行收集。<br />
-XX:ParallelGCThreads=20：配置并行收集器的线程数，即：同时多少个线程一起进行垃圾回收。此值最好配置与处理器数目相等。</p>
<p>java -Xmx3550m -Xms3550m -Xmn2g -Xss128k -XX:+UseParallelGC -XX:ParallelGCThreads=20 -XX:+UseParallelOldGC<br />
-XX:+UseParallelOldGC：配置年老代垃圾收集方式为并行收集。JDK6.0支持对年老代并行收集。</p>
<p>java -Xmx3550m -Xms3550m -Xmn2g -Xss128k -XX:+UseParallelGC -XX:MaxGCPauseMillis=100<br />
-XX:MaxGCPauseMillis=100:设置每次年轻代垃圾回收的最长时间，如果无法满足此时间，JVM会自动调整年轻代大小，以满足此值。</p>
<p>java -Xmx3550m -Xms3550m -Xmn2g -Xss128k -XX:+UseParallelGC -XX:MaxGCPauseMillis=100 -XX:+UseAdaptiveSizePolicy<br />
-XX:+UseAdaptiveSizePolicy：设置此选项后，并行收集器会自动选择年轻代区大小和相应的Survivor区比例，以达到目标系统规定的最低相应时间或者收集频率等，此值建议使用并行收集器时，一直打开。<br />
响应时间优先的并发收集器<br />
如上文所述，并发收集器主要是保证系统的响应时间，减少垃圾收集时的停顿时间。适用于应用服务器、电信领域等。<br />
典型配置：<br />
java -Xmx3550m -Xms3550m -Xmn2g -Xss128k -XX:ParallelGCThreads=20 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC<br />
-XX:+UseConcMarkSweepGC：设置年老代为并发收集。测试中配置这个以后，-XX:NewRatio=4的配置失效了，原因不明。所以，此时年轻代大小最好用-Xmn设置。<br />
-XX:+UseParNewGC:设置年轻代为并行收集。可与CMS收集同时使用。JDK5.0以上，JVM会根据系统配置自行设置，所以无需再设置此值。<br />
java -Xmx3550m -Xms3550m -Xmn2g -Xss128k -XX:+UseConcMarkSweepGC -XX:CMSFullGCsBeforeCompaction=5 -XX:+UseCMSCompactAtFullCollection<br />
-XX:CMSFullGCsBeforeCompaction：由于并发收集器不对内存空间进行压缩、整理，所以运行一段时间以后会产生“碎片”，使得运行效率降低。此值设置运行多少次GC以后对内存空间进行压缩、整理。<br />
-XX:+UseCMSCompactAtFullCollection：打开对年老代的压缩。可能会影响性能，但是可以消除碎片<br />
<span><strong>辅助信息</strong></span><br />
JVM提供了大量命令行参数，打印信息，供调试使用。主要有以下一些：<br />
-XX:+PrintGC<br />
输出形式：[GC 118250K-&gt;113543K(130112K), 0.0094143 secs]<br />
[Full GC 121376K-&gt;10414K(130112K), 0.0650971 secs]</p>
<p>-XX:+PrintGCDetails<br />
输出形式：[GC [DefNew: 8614K-&gt;781K(9088K), 0.0123035 secs] 118250K-&gt;113543K(130112K), 0.0124633 secs]<br />
[GC [DefNew: 8614K-&gt;8614K(9088K), 0.0000665 secs][Tenured: 112761K-&gt;10414K(121024K), 0.0433488 secs] 121376K-&gt;10414K(130112K), 0.0436268 secs]</p>
<p>-XX:+PrintGCTimeStamps -XX:+PrintGC：PrintGCTimeStamps可与上面两个混合使用<br />
输出形式：11.851: [GC 98328K-&gt;93620K(130112K), 0.0082960 secs]</p>
<p>-XX:+PrintGCApplicationConcurrentTime:打印每次垃圾回收前，程序未中断的执行时间。可与上面混合使用<br />
输出形式：Application time: 0.5291524 seconds</p>
<p>-XX:+PrintGCApplicationStoppedTime：打印垃圾回收期间程序暂停的时间。可与上面混合使用<br />
输出形式：Total time for which application threads were stopped: 0.0468229 seconds</p>
<p>-XX:PrintHeapAtGC:打印GC前后的详细堆栈信息<br />
输出形式：<br />
34.702: [GC {Heap before gc invocations=7:<br />
def new generation   total 55296K, used 52568K [0x1ebd0000, 0x227d0000, 0x227d0000)<br />
eden space 49152K, 99% used [0x1ebd0000, 0x21bce430, 0x21bd0000)<br />
from space 6144K, 55% used [0x221d0000, 0x22527e10, 0x227d0000)<br />
to   space 6144K,   0% used [0x21bd0000, 0x21bd0000, 0x221d0000)<br />
tenured generation   total 69632K, used 2696K [0x227d0000, 0x26bd0000, 0x26bd0000)<br />
the space 69632K,   3% used [0x227d0000, 0x22a720f8, 0x22a72200, 0x26bd0000)<br />
compacting perm gen total 8192K, used 2898K [0x26bd0000, 0x273d0000, 0x2abd0000)<br />
the space 8192K, 35% used [0x26bd0000, 0x26ea4ba8, 0x26ea4c00, 0x273d0000)<br />
ro space 8192K, 66% used [0x2abd0000, 0x2b12bcc0, 0x2b12be00, 0x2b3d0000)<br />
rw space 12288K, 46% used [0x2b3d0000, 0x2b972060, 0x2b972200, 0x2bfd0000)<br />
34.735: [DefNew: 52568K-&gt;3433K(55296K), 0.0072126 secs] 55264K-&gt;6615K(124928K)Heap after gc invocations=8:<br />
def new generation   total 55296K, used 3433K [0x1ebd0000, 0x227d0000, 0x227d0000)<br />
eden space 49152K,   0% used [0x1ebd0000, 0x1ebd0000, 0x21bd0000)<br />
from space 6144K, 55% used [0x21bd0000, 0x21f2a5e8, 0x221d0000)<br />
to   space 6144K,   0% used [0x221d0000, 0x221d0000, 0x227d0000)<br />
tenured generation   total 69632K, used 3182K [0x227d0000, 0x26bd0000, 0x26bd0000)<br />
the space 69632K,   4% used [0x227d0000, 0x22aeb958, 0x22aeba00, 0x26bd0000)<br />
compacting perm gen total 8192K, used 2898K [0x26bd0000, 0x273d0000, 0x2abd0000)<br />
the space 8192K, 35% used [0x26bd0000, 0x26ea4ba8, 0x26ea4c00, 0x273d0000)<br />
ro space 8192K, 66% used [0x2abd0000, 0x2b12bcc0, 0x2b12be00, 0x2b3d0000)<br />
rw space 12288K, 46% used [0x2b3d0000, 0x2b972060, 0x2b972200, 0x2bfd0000)<br />
}<br />
, 0.0757599 secs]<br />
-Xloggc:filename:与上面几个配合使用，把相关日志信息记录到文件以便分析。<br />
<span><strong>常见配置汇总</strong></span><br />
堆设置<br />
-Xms:初始堆大小<br />
-Xmx:最大堆大小<br />
-XX:NewSize=n:设置年轻代大小<br />
-XX:NewRatio=n:设置年轻代和年老代的比值。如:为3，表示年轻代与年老代比值为1：3，年轻代占整个年轻代年老代和的1/4<br />
-XX:SurvivorRatio=n:年轻代中Eden区与两个Survivor区的比值。注意Survivor区有两个。如：3，表示Eden：Survivor=3：2，一个Survivor区占整个年轻代的1/5<br />
-XX:MaxPermSize=n:设置持久代大小<br />
收集器设置<br />
-XX:+UseSerialGC:设置串行收集器<br />
-XX:+UseParallelGC:设置并行收集器<br />
-XX:+UseParalledlOldGC:设置并行年老代收集器<br />
-XX:+UseConcMarkSweepGC:设置并发收集器<br />
垃圾回收统计信息<br />
-XX:+PrintGC<br />
-XX:+PrintGCDetails<br />
-XX:+PrintGCTimeStamps<br />
-Xloggc:filename<br />
并行收集器设置<br />
-XX:ParallelGCThreads=n:设置并行收集器收集时使用的CPU数。并行收集线程数。<br />
-XX:MaxGCPauseMillis=n:设置并行收集最大暂停时间<br />
-XX:GCTimeRatio=n:设置垃圾回收时间占程序运行时间的百分比。公式为1/(1+n)<br />
并发收集器设置<br />
-XX:+CMSIncrementalMode:设置为增量模式。适用于单CPU情况。<br />
-XX:ParallelGCThreads=n:设置并发收集器年轻代收集方式为并行收集时，使用的CPU数。并行收集线程数。</p>
<p><span><strong>调优总结</strong></span></p>
<p>年轻代大小选择<br />
响应时间优先的应用：尽可能设大，直到接近系统的最低响应时间限制（根据实际情况选择）。在此种情况下，年轻代收集发生的频率也是最小的。同时，减少到达年老代的对象。<br />
吞吐量优先的应用：尽可能的设置大，可能到达Gbit的程度。因为对响应时间没有要求，垃圾收集可以并行进行，一般适合8CPU以上的应用。<br />
年老代大小选择<br />
响应时间优先的应用：年老代使用并发收集器，所以其大小需要小心设置，一般要考虑并发会话率和会话持续时间等一些参数。如果堆设置小了，可以会造成内存碎片、高回收频率以及应用暂停而使用传统的标记清除方式；如果堆大了，则需要较长的收集时间。最优化的方案，一般需要参考以下数据获得：<br />
并发垃圾收集信息<br />
持久代并发收集次数<br />
传统GC信息<br />
花在年轻代和年老代回收上的时间比例<br />
减少年轻代和年老代花费的时间，一般会提高应用的效率<br />
吞吐量优先的应用：一般吞吐量优先的应用都有一个很大的年轻代和一个较小的年老代。原因是，这样可以尽可能回收掉大部分短期对象，减少中期的对象，而年老代尽存放长期存活对象。<br />
较小堆引起的碎片问题<br />
因为年老代的并发收集器使用标记、清除算法，所以不会对堆进行压缩。当收集器回收时，他会把相邻的空间进行合并，这样可以分配给较大的对象。但是，当堆空间较小时，运行一段时间以后，就会出现“碎片”，如果并发收集器找不到足够的空间，那么并发收集器将会停止，然后使用传统的标记、清除方式进行回收。如果出现“碎片”，可能需要进行如下配置：<br />
-XX:+UseCMSCompactAtFullCollection：使用并发收集器时，开启对年老代的压缩。<br />
-XX:CMSFullGCsBeforeCompaction=0：上面配置开启的情况下，这里设置多少次Full GC后，对年老代进行压缩</p>


<p>Related posts:<ol><li><a href='http://www.dbalife.com/archives/26.html' rel='bookmark' title='Permanent Link: Java日期操作常用方法'>Java日期操作常用方法</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.dbalife.com/archives/385.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>禁用/启用所有外键约束</title>
		<link>http://www.dbalife.com/archives/383.html</link>
		<comments>http://www.dbalife.com/archives/383.html#comments</comments>
		<pubDate>Sat, 06 Feb 2010 16:01:14 +0000</pubDate>
		<dc:creator>skywalker</dc:creator>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[fk]]></category>
		<category><![CDATA[oracle]]></category>
		<category><![CDATA[启用]]></category>
		<category><![CDATA[外键]]></category>
		<category><![CDATA[禁用]]></category>
		<category><![CDATA[约束]]></category>

		<guid isPermaLink="false">http://www.dbalife.com/?p=383</guid>
		<description><![CDATA[1、ORACLE数据库中的外键约束名都在表user_constraints中可以查到。其中constraint_type='R'表示是外键约束。 2、启用外键约束的命令为：alter table table_name enable constraint constraint_name 3、禁用外键约束的命令为：alter table table_name disable constraint constraint_name 4、然后再用SQL查出数据库中所以外键的约束名： select 'alter table '&#124;&#124;table_name&#124;&#124;' enable constraint '&#124;&#124;constraint_name&#124;&#124;';' from user_constraints where constraint_type='R' select 'alter table '&#124;&#124;table_name&#124;&#124;' disable constraint '&#124;&#124;constraint_name&#124;&#124;';' from user_constraints where constraint_type='R' Related posts:oralce10g shrink drop table遭遇ORA-604 / ORA-1422 Oracle9i优化器介绍（下）


Related posts:<ol><li><a href='http://www.dbalife.com/archives/286.html' rel='bookmark' title='Permanent Link: oralce10g shrink'>oralce10g shrink</a></li>
<li><a href='http://www.dbalife.com/archives/128.html' rel='bookmark' title='Permanent Link: drop table遭遇ORA-604 / ORA-1422'>drop table遭遇ORA-604 / ORA-1422</a></li>
<li><a href='http://www.dbalife.com/archives/32.html' rel='bookmark' title='Permanent Link: Oracle9i优化器介绍（下）'>Oracle9i优化器介绍（下）</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>1、ORACLE数据库中的外键约束名都在表user_constraints中可以查到。其中constraint_type='R'表示是外键约束。</p>
<p>2、启用外键约束的命令为：alter table table_name enable constraint constraint_name</p>
<p>3、禁用外键约束的命令为：alter table table_name disable constraint constraint_name</p>
<p>4、然后再用SQL查出数据库中所以外键的约束名：</p>
<p>select 'alter table '||table_name||' enable constraint '||constraint_name||';' from user_constraints where constraint_type='R'</p>
<p>select 'alter table '||table_name||' disable constraint '||constraint_name||';' from user_constraints where constraint_type='R'</p>


<p>Related posts:<ol><li><a href='http://www.dbalife.com/archives/286.html' rel='bookmark' title='Permanent Link: oralce10g shrink'>oralce10g shrink</a></li>
<li><a href='http://www.dbalife.com/archives/128.html' rel='bookmark' title='Permanent Link: drop table遭遇ORA-604 / ORA-1422'>drop table遭遇ORA-604 / ORA-1422</a></li>
<li><a href='http://www.dbalife.com/archives/32.html' rel='bookmark' title='Permanent Link: Oracle9i优化器介绍（下）'>Oracle9i优化器介绍（下）</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.dbalife.com/archives/383.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>用SQL处理多行汇聚问题</title>
		<link>http://www.dbalife.com/archives/379.html</link>
		<comments>http://www.dbalife.com/archives/379.html#comments</comments>
		<pubDate>Wed, 03 Feb 2010 04:50:12 +0000</pubDate>
		<dc:creator>skywalker</dc:creator>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[Program]]></category>
		<category><![CDATA[SQL]]></category>
		<category><![CDATA[多行]]></category>
		<category><![CDATA[汇聚]]></category>

		<guid isPermaLink="false">http://www.dbalife.com/?p=379</guid>
		<description><![CDATA[表结构如下： NAME                            Null          Type ------------------------  ---------  ----- N_SEC_CODE                NOT NULL  CHAR(6) C_RESEARCHER_CODE  NOT NULL  VARCHAR2(20) 此表保存了“股票”与“研究员”的对应关系数据，一般而言，对于同一只股票而言，可能有多个研究员对其进行跟踪研究。所以目前遇到一个要求，需查询出每只股票和对应的研究员（研究员代码间，使用逗号分隔）。 例如有如下数据： 000297                            [...]


Related posts:<ol><li><a href='http://www.dbalife.com/archives/41.html' rel='bookmark' title='Permanent Link: sqlplus下如何看执行计划'>sqlplus下如何看执行计划</a></li>
<li><a href='http://www.dbalife.com/archives/39.html' rel='bookmark' title='Permanent Link: Statistics Lock导致的IMP问题'>Statistics Lock导致的IMP问题</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>表结构如下：<br />
NAME                            Null          Type<br />
------------------------  ---------  -----<br />
N_SEC_CODE                NOT NULL  CHAR(6)<br />
C_RESEARCHER_CODE  NOT NULL  VARCHAR2(20)</p>
<p>此表保存了“股票”与“研究员”的对应关系数据，一般而言，对于同一只股票而言，可能有多个研究员对其进行跟踪研究。所以目前遇到一个要求，需查询出每只股票和对应的研究员（研究员代码间，使用逗号分隔）。</p>
<p>例如有如下数据：<br />
000297                                    chenpeng           <br />
000297                                    liusu             <br />
合并处理后需显示为：<br />
000297                                    chenpeng,liusu</p>
<p>多行数据汇总聚一行，只需要把SQL中“n_sec_code”换为你的用来汇总的列，“c_researcher_code”替换为需合并文本的列，“m_researcher_stock_rel”替换为你的表名</p>
<p> SELECT n_sec_code,<br />
  TRANSLATE (LTRIM (text, '/'), '*/', '*,') researcherList<br />
   FROM<br />
  (SELECT ROW_NUMBER () OVER (PARTITION BY n_sec_code ORDER BY n_sec_code, lvl DESC) rn,<br />
    n_sec_code                                                                         ,<br />
    text<br />
     FROM<br />
    (SELECT n_sec_code,<br />
      LEVEL lvl       ,<br />
      SYS_CONNECT_BY_PATH (c_researcher_code,'/') text<br />
       FROM<br />
      (SELECT n_sec_code                      ,<br />
        c_researcher_code AS c_researcher_code,<br />
        ROW_NUMBER () OVER (PARTITION BY n_sec_code ORDER BY n_sec_code,c_researcher_code) x<br />
         FROM m_researcher_stock_rel<br />
     ORDER BY n_sec_code,<br />
        c_researcher_code<br />
      ) a CONNECT BY n_sec_code = PRIOR n_sec_code<br />
    AND x - 1                   = PRIOR x<br />
    )<br />
  )<br />
  WHERE rn = 1<br />
ORDER BY n_sec_code;</p>


<p>Related posts:<ol><li><a href='http://www.dbalife.com/archives/41.html' rel='bookmark' title='Permanent Link: sqlplus下如何看执行计划'>sqlplus下如何看执行计划</a></li>
<li><a href='http://www.dbalife.com/archives/39.html' rel='bookmark' title='Permanent Link: Statistics Lock导致的IMP问题'>Statistics Lock导致的IMP问题</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.dbalife.com/archives/379.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>友好的SecureCRT日志文件设置</title>
		<link>http://www.dbalife.com/archives/366.html</link>
		<comments>http://www.dbalife.com/archives/366.html#comments</comments>
		<pubDate>Mon, 25 Jan 2010 10:17:07 +0000</pubDate>
		<dc:creator>skywalker</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[log]]></category>
		<category><![CDATA[secureCRT]]></category>
		<category><![CDATA[ssh]]></category>
		<category><![CDATA[日志]]></category>

		<guid isPermaLink="false">http://www.dbalife.com/?p=366</guid>
		<description><![CDATA[SecureCRT可以完整记录下所有信息，但是默认的日志文件设置并不好用。 这里给出我的日志文件配置，遵循以下原则： 1、通过浏览文件名可以获得该日志内容的主要信息 2、文件名唯一 3、每个session的日志独立 由此将Logfilename配置为：%H_%Y%M%D_%h%m_%s%t.log 其中： %H-主机名或主机IP地址 %Y-四位年份 %M-2位月份 %D-2位日期 %h-2位小时数 %m-2位分钟数 %s-2位秒数 %t-2位毫秒数 最后，在logfile的option中，选中“Start log upon connect” 和 “Append to file”。 自此，所有在SecureCRT中显示过的信息都会如实记录在日志文件中。 No related posts.


No related posts.]]></description>
			<content:encoded><![CDATA[<p>SecureCRT可以完整记录下所有信息，但是默认的日志文件设置并不好用。</p>
<p>这里给出我的日志文件配置，遵循以下原则：</p>
<blockquote><p>1、通过浏览文件名可以获得该日志内容的主要信息<br />
2、文件名唯一<br />
3、每个session的日志独立</p></blockquote>
<p>由此将Logfilename配置为：%H_%Y%M%D_%h%m_%s%t.log</p>
<blockquote><p>其中：<br />
%H-主机名或主机IP地址<br />
%Y-四位年份<br />
%M-2位月份<br />
%D-2位日期<br />
%h-2位小时数<br />
%m-2位分钟数<br />
%s-2位秒数<br />
%t-2位毫秒数</p></blockquote>
<p>最后，在logfile的option中，选中“Start log upon connect” 和 “Append to file”。</p>
<p>自此，所有在SecureCRT中显示过的信息都会如实记录在日志文件中。</p>


<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://www.dbalife.com/archives/366.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>可怕的感性与可怕的理性</title>
		<link>http://www.dbalife.com/archives/364.html</link>
		<comments>http://www.dbalife.com/archives/364.html#comments</comments>
		<pubDate>Mon, 25 Jan 2010 01:41:23 +0000</pubDate>
		<dc:creator>skywalker</dc:creator>
				<category><![CDATA[View]]></category>
		<category><![CDATA[创业]]></category>
		<category><![CDATA[商业模式]]></category>
		<category><![CDATA[思想]]></category>

		<guid isPermaLink="false">http://www.dbalife.com/archives/364.html</guid>
		<description><![CDATA[本文转载自思华商业模式 前段时间有一则“分贝网CEO因办裸聊网站被捕”的消息，这并不奇怪，“黄，赌，毒”任何时候都是一个足以使人疯狂的诱惑，尤其在正规通道越来越难以为继，越来越需要“心智体美劳”全面发展的时候。 在任何一个全分类浏览文章的网站中，阅读排名靠前的肯定是关乎“性”，“暴乱”，“愤青”等之类的文章，这是人们潜在的超级感性的一面； 探究任何一个存续时间很长的大公司背后，并不是因为他们一直在提供超级感性的东西，而是因为他们一直在努力为顾客提供“超级理性”的东西。 这样，我们将一个事物从诞生到成长过程中，人们感性与理性的变化趋势与效率之间的关系绘制如图： 商业世界的效率在最初都是发迹于感性，当最初的感性退却，进入平淡期，而后是理性的方面。这个模型可以解释很多现象： 比如，呼啦圈的全民热----进入平淡期---只有少数坚持锻炼的人还在呼啦圈； 比如博客的兴起，全民皆博-----渐渐的进入平淡期，更多的人转向更容易的微博-----只有很少的人还在坚持的人写博客； 比如现在很火的微博-----慢慢的只要有最新的，更容易的事物出现，他也会衰退-----剩下一些微博的铁杆粉丝。 比如现在很火的阿凡达-----慢慢最初的热情退却-----只剩下一些超级理性的忠实粉丝。 这给创业者的启示是什么？ 如果你的创业起于满足人们一个简单的感性方面的诉求，那么相对容易的多； 必须坚持持续的理性引导用户，因为感性的那部分最终是会“离你而去”； 明白这个变化规律，做好及时应变。 Blogged with the Flock Browser Related posts:Flock强大的地图组件QuikMaps Flock浏览器BlogPost测试 如何获得廉价的metalink帐号


Related posts:<ol><li><a href='http://www.dbalife.com/archives/129.html' rel='bookmark' title='Permanent Link: Flock强大的地图组件QuikMaps'>Flock强大的地图组件QuikMaps</a></li>
<li><a href='http://www.dbalife.com/archives/107.html' rel='bookmark' title='Permanent Link: Flock浏览器BlogPost测试'>Flock浏览器BlogPost测试</a></li>
<li><a href='http://www.dbalife.com/archives/186.html' rel='bookmark' title='Permanent Link: 如何获得廉价的metalink帐号'>如何获得廉价的metalink帐号</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>本文转载自<a href="http://www.thinkwart.com/startup/awesome-sense-and-sensibility.html">思华商业模式</a>
</p>
<hr style="width: 100%; height: 2px;" />
<p>前段时间有一则“<a href="http://gy.newssc.org/system/2010014/000755924.htm" target="_blank" jquery1264383139828="16" tip="">分贝网CEO因办裸聊网站被捕</a>”的消息，这并不奇怪，“黄，赌，毒”任何时候都是一个足以使人疯狂的诱惑，尤其在正规通道越来越难以为继，越来越需要“心智体美劳”全面发展的时候。</p>
<p>在任何一个全分类浏览文章的网站中，阅读排名靠前的肯定是关乎“性”，“暴乱”，“愤青”等之类的文章，这是人们潜在的超级感性的一面；</p>
<p>探究任何一个存续时间很长的大公司背后，并不是因为他们一直在提供超级感性的东西，而是因为他们一直在努力为顾客提供“超级理性”的东西。</p>
<p>这样，我们将一个事物从诞生到成长过程中，人们感性与理性的变化趋势与效率之间的关系绘制如图：</p>
<p><img alt="" src="http://www.thinkwart.com/download.asp?id=99" /></p>
<p>商业世界的效率在最初都是发迹于感性，当最初的感性退却，进入平淡期，而后是理性的方面。这个模型可以解释很多现象：</p>
<p>比如，呼啦圈的全民热----进入平淡期---只有少数坚持锻炼的人还在呼啦圈；</p>
<p>比如博客的兴起，全民皆博-----渐渐的进入平淡期，更多的人转向更容易的微博-----只有很少的人还在坚持的人写博客；</p>
<p>比如现在很火的微博-----慢慢的只要有最新的，更容易的事物出现，他也会衰退-----剩下一些微博的铁杆粉丝。</p>
<p>比如现在很火的阿凡达-----慢慢最初的热情退却-----只剩下一些超级理性的忠实粉丝。</p>
<p>这给创业者的启示是什么？</p>
<ol>
<li>如果你的创业起于满足人们一个简单的感性方面的诉求，那么相对容易的多；  </li>
<li>必须坚持持续的理性引导用户，因为感性的那部分最终是会“离你而去”；  </li>
<li>明白这个变化规律，做好及时应变。</li>
</ol>
<div class="flockcredit" style="text-align: right; color: #CCC; font-size: x-small;">Blogged with the <a href="http://www.flock.com/blogged-with-flock" style="color: #999; font-weight: bold;" target="_new" title="Flock Browser">Flock Browser</a></div>


<p>Related posts:<ol><li><a href='http://www.dbalife.com/archives/129.html' rel='bookmark' title='Permanent Link: Flock强大的地图组件QuikMaps'>Flock强大的地图组件QuikMaps</a></li>
<li><a href='http://www.dbalife.com/archives/107.html' rel='bookmark' title='Permanent Link: Flock浏览器BlogPost测试'>Flock浏览器BlogPost测试</a></li>
<li><a href='http://www.dbalife.com/archives/186.html' rel='bookmark' title='Permanent Link: 如何获得廉价的metalink帐号'>如何获得廉价的metalink帐号</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.dbalife.com/archives/364.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
