<?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:trackback="http://madskills.com/public/xml/rss/module/trackback/">
<channel>
	<title>flyinweb's blog</title>
	<link>http://www.517sou.net/</link>
	<language>zh-CN</language>
	<webMaster>shanyiwan@msn.com(flyinweb)</webMaster>
	<pubDate>Mon, 15 Jun 2009 19:31:16 GMT</pubDate>
	<copyright>Copyright 2007-2009. All rights reserved.</copyright>
	<generator>Bitrac Free Version</generator>
	<description>桃李无言，下自成蹊</description>
	<image>
		<title>flyinweb&apos;s blog</title>
		<url>http://www.517sou.net/Client/Banner.gif</url>
		<link>http://www.517sou.net/</link>
		<description>桃李无言，下自成蹊</description>
	</image>
	<item>
		<link>http://www.517sou.net/Article/407.aspx</link>
		<title>mysql slave延时同步</title>
		<author>shanyiwan@live.com(flyinweb)</author>
		<category>数据库技术</category>
		<pubDate>Thu, 28 Jan 2010 07:28:33 GMT</pubDate>
		<description>&lt;h1&gt;dlslaved 0.1&lt;/h1&gt;&lt;h2&gt;(Delayed Slave Daemon for MySQL)&lt;/h2&gt;&lt;b&gt;dlslaved&lt;/b&gt;&lt;p&gt;allows delayed replication for MySQL databases.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;The&lt;/p&gt;&lt;b&gt;dlslaved&lt;/b&gt;&lt;p&gt;syntax is really simple :&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;gt; dlslaved -h ipAddress -u username -p password -P portNumber&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;11/06/2007&lt;/b&gt; : initial release&lt;/li&gt; 	Well, it&apos;s done. I finally put the source code on Internet. So, be  gentle. It&apos;s my first 	unix program.&lt;br /&gt; 	 	The internal architecture of &lt;b&gt;dlslaved&lt;/b&gt; is very simple. It uses  the &lt;i&gt;SecondsBehindMaster&lt;/i&gt; 	MySQL internal variable, and the &lt;i&gt;STOP&lt;/i&gt; and &lt;i&gt;START&lt;/i&gt; slave  command to try to have 7200 seconds (a constant 	in the program) constantly behind the master.&lt;br /&gt; 	Try it, use it, send back errors and source modifications.&lt;br /&gt;&lt;br /&gt; 	It compiles under Linux and Solaris (x86 and Sparc) using gcc.&lt;br /&gt;&lt;br /&gt; 	Download &lt;a title=&quot;dlslaved user&apos;s manual&quot; href=&quot;http://rodolphe.jouannet.free.fr/dlslaved.pdf&quot; target=&quot;_blank&quot;&gt;&lt;b&gt;dlslaved&lt;/b&gt; user&apos;s manual&lt;/a&gt; (a PDF  file). 	&lt;br /&gt; 	Download &lt;a title=&quot;dlslaved source code&quot; href=&quot;http://rodolphe.jouannet.free.fr/dlslaved.tar.gz&quot; target=&quot;_blank&quot;&gt;&lt;b&gt;dlslaved&lt;/b&gt; source code&lt;/a&gt; 	for Linux and Solaris (i think most Unix like systems). To compile, you  need MySQL binaries and libraries 	to be install in &lt;code&gt;/usr/local/mysql&lt;/code&gt; directory.&lt;br /&gt;&lt;/ul&gt;&lt;p&gt;&lt;br /&gt; Contact me at rodolphe.jouannet(at)free.fr for support or questions.&lt;/p&gt;&lt;p&gt;根据上述思路，写一shell来实现相同的操作：&lt;/p&gt;&lt;pre&gt;&lt;ol class=&quot;dp-xml&quot;&gt;&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span&gt;#!/bin/bash&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;#&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;#&amp;nbsp;监控mysql&amp;nbsp;slave状态，实现slave延时&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;#&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span class=&quot;attribute&quot;&gt;INTERVAL&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class=&quot;attribute-value&quot;&gt;&amp;quot;1800&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;#&lt;span class=&quot;attribute&quot;&gt;CURPATH&lt;/span&gt;&lt;span&gt;=$(pwd)&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span class=&quot;attribute&quot;&gt;CURPATH&lt;/span&gt;&lt;span&gt;=/home/adminshell&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span class=&quot;attribute&quot;&gt;AUTH&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class=&quot;attribute-value&quot;&gt;&apos;-uroot&amp;nbsp;-ppassword&apos;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span class=&quot;attribute&quot;&gt;SLAVE_IO&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class=&quot;attribute-value&quot;&gt;&amp;quot;Slave_IO_Running:&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span class=&quot;attribute&quot;&gt;SLAVE_SQL&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class=&quot;attribute-value&quot;&gt;&amp;quot;Slave_SQL_Running:&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span class=&quot;attribute&quot;&gt;SHOW_SLAVE_STATUS&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class=&quot;attribute-value&quot;&gt;&amp;quot;show&amp;nbsp;slave&amp;nbsp;status\G&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span class=&quot;attribute&quot;&gt;START_SLAVE&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class=&quot;attribute-value&quot;&gt;&amp;quot;start&amp;nbsp;slave&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span class=&quot;attribute&quot;&gt;STOP_SLAVE&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class=&quot;attribute-value&quot;&gt;&amp;quot;stop&amp;nbsp;slave&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span class=&quot;attribute&quot;&gt;MYSQL&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class=&quot;attribute-value&quot;&gt;&amp;quot;$(which&amp;nbsp;mysql)&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;if&amp;nbsp;[&amp;nbsp;$?&amp;nbsp;-ge&amp;nbsp;1&amp;nbsp;]&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;then&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;attribute&quot;&gt;MYSQL&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class=&quot;attribute-value&quot;&gt;&amp;quot;/usr/local/mysql/bin/mysql&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;fi&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span class=&quot;attribute&quot;&gt;PIDOF&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class=&quot;attribute-value&quot;&gt;&amp;quot;$(which&amp;nbsp;pidof)&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;if&amp;nbsp;[&amp;nbsp;$?&amp;nbsp;-ge&amp;nbsp;1&amp;nbsp;]&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;then&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;attribute&quot;&gt;PIDOF&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class=&quot;attribute-value&quot;&gt;&amp;quot;/sbin/pidof&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;fi&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;while&amp;nbsp;:&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;do&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;attribute&quot;&gt;TIMESTAMP_TODAY&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class=&quot;attribute-value&quot;&gt;&amp;quot;$(date&amp;nbsp;+%Y%m%d)&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;attribute&quot;&gt;LOGFILE&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class=&quot;attribute-value&quot;&gt;&amp;quot;${CURPATH}/mysql_slave_delay_${TIMESTAMP_TODAY}.log&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;echo&amp;nbsp;&amp;quot;[`date&amp;nbsp;+%c`]&amp;nbsp;mysqld&amp;nbsp;process&amp;nbsp;check&amp;quot;&amp;nbsp;&lt;span class=&quot;tag&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;$LOGFILE&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;attribute&quot;&gt;MYSQLDPID&lt;/span&gt;&lt;span&gt;=$($PIDOF&amp;nbsp;mysqld)&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;[&amp;nbsp;-z&amp;nbsp;$MYSQLDPID&amp;nbsp;];then&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;echo&amp;nbsp;&amp;quot;mysqld&amp;nbsp;is&amp;nbsp;not&amp;nbsp;started!&amp;quot;&amp;nbsp;&lt;span class=&quot;tag&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;$LOGFILE&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;echo&amp;nbsp;&amp;quot;[`date&amp;nbsp;+%c`]&amp;nbsp;mysqld&amp;nbsp;is&amp;nbsp;running&amp;quot;&amp;nbsp;&lt;span class=&quot;tag&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;$LOGFILE&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;echo&amp;nbsp;&amp;quot;[`date&amp;nbsp;+%c`]&amp;nbsp;mysql&amp;nbsp;slave&amp;nbsp;status&amp;nbsp;check&amp;quot;&amp;nbsp;&lt;span class=&quot;tag&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;$LOGFILE&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;attribute&quot;&gt;SLAVE_IO_STATUS&lt;/span&gt;&lt;span&gt;=$($MYSQL&amp;nbsp;$AUTH&amp;nbsp;-Bse&amp;nbsp;&amp;quot;$SHOW_SLAVE_STATUS&amp;quot;&amp;nbsp;|&amp;nbsp;grep&amp;nbsp;$SLAVE_IO&amp;nbsp;|&amp;nbsp;awk&amp;nbsp;&apos;{&amp;nbsp;print&amp;nbsp;$2&amp;nbsp;}&apos;)&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;attribute&quot;&gt;SLAVE_SQL_STATUS&lt;/span&gt;&lt;span&gt;=$($MYSQL&amp;nbsp;$AUTH&amp;nbsp;-Bse&amp;nbsp;&amp;quot;$SHOW_SLAVE_STATUS&amp;quot;&amp;nbsp;|&amp;nbsp;grep&amp;nbsp;$SLAVE_SQL&amp;nbsp;|&amp;nbsp;awk&amp;nbsp;&apos;{&amp;nbsp;print&amp;nbsp;$2&amp;nbsp;}&apos;)&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if&amp;nbsp;[&amp;nbsp;&amp;quot;$SLAVE_IO_STATUS&amp;quot;&amp;nbsp;=&amp;nbsp;&amp;quot;Yes&amp;quot;&amp;nbsp;-a&amp;nbsp;&amp;quot;$SLAVE_SQL_STATUS&amp;quot;&amp;nbsp;=&amp;nbsp;&amp;quot;Yes&amp;quot;&amp;nbsp;];then&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;echo&amp;nbsp;&amp;quot;[`date&amp;nbsp;+%c`]&amp;nbsp;mysql&amp;nbsp;slave&amp;nbsp;is&amp;nbsp;running,stop&amp;nbsp;it&amp;quot;&amp;nbsp;&lt;span class=&quot;tag&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;$LOGFILE&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$MYSQL&amp;nbsp;$AUTH&amp;nbsp;-Bse&amp;nbsp;&amp;quot;$STOP_SLAVE&amp;quot;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;echo&amp;nbsp;&amp;quot;[`date&amp;nbsp;+%c`]&amp;nbsp;mysql&amp;nbsp;slave&amp;nbsp;is&amp;nbsp;not&amp;nbsp;running,start&amp;nbsp;it&amp;quot;&amp;nbsp;&lt;span class=&quot;tag&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;$LOGFILE&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$MYSQL&amp;nbsp;$AUTH&amp;nbsp;-Bse&amp;nbsp;&amp;quot;$START_SLAVE&amp;quot;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fi&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;echo&amp;nbsp;&amp;quot;[`date&amp;nbsp;+%c`]&amp;nbsp;****************************************************&amp;quot;&amp;nbsp;&lt;span class=&quot;tag&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;$LOGFILE&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sleep&amp;nbsp;${INTERVAL}&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fi&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;done&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/pre&gt;</description>
		<guid>http://www.517sou.net/Article/407.aspx</guid>
		<trackback:ping>http://www.517sou.net/Article/407/Trackback.ashx</trackback:ping>
		<comments>http://www.517sou.net/Article/407.aspx#CommentPostAnchor</comments>
		<wfw:commentRss>http://www.517sou.net/Article/407/Feeds.ashx</wfw:commentRss>
	</item>
	<item>
		<link>http://www.517sou.net/Article/406.aspx</link>
		<title>Awk学习笔记</title>
		<author>shanyiwan@live.com(flyinweb)</author>
		<category>技术文摘</category>
		<pubDate>Wed, 27 Jan 2010 06:43:55 GMT</pubDate>
		<description>&lt;div lang=&quot;en&quot; class=&quot;article&quot;&gt;&lt;div class=&quot;titlepage&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;h1 class=&quot;title&quot;&gt;Awk学习笔记&lt;/h1&gt;&lt;/div&gt;&lt;div&gt;&lt;div class=&quot;author&quot;&gt;&lt;h3 class=&quot;author&quot;&gt;&lt;span class=&quot;firstname&quot;&gt;整理：Jims of &lt;a href=&quot;http://www.ringkee.com/&quot; target=&quot;_blank&quot;&gt;肥肥世家&lt;/a&gt;&lt;/span&gt;&lt;/h3&gt;&lt;div class=&quot;affiliation&quot;&gt;&lt;div class=&quot;address&quot;&gt;&lt;p&gt;&lt;tt class=&quot;email&quot;&gt;&amp;lt;&lt;a href=&quot;mailto:jims.yang@gmail.com&quot;&gt;jims.yang@gmail.com&lt;/a&gt;&amp;gt;&lt;/tt&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;p class=&quot;copyright&quot;&gt;Copyright © 2004 本文遵从GPL协议，欢迎转载、修改、散布。&lt;/p&gt;&lt;/div&gt;&lt;div&gt;&lt;p class=&quot;pubdate&quot;&gt;第一次发布时间:2004年8月6日&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;hr /&gt;&lt;/div&gt;&lt;div class=&quot;toc&quot;&gt;&lt;p&gt;&lt;b&gt;Table of Contents&lt;/b&gt;&lt;/p&gt;&lt;dl&gt;&lt;dt&gt;&lt;span class=&quot;sect1&quot;&gt;&lt;a href=&quot;http://www.linux.gov.cn/shell/awk.htm#id2874788&quot; target=&quot;_blank&quot;&gt;1. awk简介&lt;/a&gt;&lt;/span&gt;&lt;/dt&gt;&lt;dt&gt;&lt;span class=&quot;sect1&quot;&gt;&lt;a href=&quot;http://www.linux.gov.cn/shell/awk.htm#id2875182&quot; target=&quot;_blank&quot;&gt;2.  awk命令格式和选项&lt;/a&gt;&lt;/span&gt;&lt;/dt&gt;&lt;dd&gt;&lt;dl&gt;&lt;dt&gt;&lt;span class=&quot;sect2&quot;&gt;&lt;a href=&quot;http://www.linux.gov.cn/shell/awk.htm#id2875104&quot; target=&quot;_blank&quot;&gt;2.1. awk的语法有两种形式&lt;/a&gt;&lt;/span&gt;&lt;/dt&gt;&lt;dt&gt;&lt;span class=&quot;sect2&quot;&gt;&lt;a href=&quot;http://www.linux.gov.cn/shell/awk.htm#id2811790&quot; target=&quot;_blank&quot;&gt;2.2.  命令选项&lt;/a&gt;&lt;/span&gt;&lt;/dt&gt;&lt;/dl&gt;&lt;/dd&gt;&lt;dt&gt;&lt;span class=&quot;sect1&quot;&gt;&lt;a href=&quot;http://www.linux.gov.cn/shell/awk.htm#id2810094&quot; target=&quot;_blank&quot;&gt;3. 模式和操作&lt;/a&gt;&lt;/span&gt;&lt;/dt&gt;&lt;dd&gt;&lt;dl&gt;&lt;dt&gt;&lt;span class=&quot;sect2&quot;&gt;&lt;a href=&quot;http://www.linux.gov.cn/shell/awk.htm#id2810128&quot; target=&quot;_blank&quot;&gt;3.1.  模式&lt;/a&gt;&lt;/span&gt;&lt;/dt&gt;&lt;dt&gt;&lt;span class=&quot;sect2&quot;&gt;&lt;a href=&quot;http://www.linux.gov.cn/shell/awk.htm#id2810236&quot; target=&quot;_blank&quot;&gt;3.2. 操作&lt;/a&gt;&lt;/span&gt;&lt;/dt&gt;&lt;/dl&gt;&lt;/dd&gt;&lt;dt&gt;&lt;span class=&quot;sect1&quot;&gt;&lt;a href=&quot;http://www.linux.gov.cn/shell/awk.htm#id2810288&quot; target=&quot;_blank&quot;&gt;4.  awk的环境变量&lt;/a&gt;&lt;/span&gt;&lt;/dt&gt;&lt;dt&gt;&lt;span class=&quot;sect1&quot;&gt;&lt;a href=&quot;http://www.linux.gov.cn/shell/awk.htm#id2861410&quot; target=&quot;_blank&quot;&gt;5. awk运算符&lt;/a&gt;&lt;/span&gt;&lt;/dt&gt;&lt;dt&gt;&lt;span class=&quot;sect1&quot;&gt;&lt;a href=&quot;http://www.linux.gov.cn/shell/awk.htm#id2861636&quot; target=&quot;_blank&quot;&gt;6.  记录和域&lt;/a&gt;&lt;/span&gt;&lt;/dt&gt;&lt;dd&gt;&lt;dl&gt;&lt;dt&gt;&lt;span class=&quot;sect2&quot;&gt;&lt;a href=&quot;http://www.linux.gov.cn/shell/awk.htm#id2861644&quot; target=&quot;_blank&quot;&gt;6.1. 记录&lt;/a&gt;&lt;/span&gt;&lt;/dt&gt;&lt;dt&gt;&lt;span class=&quot;sect2&quot;&gt;&lt;a href=&quot;http://www.linux.gov.cn/shell/awk.htm#id2861680&quot; target=&quot;_blank&quot;&gt;6.2.  域&lt;/a&gt;&lt;/span&gt;&lt;/dt&gt;&lt;dt&gt;&lt;span class=&quot;sect2&quot;&gt;&lt;a href=&quot;http://www.linux.gov.cn/shell/awk.htm#id2861697&quot; target=&quot;_blank&quot;&gt;6.3. 域分隔符&lt;/a&gt;&lt;/span&gt;&lt;/dt&gt;&lt;/dl&gt;&lt;/dd&gt;&lt;dt&gt;&lt;span class=&quot;sect1&quot;&gt;&lt;a href=&quot;http://www.linux.gov.cn/shell/awk.htm#id2861728&quot; target=&quot;_blank&quot;&gt;7.  gawk专用正则表达式元字符&lt;/a&gt;&lt;/span&gt;&lt;/dt&gt;&lt;dt&gt;&lt;span class=&quot;sect1&quot;&gt;&lt;a href=&quot;http://www.linux.gov.cn/shell/awk.htm#id2861902&quot; target=&quot;_blank&quot;&gt;8. POSIX字符集&lt;/a&gt;&lt;/span&gt;&lt;/dt&gt;&lt;dt&gt;&lt;span class=&quot;sect1&quot;&gt;&lt;a href=&quot;http://www.linux.gov.cn/shell/awk.htm#id2861922&quot; target=&quot;_blank&quot;&gt;9.  匹配操作符(~)&lt;/a&gt;&lt;/span&gt;&lt;/dt&gt;&lt;dt&gt;&lt;span class=&quot;sect1&quot;&gt;&lt;a href=&quot;http://www.linux.gov.cn/shell/awk.htm#id2861937&quot; target=&quot;_blank&quot;&gt;10. 比较表达式&lt;/a&gt;&lt;/span&gt;&lt;/dt&gt;&lt;dt&gt;&lt;span class=&quot;sect1&quot;&gt;&lt;a href=&quot;http://www.linux.gov.cn/shell/awk.htm#id2861975&quot; target=&quot;_blank&quot;&gt;11.  范围模板&lt;/a&gt;&lt;/span&gt;&lt;/dt&gt;&lt;dt&gt;&lt;span class=&quot;sect1&quot;&gt;&lt;a href=&quot;http://www.linux.gov.cn/shell/awk.htm#id2861992&quot; target=&quot;_blank&quot;&gt;12.  一个验证passwd文件有效性的例子&lt;/a&gt;&lt;/span&gt;&lt;/dt&gt;&lt;dt&gt;&lt;span class=&quot;sect1&quot;&gt;&lt;a href=&quot;http://www.linux.gov.cn/shell/awk.htm#id2808705&quot; target=&quot;_blank&quot;&gt;13. 几个实例&lt;/a&gt;&lt;/span&gt;&lt;/dt&gt;&lt;dt&gt;&lt;span class=&quot;sect1&quot;&gt;&lt;a href=&quot;http://www.linux.gov.cn/shell/awk.htm#id2808824&quot; target=&quot;_blank&quot;&gt;14.  awk编程&lt;/a&gt;&lt;/span&gt;&lt;/dt&gt;&lt;dd&gt;&lt;dl&gt;&lt;dt&gt;&lt;span class=&quot;sect2&quot;&gt;&lt;a href=&quot;http://www.linux.gov.cn/shell/awk.htm#id2808832&quot; target=&quot;_blank&quot;&gt;14.1. 变量&lt;/a&gt;&lt;/span&gt;&lt;/dt&gt;&lt;dt&gt;&lt;span class=&quot;sect2&quot;&gt;&lt;a href=&quot;http://www.linux.gov.cn/shell/awk.htm#id2808925&quot; target=&quot;_blank&quot;&gt;14.2.  BEGIN模块&lt;/a&gt;&lt;/span&gt;&lt;/dt&gt;&lt;dt&gt;&lt;span class=&quot;sect2&quot;&gt;&lt;a href=&quot;http://www.linux.gov.cn/shell/awk.htm#id2808950&quot; target=&quot;_blank&quot;&gt;14.3. END模块&lt;/a&gt;&lt;/span&gt;&lt;/dt&gt;&lt;dt&gt;&lt;span class=&quot;sect2&quot;&gt;&lt;a href=&quot;http://www.linux.gov.cn/shell/awk.htm#id2808971&quot; target=&quot;_blank&quot;&gt;14.4.  重定向和管道&lt;/a&gt;&lt;/span&gt;&lt;/dt&gt;&lt;dt&gt;&lt;span class=&quot;sect2&quot;&gt;&lt;a href=&quot;http://www.linux.gov.cn/shell/awk.htm#id2809145&quot; target=&quot;_blank&quot;&gt;14.5. 条件语句&lt;/a&gt;&lt;/span&gt;&lt;/dt&gt;&lt;dt&gt;&lt;span class=&quot;sect2&quot;&gt;&lt;a href=&quot;http://www.linux.gov.cn/shell/awk.htm#id2809263&quot; target=&quot;_blank&quot;&gt;14.6.  循环&lt;/a&gt;&lt;/span&gt;&lt;/dt&gt;&lt;dt&gt;&lt;span class=&quot;sect2&quot;&gt;&lt;a href=&quot;http://www.linux.gov.cn/shell/awk.htm#id2809375&quot; target=&quot;_blank&quot;&gt;14.7. 数组&lt;/a&gt;&lt;/span&gt;&lt;/dt&gt;&lt;dt&gt;&lt;span class=&quot;sect2&quot;&gt;&lt;a href=&quot;http://www.linux.gov.cn/shell/awk.htm#id2809497&quot; target=&quot;_blank&quot;&gt;14.8.  awk的内建函数&lt;/a&gt;&lt;/span&gt;&lt;/dt&gt;&lt;/dl&gt;&lt;/dd&gt;&lt;dt&gt;&lt;span class=&quot;sect1&quot;&gt;&lt;a href=&quot;http://www.linux.gov.cn/shell/awk.htm#id2876387&quot; target=&quot;_blank&quot;&gt;15. How-to&lt;/a&gt;&lt;/span&gt;&lt;/dt&gt;&lt;/dl&gt;&lt;/div&gt;&lt;div lang=&quot;en&quot; class=&quot;sect1&quot;&gt;&lt;div class=&quot;titlepage&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;h2 style=&quot;clear: both;&quot; class=&quot;title&quot;&gt;1.&amp;nbsp;awk简介&lt;/h2&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;awk  是一种编程语言，用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入、一个或多个文件，或其它命令的输出。它支持用户自定义函数和 动态正则表达式等先进功能，是linux/unix下的一个强大编程工具。它在命令行中使用，但更多是作为脚本来使用。awk的处理文本和数据的方式是这 样的，它逐行扫描文件，从第一行到最后一行，寻找匹配的特定模式的行，并在这些行上进行你想要的操作。如果没有指定处理动作，则把匹配的行显示到标准输出 (屏幕)，如果没有指定模式，则所有被操作所指定的行都被处理。awk分别代表其作者姓氏的第一个字母。因为它的作者是三个人，分别是Alfred Aho、Brian Kernighan、Peter Weinberger。gawk是awk的GNU版本，它提供了Bell实验室和GNU的一些扩展。下面介绍的awk是以GUN的gawk为例的，在 linux系统中已把awk链接到gawk，所以下面全部以awk进行介绍。&lt;/p&gt;&lt;/div&gt;&lt;div lang=&quot;en&quot; class=&quot;sect1&quot;&gt;&lt;div class=&quot;titlepage&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;h2 style=&quot;clear: both;&quot; class=&quot;title&quot;&gt;2.&amp;nbsp;awk命令格式和选项&lt;/h2&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div lang=&quot;en&quot; class=&quot;sect2&quot;&gt;&lt;div class=&quot;titlepage&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;h3 class=&quot;title&quot;&gt;2.1.&amp;nbsp;awk的语法有两种形式&lt;/h3&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;itemizedlist&quot;&gt;&lt;ul type=&quot;disc&quot;&gt;&lt;li&gt;&lt;p&gt;awk [options] &apos;script&apos;  var=value file(s)&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;awk [options] -f scriptfile var=value  file(s)&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;div lang=&quot;en&quot; class=&quot;sect2&quot;&gt;&lt;div class=&quot;titlepage&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;h3 class=&quot;title&quot;&gt;2.2.&amp;nbsp;命 令选项&lt;/h3&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;variablelist&quot;&gt;&lt;dl&gt;&lt;dt&gt;&lt;span class=&quot;term&quot;&gt;-F fs or --field-separator fs&lt;/span&gt;&lt;/dt&gt;&lt;dd&gt;&lt;p&gt;指定输入文件折分隔 符，fs是一个字符串或者是一个正则表达式，如-F:。&lt;/p&gt;&lt;/dd&gt;&lt;dt&gt;&lt;span class=&quot;term&quot;&gt;-v var=value  or --asign var=value&lt;/span&gt;&lt;/dt&gt;&lt;dd&gt;&lt;p&gt;赋值一个用户定义变量。&lt;/p&gt;&lt;/dd&gt;&lt;dt&gt;&lt;span class=&quot;term&quot;&gt;-f scripfile or --file scriptfile&lt;/span&gt;&lt;/dt&gt;&lt;dd&gt;&lt;p&gt;从脚本文件中读 取awk命令。&lt;/p&gt;&lt;/dd&gt;&lt;dt&gt;&lt;span class=&quot;term&quot;&gt;-mf nnn and  -mr nnn&lt;/span&gt;&lt;/dt&gt;&lt;dd&gt;&lt;p&gt;对 nnn值设置内在限制，-mf选项限制分配给nnn的最大块数目；-mr选项限制记录的最大数目。这两个功能是Bell实验室版awk的扩展功能，在标准 awk中不适用。&lt;/p&gt;&lt;/dd&gt;&lt;dt&gt;&lt;span class=&quot;term&quot;&gt;-W compact or --compat, &lt;/span&gt;&lt;span class=&quot;term&quot;&gt;-W traditional or --traditional&lt;/span&gt;&lt;/dt&gt;&lt;dd&gt;&lt;p&gt;在兼容模式下运行 awk。所以gawk的行为和标准的awk完全一样，所有的awk扩展都被忽略。&lt;/p&gt;&lt;/dd&gt;&lt;dt&gt;&lt;span class=&quot;term&quot;&gt;-W  copyleft or --copyleft, &lt;/span&gt;&lt;span class=&quot;term&quot;&gt;-W copyright or  --copyright&lt;/span&gt;&lt;/dt&gt;&lt;dd&gt;&lt;p&gt;打印简短的版权信息。&lt;/p&gt;&lt;/dd&gt;&lt;dt&gt;&lt;span class=&quot;term&quot;&gt;-W  help or --help, &lt;/span&gt;&lt;span class=&quot;term&quot;&gt;-W usage or --usage&lt;/span&gt;&lt;/dt&gt;&lt;dd&gt;&lt;p&gt;打 印全部awk选项和每个选项的简短说明。&lt;/p&gt;&lt;/dd&gt;&lt;dt&gt;&lt;span class=&quot;term&quot;&gt;-W lint or --lint&lt;/span&gt;&lt;/dt&gt;&lt;dd&gt;&lt;p&gt;打 印不能向传统unix平台移植的结构的警告。&lt;/p&gt;&lt;/dd&gt;&lt;dt&gt;&lt;span class=&quot;term&quot;&gt;-W lint-old or  --lint-old&lt;/span&gt;&lt;/dt&gt;&lt;dd&gt;&lt;p&gt;打印关于不能向传统unix平台移植的结构的警告。&lt;/p&gt;&lt;/dd&gt;&lt;dt&gt;&lt;span class=&quot;term&quot;&gt;-W posix&lt;/span&gt;&lt;/dt&gt;&lt;dd&gt;&lt;p&gt;打开兼容模式。但有以下限制，不识别：\x、函数关键字、func、 换码序列以及当fs是一个空格时，将新行作为一个域分隔符；操作符**和**=不能代替^和^=；fflush无效。&lt;/p&gt;&lt;/dd&gt;&lt;dt&gt;&lt;span class=&quot;term&quot;&gt;-W re-interval or --re-inerval&lt;/span&gt;&lt;/dt&gt;&lt;dd&gt;&lt;p&gt;允许间隔正则表达式 的使用，参考(grep中的Posix字符类)，如括号表达式[[:alpha:]]。&lt;/p&gt;&lt;/dd&gt;&lt;dt&gt;&lt;span class=&quot;term&quot;&gt;-W  source program-text or --source program-text&lt;/span&gt;&lt;/dt&gt;&lt;dd&gt;&lt;p&gt;使用 program-text作为源代码，可与-f命令混用。&lt;/p&gt;&lt;/dd&gt;&lt;dt&gt;&lt;span class=&quot;term&quot;&gt;-W version   or --version&lt;/span&gt;&lt;/dt&gt;&lt;dd&gt;&lt;p&gt;打印bug报告信息的版本。&lt;/p&gt;&lt;/dd&gt;&lt;/dl&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div lang=&quot;en&quot; class=&quot;sect1&quot;&gt;&lt;div class=&quot;titlepage&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;h2 style=&quot;clear: both;&quot; class=&quot;title&quot;&gt;3.&amp;nbsp;模式和操作&lt;/h2&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;variablelist&quot;&gt;&lt;dl&gt;&lt;dt&gt;&lt;span class=&quot;term&quot;&gt;awk脚本是由模式和操作组成的：&lt;/span&gt;&lt;/dt&gt;&lt;dd&gt;&lt;p&gt;pattern  {action} 如$ awk &apos;/root/&apos; test，或$ awk &apos;$3 &amp;lt; 100&apos; test。&lt;/p&gt;&lt;/dd&gt;&lt;/dl&gt;&lt;/div&gt;&lt;p&gt;两者是可选的，如果没有模式，则action应用到全部记录，如果没有action，则输出匹配全部记录。默认情况下，每一个输入行都是一条记录，但用户 可通过RS变量指定不同的分隔符进行分隔。&lt;/p&gt;&lt;div lang=&quot;en&quot; class=&quot;sect2&quot;&gt;&lt;div class=&quot;titlepage&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;h3 class=&quot;title&quot;&gt;3.1.&amp;nbsp;模式&lt;/h3&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;模 式可以是以下任意一个：&lt;/p&gt;&lt;div class=&quot;itemizedlist&quot;&gt;&lt;ul type=&quot;disc&quot;&gt;&lt;li&gt;&lt;p&gt;/正则表达式/： 使用通配符的扩展集。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;关系表达式：可以用下面运算符表中的关系运算符进行操作，可以是字符串或数字的比较， 如$2&amp;gt;%1选择第二个字段比第一个字段长的行。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;模式匹配表达式：用运算符~(匹配)和~!(不匹配)。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;模 式，模式：指定一个行的范围。该语法不能包括BEGIN和END模式。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;BEGIN：让用户指定在第一条输入记录被处理之 前所发生的动作，通常可在这里设置全局变量。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;END：让用户在最后一条输入记录被读取之后发生的动作。&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;div lang=&quot;en&quot; class=&quot;sect2&quot;&gt;&lt;div class=&quot;titlepage&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;h3 class=&quot;title&quot;&gt;3.2.&amp;nbsp;操作&lt;/h3&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;操 作由一人或多个命令、函数、表达式组成，之间由换行符或分号隔开，并位于大括号内。主要有四部份：&lt;/p&gt;&lt;div class=&quot;itemizedlist&quot;&gt;&lt;ul type=&quot;disc&quot;&gt;&lt;li&gt;&lt;p&gt;变量或数组赋值&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;输出命令&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;内 置函数&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;控制流命令&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div lang=&quot;en&quot; class=&quot;sect1&quot;&gt;&lt;div class=&quot;titlepage&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;h2 style=&quot;clear: both;&quot; class=&quot;title&quot;&gt;4.&amp;nbsp;awk的环境变量&lt;/h2&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;table&quot;&gt;&lt;p class=&quot;title&quot;&gt;&lt;b&gt;Table&amp;nbsp;1.&amp;nbsp;awk的 环境变量&lt;/b&gt;&lt;/p&gt;&lt;table border=&quot;1&quot; summary=&quot;awk的环境变量&quot;&gt;&lt;colgroup&gt;&lt;col /&gt;&lt;col /&gt;&lt;/colgroup&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;变 量&lt;/th&gt;&lt;th&gt;描述&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;$n&lt;/td&gt;&lt;td&gt;当前记录的第n个字段，字段间由 FS分隔。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;$0&lt;/td&gt;&lt;td&gt;完整的输入记录。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;ARGC&lt;/td&gt;&lt;td&gt;命 令行参数的数目。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;ARGIND&lt;/td&gt;&lt;td&gt;命令行中当前文件的位置(从0开始算)。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;ARGV&lt;/td&gt;&lt;td&gt;包 含命令行参数的数组。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;CONVFMT&lt;/td&gt;&lt;td&gt;数字转换格式(默认值为%.6g)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;ENVIRON&lt;/td&gt;&lt;td&gt;环 境变量关联数组。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;ERRNO&lt;/td&gt;&lt;td&gt;最后一个系统错误的描述。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;FIELDWIDTHS&lt;/td&gt;&lt;td&gt;字 段宽度列表(用空格键分隔)。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;FILENAME&lt;/td&gt;&lt;td&gt;当前文件名。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;FNR&lt;/td&gt;&lt;td&gt;同 NR，但相对于当前文件。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;FS&lt;/td&gt;&lt;td&gt;字段分隔符(默认是任何空格)。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;IGNORECASE&lt;/td&gt;&lt;td&gt;如 果为真，则进行忽略大小写的匹配。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;NF&lt;/td&gt;&lt;td&gt;当前记录中的字段数。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;NR&lt;/td&gt;&lt;td&gt;当 前记录数。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;OFMT&lt;/td&gt;&lt;td&gt;数字的输出格式(默认值是%.6g)。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;OFS&lt;/td&gt;&lt;td&gt;输 出字段分隔符(默认值是一个空格)。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;ORS&lt;/td&gt;&lt;td&gt;输出记录分隔符(默认值是一个换行符)。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;RLENGTH&lt;/td&gt;&lt;td&gt;由 match函数所匹配的字符串的长度。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;RS&lt;/td&gt;&lt;td&gt;记录分隔符(默认是一个换行符)。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;RSTART&lt;/td&gt;&lt;td&gt;由 match函数所匹配的字符串的第一个位置。&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;SUBSEP&lt;/td&gt;&lt;td&gt;数组下标分隔符(默认值是\034)。&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;&lt;div lang=&quot;en&quot; class=&quot;sect1&quot;&gt;&lt;div class=&quot;titlepage&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;h2 style=&quot;clear: both;&quot; class=&quot;title&quot;&gt;5.&amp;nbsp;awk运算符&lt;/h2&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;table&quot;&gt;&lt;p class=&quot;title&quot;&gt;&lt;b&gt;Table&amp;nbsp;2.&amp;nbsp;运算符&lt;/b&gt;&lt;/p&gt;&lt;table border=&quot;1&quot; summary=&quot;运算符&quot;&gt;&lt;colgroup&gt;&lt;col /&gt;&lt;col /&gt;&lt;/colgroup&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;运 算符&lt;/th&gt;&lt;th&gt;描述&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;=  +=  -=  *=  /=  %=  ^=   **=&lt;/td&gt;&lt;td&gt;赋值&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;?:&lt;/td&gt;&lt;td&gt;C条件表达式&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;||&lt;/td&gt;&lt;td&gt;逻 辑或&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&amp;amp;&amp;amp;&lt;/td&gt;&lt;td&gt;逻辑与&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;~  ~!&lt;/td&gt;&lt;td&gt;匹 配正则表达式和不匹配正则表达式&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&amp;lt;  &amp;lt;=  &amp;gt;  &amp;gt;=  !=  ==&lt;/td&gt;&lt;td&gt;关 系运算符&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;空格&lt;/td&gt;&lt;td&gt;连接&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;+  -&lt;/td&gt;&lt;td&gt;加，减&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;*   /  &amp;amp;&lt;/td&gt;&lt;td&gt;乘，除与求余&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;+  -  !&lt;/td&gt;&lt;td&gt;一元加，减和逻辑非&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;^   ***&lt;/td&gt;&lt;td&gt;求幂&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;++  --&lt;/td&gt;&lt;td&gt;增加或减少，作为前缀或后缀&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;$&lt;/td&gt;&lt;td&gt;字 段引用&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;in&lt;/td&gt;&lt;td&gt;数组成员&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;&lt;div lang=&quot;en&quot; class=&quot;sect1&quot;&gt;&lt;div class=&quot;titlepage&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;h2 style=&quot;clear: both;&quot; class=&quot;title&quot;&gt;6.&amp;nbsp;记录和域&lt;/h2&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div lang=&quot;en&quot; class=&quot;sect2&quot;&gt;&lt;div class=&quot;titlepage&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;h3 class=&quot;title&quot;&gt;6.1.&amp;nbsp;记录&lt;/h3&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;awk 把每一个以换行符结束的行称为一个记录。&lt;/p&gt;&lt;p&gt;记录分隔符：默认的输入和输出的分隔符都是回车，保存在内建变量ORS和RS中。&lt;/p&gt;&lt;p&gt;$0 变量：它指的是整条记录。如$ awk &apos;{print $0}&apos; test将输出test文件中的所有记录。&lt;/p&gt;&lt;p&gt;变量NR：一个计数器，每处 理完一条记录，NR的值就增加1。如$ awk &apos;{print NR,$0}&apos; test将输出test文件中所有记录，并在记录前显示记录号。&lt;/p&gt;&lt;/div&gt;&lt;div lang=&quot;en&quot; class=&quot;sect2&quot;&gt;&lt;div class=&quot;titlepage&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;h3 class=&quot;title&quot;&gt;6.2.&amp;nbsp;域&lt;/h3&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;记 录中每个单词称做“域”，默认情况下以空格或tab分隔。awk可跟踪域的个数，并在内建变量NF中保存该值。如$ awk &apos;{print  $1,$3}&apos; test将打印test文件中第一和第三个以空格分开的列(域)。&lt;/p&gt;&lt;/div&gt;&lt;div lang=&quot;en&quot; class=&quot;sect2&quot;&gt;&lt;div class=&quot;titlepage&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;h3 class=&quot;title&quot;&gt;6.3.&amp;nbsp;域分隔符&lt;/h3&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;内建变量 FS保存输入域分隔符的值，默认是空格或tab。我们可以通过-F命令行选项修改FS的值。如$ awk -F: &apos;{print $1,$5}&apos;  test将打印以冒号为分隔符的第一，第五列的内容。&lt;/p&gt;&lt;p&gt;可以同时使用多个域分隔符，这时应该把分隔符写成放到方括号中，如$awk  -F&apos;[:\t]&apos; &apos;{print $1,$3}&apos; test，表示以空格、冒号和tab作为分隔符。&lt;/p&gt;&lt;p&gt;输出域的分隔符默认是一个空格，保 存在OFS中。如$ awk -F: &apos;{print $1,$5}&apos; test，$1和$5间的逗号就是OFS的值。&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;div lang=&quot;en&quot; class=&quot;sect1&quot;&gt;&lt;div class=&quot;titlepage&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;h2 style=&quot;clear: both;&quot; class=&quot;title&quot;&gt;7.&amp;nbsp;gawk专用正则表达 式元字符&lt;/h2&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;一般通用的元字符集就不讲了，可参考我的&lt;a href=&quot;http://www.ringkee.com/jims/technic_folder/sed.htm&quot; target=&quot;_blank&quot;&gt;Sed&lt;/a&gt;和&lt;a href=&quot;http://www.ringkee.com/jims/technic_floder/grep.htm&quot; target=&quot;_blank&quot;&gt;Grep&lt;/a&gt;学习笔记。以下几个是gawk专用的，不适合unix版本的awk。&lt;/p&gt;&lt;div class=&quot;variablelist&quot;&gt;&lt;dl&gt;&lt;dt&gt;&lt;span class=&quot;term&quot;&gt;\Y&lt;/span&gt;&lt;/dt&gt;&lt;dd&gt;&lt;p&gt;匹配一 个单词开头或者末尾的空字符串。&lt;/p&gt;&lt;/dd&gt;&lt;dt&gt;&lt;span class=&quot;term&quot;&gt;\B&lt;/span&gt;&lt;/dt&gt;&lt;dd&gt;&lt;p&gt;匹配单词 内的空字符串。&lt;/p&gt;&lt;/dd&gt;&lt;dt&gt;&lt;span class=&quot;term&quot;&gt;\&amp;lt;&lt;/span&gt;&lt;/dt&gt;&lt;dd&gt;&lt;p&gt;匹配一个单词的开头 的空字符串，锚定开始。&lt;/p&gt;&lt;/dd&gt;&lt;dt&gt;&lt;span class=&quot;term&quot;&gt;\&amp;gt;&lt;/span&gt;&lt;/dt&gt;&lt;dd&gt;&lt;p&gt;匹配一个单 词的末尾的空字符串，锚定末尾。&lt;/p&gt;&lt;/dd&gt;&lt;dt&gt;&lt;span class=&quot;term&quot;&gt;\w&lt;/span&gt;&lt;/dt&gt;&lt;dd&gt;&lt;p&gt;匹配一个 字母数字组成的单词。&lt;/p&gt;&lt;/dd&gt;&lt;dt&gt;&lt;span class=&quot;term&quot;&gt;\W&lt;/span&gt;&lt;/dt&gt;&lt;dd&gt;&lt;p&gt;匹配一个非字母数字 组成的单词。&lt;/p&gt;&lt;/dd&gt;&lt;dt&gt;&lt;span class=&quot;term&quot;&gt;\‘&lt;/span&gt;&lt;/dt&gt;&lt;dd&gt;&lt;p&gt;匹配字符串开头的一个空字符 串。&lt;/p&gt;&lt;/dd&gt;&lt;dt&gt;&lt;span class=&quot;term&quot;&gt;\&apos;&lt;/span&gt;&lt;/dt&gt;&lt;dd&gt;&lt;p&gt;匹配字符串末尾的一个空字符串。&lt;/p&gt;&lt;/dd&gt;&lt;/dl&gt;&lt;/div&gt;&lt;/div&gt;&lt;div lang=&quot;en&quot; class=&quot;sect1&quot;&gt;&lt;div class=&quot;titlepage&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;h2 style=&quot;clear: both;&quot; class=&quot;title&quot;&gt;8.&amp;nbsp;POSIX字符集&lt;/h2&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;可 参考我的&lt;a href=&quot;http://www.ringkee.com/jims/technic_folder/grep.htm&quot; target=&quot;_blank&quot;&gt;Grep学习笔记&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;div lang=&quot;en&quot; class=&quot;sect1&quot;&gt;&lt;div class=&quot;titlepage&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;h2 style=&quot;clear: both;&quot; class=&quot;title&quot;&gt;9.&amp;nbsp;匹配操作符(~)&lt;/h2&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;用来在 记录或者域内匹配正则表达式。如$ awk &apos;$1 ~/^root/&apos; test将显示test文件第一列中以root开头的行。&lt;/p&gt;&lt;/div&gt;&lt;div lang=&quot;en&quot; class=&quot;sect1&quot;&gt;&lt;div class=&quot;titlepage&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;h2 style=&quot;clear: both;&quot; class=&quot;title&quot;&gt;10.&amp;nbsp;比较表达式&lt;/h2&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;conditional expression1  ? expression2: expression3，例如：$ awk &apos;{max = {$1 &amp;gt; $3} ? $1: $3: print max}&apos; test。如果第一个域大于第三个域，$1就赋值给max，否则$3就赋值给max。&lt;/p&gt;&lt;p&gt;$ awk  &apos;$1 + $2 &amp;lt; 100&apos; test。如果第一和第二个域相加大于100，则打印这些行。&lt;/p&gt;&lt;p&gt;$ awk &apos;$1 &amp;gt; 5  &amp;amp;&amp;amp; $2 &amp;lt; 10&apos; test,如果第一个域大于5，并且第二个域小于10，则打印这些行。&lt;/p&gt;&lt;/div&gt;&lt;div lang=&quot;en&quot; class=&quot;sect1&quot;&gt;&lt;div class=&quot;titlepage&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;h2 style=&quot;clear: both;&quot; class=&quot;title&quot;&gt;11.&amp;nbsp;范围模板&lt;/h2&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;范 围模板匹配从第一个模板的第一次出现到第二个模板的第一次出现之间所有行。如果有一个模板没出现，则匹配到开头或末尾。如$ awk  &apos;/root/,/mysql/&apos; test将显示root第一次出现到mysql第一次出现之间的所有行。&lt;/p&gt;&lt;/div&gt;&lt;div lang=&quot;en&quot; class=&quot;sect1&quot;&gt;&lt;div class=&quot;titlepage&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;h2 style=&quot;clear: both;&quot; class=&quot;title&quot;&gt;12.&amp;nbsp;一个验证 passwd文件有效性的例子&lt;/h2&gt;&lt;pre&gt;&lt;ol class=&quot;dp-other&quot;&gt;&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span&gt;$&amp;nbsp;cat&amp;nbsp;/etc/passwd&amp;nbsp;|&amp;nbsp;awk&amp;nbsp;-F:&amp;nbsp;&apos;\&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;NF&amp;nbsp;!=&amp;nbsp;7{\&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;printf(&amp;quot;line&amp;nbsp;%d,does&amp;nbsp;not&amp;nbsp;have&amp;nbsp;7&amp;nbsp;fields:%s\n&amp;quot;,NR,$0)}\&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;$1&amp;nbsp;!~&amp;nbsp;/[A-Za-z0-9]/{printf(&amp;quot;line&amp;nbsp;%d,non&amp;nbsp;alpha&amp;nbsp;and&amp;nbsp;numeric&amp;nbsp;user&amp;nbsp;id:%d:&amp;nbsp;%s\n,NR,$0)}\&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;$2&amp;nbsp;==&amp;nbsp;&amp;quot;*&amp;quot;&amp;nbsp;{printf(&amp;quot;line&amp;nbsp;%d,&amp;nbsp;no&amp;nbsp;password:&amp;nbsp;%s\n&amp;quot;,NR,$0)}&apos;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class=&quot;calloutlist&quot;&gt;&lt;table border=&quot;0&quot; summary=&quot;Callout list&quot;&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td width=&quot;5%&quot; valign=&quot;top&quot; align=&quot;left&quot;&gt;&lt;a href=&quot;http://www.linux.gov.cn/shell/awk.htm#co.1&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; alt=&quot;1&quot; src=&quot;http://www.linux.gov.cn/shell/awk_files/1.htm&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;td valign=&quot;top&quot; align=&quot;left&quot;&gt;&lt;p&gt;cat把结果输出给awk，awk把域之间的分隔符设为冒号。&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width=&quot;5%&quot; valign=&quot;top&quot; align=&quot;left&quot;&gt;&lt;a href=&quot;http://www.linux.gov.cn/shell/awk.htm#co.2&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; alt=&quot;2&quot; src=&quot;http://www.linux.gov.cn/shell/awk_files/2.htm&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;td valign=&quot;top&quot; align=&quot;left&quot;&gt;&lt;p&gt;如果域的数量(NF)不等于7，就执行下面的程序。&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width=&quot;5%&quot; valign=&quot;top&quot; align=&quot;left&quot;&gt;&lt;a href=&quot;http://www.linux.gov.cn/shell/awk.htm#co.3&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; alt=&quot;3&quot; src=&quot;http://www.linux.gov.cn/shell/awk_files/3.htm&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;td valign=&quot;top&quot; align=&quot;left&quot;&gt;&lt;p&gt;printf打印字符串&amp;quot;line ?? does not have  7 fields&amp;quot;，并显示该条记录。&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width=&quot;5%&quot; valign=&quot;top&quot; align=&quot;left&quot;&gt;&lt;a href=&quot;http://www.linux.gov.cn/shell/awk.htm#co.4&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; alt=&quot;4&quot; src=&quot;http://www.linux.gov.cn/shell/awk_files/4.htm&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;td valign=&quot;top&quot; align=&quot;left&quot;&gt;&lt;p&gt;如果第一个域没有包含任何字母和数字，printf打印“no  alpha and numeric user id&amp;quot; ，并显示记录数和记录。&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td width=&quot;5%&quot; valign=&quot;top&quot; align=&quot;left&quot;&gt;&lt;a href=&quot;http://www.linux.gov.cn/shell/awk.htm#co.5&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; alt=&quot;5&quot; src=&quot;http://www.linux.gov.cn/shell/awk_files/5.htm&quot; /&gt;&lt;/a&gt;&lt;/td&gt;&lt;td valign=&quot;top&quot; align=&quot;left&quot;&gt;&lt;p&gt;如果第二个域是一个星号，就打印字符串“no  passwd”，紧跟着显示记录数和记录本身。&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;&lt;div lang=&quot;en&quot; class=&quot;sect1&quot;&gt;&lt;div class=&quot;titlepage&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;h2 style=&quot;clear: both;&quot; class=&quot;title&quot;&gt;13.&amp;nbsp;几个实例&lt;/h2&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;itemizedlist&quot;&gt;&lt;ul type=&quot;disc&quot;&gt;&lt;li&gt;&lt;p&gt;$ awk &apos;/^(no|so)/&apos;  test-----打印所有以模式no或so开头的行。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;$ awk &apos;/^[ns]/{print $1}&apos;  test-----如果记录以n或s开头，就打印这个记录。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;$ awk &apos;$1  ~/[0-9][0-9]$/(print $1}&apos; test-----如果第一个域以两个数字结束就打印这个记录。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;$  awk &apos;$1 == 100 || $2 &amp;lt; 50&apos; test-----如果第一个或等于100或者第二个域小于50，则打印该行。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;$  awk &apos;$1 != 10&apos; test-----如果第一个域不等于10就打印该行。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;$ awk  &apos;/test/{print $1 + 10}&apos; test-----如果记录包含正则表达式test，则第一个域加10并打印出来。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;$  awk &apos;{print ($1 &amp;gt; 5 ? &amp;quot;ok &amp;quot;$1: &amp;quot;error&amp;quot;$1)}&apos;  test-----如果第一个域大于5则打印问号后面的表达式值，否则打印冒号后面的表达式值。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;$ awk &apos;/^root/,/^mysql/&apos; test----打印以正则表达式root开头的记录到以正则表达式mysql开头的记录范围内的所有记录。如果找到一个新的正则表达式root开头的记 录，则继续打印直到下一个以正则表达式mysql开头的记录为止，或到文件末尾。&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;div lang=&quot;en&quot; class=&quot;sect1&quot;&gt;&lt;div class=&quot;titlepage&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;h2 style=&quot;clear: both;&quot; class=&quot;title&quot;&gt;14.&amp;nbsp;awk编程&lt;/h2&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div lang=&quot;en&quot; class=&quot;sect2&quot;&gt;&lt;div class=&quot;titlepage&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;h3 class=&quot;title&quot;&gt;14.1.&amp;nbsp;变量&lt;/h3&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;itemizedlist&quot;&gt;&lt;ul type=&quot;disc&quot;&gt;&lt;li&gt;&lt;p&gt;在awk中，变量不需要定义就可以直接使用，变量类型可以 是数字或字符串。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;赋 值格式：Variable = expression，如$ awk &apos;$1 ~/test/{count = $2 + $3; print count}&apos; test,上式的作用是,awk先扫描第一个域，一旦test匹配，就把第二个域的值加上第三个域的值，并把结果赋值给变量count，最后打印出来。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;awk  可以在命令行中给变量赋值，然后将这个变量传输给awk脚本。如$ awk -F: -f awkscript month=4 year=2004 test，上式的month和year都是自定义变量，分别被赋值为4和2004。在awk脚本中，这些变量使用起来就象是在脚本中建立的一样。注意，如 果参数前面出现test，那么在BEGIN语句中的变量就不能被使用。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;域变量也可被赋值和修改，如$ awk &apos;{$2 = 100 + $1; print }&apos; test,上式表示，如果第二个域不存在，awk将计算表达式100加$1的值，并将其赋值给$2，如果第二个域存在，则用表达式的值覆盖$2原来的值。 再例如：$ awk &apos;$1 == &amp;quot;root&amp;quot;{$1 =&amp;quot;test&amp;quot;;print}&apos; test，如果第一个域的值是“root”，则把它赋值为“test”，注意，字符串一定要用双引号。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;内建变量的使用。 变量列表在前面已列出，现在举个例子说明一下。$ awk -F: &apos;{IGNORECASE=1; $1 == &amp;quot;MARY&amp;quot;{print NR,$1,$2,$NF}&apos;test，把IGNORECASE设为1代表忽略大小写，打印第一个域是mary的记录数、第一个域、第二个域和最后一个 域。&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;div lang=&quot;en&quot; class=&quot;sect2&quot;&gt;&lt;div class=&quot;titlepage&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;h3 class=&quot;title&quot;&gt;14.2.&amp;nbsp;BEGIN 模块&lt;/h3&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;BEGIN 模块后紧跟着动作块，这个动作块在awk处理任何输入文件之前执行。所以它可以在没有任何输入的情况下进行测试。它通常用来改变内建变量的值，如OFS, RS和FS等，以及打印标题。如：$ awk &apos;BEGIN{FS=&amp;quot;:&amp;quot;; OFS=&amp;quot;\t&amp;quot;; ORS=&amp;quot;\n\n&amp;quot;}{print $1,$2,$3} test。上式表示，在处理输入文件以前，域分隔符(FS)被设为冒号，输出文件分隔符(OFS)被设置为制表符，输出记录分隔符(ORS)被设置为两个 换行符。$ awk &apos;BEGIN{print &amp;quot;TITLE TEST&amp;quot;}只打印标题。&lt;/p&gt;&lt;/div&gt;&lt;div lang=&quot;en&quot; class=&quot;sect2&quot;&gt;&lt;div class=&quot;titlepage&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;h3 class=&quot;title&quot;&gt;14.3.&amp;nbsp;END模块&lt;/h3&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;END 不匹配任何的输入文件，但是执行动作块中的所有动作，它在整个输入文件处理完成后被执行。如$ awk &apos;END{print &amp;quot;The number  of records is&amp;quot; NR}&apos; test，上式将打印所有被处理的记录数。&lt;/p&gt;&lt;/div&gt;&lt;div lang=&quot;en&quot; class=&quot;sect2&quot;&gt;&lt;div class=&quot;titlepage&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;h3 class=&quot;title&quot;&gt;14.4.&amp;nbsp;重定向和管道&lt;/h3&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;itemizedlist&quot;&gt;&lt;ul type=&quot;disc&quot;&gt;&lt;li&gt;&lt;p&gt;awk 可使用shell的重定向符进行重定向输出，如：$ awk &apos;$1 = 100 {print $1 &amp;gt; &amp;quot;output_file&amp;quot; }&apos; test。上式表示如果第一个域的值等于100，则把它输出到output_file中。也可以用&amp;gt;&amp;gt;来重定向输出，但不清空文件，只做追加 操作。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;输出重定向需用到getline函数。getline从标准输入、管道或者当前正在处理的文件之外的其他输入文件 获得输入。它负责从输入获得下一行的内容，并给NF,NR和FNR等内建变量赋值。如果得到一条记录，getline函数返回1，如果到达文件的末尾就返 回0，如果出现错误，例如打开文件失败，就返回-1。如：&lt;/p&gt;&lt;p&gt;$ awk &apos;BEGIN{ &amp;quot;date&amp;quot; | getline d;  print d}&apos; test。执行linux的date命令，并通过管道输出给getline，然后再把输出赋值给自定义变量d，并打印它。&lt;/p&gt;&lt;p&gt;$ awk &apos;BEGIN{&amp;quot;date&amp;quot; | getline d; split(d,mon); print mon[2]}&apos; test。执行shell的date命令，并通过管道输出给getline，然后getline从管道中读取并将输入赋值给d，split函数把变量d转 化成数组mon，然后打印数组mon的第二个元素。&lt;/p&gt;&lt;p&gt;$ awk &apos;BEGIN{while( &amp;quot;ls&amp;quot; | getline) print}&apos;，命令ls的输出传递给geline作为输入，循环使getline从ls的输出中读取一行，并把它打印到屏幕。这里没有输入文件，因为 BEGIN块在打开输入文件前执行，所以可以忽略输入文件。&lt;/p&gt;&lt;p&gt;$ awk &apos;BEGIN{printf &amp;quot;What is your name?&amp;quot;; getline name &amp;lt; &amp;quot;/dev/tty&amp;quot; } $1 ~name {print &amp;quot;Found&amp;quot; name on line &amp;quot;, NR &amp;quot;.&amp;quot;} END{print &amp;quot;See you,&amp;quot; name &amp;quot;.&amp;quot;} test。在屏幕上打印”What is your name?&amp;quot;,并等待用户应答。当一行输入完毕后，getline函数从终端接收该行输入，并把它储存在自定义变量name中。如果第一个域匹配变量 name的值，print函数就被执行，END块打印See you和name的值。&lt;/p&gt;&lt;p&gt;$ awk &apos;BEGIN{while (getline &amp;lt; &amp;quot;/etc/passwd&amp;quot; &amp;gt; 0) lc++; print lc}&apos;。awk将逐行读取文件/etc/passwd的内容，在到达文件末尾前，计数器lc一直增加，当到末尾时，打印lc的值。注意，如果文件不存 在，getline返回-1，如果到达文件的末尾就返回0，如果读到一行，就返回1，所以命令 while (getline &amp;lt; &amp;quot;/etc/passwd&amp;quot;)在文件不存在的情况下将陷入无限循环，因为返回-1表示逻辑真。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;可以在awk中打开一个管 道，且同一时刻只能有一个管道存在。通过close()可关闭管道。如：$ awk &apos;{print $1, $2 | &amp;quot;sort&amp;quot; }&apos; test END {close(&amp;quot;sort&amp;quot;)}。awd把print语句的输出通过管道作为linux命令sort的输入,END块执行关闭管道操作。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;system 函数可以在awk中执行linux的命令。如：$ awk &apos;BEGIN{system(&amp;quot;clear&amp;quot;)&apos;。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;fflush 函数用以刷新输出缓冲区，如果没有参数，就刷新标准输出的缓冲区，如果以空字符串为参数，如fflush(&amp;quot;&amp;quot;),则刷新所有文件和管道的输出缓冲区。&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;div lang=&quot;en&quot; class=&quot;sect2&quot;&gt;&lt;div class=&quot;titlepage&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;h3 class=&quot;title&quot;&gt;14.5.&amp;nbsp;条件语句&lt;/h3&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;awk 中的条件语句是从C语言中借鉴过来的，可控制程序的流程。&lt;/p&gt;&lt;div lang=&quot;en&quot; class=&quot;sect3&quot;&gt;&lt;div class=&quot;titlepage&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;h4 class=&quot;title&quot;&gt;14.5.1.&amp;nbsp;if 语句&lt;/h4&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;pre class=&quot;screen&quot;&gt;
格式：
        {if (expression){
                   statement; statement; ...
                     }
        }&lt;/pre&gt;&lt;p&gt;$ awk &apos;{if ($1 &amp;lt;$2) print $2 &amp;quot;too high&amp;quot;}&apos;  test。如果第一个域小于第二个域则打印。&lt;/p&gt;&lt;p&gt;$ awk &apos;{if ($1 &amp;lt; $2) {count++; print  &amp;quot;ok&amp;quot;}}&apos; test.如果第一个域小于第二个域，则count加一，并打印ok。&lt;/p&gt;&lt;/div&gt;&lt;div lang=&quot;en&quot; class=&quot;sect3&quot;&gt;&lt;div class=&quot;titlepage&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;h4 class=&quot;title&quot;&gt;14.5.2.&amp;nbsp;if/else语句，用于双重判断。&lt;/h4&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;pre class=&quot;screen&quot;&gt;
格式：
        {if (expression){
                   statement; statement; ...
                       }
        else{
                   statement; statement; ...
                       }
        }&lt;/pre&gt;&lt;p&gt;$ awk &apos;{if ($1 &amp;gt; 100) print $1 &amp;quot;bad&amp;quot; ; else print  &amp;quot;ok&amp;quot;}&apos; test。如果$1大于100则打印$1 bad,否则打印ok。&lt;/p&gt;&lt;p&gt;$ awk &apos;{if ($1 &amp;gt; 100){  count++; print $1} else {count--; print $2}&apos;  test。如果$1大于100，则count加一，并打印$1，否则count减一，并打印$1。&lt;/p&gt;&lt;/div&gt;&lt;div lang=&quot;en&quot; class=&quot;sect3&quot;&gt;&lt;div class=&quot;titlepage&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;h4 class=&quot;title&quot;&gt;14.5.3.&amp;nbsp;if/else else if语句，用于多重判断。&lt;/h4&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;pre class=&quot;screen&quot;&gt;
格式：
        {if (expression){
                    statement; statement; ...
                   }
        else if (expression){
                    statement; statement; ...
                   }
        else if (expression){
                    statement; statement; ...
                   }
        else {
                   statement; statement; ...
             }
        }&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;div lang=&quot;en&quot; class=&quot;sect2&quot;&gt;&lt;div class=&quot;titlepage&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;h3 class=&quot;title&quot;&gt;14.6.&amp;nbsp;循 环&lt;/h3&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;itemizedlist&quot;&gt;&lt;ul type=&quot;disc&quot;&gt;&lt;li&gt;&lt;p&gt;awk有三种循环:while循环；for循环；special for循环。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;$  awk &apos;{ i = 1; while ( i &amp;lt;= NF ) { print NF,$i; i++}}&apos;  test。变量的初始值为1，若i小于可等于NF(记录中域的个数),则执行打印语句，且i增加1。直到i的值大于NF.&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;$  awk &apos;{for (i = 1; i&amp;lt;NF; i++) print NF,$i}&apos; test。作用同上。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;breadkcontinue 语句。break用于在满足条件的情况下跳出循环；continue用于在满足条件的情况下忽略后面的语句，直接返回循环的顶端。如：&lt;/p&gt;&lt;pre class=&quot;screen&quot;&gt;
{for ( x=3; x&amp;lt;=NF; x++) 
            if ($x&amp;lt;0){print &amp;quot;Bottomed out!&amp;quot;; break}}
{for ( x=3; x&amp;lt;=NF; x++)
            if ($x==0){print &amp;quot;Get next item&amp;quot;; continue}}
      &lt;/pre&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;next语句从输入文件中读取一行，然后从头开始执行awk脚本。如：&lt;/p&gt;&lt;pre class=&quot;screen&quot;&gt;
{if ($1 ~/test/){next}
    else {print}
}
     &lt;/pre&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;exit语句用于结束awk程序，但不会略过END块。退出状态为0代表成功，非零值表示出错。&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;div lang=&quot;en&quot; class=&quot;sect2&quot;&gt;&lt;div class=&quot;titlepage&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;h3 class=&quot;title&quot;&gt;14.7.&amp;nbsp;数组&lt;/h3&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;awk 中的数组的下标可以是数字和字母，称为关联数组。&lt;/p&gt;&lt;div lang=&quot;en&quot; class=&quot;sect3&quot;&gt;&lt;div class=&quot;titlepage&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;h4 class=&quot;title&quot;&gt;14.7.1.&amp;nbsp;下 标与关联数组&lt;/h4&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;itemizedlist&quot;&gt;&lt;ul type=&quot;disc&quot;&gt;&lt;li&gt;&lt;p&gt;用 变量作为数组下标。如：$ awk {name[x++]=$2};END{for(i=0;i&amp;lt;NR;i++) print i,name[i]}&apos; test。数组name中的下标是一个自定义变量x，awk初始化x的值为0，在每次使用后增加1。第二个域的值被赋给name数组的各个元素。在END 模块中，for循环被用于循环整个数组，从下标为0的元素开始，打印那些存储在数组中的值。因为下标是关健字，所以它不一定从0开始，可以从任何值开始。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;special  for循环用于读取关联数组中的元素。格式如下：&lt;/p&gt;&lt;pre class=&quot;screen&quot;&gt;
{for (item in arrayname){
         print arrayname[item]
         }
}
&lt;/pre&gt; $ awk &apos;/^tom/{name[NR]=$1}; END{for(i in name){print name[i]}}&apos;  test。打印有值的数组元素。打印的顺序是随机的。&lt;/li&gt;&lt;li&gt;&lt;p&gt;用字符串作为下标。如：count[&amp;quot;test&amp;quot;]&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;用 域值作为数组的下标。一种新的for循环方式，for (index_value in array) statement。如:$ awk &apos;{count[$1]++} END{for(name in count) print name,count[name]}&apos; test。该语句将打印$1中字符串出现的次数。它首先以第一个域作数组count的下标，第一个域变化，索引就变化。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;delete  函数用于删除数组元素。如：$ awk &apos;{line[x++]=$1} END{for(x in line) delete(line[x])}&apos; test。分配给数组line的是第一个域的值，所有记录处理完成后，special for循环将删除每一个元素。&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div lang=&quot;en&quot; class=&quot;sect2&quot;&gt;&lt;div class=&quot;titlepage&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;h3 class=&quot;title&quot;&gt;14.8.&amp;nbsp;awk的内建函数&lt;/h3&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div lang=&quot;en&quot; class=&quot;sect3&quot;&gt;&lt;div class=&quot;titlepage&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;h4 class=&quot;title&quot;&gt;14.8.1.&amp;nbsp;字符串函数&lt;/h4&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;itemizedlist&quot;&gt;&lt;ul type=&quot;disc&quot;&gt;&lt;li&gt;&lt;p&gt;sub函数匹配记录中最大、最靠左边的子字符串的正则表达 式，并用替换字符串替换这些字符串。如果没有指定目标字符串就默认使用整个记录。替换只发生在第一次匹配的时候。格式如下：&lt;/p&gt;&lt;pre class=&quot;screen&quot;&gt;
            sub (regular expression, substitution string):
            sub (regular expression, substitution string, target string)
&lt;/pre&gt;&lt;p&gt;实例：&lt;/p&gt;&lt;pre class=&quot;screen&quot;&gt;
            $ awk &apos;{ sub(/test/, &amp;quot;mytest&amp;quot;); print }&apos; testfile
            $ awk &apos;{ sub(/test/, &amp;quot;mytest&amp;quot;); $1}; print }&apos; testfile
&lt;/pre&gt;&lt;p&gt;第一个例子在整个记录中匹配，替换只发生在第一次匹配发生的时候。如要在整个文件中进行匹配需要用到gsub&lt;/p&gt;&lt;p&gt;第二个例子 在整个记录的第一个域中进行匹配，替换只发生在第一次匹配发生的时候。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;gsub函数作用如sub，但它在整个文档中进行 匹配。格式如下：&lt;/p&gt;&lt;pre class=&quot;screen&quot;&gt;
            gsub (regular expression, substitution string)
            gsub (regular expression, substitution string, target string)
&lt;/pre&gt;&lt;p&gt;实例：&lt;/p&gt;&lt;pre class=&quot;screen&quot;&gt;
            $ awk &apos;{ gsub(/test/, &amp;quot;mytest&amp;quot;); print }&apos; testfile
            $ awk &apos;{ gsub(/test/, &amp;quot;mytest&amp;quot;), $1 }; print }&apos; testfile
&lt;/pre&gt;&lt;p&gt;第一个例子在整个文档中匹配test，匹配的都被替换成mytest。&lt;/p&gt;&lt;p&gt;第二个例子在整个文档的第一个域中匹配，所有匹配 的都被替换成mytest。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;index函数返回子字符串第一次被匹配的位置，偏移量从位置1开始。格式如下：&lt;/p&gt;&lt;pre class=&quot;screen&quot;&gt;
          index(string, substring)
&lt;/pre&gt;&lt;p&gt;实例：&lt;/p&gt;&lt;pre class=&quot;screen&quot;&gt;
            $ awk &apos;{ print index(&amp;quot;test&amp;quot;, &amp;quot;mytest&amp;quot;) }&apos; testfile
&lt;/pre&gt;&lt;p&gt;实例返回test在mytest的位置，结果应该是3。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;length函数返回记录的字符数。格式如 下：&lt;/p&gt;&lt;pre class=&quot;screen&quot;&gt;
            length( string )
            length
&lt;/pre&gt;&lt;p&gt;实例：&lt;/p&gt;&lt;pre class=&quot;screen&quot;&gt;
            $ awk &apos;{ print length( &amp;quot;test&amp;quot; ) }&apos; 
            $ awk &apos;{ print length }&apos; testfile
&lt;/pre&gt;&lt;p&gt;第一个实例返回test字符串的长度。&lt;/p&gt;&lt;p&gt;第二个实例返回testfile文件中第条记录的字符数。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;substr 函数返回从位置1开始的子字符串，如果指定长度超过实际长度，就返回整个字符串。格式如下：&lt;/p&gt;&lt;pre class=&quot;screen&quot;&gt;
            substr( string, starting position )
            substr( string, starting position, length of string )
&lt;/pre&gt;&lt;p&gt;实例：&lt;/p&gt;&lt;pre class=&quot;screen&quot;&gt;
            $ awk &apos;{ print substr( &amp;quot;hello world&amp;quot;, 7,11 ) }&apos; 
&lt;/pre&gt;&lt;p&gt;上例截取了world子字符串。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;match函数返回在字符串中正则表达式位置的索引，如果找不到指定 的正则表达式则返回0。match函数会设置内建变量RSTART为字符串中子字符串的开始位置，RLENGTH为到子字符串末尾的字符个数。 substr可利于这些变量来截取字符串。函数格式如下：&lt;/p&gt;&lt;pre class=&quot;screen&quot;&gt;
            match( string, regular expression )
&lt;/pre&gt;&lt;p&gt;实例：&lt;/p&gt;&lt;pre class=&quot;screen&quot;&gt;
            $ awk &apos;{start=match(&amp;quot;this is a test&amp;quot;,/[a-z]+$/); print start}&apos;
            $ awk &apos;{start=match(&amp;quot;this is a test&amp;quot;,/[a-z]+$/); print start, RSTART, RLENGTH }&apos;
&lt;/pre&gt;&lt;p&gt;第一个实例打印以连续小写字符结尾的开始位置，这里是11。&lt;/p&gt;&lt;p&gt;第二个实例还打印RSTART和RLENGTH变量，这里是 11(start)，11(RSTART)，4(RLENGTH)。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;toupper和tolower函数可用于字符串大 小间的转换，该功能只在gawk中有效。格式如下：&lt;/p&gt;&lt;pre class=&quot;screen&quot;&gt;
            toupper( string )
            tolower( string )
&lt;/pre&gt;&lt;p&gt;实例：&lt;/p&gt;&lt;pre class=&quot;screen&quot;&gt;
            $ awk &apos;{ print toupper(&amp;quot;test&amp;quot;), tolower(&amp;quot;TEST&amp;quot;) }&apos;
&lt;/pre&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;split函数可按给定的分隔符把字符串分割为一个数组。如果分隔符没提供，则按当前FS值进行分割。格式如下：&lt;/p&gt;&lt;pre class=&quot;screen&quot;&gt;
            split( string, array, field separator )
            split( string, array )
&lt;/pre&gt;&lt;p&gt;实例：&lt;/p&gt;&lt;pre class=&quot;screen&quot;&gt;
            $ awk &apos;{ split( &amp;quot;20:18:00&amp;quot;, time, &amp;quot;:&amp;quot; ); print time[2] }&apos;
&lt;/pre&gt;&lt;p&gt;上例把时间按冒号分割到time数组内，并显示第二个数组元素18。&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;div lang=&quot;en&quot; class=&quot;sect3&quot;&gt;&lt;div class=&quot;titlepage&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;h4 class=&quot;title&quot;&gt;14.8.2.&amp;nbsp;时间函数&lt;/h4&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;itemizedlist&quot;&gt;&lt;ul type=&quot;disc&quot;&gt;&lt;li&gt;&lt;p&gt;systime函数返回从1970年1月1日开始到当前时 间(不计闰年)的整秒数。格式如下：&lt;/p&gt;&lt;pre class=&quot;screen&quot;&gt;
            systime()
&lt;/pre&gt;&lt;p&gt;实例：&lt;/p&gt;&lt;pre class=&quot;screen&quot;&gt;
            $ awk &apos;{ now = systime(); print now }&apos;
&lt;/pre&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;strftime函数使用C库中的strftime函数格式化时间。格式如下：&lt;/p&gt;&lt;pre class=&quot;screen&quot;&gt;
            systime( [format specification][,timestamp] )
&lt;/pre&gt;&lt;div class=&quot;table&quot;&gt;&lt;p class=&quot;title&quot;&gt;&lt;b&gt;Table&amp;nbsp;3.&amp;nbsp;日 期和时间格式说明符&lt;/b&gt;&lt;/p&gt;&lt;table border=&quot;1&quot; summary=&quot;日期和时间格式说明符&quot;&gt;&lt;colgroup&gt;&lt;col /&gt;&lt;col /&gt;&lt;/colgroup&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;格 式&lt;/th&gt;&lt;th&gt;描述&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;%a&lt;/td&gt;&lt;td&gt;星期几的缩写(Sun)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;%A&lt;/td&gt;&lt;td&gt;星 期几的完整写法(Sunday)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;%b&lt;/td&gt;&lt;td&gt;月名的缩写(Oct)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;%B&lt;/td&gt;&lt;td&gt;月 名的完整写法(October)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;%c&lt;/td&gt;&lt;td&gt;本地日期和时间&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;%d&lt;/td&gt;&lt;td&gt;十 进制日期&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;%D&lt;/td&gt;&lt;td&gt;日期 08/20/99&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;%e&lt;/td&gt;&lt;td&gt;日 期，如果只有一位会补上一个空格&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;%H&lt;/td&gt;&lt;td&gt;用十进制表示24小时格式的小时&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;%I&lt;/td&gt;&lt;td&gt;用 十进制表示12小时格式的小时&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;%j&lt;/td&gt;&lt;td&gt;从1月1日起一年中的第几天&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;%m&lt;/td&gt;&lt;td&gt;十 进制表示的月份&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;%M&lt;/td&gt;&lt;td&gt;十进制表示的分钟&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;%p&lt;/td&gt;&lt;td&gt;12 小时表示法(AM/PM)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;%S&lt;/td&gt;&lt;td&gt;十进制表示的秒&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;%U&lt;/td&gt;&lt;td&gt;十 进制表示的一年中的第几个星期(星期天作为一个星期的开始)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;%w&lt;/td&gt;&lt;td&gt;十进制表示的星期几(星期天是 0)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;%W&lt;/td&gt;&lt;td&gt;十进制表示的一年中的第几个星期(星期一作为一个星期的开始)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;%x&lt;/td&gt;&lt;td&gt;重 新设置本地日期(08/20/99)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;%X&lt;/td&gt;&lt;td&gt;重新设置本地时间(12：00：00)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;%y&lt;/td&gt;&lt;td&gt;两 位数字表示的年(99)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;%Y&lt;/td&gt;&lt;td&gt;当前月份&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;%Z&lt;/td&gt;&lt;td&gt;时 区(PDT)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;%%&lt;/td&gt;&lt;td&gt;百分号(%)&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;p&gt;实 例：&lt;/p&gt;&lt;pre class=&quot;screen&quot;&gt;
            $ awk &apos;{ now=strftime( &amp;quot;%D&amp;quot;, systime() ); print now }&apos;
            $ awk &apos;{ now=strftime(&amp;quot;%m/%d/%y&amp;quot;); print now }&apos;
&lt;/pre&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;div lang=&quot;en&quot; class=&quot;sect3&quot;&gt;&lt;div class=&quot;titlepage&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;h4 class=&quot;title&quot;&gt;14.8.3.&amp;nbsp;内 建数学函数&lt;/h4&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;table&quot;&gt;&lt;p class=&quot;title&quot;&gt;&lt;b&gt;Table&amp;nbsp;4.&amp;nbsp;&lt;/b&gt;&lt;/p&gt;&lt;table border=&quot;1&quot; summary=&quot;&quot;&gt;&lt;colgroup&gt;&lt;col /&gt;&lt;col /&gt;&lt;/colgroup&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;函数名称&lt;/th&gt;&lt;th&gt;返 回值&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;atan2(x,y)&lt;/td&gt;&lt;td&gt;y,x范围内的余切&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;cos(x)&lt;/td&gt;&lt;td&gt;余 弦函数&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;exp(x)&lt;/td&gt;&lt;td&gt;求幂&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;int(x)&lt;/td&gt;&lt;td&gt;取 整&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;log(x)&lt;/td&gt;&lt;td&gt;自然对数&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;rand()&lt;/td&gt;&lt;td&gt;随 机数&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;sin(x)&lt;/td&gt;&lt;td&gt;正弦&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;sqrt(x)&lt;/td&gt;&lt;td&gt;平 方根&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;srand(x)&lt;/td&gt;&lt;td&gt;x是rand()函数的种子&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;int(x)&lt;/td&gt;&lt;td&gt;取 整，过程没有舍入&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;rand()&lt;/td&gt;&lt;td&gt;产生一个大于等于0而小于1的随机数&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;/div&gt;&lt;div lang=&quot;en&quot; class=&quot;sect3&quot;&gt;&lt;div class=&quot;titlepage&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;h4 class=&quot;title&quot;&gt;14.8.4.&amp;nbsp;自定义函数&lt;/h4&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;在 awk中还可自定义函数，格式如下：&lt;/p&gt;&lt;pre class=&quot;screen&quot;&gt;
        function name ( parameter, parameter, parameter, ... ) {
                        statements
                        return expression                  # the return statement and expression are optional
        }
&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div lang=&quot;en&quot; class=&quot;sect1&quot;&gt;&lt;div class=&quot;titlepage&quot;&gt;&lt;div&gt;&lt;div&gt;&lt;h2 style=&quot;clear: both;&quot; class=&quot;title&quot;&gt;15.&amp;nbsp;How-to&lt;/h2&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class=&quot;itemizedlist&quot;&gt;&lt;ul type=&quot;disc&quot;&gt;&lt;li&gt;&lt;p&gt;如何把一行竖排的数据转换成横排？&lt;/p&gt;&lt;p&gt;awk  &apos;{printf(&amp;quot;%s,&amp;quot;,$1)}&apos; filename&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;script language=&quot;javascript&quot;&gt;postamble();&lt;/script&gt;</description>
		<guid>http://www.517sou.net/Article/406.aspx</guid>
		<trackback:ping>http://www.517sou.net/Article/406/Trackback.ashx</trackback:ping>
		<comments>http://www.517sou.net/Article/406.aspx#CommentPostAnchor</comments>
		<wfw:commentRss>http://www.517sou.net/Article/406/Feeds.ashx</wfw:commentRss>
	</item>
	<item>
		<link>http://www.517sou.net/Article/405.aspx</link>
		<title>统计文件中字符出现次数</title>
		<author>shanyiwan@live.com(flyinweb)</author>
		<category>技术文摘</category>
		<pubDate>Wed, 27 Jan 2010 06:20:16 GMT</pubDate>
		<description>&lt;p&gt;统计文件中字符出现次数假设文件(test.txt)内容如下：&lt;br /&gt;1&lt;br /&gt;1&lt;br /&gt;2&lt;br /&gt;2&lt;br /&gt;3&lt;br /&gt;3&lt;br /&gt;4&lt;br /&gt;要求结果显示：&lt;br /&gt;2 1&lt;br /&gt;2  2&lt;br /&gt;2 3&lt;br /&gt;1 4&lt;br /&gt;说明：第一列为字符串出现的频率，第二列为字符串内容，&lt;/p&gt;&lt;div&gt;&lt;b&gt;方法一:&lt;/b&gt;&lt;/div&gt;&lt;pre&gt;&lt;ol class=&quot;dp-other&quot;&gt;&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span&gt;uniq&amp;nbsp;-c&amp;nbsp;test.txt&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/pre&gt;&lt;div&gt;效果：&lt;/div&gt;&lt;div&gt;2 1&lt;br /&gt;2 2&lt;br /&gt;2 3&lt;br /&gt;1 4&lt;/div&gt;&lt;div&gt;&lt;b&gt;注意&lt;/b&gt;，如果上述文件中，字符串没有sort的，则可以先sort&lt;/div&gt;&lt;pre&gt;&lt;ol class=&quot;dp-other&quot;&gt;&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span&gt;sort&amp;nbsp;test.txt&amp;nbsp;|&amp;nbsp;uniq&amp;nbsp;-c&amp;nbsp;|&amp;nbsp;sort&amp;nbsp;-nr&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/pre&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;b&gt;方法二:&lt;/b&gt;&lt;/div&gt;&lt;pre&gt;&lt;ol class=&quot;dp-other&quot;&gt;&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span&gt;awk&amp;nbsp;&apos;{p[$1]&amp;nbsp;+=&amp;nbsp;1}END{for(a&amp;nbsp;in&amp;nbsp;p)&amp;nbsp;print&amp;nbsp;p[a],&amp;quot;\t&amp;quot;,a}&apos;&amp;nbsp;file&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/pre&gt;&lt;div&gt;效果：&lt;/div&gt;&lt;p&gt;2 1&lt;br /&gt;2 2&lt;br /&gt;2 3&lt;br /&gt;1 4&lt;/p&gt;&lt;p&gt;按出现次数大小排序&lt;/p&gt;&lt;pre&gt;&lt;ol class=&quot;dp-other&quot;&gt;&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span&gt;awk&amp;nbsp;&apos;{p[$1]&amp;nbsp;+=&amp;nbsp;1}END{for(a&amp;nbsp;in&amp;nbsp;p)&amp;nbsp;print&amp;nbsp;p[a],&amp;quot;\t&amp;quot;,a}&apos;&amp;nbsp;test.txt|sort&amp;nbsp;-nr&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/pre&gt;</description>
		<guid>http://www.517sou.net/Article/405.aspx</guid>
		<trackback:ping>http://www.517sou.net/Article/405/Trackback.ashx</trackback:ping>
		<comments>http://www.517sou.net/Article/405.aspx#CommentPostAnchor</comments>
		<wfw:commentRss>http://www.517sou.net/Article/405/Feeds.ashx</wfw:commentRss>
	</item>
	<item>
		<link>http://www.517sou.net/Article/404.aspx</link>
		<title>Informix主要系统表的结构及相关字段的含义</title>
		<author>shanyiwan@live.com(flyinweb)</author>
		<category>数据库技术</category>
		<pubDate>Tue, 26 Jan 2010 02:11:02 GMT</pubDate>
		<description>&lt;p&gt;内容提要:&lt;br /&gt;介绍Informix系统表的结构及相关字段的含义&lt;/p&gt;&lt;p&gt;&lt;b&gt;说明:&lt;br /&gt;一、实例信息&lt;/b&gt;&lt;br /&gt;*sysconfig ————&amp;gt;; onconfig文件&lt;br /&gt;*sysprofile ————&amp;gt;; 服务器统计信息&lt;br /&gt;*syslog ————&amp;gt;; 逻辑日志&lt;br /&gt;*sysvpprof ————&amp;gt;; 虚拟处理器&lt;br /&gt;create table &amp;quot;sysmaster&amp;quot;.sysconfig {服务器配置参数}&lt;br /&gt;( &lt;br /&gt;cf_id integer, {唯一数字标志符 }&lt;br /&gt;cf_name char(18) , {onconfig参数名 }&lt;br /&gt;cf_flags integer, {标志，0=在视图中 }&lt;br /&gt;cf_original char(256), {启动时在onconfig中的值 }&lt;br /&gt;cf_effective char(256), {实际使用的值 }&lt;br /&gt;cf_default char(256) {onconfig文件中不指定时默认使用的值 } &lt;br /&gt;);&lt;br /&gt;grant select on sysconfig to public;&lt;/p&gt;&lt;p&gt;create table &amp;quot;sysmaster&amp;quot;.sysprofile {服务器概貌信息}&lt;br /&gt;( &lt;br /&gt;name char(13), {概貌元素名 }&lt;br /&gt;value integer {当前值 }&lt;br /&gt;);&lt;br /&gt;grant select on sysprofile to public;&lt;/p&gt;&lt;p&gt;create table &amp;quot;sysmaster&amp;quot;.syslogs {逻辑日志信息}&lt;br /&gt;( &lt;br /&gt;number smallint, {日志文件号 }&lt;br /&gt;uniqid integer, {日志文件唯一ID }&lt;br /&gt;size integer, {日志文件页 } &lt;br /&gt;used integer, {日志文件使用的页 } &lt;br /&gt;is_used integer, {1为已用，0为未用 }&lt;br /&gt;is_current integer, {1为当前 }&lt;br /&gt;is_backed_up integer, {1为备份 }&lt;br /&gt;is_new integer, {1为新 }&lt;br /&gt;is_archived integer, {1为存档 }&lt;br /&gt;is_temp integer, {1为临时 }&lt;br /&gt;flags smallint {日志文件标志 }&lt;br /&gt;);&lt;br /&gt;grant select on syslogs to public;&lt;/p&gt;&lt;p&gt;create table &amp;quot;sysmaster&amp;quot;.sysvpprof {虚处理器信息与统计}&lt;br /&gt;( &lt;br /&gt;vpid integer, {虚拟处理器 }&lt;br /&gt;class char(50),{虚拟处理器类名(cpu, adm, lio, pio等)}&lt;br /&gt;usercpu float, {用户时间unix秒数 }&lt;br /&gt;syscpu float {系统时间unix秒数 }&lt;br /&gt;);&lt;br /&gt;grant select on sysvpprof to public;&lt;/p&gt;&lt;p&gt;&lt;b&gt;二、dbspace与块信息&lt;/b&gt;&lt;br /&gt;*sysdbspaces ————&amp;gt;; dbspace&lt;br /&gt;*syschunks ————&amp;gt;; 块&lt;br /&gt;*syschkio ————&amp;gt;; 块I/O&lt;br /&gt;*syschfree ————&amp;gt;; 块自由空间 注：syschfree是个不支持的表&lt;/p&gt;&lt;p&gt;create table &amp;quot;sysmaster&amp;quot;.sysdbspaces {dbspace配置}&lt;br /&gt;( &lt;br /&gt;dbsnum smallint, {dbspace号 }&lt;br /&gt;name char(18), {dbspace名 }&lt;br /&gt;owner char(8), {dbspace拥有者 }&lt;br /&gt;fchunk smallint, {dbspace第一块 }&lt;br /&gt;nchunks smallint, {dbspace块数 } &lt;br /&gt;is_mirrored integer, {dbspace是否镜像 1=YES，0=NO}&lt;br /&gt;is_blobspace integer, {dbspace是否大对象空间 }&lt;br /&gt;is_temp integer, {dbspace是否临时，1=YES，0=NO }&lt;br /&gt;flags smallint {dbspace标志 }&lt;br /&gt;);&lt;br /&gt;grant select on sysdbspaces to public;&lt;/p&gt;&lt;p&gt;create table &amp;quot;sysmaster&amp;quot;.syschunks {chunk配置}&lt;br /&gt;( &lt;br /&gt;chknum smallint, {chunk号 }&lt;br /&gt;dbsnum smallint, {dbspace号 }&lt;br /&gt;nxchknum smallint, {dbspace中下一个块号 }&lt;br /&gt;chksize integer, {chunk中的页 }&lt;br /&gt;offset integer, {设备页偏移量 }&lt;br /&gt;nfree integer, {块中未用页数 } &lt;br /&gt;is_offline integer, {chunk是否脱机，1=YES，0=NO}&lt;br /&gt;is_recovering integer, {chunk是否恢复，1=YES，0=NO}&lt;br /&gt;is_blobchunk integer, {chunk是否blobchunk，1=YES，0=NO} &lt;br /&gt;is_inconsistent integer, {chunk是否不一致，1=YES，0=NO }&lt;br /&gt;flags smallint, {由bitbal转换的块标志 }&lt;br /&gt;fname char(128),{设备路径名 } &lt;br /&gt;mfname char(128),{镜像设备路径名 }&lt;br /&gt;moffset integer, {镜像设备偏移量 }&lt;br /&gt;mis_offline integer, {镜像是否脱机，1=YES，0=NO }&lt;br /&gt;mis_recovering integer, {镜像是否恢复，1=YES，0=NO }&lt;br /&gt;mflags smallint {镜像块标志 }&lt;br /&gt;);&lt;br /&gt;grant select on syschunks to public;&lt;/p&gt;&lt;p&gt;create table &amp;quot;sysmaster&amp;quot;.syschfree {显示块中的未用空间块}&lt;br /&gt;( &lt;br /&gt;chknum integer, { chunk number 块号 }&lt;br /&gt;extnum integer, { extent number in chunk 块区域号 }&lt;br /&gt;start integer, { physical addr of start 开始物理地址 }&lt;br /&gt;leng integer { length of extent 区域长度 } &lt;br /&gt;);&lt;br /&gt;create unique index syschfreeidx on syschfree (chknum, extnum);&lt;br /&gt;revoke all on syschfree from public;&lt;br /&gt;grant select on syschfree to public;&lt;/p&gt;&lt;p&gt;create table &amp;quot;sysmaster&amp;quot;.syschkio {块设备I/O统计信息}&lt;br /&gt;( &lt;br /&gt;chunknum smallint, {块号 } &lt;br /&gt;reads integer, {读操作数 }&lt;br /&gt;pagesread integer, {读页数 } &lt;br /&gt;writes integer, {写操作数 }&lt;br /&gt;pageswritten integer, {写页数 } &lt;br /&gt;mreads integer, {镜像读操作数 }&lt;br /&gt;mpagesread integer, {镜像读页数 } &lt;br /&gt;mwrites integer, {镜像写操作数 }&lt;br /&gt;mpageswritten integer {镜像写页数 }&lt;br /&gt;);&lt;br /&gt;grant select on syschkio to public;&lt;/p&gt;&lt;p&gt;&lt;b&gt;三、数据库与表信息&lt;br /&gt;&lt;/b&gt;*sysdatabases ————&amp;gt;; 数据库&lt;br /&gt;*systabnames ————&amp;gt;; 表&lt;br /&gt;*sysextents ————&amp;gt;; 表区域&lt;br /&gt;*sysptprof ————&amp;gt;; 表I/O&lt;/p&gt;&lt;p&gt;create table &amp;quot;sysmaster&amp;quot;.sysdatabase {实例中所有的数据库信息}&lt;br /&gt;( &lt;br /&gt;name char(18), {数据库名 }&lt;br /&gt;partnum integer, {systables表ID }&lt;br /&gt;owner char(8), {生成者用户名 }&lt;br /&gt;created integer, {生成日期 }&lt;br /&gt;is_logging integer, {无缓冲日志，1=YES，0=NO }&lt;br /&gt;is_buff_log integer, {缓冲日志，1=YES，0=NO }&lt;br /&gt;is_ansi integer, {ANSI方式数据库1=YES，0=NO } &lt;br /&gt;is_nls integer, {NLS支持，1=YES，0=NO }&lt;br /&gt;flags smallint {指示日志的标志 }&lt;br /&gt;);&lt;br /&gt;grant select on sysdatabase to public;&lt;/p&gt;&lt;p&gt;create table &amp;quot;sysmaster&amp;quot;.systabnames {实例中的所有表}&lt;br /&gt;( &lt;br /&gt;partnum integer, { table id for table 表号 }&lt;br /&gt;dbsname char(18), { database name 数据库名}&lt;br /&gt;owner char(8), { table owner 表拥有者 }&lt;br /&gt;tabname char(18), { table name 表名 }&lt;br /&gt;collate char(32) { collation assoc with database 与GLS的相关性 }&lt;br /&gt;);&lt;br /&gt;create unique index systabs_pnix on systabnames(partnum);&lt;br /&gt;revoke all on systabnames from public;&lt;br /&gt;grant select on systabnames to public;&lt;/p&gt;&lt;p&gt;create table &amp;quot;sysmaster&amp;quot;.sysextents {实例中的表和每个区域}&lt;br /&gt;( &lt;br /&gt;dbsname char(18), {数据库名 }&lt;br /&gt;tabname char(18), {表名 }&lt;br /&gt;start integer, {这个区域的物理地址 }&lt;br /&gt;size integer {这个区域的长度(页数) }&lt;br /&gt;);&lt;br /&gt;grant select on sysextents to public;&lt;/p&gt;&lt;p&gt;create table &amp;quot;sysmaster&amp;quot;.sysptnext {区域的信息}&lt;br /&gt;( &lt;br /&gt;pe_partnum integer, { partnum for this partition 这个区域的编号 }&lt;br /&gt;pe_extnum smallint, { extent number 区域号 }&lt;br /&gt;pe_phys integer, { physical addr for this extent 这个区域的物理地址 }&lt;br /&gt;pe_size integer, { size of this extent 这个区域的长度(页数) }&lt;br /&gt;pe_log integer { logical page for start 开始逻辑页 }&lt;br /&gt;);&lt;br /&gt;create unique index sysptnextidx on sysptnext (pe_partnum, pe_extnum);&lt;br /&gt;revoke all on sysptnext from public;&lt;br /&gt;grant select on sysptnext to public;&lt;/p&gt;&lt;p&gt;create table &amp;quot;sysmaster&amp;quot;.sysptprof {表I/O概貌}&lt;br /&gt;( &lt;br /&gt;dbsname char(18), {数据库名}&lt;br /&gt;tabname char(18), {表名 }&lt;br /&gt;partnum integer, {表编号 }&lt;br /&gt;lockreqs integer, {锁请求 }&lt;br /&gt;lockwts integer, {锁等待 }&lt;br /&gt;deadlks integer, {死锁 }&lt;br /&gt;lktouts integer, {锁超时 }&lt;br /&gt;isreads integer, {读 }&lt;br /&gt;iswrites integer, {写入 }&lt;br /&gt;isrewrites integer, {改写 }&lt;br /&gt;isdeletes integer, {删除 }&lt;br /&gt;bufreads integer, {缓冲区读} &lt;br /&gt;bufwrites integer, {行冲区写}&lt;br /&gt;seqscans integer, {顺序扫描}&lt;br /&gt;pagreads integer, {磁盘读 }&lt;br /&gt;pagwrites integer {磁盘写 }&lt;br /&gt;);&lt;br /&gt;grant select on sysptprof to public;&lt;/p&gt;&lt;p&gt;&lt;b&gt;四、用户对话信息&lt;br /&gt;&lt;/b&gt;*syssessions ————————&amp;gt;; 对话数据&lt;br /&gt;*syssesprof ————————&amp;gt;; 用户统计信息&lt;br /&gt;*syslocks ————————&amp;gt;; 用户锁&lt;br /&gt;*syseswts ————————&amp;gt;; 等待时间&lt;/p&gt;&lt;p&gt;create table &amp;quot;sysmaster&amp;quot;.syssessions {用户对话与连接信息}&lt;br /&gt;( &lt;br /&gt;sid integer, {对话号 }&lt;br /&gt;username char(8), {用户名 }&lt;br /&gt;uid smallint,{用户unix号 }&lt;br /&gt;pid integer, {用户进程号 }&lt;br /&gt;hostname char(16),{主机名 }&lt;br /&gt;tty char(16),{tty端口 }&lt;br /&gt;connected integer, {用户连接时间 }&lt;br /&gt;feprogram char(16),{程序名 }&lt;br /&gt;pooladdr integer, {专有对话池指针 }&lt;br /&gt;is_wlatch integer, {标志1=YES，0=NO，等待锁存 }&lt;br /&gt;is_wlock integer, {标志1=YES，0=NO，等待锁 }&lt;br /&gt;is_wbuff integer, {标志1=YES，0=NO，等待缓冲区 }&lt;br /&gt;is_wckpt integer, {标志1=YES，0=NO，等待校验点 }&lt;br /&gt;is_wlogbuf integer, {标志1=YES，0=NO，等待日志缓冲区}&lt;br /&gt;is_wtrans integer, {标志1=YES，0=NO，等待事务 }&lt;br /&gt;is_monitor integer, {标志1=YES，0=NO，监视进程 }&lt;br /&gt;is_incrit integer, {标志1=YES，0=NO，在关键段中 }&lt;br /&gt;state integer {标志 }&lt;br /&gt;);&lt;br /&gt;grant select on syssessions to public;&lt;/p&gt;&lt;p&gt;create table &amp;quot;sysmaster&amp;quot;.syssesprof {用户对话性能统计}&lt;br /&gt;( &lt;br /&gt;sid integer, {对话号 }&lt;br /&gt;lockreqs decimal(16,0), {请求的锁 }&lt;br /&gt;locksheld decimal(16,0), {锁保持 }&lt;br /&gt;lockwts decimal(16,0), {锁等待 }&lt;br /&gt;deadlks decimal(16,0), {发现的死锁 }&lt;br /&gt;lktouts decimal(16,0), {死锁超时 }&lt;br /&gt;logrecs decimal(16,0), {逻辑日志记录写入 }&lt;br /&gt;isreads decimal(16,0), {读 }&lt;br /&gt;iswrites decimal(16,0), {写 }&lt;br /&gt;isrewrites decimal(16,0), {改写 }&lt;br /&gt;isdeletes decimal(16,0), {删除 }&lt;br /&gt;iscommits decimal(16,0), {提交 }&lt;br /&gt;isrollbacks decimal(16,0), {撤销 }&lt;br /&gt;longtxs decimal(16,0), {长事务 }&lt;br /&gt;bufreads decimal(16,0), {缓冲区读 }&lt;br /&gt;bufwrites decimal(16,0), {缓冲区写 }&lt;br /&gt;seqscans decimal(16,0), {顺序扫描 }&lt;br /&gt;pagreads decimal(16,0), {页读 }&lt;br /&gt;pagwrites decimal(16,0), {页写 }&lt;br /&gt;total_sorts decimal(16,0), {总排序 }&lt;br /&gt;dsksorts decimal(16,0), {磁盘排序 }&lt;br /&gt;max_sortdiskspace decimal(16,0),{排序使用的最大空间 } &lt;br /&gt;logspused decimal(16,0), {当前使用的日志字节 }&lt;br /&gt;maxlogsp decimal(16,0) {逻辑日志使用的最大空间}&lt;br /&gt;);&lt;br /&gt;grant select on syssesprof to public;&lt;/p&gt;&lt;p&gt;create table &amp;quot;sysmaster&amp;quot;.syslocks {服务器上的锁活动}&lt;br /&gt;( &lt;br /&gt;dbsname char(18), {数据库 }&lt;br /&gt;tabname char(18), {表名 }&lt;br /&gt;rowidlk integer, {索引关键字锁的行号 }&lt;br /&gt;keynum smallint, {索引关键字锁的关键字号}&lt;br /&gt;type integer, {锁拥有者对话ID }&lt;br /&gt;owner integer, {第一个等待者对话ID }&lt;br /&gt;waiter char(4) {锁类型 }&lt;br /&gt;);&lt;br /&gt;grant select on syslocks to public;&lt;br /&gt;{*******************************************************&lt;br /&gt;注：锁类型包括&lt;br /&gt;*B ——————&amp;gt;;byte lock(字节锁)&lt;br /&gt;*IS ——————&amp;gt;;intent shared lock(意图共享锁)&lt;br /&gt;*S ——————&amp;gt;;shared lock(共享锁)&lt;br /&gt;*XS ——————&amp;gt;;repeatable read shared key(可重复读共享锁)&lt;br /&gt;*U ——————&amp;gt;;update lock(更新锁)&lt;br /&gt;*IX ——————&amp;gt;;intent exclusive lock(意图独占锁)&lt;br /&gt;*SIX ——————&amp;gt;;shared intent exclusive(共享意图独占锁)&lt;br /&gt;*X ——————&amp;gt;;exclusive lock(独占锁)&lt;br /&gt;*XR ——————&amp;gt;;repreatable read exclusive(可重复读独占锁)&lt;/p&gt;&lt;p&gt;基本说来，这些锁类型是三种锁的组合：共享锁(S)、独占锁(X)、更新锁(U)。共享锁使其他用户也能读数据，但不能改变数据。独占锁不让其他用户共享数据。&lt;br /&gt;更新锁在更新数据时不让其他用户改变数据。&lt;/p&gt;&lt;p&gt;IDS中可以锁定的对象包括：&lt;br /&gt;*数据库 ——————&amp;gt;;每个用户打开数据库时即对数据库采用共享锁，防止别人删除正在使用的数据。这个操作显示为sysmaster数据库和sysdatabase表中的锁，rowid指向包含数据库名的记录。&lt;br /&gt;*表 ——————&amp;gt;;表锁显示为表上的锁，rowid为0，keynum为0。&lt;br /&gt;*页 ——————&amp;gt;;页锁显示为rowid以00结尾，即页中的所有行均锁定。&lt;br /&gt;*行 ——————&amp;gt;;行锁显示实际rowid(不以00结尾)。&lt;br /&gt;*键 ——————&amp;gt;;键锁显示为keynum如果行的索引需要更新，则锁在该行的索引。&lt;br /&gt;********************************************************}&lt;/p&gt;&lt;p&gt;create table &amp;quot;sysmaster&amp;quot;.sysseswts {对象等待状态与时间}&lt;br /&gt;( &lt;br /&gt;sid integer, {对话ID }&lt;br /&gt;reason char(50), {等待原因说明 }&lt;br /&gt;numwaits integer, {这个原因的等待数 }&lt;br /&gt;cumtime float, {这个原因的等待累计时间}&lt;br /&gt;maxtime integer {这个原因的等待最长时间}&lt;br /&gt;);&lt;br /&gt;grant select on sysseswts to public;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;create table &amp;quot;sysmaster&amp;quot;.systrans {用户事务}&lt;br /&gt;( &lt;br /&gt;tx_id integer,{事务表指针 }&lt;br /&gt;tx_logbeg integer,{事务开始的逻辑日志号 }&lt;br /&gt;tx_loguniq integer {事务中使用的当前逻辑日志号}&lt;br /&gt;);&lt;br /&gt;grant select on systrans to public;&lt;/p&gt;&lt;p&gt;create table &amp;quot;sysmaster&amp;quot;.syssqexpalin {用户查询}&lt;br /&gt;( &lt;br /&gt;sqx_sessionid integer, {SQL语句的对话ID，匹配onstat -u 输出 }&lt;br /&gt;sqx_bufreads integer, {SQL语句完成的缓冲区读次数}&lt;br /&gt;sqx_pagereads integer, {SQL语句完成的页面读次数}&lt;br /&gt;sqx_totsorts integer, {SQL语句完成的排序次数}&lt;br /&gt;sqx_estcost integer, {这个查询的估计成本，应与SET EXPLAIN的输出相同。注：这个成本有时偏高，但可以作为寻找坏查询的参考}&lt;br /&gt;sqx_estrows integer, {检查这个查询返回的行，应与SET EXPALIN的输出相同}&lt;br /&gt;sqx_seqscan smallint,{查询是顺序表格扫描时返回1，通常表示有问题}&lt;br /&gt;sqx_srtscan smallint,{查询是排序扫描时返回1}&lt;br /&gt;sqx_autoindex smallint,{查询是表格自动索引时返回1}&lt;br /&gt;sqx_mrgjoin smallint,{查询是合并连接时返回1}&lt;br /&gt;sqx_dynhashjoin smallint,{查询是动态散列连接时返回1 }&lt;br /&gt;sqx_sqlstatement char(32000){SQL语句文本 }&lt;br /&gt;);&lt;br /&gt;grant select on syssqexplain to public;&lt;/p&gt;&lt;p&gt;参考资料:Informix数据库管理员手册&lt;/p&gt;</description>
		<guid>http://www.517sou.net/Article/404.aspx</guid>
		<trackback:ping>http://www.517sou.net/Article/404/Trackback.ashx</trackback:ping>
		<comments>http://www.517sou.net/Article/404.aspx#CommentPostAnchor</comments>
		<wfw:commentRss>http://www.517sou.net/Article/404/Feeds.ashx</wfw:commentRss>
	</item>
	<item>
		<link>http://www.517sou.net/Article/403.aspx</link>
		<title>informx技术支持库</title>
		<author>shanyiwan@live.com(flyinweb)</author>
		<category>数据库技术</category>
		<pubDate>Tue, 26 Jan 2010 01:59:10 GMT</pubDate>
		<description>&lt;p&gt;&lt;a href=&quot;http://www-900.ibm.com/cn/support/viewdoc/uprosupport?pageid=0&amp;amp;category=5&quot; target=&quot;_blank&quot;&gt;informx技术支持库&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;table border=&quot;0&quot; cellspacing=&quot;2&quot; cellpadding=&quot;0&quot; width=&quot;443&quot;&gt;&lt;tbody&gt;&lt;tr valign=&quot;top&quot; bordercolorlight=&quot;#ffffff&quot; bordercolordark=&quot;#ffffff&quot; bordercolor=&quot;#ffffff&quot;&gt;&lt;td class=&quot;v14-header-1&quot; colspan=&quot;3&quot;&gt;&lt;p&gt;标题&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;3&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ibm.com/i/c.gif&quot; width=&quot;1&quot; height=&quot;5&quot; /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign=&quot;top&quot; bordercolorlight=&quot;#ffffff&quot; bordercolordark=&quot;#ffffff&quot; bordercolor=&quot;#ffffff&quot;&gt;&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;20&quot; width=&quot;16&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ibm.com/i/v14/icons/fw.gif&quot; /&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;339&quot;&gt;&lt;a class=&quot;fbox&quot; href=&quot;http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=1897869L15000&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5c81a7&quot;&gt;如何清理hung住的分布式事务&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;80&quot;&gt;&lt;div align=&quot;center&quot;&gt;2010-01-08&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign=&quot;top&quot; bordercolorlight=&quot;#ffffff&quot; bordercolordark=&quot;#ffffff&quot; bordercolor=&quot;#ffffff&quot;&gt;&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;20&quot; width=&quot;16&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ibm.com/i/v14/icons/fw.gif&quot; /&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;339&quot;&gt;&lt;a class=&quot;fbox&quot; href=&quot;http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=1897869L23000&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5c81a7&quot;&gt;IDS 11.50版本中的限制连接数新特性介绍&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;80&quot;&gt;&lt;div align=&quot;center&quot;&gt;2010-01-08&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign=&quot;top&quot; bordercolorlight=&quot;#ffffff&quot; bordercolordark=&quot;#ffffff&quot; bordercolor=&quot;#ffffff&quot;&gt;&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;20&quot; width=&quot;16&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ibm.com/i/v14/icons/fw.gif&quot; /&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;339&quot;&gt;&lt;a class=&quot;fbox&quot; href=&quot;http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=1897869L30000&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5c81a7&quot;&gt;如何找到数据库的哪些用户具有DBA权限？&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;80&quot;&gt;&lt;div align=&quot;center&quot;&gt;2010-01-08&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign=&quot;top&quot; bordercolorlight=&quot;#ffffff&quot; bordercolordark=&quot;#ffffff&quot; bordercolor=&quot;#ffffff&quot;&gt;&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;20&quot; width=&quot;16&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ibm.com/i/v14/icons/fw.gif&quot; /&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;339&quot;&gt;&lt;a class=&quot;fbox&quot; href=&quot;http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=1897869L30001&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5c81a7&quot;&gt;为什么数据库的逻辑日志不能够动态增加？&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;80&quot;&gt;&lt;div align=&quot;center&quot;&gt;2010-01-08&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign=&quot;top&quot; bordercolorlight=&quot;#ffffff&quot; bordercolordark=&quot;#ffffff&quot; bordercolor=&quot;#ffffff&quot;&gt;&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;20&quot; width=&quot;16&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ibm.com/i/v14/icons/fw.gif&quot; /&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;339&quot;&gt;&lt;a class=&quot;fbox&quot; href=&quot;http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=1897869L30002&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5c81a7&quot;&gt;如何让informix数据库再次进入到恢复模式，来完成之前失败的数据备份恢复操作？&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;80&quot;&gt;&lt;div align=&quot;center&quot;&gt;2010-01-08&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign=&quot;top&quot; bordercolorlight=&quot;#ffffff&quot; bordercolordark=&quot;#ffffff&quot; bordercolor=&quot;#ffffff&quot;&gt;&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;20&quot; width=&quot;16&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ibm.com/i/v14/icons/fw.gif&quot; /&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;339&quot;&gt;&lt;a class=&quot;fbox&quot; href=&quot;http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=1417869H06000&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5c81a7&quot;&gt;应用程序变更引起的KAIO: out of OS resources&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;80&quot;&gt;&lt;div align=&quot;center&quot;&gt;2010-01-08&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign=&quot;top&quot; bordercolorlight=&quot;#ffffff&quot; bordercolordark=&quot;#ffffff&quot; bordercolor=&quot;#ffffff&quot;&gt;&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;20&quot; width=&quot;16&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ibm.com/i/v14/icons/fw.gif&quot; /&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;339&quot;&gt;&lt;a class=&quot;fbox&quot; href=&quot;http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=1897869I16000&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5c81a7&quot;&gt;使用onbar备份做表级恢复时 archeck core dump&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;80&quot;&gt;&lt;div align=&quot;center&quot;&gt;2010-01-08&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign=&quot;top&quot; bordercolorlight=&quot;#ffffff&quot; bordercolordark=&quot;#ffffff&quot; bordercolor=&quot;#ffffff&quot;&gt;&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;20&quot; width=&quot;16&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ibm.com/i/v14/icons/fw.gif&quot; /&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;339&quot;&gt;&lt;a class=&quot;fbox&quot; href=&quot;http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=1897869K02000&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5c81a7&quot;&gt;如何正确删除informix的共享内存段&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;80&quot;&gt;&lt;div align=&quot;center&quot;&gt;2010-01-08&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign=&quot;top&quot; bordercolorlight=&quot;#ffffff&quot; bordercolordark=&quot;#ffffff&quot; bordercolor=&quot;#ffffff&quot;&gt;&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;20&quot; width=&quot;16&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ibm.com/i/v14/icons/fw.gif&quot; /&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;339&quot;&gt;&lt;a class=&quot;fbox&quot; href=&quot;http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=1897869K03000&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5c81a7&quot;&gt;如何判断不同类型的长事务&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;80&quot;&gt;&lt;div align=&quot;center&quot;&gt;2010-01-08&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign=&quot;top&quot; bordercolorlight=&quot;#ffffff&quot; bordercolordark=&quot;#ffffff&quot; bordercolor=&quot;#ffffff&quot;&gt;&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;20&quot; width=&quot;16&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ibm.com/i/v14/icons/fw.gif&quot; /&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;339&quot;&gt;&lt;a class=&quot;fbox&quot; href=&quot;http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=1897869K04000&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5c81a7&quot;&gt;Onbar备份恢复的辅助工具 onsmsync&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;80&quot;&gt;&lt;div align=&quot;center&quot;&gt;2010-01-08&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign=&quot;top&quot; bordercolorlight=&quot;#ffffff&quot; bordercolordark=&quot;#ffffff&quot; bordercolor=&quot;#ffffff&quot;&gt;&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;20&quot; width=&quot;16&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ibm.com/i/v14/icons/fw.gif&quot; /&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;339&quot;&gt;&lt;a class=&quot;fbox&quot; href=&quot;http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=1897869K04001&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5c81a7&quot;&gt;当遇到日志满的情况时应该收集的信息&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;80&quot;&gt;&lt;div align=&quot;center&quot;&gt;2010-01-08&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign=&quot;top&quot; bordercolorlight=&quot;#ffffff&quot; bordercolordark=&quot;#ffffff&quot; bordercolor=&quot;#ffffff&quot;&gt;&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;20&quot; width=&quot;16&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ibm.com/i/v14/icons/fw.gif&quot; /&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;339&quot;&gt;&lt;a class=&quot;fbox&quot; href=&quot;http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=1897869K05000&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5c81a7&quot;&gt;异步方式下 HDR备机对主机的性能影响&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;80&quot;&gt;&lt;div align=&quot;center&quot;&gt;2010-01-08&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign=&quot;top&quot; bordercolorlight=&quot;#ffffff&quot; bordercolordark=&quot;#ffffff&quot; bordercolor=&quot;#ffffff&quot;&gt;&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;20&quot; width=&quot;16&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ibm.com/i/v14/icons/fw.gif&quot; /&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;339&quot;&gt;&lt;a class=&quot;fbox&quot; href=&quot;http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=1897869K16000&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5c81a7&quot;&gt;获取当前informix产品或库文件版本几种方法&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;80&quot;&gt;&lt;div align=&quot;center&quot;&gt;2010-01-08&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign=&quot;top&quot; bordercolorlight=&quot;#ffffff&quot; bordercolordark=&quot;#ffffff&quot; bordercolor=&quot;#ffffff&quot;&gt;&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;20&quot; width=&quot;16&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ibm.com/i/v14/icons/fw.gif&quot; /&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;339&quot;&gt;&lt;a class=&quot;fbox&quot; href=&quot;http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=1897869K16001&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5c81a7&quot;&gt;如何获取最近的SQL执行时生成的serial值和所处理的记录数&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;80&quot;&gt;&lt;div align=&quot;center&quot;&gt;2010-01-08&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign=&quot;top&quot; bordercolorlight=&quot;#ffffff&quot; bordercolordark=&quot;#ffffff&quot; bordercolor=&quot;#ffffff&quot;&gt;&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;20&quot; width=&quot;16&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ibm.com/i/v14/icons/fw.gif&quot; /&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;339&quot;&gt;&lt;a class=&quot;fbox&quot; href=&quot;http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=1897869K23000&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5c81a7&quot;&gt;查询优化器介绍&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;80&quot;&gt;&lt;div align=&quot;center&quot;&gt;2010-01-08&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign=&quot;top&quot; bordercolorlight=&quot;#ffffff&quot; bordercolordark=&quot;#ffffff&quot; bordercolor=&quot;#ffffff&quot;&gt;&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;20&quot; width=&quot;16&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ibm.com/i/v14/icons/fw.gif&quot; /&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;339&quot;&gt;&lt;a class=&quot;fbox&quot; href=&quot;http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=1897869L02000&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5c81a7&quot;&gt;如何查找那个session使用了过多的临时表空间&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;80&quot;&gt;&lt;div align=&quot;center&quot;&gt;2010-01-08&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign=&quot;top&quot; bordercolorlight=&quot;#ffffff&quot; bordercolordark=&quot;#ffffff&quot; bordercolor=&quot;#ffffff&quot;&gt;&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;20&quot; width=&quot;16&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ibm.com/i/v14/icons/fw.gif&quot; /&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;339&quot;&gt;&lt;a class=&quot;fbox&quot; href=&quot;http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=1897869L08000&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5c81a7&quot;&gt;使用fragment提高权限管理的粒度&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;80&quot;&gt;&lt;div align=&quot;center&quot;&gt;2010-01-08&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign=&quot;top&quot; bordercolorlight=&quot;#ffffff&quot; bordercolordark=&quot;#ffffff&quot; bordercolor=&quot;#ffffff&quot;&gt;&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;20&quot; width=&quot;16&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ibm.com/i/v14/icons/fw.gif&quot; /&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;339&quot;&gt;&lt;a class=&quot;fbox&quot; href=&quot;http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=1897869L08001&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5c81a7&quot;&gt;使用PDQ提高建立index的效率&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;80&quot;&gt;&lt;div align=&quot;center&quot;&gt;2010-01-08&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign=&quot;top&quot; bordercolorlight=&quot;#ffffff&quot; bordercolordark=&quot;#ffffff&quot; bordercolor=&quot;#ffffff&quot;&gt;&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;20&quot; width=&quot;16&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ibm.com/i/v14/icons/fw.gif&quot; /&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;339&quot;&gt;&lt;a class=&quot;fbox&quot; href=&quot;http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=1897869L14000&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5c81a7&quot;&gt;Informix 一个锁占用多少内存空间&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;80&quot;&gt;&lt;div align=&quot;center&quot;&gt;2010-01-08&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign=&quot;top&quot; bordercolorlight=&quot;#ffffff&quot; bordercolordark=&quot;#ffffff&quot; bordercolor=&quot;#ffffff&quot;&gt;&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;20&quot; width=&quot;16&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ibm.com/i/v14/icons/fw.gif&quot; /&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;339&quot;&gt;&lt;a class=&quot;fbox&quot; href=&quot;http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=1997869J09000&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5c81a7&quot;&gt;如何监控Informix数据库长事务回滚进度&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;80&quot;&gt;&lt;div align=&quot;center&quot;&gt;2010-01-08&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign=&quot;top&quot; bordercolorlight=&quot;#ffffff&quot; bordercolordark=&quot;#ffffff&quot; bordercolor=&quot;#ffffff&quot;&gt;&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;20&quot; width=&quot;16&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ibm.com/i/v14/icons/fw.gif&quot; /&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;339&quot;&gt;&lt;a class=&quot;fbox&quot; href=&quot;http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=1997869J09001&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5c81a7&quot;&gt;全局事务事务导致数据库阻塞的解决方法&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;80&quot;&gt;&lt;div align=&quot;center&quot;&gt;2010-01-08&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign=&quot;top&quot; bordercolorlight=&quot;#ffffff&quot; bordercolordark=&quot;#ffffff&quot; bordercolor=&quot;#ffffff&quot;&gt;&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;20&quot; width=&quot;16&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ibm.com/i/v14/icons/fw.gif&quot; /&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;339&quot;&gt;&lt;a class=&quot;fbox&quot; href=&quot;http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=2897869K23000&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5c81a7&quot;&gt;使用SQL trace分析SQL语句&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;80&quot;&gt;&lt;div align=&quot;center&quot;&gt;2010-01-08&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign=&quot;top&quot; bordercolorlight=&quot;#ffffff&quot; bordercolordark=&quot;#ffffff&quot; bordercolor=&quot;#ffffff&quot;&gt;&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;20&quot; width=&quot;16&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ibm.com/i/v14/icons/fw.gif&quot; /&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;339&quot;&gt;&lt;a class=&quot;fbox&quot; href=&quot;http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=2697869K24000&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5c81a7&quot;&gt;Informix CLI 与 ODBC&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;80&quot;&gt;&lt;div align=&quot;center&quot;&gt;2010-01-08&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign=&quot;top&quot; bordercolorlight=&quot;#ffffff&quot; bordercolordark=&quot;#ffffff&quot; bordercolor=&quot;#ffffff&quot;&gt;&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;20&quot; width=&quot;16&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ibm.com/i/v14/icons/fw.gif&quot; /&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;339&quot;&gt;&lt;a class=&quot;fbox&quot; href=&quot;http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=1997869L14000&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5c81a7&quot;&gt;Onstat 　g ntt 打印出网络用户时间&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;80&quot;&gt;&lt;div align=&quot;center&quot;&gt;2010-01-08&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign=&quot;top&quot; bordercolorlight=&quot;#ffffff&quot; bordercolordark=&quot;#ffffff&quot; bordercolor=&quot;#ffffff&quot;&gt;&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;20&quot; width=&quot;16&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ibm.com/i/v14/icons/fw.gif&quot; /&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;339&quot;&gt;&lt;a class=&quot;fbox&quot; href=&quot;http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=1997869L14001&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5c81a7&quot;&gt;Onstat 　u输出&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;80&quot;&gt;&lt;div align=&quot;center&quot;&gt;2010-01-08&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign=&quot;top&quot; bordercolorlight=&quot;#ffffff&quot; bordercolordark=&quot;#ffffff&quot; bordercolor=&quot;#ffffff&quot;&gt;&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;20&quot; width=&quot;16&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ibm.com/i/v14/icons/fw.gif&quot; /&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;339&quot;&gt;&lt;a class=&quot;fbox&quot; href=&quot;http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=1997869L14002&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5c81a7&quot;&gt;时间戳&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;80&quot;&gt;&lt;div align=&quot;center&quot;&gt;2010-01-08&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign=&quot;top&quot; bordercolorlight=&quot;#ffffff&quot; bordercolordark=&quot;#ffffff&quot; bordercolor=&quot;#ffffff&quot;&gt;&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;20&quot; width=&quot;16&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ibm.com/i/v14/icons/fw.gif&quot; /&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;339&quot;&gt;&lt;a class=&quot;fbox&quot; href=&quot;http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=1997869L14004&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5c81a7&quot;&gt;使用onmode 　F 释放共享内存&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;80&quot;&gt;&lt;div align=&quot;center&quot;&gt;2010-01-08&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign=&quot;top&quot; bordercolorlight=&quot;#ffffff&quot; bordercolordark=&quot;#ffffff&quot; bordercolor=&quot;#ffffff&quot;&gt;&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;20&quot; width=&quot;16&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ibm.com/i/v14/icons/fw.gif&quot; /&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;339&quot;&gt;&lt;a class=&quot;fbox&quot; href=&quot;http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=1897869L14001&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5c81a7&quot;&gt;是否可以在HDR secondary上执行oncheck检查？&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;80&quot;&gt;&lt;div align=&quot;center&quot;&gt;2010-01-08&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign=&quot;top&quot; bordercolorlight=&quot;#ffffff&quot; bordercolordark=&quot;#ffffff&quot; bordercolor=&quot;#ffffff&quot;&gt;&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;20&quot; width=&quot;16&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ibm.com/i/v14/icons/fw.gif&quot; /&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;339&quot;&gt;&lt;a class=&quot;fbox&quot; href=&quot;http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=2697869G30000&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5c81a7&quot;&gt;IDS通信文件.info.servicename&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;80&quot;&gt;&lt;div align=&quot;center&quot;&gt;2009-08-17&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign=&quot;top&quot; bordercolorlight=&quot;#ffffff&quot; bordercolordark=&quot;#ffffff&quot; bordercolor=&quot;#ffffff&quot;&gt;&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;20&quot; width=&quot;16&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ibm.com/i/v14/icons/fw.gif&quot; /&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;339&quot;&gt;&lt;a class=&quot;fbox&quot; href=&quot;http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=2897869G30000&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5c81a7&quot;&gt;audit初步使用&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;80&quot;&gt;&lt;div align=&quot;center&quot;&gt;2009-08-17&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/p&gt;&lt;table border=&quot;0&quot; cellspacing=&quot;2&quot; cellpadding=&quot;0&quot; width=&quot;443&quot;&gt;&lt;tbody&gt;&lt;tr valign=&quot;top&quot; bordercolorlight=&quot;#ffffff&quot; bordercolordark=&quot;#ffffff&quot; bordercolor=&quot;#ffffff&quot;&gt;&lt;td class=&quot;v14-header-1&quot; colspan=&quot;3&quot;&gt;标题&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;3&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ibm.com/i/c.gif&quot; width=&quot;1&quot; height=&quot;5&quot; /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign=&quot;top&quot; bordercolorlight=&quot;#ffffff&quot; bordercolordark=&quot;#ffffff&quot; bordercolor=&quot;#ffffff&quot;&gt;&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;20&quot; width=&quot;16&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ibm.com/i/v14/icons/fw.gif&quot; /&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;339&quot;&gt;&lt;a class=&quot;fbox&quot; href=&quot;http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=1897869F16000&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5c81a7&quot;&gt;如何查找表中存在的重复记录&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;80&quot;&gt;&lt;div align=&quot;center&quot;&gt;2009-08-17&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign=&quot;top&quot; bordercolorlight=&quot;#ffffff&quot; bordercolordark=&quot;#ffffff&quot; bordercolor=&quot;#ffffff&quot;&gt;&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;20&quot; width=&quot;16&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ibm.com/i/v14/icons/fw.gif&quot; /&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;339&quot;&gt;&lt;a class=&quot;fbox&quot; href=&quot;http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=1897869F16001&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5c81a7&quot;&gt;使用硬件复制技术备份Informix时，需要步骤&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;80&quot;&gt;&lt;div align=&quot;center&quot;&gt;2009-08-17&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign=&quot;top&quot; bordercolorlight=&quot;#ffffff&quot; bordercolordark=&quot;#ffffff&quot; bordercolor=&quot;#ffffff&quot;&gt;&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;20&quot; width=&quot;16&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ibm.com/i/v14/icons/fw.gif&quot; /&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;339&quot;&gt;&lt;a class=&quot;fbox&quot; href=&quot;http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=1897869F22000&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5c81a7&quot;&gt;IDS 11.50.xC5 &apos;合并&apos;新功能介绍&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;80&quot;&gt;&lt;div align=&quot;center&quot;&gt;2009-08-17&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign=&quot;top&quot; bordercolorlight=&quot;#ffffff&quot; bordercolordark=&quot;#ffffff&quot; bordercolor=&quot;#ffffff&quot;&gt;&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;20&quot; width=&quot;16&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ibm.com/i/v14/icons/fw.gif&quot; /&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;339&quot;&gt;&lt;a class=&quot;fbox&quot; href=&quot;http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=2997869F22000&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5c81a7&quot;&gt;ISA之远程信息收集&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;80&quot;&gt;&lt;div align=&quot;center&quot;&gt;2009-08-17&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign=&quot;top&quot; bordercolorlight=&quot;#ffffff&quot; bordercolordark=&quot;#ffffff&quot; bordercolor=&quot;#ffffff&quot;&gt;&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;20&quot; width=&quot;16&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ibm.com/i/v14/icons/fw.gif&quot; /&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;339&quot;&gt;&lt;a class=&quot;fbox&quot; href=&quot;http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=2997869F22001&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5c81a7&quot;&gt;如何使用setLogWriter打开Informix JDBC driver的跟踪日志&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;80&quot;&gt;&lt;div align=&quot;center&quot;&gt;2009-08-17&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign=&quot;top&quot; bordercolorlight=&quot;#ffffff&quot; bordercolordark=&quot;#ffffff&quot; bordercolor=&quot;#ffffff&quot;&gt;&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;20&quot; width=&quot;16&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ibm.com/i/v14/icons/fw.gif&quot; /&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;339&quot;&gt;&lt;a class=&quot;fbox&quot; href=&quot;http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=1997869F22000&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5c81a7&quot;&gt;如何监控数据库的回滚进程&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;80&quot;&gt;&lt;div align=&quot;center&quot;&gt;2009-08-17&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign=&quot;top&quot; bordercolorlight=&quot;#ffffff&quot; bordercolordark=&quot;#ffffff&quot; bordercolor=&quot;#ffffff&quot;&gt;&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;20&quot; width=&quot;16&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ibm.com/i/v14/icons/fw.gif&quot; /&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;339&quot;&gt;&lt;a class=&quot;fbox&quot; href=&quot;http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=2997869F22002&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5c81a7&quot;&gt;如何使用新的方法来打开SQLIDEBUG&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;80&quot;&gt;&lt;div align=&quot;center&quot;&gt;2009-08-17&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign=&quot;top&quot; bordercolorlight=&quot;#ffffff&quot; bordercolordark=&quot;#ffffff&quot; bordercolor=&quot;#ffffff&quot;&gt;&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;20&quot; width=&quot;16&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ibm.com/i/v14/icons/fw.gif&quot; /&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;339&quot;&gt;&lt;a class=&quot;fbox&quot; href=&quot;http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=1997869F22001&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5c81a7&quot;&gt;收集数据之客户端服务器连接-客户端连接失败&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;80&quot;&gt;&lt;div align=&quot;center&quot;&gt;2009-08-17&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign=&quot;top&quot; bordercolorlight=&quot;#ffffff&quot; bordercolordark=&quot;#ffffff&quot; bordercolor=&quot;#ffffff&quot;&gt;&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;20&quot; width=&quot;16&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ibm.com/i/v14/icons/fw.gif&quot; /&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;339&quot;&gt;&lt;a class=&quot;fbox&quot; href=&quot;http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=1997869F22002&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5c81a7&quot;&gt;对于informix产品问题需要收集的一般性信息&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;80&quot;&gt;&lt;div align=&quot;center&quot;&gt;2009-08-17&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign=&quot;top&quot; bordercolorlight=&quot;#ffffff&quot; bordercolordark=&quot;#ffffff&quot; bordercolor=&quot;#ffffff&quot;&gt;&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;20&quot; width=&quot;16&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ibm.com/i/v14/icons/fw.gif&quot; /&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;339&quot;&gt;&lt;a class=&quot;fbox&quot; href=&quot;http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=2897869F23000&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5c81a7&quot;&gt;IDS11.50.xC5 “延迟处理”新功能介绍&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;80&quot;&gt;&lt;div align=&quot;center&quot;&gt;2009-08-17&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign=&quot;top&quot; bordercolorlight=&quot;#ffffff&quot; bordercolordark=&quot;#ffffff&quot; bordercolor=&quot;#ffffff&quot;&gt;&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;20&quot; width=&quot;16&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ibm.com/i/v14/icons/fw.gif&quot; /&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;339&quot;&gt;&lt;a class=&quot;fbox&quot; href=&quot;http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=1897869F23000&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5c81a7&quot;&gt;IDS11.50.xC5“分级查询”新功能介绍&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;80&quot;&gt;&lt;div align=&quot;center&quot;&gt;2009-08-17&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign=&quot;top&quot; bordercolorlight=&quot;#ffffff&quot; bordercolordark=&quot;#ffffff&quot; bordercolor=&quot;#ffffff&quot;&gt;&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;20&quot; width=&quot;16&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ibm.com/i/v14/icons/fw.gif&quot; /&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;339&quot;&gt;&lt;a class=&quot;fbox&quot; href=&quot;http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=1897869G01000&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5c81a7&quot;&gt;无标题&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;80&quot;&gt;&lt;div align=&quot;center&quot;&gt;2009-08-17&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign=&quot;top&quot; bordercolorlight=&quot;#ffffff&quot; bordercolordark=&quot;#ffffff&quot; bordercolor=&quot;#ffffff&quot;&gt;&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;20&quot; width=&quot;16&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ibm.com/i/v14/icons/fw.gif&quot; /&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;339&quot;&gt;&lt;a class=&quot;fbox&quot; href=&quot;http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=1897869G17000&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5c81a7&quot;&gt;备份信息是如何存储在保留页当中的&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;80&quot;&gt;&lt;div align=&quot;center&quot;&gt;2009-08-17&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign=&quot;top&quot; bordercolorlight=&quot;#ffffff&quot; bordercolordark=&quot;#ffffff&quot; bordercolor=&quot;#ffffff&quot;&gt;&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;20&quot; width=&quot;16&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ibm.com/i/v14/icons/fw.gif&quot; /&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;339&quot;&gt;&lt;a class=&quot;fbox&quot; href=&quot;http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=1897869G17001&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5c81a7&quot;&gt;在线日志中关于逻辑日志的警告信息及预防措施&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;80&quot;&gt;&lt;div align=&quot;center&quot;&gt;2009-08-17&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign=&quot;top&quot; bordercolorlight=&quot;#ffffff&quot; bordercolordark=&quot;#ffffff&quot; bordercolor=&quot;#ffffff&quot;&gt;&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;20&quot; width=&quot;16&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ibm.com/i/v14/icons/fw.gif&quot; /&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;339&quot;&gt;&lt;a class=&quot;fbox&quot; href=&quot;http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=1897869G17002&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5c81a7&quot;&gt;使用SQL创建默认的Low/medium/high update statistics 语句&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;80&quot;&gt;&lt;div align=&quot;center&quot;&gt;2009-08-17&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign=&quot;top&quot; bordercolorlight=&quot;#ffffff&quot; bordercolordark=&quot;#ffffff&quot; bordercolor=&quot;#ffffff&quot;&gt;&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;20&quot; width=&quot;16&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ibm.com/i/v14/icons/fw.gif&quot; /&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;339&quot;&gt;&lt;a class=&quot;fbox&quot; href=&quot;http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=1897869G17003&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5c81a7&quot;&gt;如何获得含有远程表的查询计划&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;80&quot;&gt;&lt;div align=&quot;center&quot;&gt;2009-08-17&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign=&quot;top&quot; bordercolorlight=&quot;#ffffff&quot; bordercolordark=&quot;#ffffff&quot; bordercolor=&quot;#ffffff&quot;&gt;&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;20&quot; width=&quot;16&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ibm.com/i/v14/icons/fw.gif&quot; /&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;339&quot;&gt;&lt;a class=&quot;fbox&quot; href=&quot;http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=1897869G20000&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5c81a7&quot;&gt;升级到JDBC3.50后，插入数据报“-79783 Encoding or code set not supported”的错误信息&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;80&quot;&gt;&lt;div align=&quot;center&quot;&gt;2009-08-17&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign=&quot;top&quot; bordercolorlight=&quot;#ffffff&quot; bordercolordark=&quot;#ffffff&quot; bordercolor=&quot;#ffffff&quot;&gt;&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;20&quot; width=&quot;16&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ibm.com/i/v14/icons/fw.gif&quot; /&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;339&quot;&gt;&lt;a class=&quot;fbox&quot; href=&quot;http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=1897869G20001&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5c81a7&quot;&gt;JDBC3.50 在WAS 6.0版本上不能正确显示中文的问题&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;80&quot;&gt;&lt;div align=&quot;center&quot;&gt;2009-08-17&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign=&quot;top&quot; bordercolorlight=&quot;#ffffff&quot; bordercolordark=&quot;#ffffff&quot; bordercolor=&quot;#ffffff&quot;&gt;&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;20&quot; width=&quot;16&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ibm.com/i/v14/icons/fw.gif&quot; /&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;339&quot;&gt;&lt;a class=&quot;fbox&quot; href=&quot;http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=1897869G30000&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5c81a7&quot;&gt;HDR环境使用sequence对象可出现重复值&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;80&quot;&gt;&lt;div align=&quot;center&quot;&gt;2009-08-17&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign=&quot;top&quot; bordercolorlight=&quot;#ffffff&quot; bordercolordark=&quot;#ffffff&quot; bordercolor=&quot;#ffffff&quot;&gt;&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;20&quot; width=&quot;16&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ibm.com/i/v14/icons/fw.gif&quot; /&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;339&quot;&gt;&lt;a class=&quot;fbox&quot; href=&quot;http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=2697869G30000&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5c81a7&quot;&gt;IDS通信文件.info.servicename&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;80&quot;&gt;&lt;div align=&quot;center&quot;&gt;2009-08-17&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign=&quot;top&quot; bordercolorlight=&quot;#ffffff&quot; bordercolordark=&quot;#ffffff&quot; bordercolor=&quot;#ffffff&quot;&gt;&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;20&quot; width=&quot;16&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ibm.com/i/v14/icons/fw.gif&quot; /&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;339&quot;&gt;&lt;a class=&quot;fbox&quot; href=&quot;http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=2897869G30000&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5c81a7&quot;&gt;audit初步使用&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;80&quot;&gt;&lt;div align=&quot;center&quot;&gt;2009-08-17&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign=&quot;top&quot; bordercolorlight=&quot;#ffffff&quot; bordercolordark=&quot;#ffffff&quot; bordercolor=&quot;#ffffff&quot;&gt;&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;20&quot; width=&quot;16&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ibm.com/i/v14/icons/fw.gif&quot; /&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;339&quot;&gt;&lt;a class=&quot;fbox&quot; href=&quot;http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=2697869G31000&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5c81a7&quot;&gt;Informix 11.5 新特性介绍: 第 1 部分&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;80&quot;&gt;&lt;div align=&quot;center&quot;&gt;2009-08-17&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign=&quot;top&quot; bordercolorlight=&quot;#ffffff&quot; bordercolordark=&quot;#ffffff&quot; bordercolor=&quot;#ffffff&quot;&gt;&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;20&quot; width=&quot;16&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ibm.com/i/v14/icons/fw.gif&quot; /&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;339&quot;&gt;&lt;a class=&quot;fbox&quot; href=&quot;http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=2697869G31001&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5c81a7&quot;&gt;Informix 11.5 新特性介绍: 第 2 部分&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;80&quot;&gt;&lt;div align=&quot;center&quot;&gt;2009-08-17&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign=&quot;top&quot; bordercolorlight=&quot;#ffffff&quot; bordercolordark=&quot;#ffffff&quot; bordercolor=&quot;#ffffff&quot;&gt;&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;20&quot; width=&quot;16&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ibm.com/i/v14/icons/fw.gif&quot; /&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;339&quot;&gt;&lt;a class=&quot;fbox&quot; href=&quot;http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=2697869G31002&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5c81a7&quot;&gt;Informix 11.5 新特性介绍: 第 3 部分&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;80&quot;&gt;&lt;div align=&quot;center&quot;&gt;2009-08-17&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign=&quot;top&quot; bordercolorlight=&quot;#ffffff&quot; bordercolordark=&quot;#ffffff&quot; bordercolor=&quot;#ffffff&quot;&gt;&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;20&quot; width=&quot;16&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ibm.com/i/v14/icons/fw.gif&quot; /&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;339&quot;&gt;&lt;a class=&quot;fbox&quot; href=&quot;http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=2697869G31003&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5c81a7&quot;&gt;Informix 11.5 新特性介绍: 第 4 部分&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;80&quot;&gt;&lt;div align=&quot;center&quot;&gt;2009-08-17&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign=&quot;top&quot; bordercolorlight=&quot;#ffffff&quot; bordercolordark=&quot;#ffffff&quot; bordercolor=&quot;#ffffff&quot;&gt;&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;20&quot; width=&quot;16&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ibm.com/i/v14/icons/fw.gif&quot; /&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;339&quot;&gt;&lt;a class=&quot;fbox&quot; href=&quot;http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=1197869H05000&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5c81a7&quot;&gt;如何卸载Informix产品&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;80&quot;&gt;&lt;div align=&quot;center&quot;&gt;2009-08-17&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign=&quot;top&quot; bordercolorlight=&quot;#ffffff&quot; bordercolordark=&quot;#ffffff&quot; bordercolor=&quot;#ffffff&quot;&gt;&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;20&quot; width=&quot;16&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ibm.com/i/v14/icons/fw.gif&quot; /&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;339&quot;&gt;&lt;a class=&quot;fbox&quot; href=&quot;http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=1897869H05000&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5c81a7&quot;&gt;HDR数据复制过程原理&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;80&quot;&gt;&lt;div align=&quot;center&quot;&gt;2009-08-17&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign=&quot;top&quot; bordercolorlight=&quot;#ffffff&quot; bordercolordark=&quot;#ffffff&quot; bordercolor=&quot;#ffffff&quot;&gt;&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;20&quot; width=&quot;16&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ibm.com/i/v14/icons/fw.gif&quot; /&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;339&quot;&gt;&lt;a class=&quot;fbox&quot; href=&quot;http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=2697869H05000&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5c81a7&quot;&gt;为什么HDR Secondary会丢失已经提交的交易&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;80&quot;&gt;&lt;div align=&quot;center&quot;&gt;2009-08-17&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign=&quot;top&quot; bordercolorlight=&quot;#ffffff&quot; bordercolordark=&quot;#ffffff&quot; bordercolor=&quot;#ffffff&quot;&gt;&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;20&quot; width=&quot;16&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ibm.com/i/v14/icons/fw.gif&quot; /&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;339&quot;&gt;&lt;a class=&quot;fbox&quot; href=&quot;http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=2697869H07000&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5c81a7&quot;&gt;Informix 11.5 新特性介绍: 第 5 部分&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;80&quot;&gt;&lt;div align=&quot;center&quot;&gt;2009-08-17&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign=&quot;top&quot; bordercolorlight=&quot;#ffffff&quot; bordercolordark=&quot;#ffffff&quot; bordercolor=&quot;#ffffff&quot;&gt;&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;20&quot; width=&quot;16&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ibm.com/i/v14/icons/fw.gif&quot; /&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;339&quot;&gt;&lt;a class=&quot;fbox&quot; href=&quot;http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=2697869H07001&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5c81a7&quot;&gt;Informix 11.5 新特性介绍: 第 6 部分&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;80&quot;&gt;&lt;div align=&quot;center&quot;&gt;2009-08-17&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;&lt;table border=&quot;0&quot; cellspacing=&quot;2&quot; cellpadding=&quot;0&quot; width=&quot;443&quot;&gt;&lt;tbody&gt;&lt;tr valign=&quot;top&quot; bordercolorlight=&quot;#ffffff&quot; bordercolordark=&quot;#ffffff&quot; bordercolor=&quot;#ffffff&quot;&gt;&lt;td class=&quot;v14-header-1&quot; colspan=&quot;3&quot;&gt;标题&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;3&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ibm.com/i/c.gif&quot; width=&quot;1&quot; height=&quot;5&quot; /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign=&quot;top&quot; bordercolorlight=&quot;#ffffff&quot; bordercolordark=&quot;#ffffff&quot; bordercolor=&quot;#ffffff&quot;&gt;&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;20&quot; width=&quot;16&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ibm.com/i/v14/icons/fw.gif&quot; /&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;339&quot;&gt;&lt;a class=&quot;fbox&quot; href=&quot;http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=1897869G20000&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5c81a7&quot;&gt;升级到JDBC3.50后，插入数据报“-79783 Encoding or code set not supported”的错误信息&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;80&quot;&gt;&lt;div align=&quot;center&quot;&gt;2009-08-17&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign=&quot;top&quot; bordercolorlight=&quot;#ffffff&quot; bordercolordark=&quot;#ffffff&quot; bordercolor=&quot;#ffffff&quot;&gt;&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;20&quot; width=&quot;16&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ibm.com/i/v14/icons/fw.gif&quot; /&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;339&quot;&gt;&lt;a class=&quot;fbox&quot; href=&quot;http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=1897869G20001&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5c81a7&quot;&gt;JDBC3.50 在WAS 6.0版本上不能正确显示中文的问题&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;80&quot;&gt;&lt;div align=&quot;center&quot;&gt;2009-08-17&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign=&quot;top&quot; bordercolorlight=&quot;#ffffff&quot; bordercolordark=&quot;#ffffff&quot; bordercolor=&quot;#ffffff&quot;&gt;&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;20&quot; width=&quot;16&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ibm.com/i/v14/icons/fw.gif&quot; /&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;339&quot;&gt;&lt;a class=&quot;fbox&quot; href=&quot;http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=1897869G30000&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5c81a7&quot;&gt;HDR环境使用sequence对象可出现重复值&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;80&quot;&gt;&lt;div align=&quot;center&quot;&gt;2009-08-17&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign=&quot;top&quot; bordercolorlight=&quot;#ffffff&quot; bordercolordark=&quot;#ffffff&quot; bordercolor=&quot;#ffffff&quot;&gt;&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;20&quot; width=&quot;16&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ibm.com/i/v14/icons/fw.gif&quot; /&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;339&quot;&gt;&lt;a class=&quot;fbox&quot; href=&quot;http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=1997869E08000&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5c81a7&quot;&gt;如何删除共享内存段&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;80&quot;&gt;&lt;div align=&quot;center&quot;&gt;2009-05-26&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign=&quot;top&quot; bordercolorlight=&quot;#ffffff&quot; bordercolordark=&quot;#ffffff&quot; bordercolor=&quot;#ffffff&quot;&gt;&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;20&quot; width=&quot;16&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ibm.com/i/v14/icons/fw.gif&quot; /&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;339&quot;&gt;&lt;a class=&quot;fbox&quot; href=&quot;http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=1997869E08001&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5c81a7&quot;&gt;Server Hung in Blocked Checkpoint&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;80&quot;&gt;&lt;div align=&quot;center&quot;&gt;2009-05-26&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign=&quot;top&quot; bordercolorlight=&quot;#ffffff&quot; bordercolordark=&quot;#ffffff&quot; bordercolor=&quot;#ffffff&quot;&gt;&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;20&quot; width=&quot;16&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ibm.com/i/v14/icons/fw.gif&quot; /&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;339&quot;&gt;&lt;a class=&quot;fbox&quot; href=&quot;http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=1497869D16000&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5c81a7&quot;&gt;Bufwait问题分析&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;80&quot;&gt;&lt;div align=&quot;center&quot;&gt;2009-05-26&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign=&quot;top&quot; bordercolorlight=&quot;#ffffff&quot; bordercolordark=&quot;#ffffff&quot; bordercolor=&quot;#ffffff&quot;&gt;&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;20&quot; width=&quot;16&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ibm.com/i/v14/icons/fw.gif&quot; /&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;339&quot;&gt;&lt;a class=&quot;fbox&quot; href=&quot;http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=1997869D29000&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5c81a7&quot;&gt;应用插入数据报 -271 错误分析&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;80&quot;&gt;&lt;div align=&quot;center&quot;&gt;2009-05-26&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign=&quot;top&quot; bordercolorlight=&quot;#ffffff&quot; bordercolordark=&quot;#ffffff&quot; bordercolor=&quot;#ffffff&quot;&gt;&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;20&quot; width=&quot;16&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ibm.com/i/v14/icons/fw.gif&quot; /&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;339&quot;&gt;&lt;a class=&quot;fbox&quot; href=&quot;http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=1697869E18000&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5c81a7&quot;&gt;如何重新安装scheduler API&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;80&quot;&gt;&lt;div align=&quot;center&quot;&gt;2009-05-26&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign=&quot;top&quot; bordercolorlight=&quot;#ffffff&quot; bordercolordark=&quot;#ffffff&quot; bordercolor=&quot;#ffffff&quot;&gt;&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;20&quot; width=&quot;16&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ibm.com/i/v14/icons/fw.gif&quot; /&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;339&quot;&gt;&lt;a class=&quot;fbox&quot; href=&quot;http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=1897869E18000&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5c81a7&quot;&gt;Informix配置参数EXTSHMADD用途简述&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;80&quot;&gt;&lt;div align=&quot;center&quot;&gt;2009-05-26&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign=&quot;top&quot; bordercolorlight=&quot;#ffffff&quot; bordercolordark=&quot;#ffffff&quot; bordercolor=&quot;#ffffff&quot;&gt;&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;20&quot; width=&quot;16&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ibm.com/i/v14/icons/fw.gif&quot; /&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;339&quot;&gt;&lt;a class=&quot;fbox&quot; href=&quot;http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=2827869C18000&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5c81a7&quot;&gt;update statistics的功能与作用介绍&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;80&quot;&gt;&lt;div align=&quot;center&quot;&gt;2009-05-21&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign=&quot;top&quot; bordercolorlight=&quot;#ffffff&quot; bordercolordark=&quot;#ffffff&quot; bordercolor=&quot;#ffffff&quot;&gt;&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;20&quot; width=&quot;16&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ibm.com/i/v14/icons/fw.gif&quot; /&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;339&quot;&gt;&lt;a class=&quot;fbox&quot; href=&quot;http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=7897869D15000&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5c81a7&quot;&gt;避免长事务的方法&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;80&quot;&gt;&lt;div align=&quot;center&quot;&gt;2009-05-21&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign=&quot;top&quot; bordercolorlight=&quot;#ffffff&quot; bordercolordark=&quot;#ffffff&quot; bordercolor=&quot;#ffffff&quot;&gt;&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;20&quot; width=&quot;16&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ibm.com/i/v14/icons/fw.gif&quot; /&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;339&quot;&gt;&lt;a class=&quot;fbox&quot; href=&quot;http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=7897869D15001&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5c81a7&quot;&gt;死锁的预防&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;80&quot;&gt;&lt;div align=&quot;center&quot;&gt;2009-05-21&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign=&quot;top&quot; bordercolorlight=&quot;#ffffff&quot; bordercolordark=&quot;#ffffff&quot; bordercolor=&quot;#ffffff&quot;&gt;&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;20&quot; width=&quot;16&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ibm.com/i/v14/icons/fw.gif&quot; /&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;339&quot;&gt;&lt;a class=&quot;fbox&quot; href=&quot;http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=2497869D16000&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5c81a7&quot;&gt;RA_PAGES 和 RA_THRESHOLD 的配置与调整&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;80&quot;&gt;&lt;div align=&quot;center&quot;&gt;2009-05-21&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign=&quot;top&quot; bordercolorlight=&quot;#ffffff&quot; bordercolordark=&quot;#ffffff&quot; bordercolor=&quot;#ffffff&quot;&gt;&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;20&quot; width=&quot;16&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ibm.com/i/v14/icons/fw.gif&quot; /&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;339&quot;&gt;&lt;a class=&quot;fbox&quot; href=&quot;http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=2997869D16000&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5c81a7&quot;&gt;-881 Resulting string length from TRIM exceeds the limit&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;80&quot;&gt;&lt;div align=&quot;center&quot;&gt;2009-05-21&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign=&quot;top&quot; bordercolorlight=&quot;#ffffff&quot; bordercolordark=&quot;#ffffff&quot; bordercolor=&quot;#ffffff&quot;&gt;&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;20&quot; width=&quot;16&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ibm.com/i/v14/icons/fw.gif&quot; /&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;339&quot;&gt;&lt;a class=&quot;fbox&quot; href=&quot;http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=1897869D28000&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5c81a7&quot;&gt;怎样开启IDS的大chunk支持&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;80&quot;&gt;&lt;div align=&quot;center&quot;&gt;2009-05-20&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign=&quot;top&quot; bordercolorlight=&quot;#ffffff&quot; bordercolordark=&quot;#ffffff&quot; bordercolor=&quot;#ffffff&quot;&gt;&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;20&quot; width=&quot;16&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ibm.com/i/v14/icons/fw.gif&quot; /&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;339&quot;&gt;&lt;a class=&quot;fbox&quot; href=&quot;http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=1897869D28001&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5c81a7&quot;&gt;Onstat工具的加强与更新(2)&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;80&quot;&gt;&lt;div align=&quot;center&quot;&gt;2009-05-20&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign=&quot;top&quot; bordercolorlight=&quot;#ffffff&quot; bordercolordark=&quot;#ffffff&quot; bordercolor=&quot;#ffffff&quot;&gt;&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;20&quot; width=&quot;16&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ibm.com/i/v14/icons/fw.gif&quot; /&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;339&quot;&gt;&lt;a class=&quot;fbox&quot; href=&quot;http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=1897869E05000&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5c81a7&quot;&gt;KAIO OUT OF RESOURCE&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;80&quot;&gt;&lt;div align=&quot;center&quot;&gt;2009-05-20&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign=&quot;top&quot; bordercolorlight=&quot;#ffffff&quot; bordercolordark=&quot;#ffffff&quot; bordercolor=&quot;#ffffff&quot;&gt;&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;20&quot; width=&quot;16&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ibm.com/i/v14/icons/fw.gif&quot; /&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;339&quot;&gt;&lt;a class=&quot;fbox&quot; href=&quot;http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=1897869B12000&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5c81a7&quot;&gt;怎样重构或者迁移IDS 11版本中的sysadmin系统数据库。&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;80&quot;&gt;&lt;div align=&quot;center&quot;&gt;2009-04-10&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign=&quot;top&quot; bordercolorlight=&quot;#ffffff&quot; bordercolordark=&quot;#ffffff&quot; bordercolor=&quot;#ffffff&quot;&gt;&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;20&quot; width=&quot;16&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ibm.com/i/v14/icons/fw.gif&quot; /&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;339&quot;&gt;&lt;a class=&quot;fbox&quot; href=&quot;http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=1997869C27000&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5c81a7&quot;&gt;收集数据：informix家族产品必读&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;80&quot;&gt;&lt;div align=&quot;center&quot;&gt;2009-04-10&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign=&quot;top&quot; bordercolorlight=&quot;#ffffff&quot; bordercolordark=&quot;#ffffff&quot; bordercolor=&quot;#ffffff&quot;&gt;&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;20&quot; width=&quot;16&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ibm.com/i/v14/icons/fw.gif&quot; /&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;339&quot;&gt;&lt;a class=&quot;fbox&quot; href=&quot;http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=1697869C26000&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5c81a7&quot;&gt;解决数据库系统中存在的半个汉字问题&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;80&quot;&gt;&lt;div align=&quot;center&quot;&gt;2009-04-10&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign=&quot;top&quot; bordercolorlight=&quot;#ffffff&quot; bordercolordark=&quot;#ffffff&quot; bordercolor=&quot;#ffffff&quot;&gt;&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;20&quot; width=&quot;16&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ibm.com/i/v14/icons/fw.gif&quot; /&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;339&quot;&gt;&lt;a class=&quot;fbox&quot; href=&quot;http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=1697869C26001&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#996699&quot;&gt;实时监控数据库表的数据插入情况&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;80&quot;&gt;&lt;div align=&quot;center&quot;&gt;2009-04-10&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign=&quot;top&quot; bordercolorlight=&quot;#ffffff&quot; bordercolordark=&quot;#ffffff&quot; bordercolor=&quot;#ffffff&quot;&gt;&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;20&quot; width=&quot;16&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ibm.com/i/v14/icons/fw.gif&quot; /&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;339&quot;&gt;&lt;a class=&quot;fbox&quot; href=&quot;http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=1197869C30000&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5c81a7&quot;&gt;如何下载informix产品或补丁版本&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;80&quot;&gt;&lt;div align=&quot;center&quot;&gt;2009-04-10&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign=&quot;top&quot; bordercolorlight=&quot;#ffffff&quot; bordercolordark=&quot;#ffffff&quot; bordercolor=&quot;#ffffff&quot;&gt;&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;20&quot; width=&quot;16&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ibm.com/i/v14/icons/fw.gif&quot; /&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;339&quot;&gt;&lt;a class=&quot;fbox&quot; href=&quot;http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=2897869A07000&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5c81a7&quot;&gt;INFORMIX锁机制及如何分析其锁冲突（第一部分）&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;80&quot;&gt;&lt;div align=&quot;center&quot;&gt;2009-04-03&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign=&quot;top&quot; bordercolorlight=&quot;#ffffff&quot; bordercolordark=&quot;#ffffff&quot; bordercolor=&quot;#ffffff&quot;&gt;&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;20&quot; width=&quot;16&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ibm.com/i/v14/icons/fw.gif&quot; /&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;339&quot;&gt;&lt;a class=&quot;fbox&quot; href=&quot;http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=2897869A08000&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5c81a7&quot;&gt;INFORMIX锁机制及如何分析其锁冲突（第二部分）&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;80&quot;&gt;&lt;div align=&quot;center&quot;&gt;2009-04-03&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign=&quot;top&quot; bordercolorlight=&quot;#ffffff&quot; bordercolordark=&quot;#ffffff&quot; bordercolor=&quot;#ffffff&quot;&gt;&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;20&quot; width=&quot;16&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ibm.com/i/v14/icons/fw.gif&quot; /&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;339&quot;&gt;&lt;a class=&quot;fbox&quot; href=&quot;http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=2897869A20001&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5c81a7&quot;&gt;理解Informix Dynamic Server index B-Tree scanner&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;80&quot;&gt;&lt;div align=&quot;center&quot;&gt;2009-04-03&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign=&quot;top&quot; bordercolorlight=&quot;#ffffff&quot; bordercolordark=&quot;#ffffff&quot; bordercolor=&quot;#ffffff&quot;&gt;&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;20&quot; width=&quot;16&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ibm.com/i/v14/icons/fw.gif&quot; /&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;339&quot;&gt;&lt;a class=&quot;fbox&quot; href=&quot;http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=2897869C27000&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5c81a7&quot;&gt;[Informix数据库服务器数据访问方式分析及优化方法之二&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;80&quot;&gt;&lt;div align=&quot;center&quot;&gt;2009-04-03&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign=&quot;top&quot; bordercolorlight=&quot;#ffffff&quot; bordercolordark=&quot;#ffffff&quot; bordercolor=&quot;#ffffff&quot;&gt;&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;20&quot; width=&quot;16&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ibm.com/i/v14/icons/fw.gif&quot; /&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;339&quot;&gt;&lt;a class=&quot;fbox&quot; href=&quot;http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=2897869C26000&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#996699&quot;&gt;Informix主要系统表的结构及相关字段的含义&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;80&quot;&gt;&lt;div align=&quot;center&quot;&gt;2009-04-01&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign=&quot;top&quot; bordercolorlight=&quot;#ffffff&quot; bordercolordark=&quot;#ffffff&quot; bordercolor=&quot;#ffffff&quot;&gt;&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;20&quot; width=&quot;16&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ibm.com/i/v14/icons/fw.gif&quot; /&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;339&quot;&gt;&lt;a class=&quot;fbox&quot; href=&quot;http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=2997869C27000&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5c81a7&quot;&gt;HP 平台上如何判断是否达到文件描述符使用上限&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;80&quot;&gt;&lt;div align=&quot;center&quot;&gt;2009-04-01&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign=&quot;top&quot; bordercolorlight=&quot;#ffffff&quot; bordercolordark=&quot;#ffffff&quot; bordercolor=&quot;#ffffff&quot;&gt;&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;20&quot; width=&quot;16&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ibm.com/i/v14/icons/fw.gif&quot; /&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;339&quot;&gt;&lt;a class=&quot;fbox&quot; href=&quot;http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=2607869B13000&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5c81a7&quot;&gt;Informix数据库对UTF8字符集的支持&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;80&quot;&gt;&lt;div align=&quot;center&quot;&gt;2009-04-01&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign=&quot;top&quot; bordercolorlight=&quot;#ffffff&quot; bordercolordark=&quot;#ffffff&quot; bordercolor=&quot;#ffffff&quot;&gt;&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;20&quot; width=&quot;16&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ibm.com/i/v14/icons/fw.gif&quot; /&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;339&quot;&gt;&lt;a class=&quot;fbox&quot; href=&quot;http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=1897869B26000&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5c81a7&quot;&gt;如何除去表中数据回车符的方法&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;80&quot;&gt;&lt;div align=&quot;center&quot;&gt;2009-04-01&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/p&gt;&lt;p&gt;&lt;table border=&quot;0&quot; cellspacing=&quot;2&quot; cellpadding=&quot;0&quot; width=&quot;443&quot;&gt;&lt;tbody&gt;&lt;tr valign=&quot;top&quot; bordercolorlight=&quot;#ffffff&quot; bordercolordark=&quot;#ffffff&quot; bordercolor=&quot;#ffffff&quot;&gt;&lt;td class=&quot;v14-header-1&quot; colspan=&quot;3&quot;&gt;标题&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;3&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ibm.com/i/c.gif&quot; width=&quot;1&quot; height=&quot;5&quot; /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign=&quot;top&quot; bordercolorlight=&quot;#ffffff&quot; bordercolordark=&quot;#ffffff&quot; bordercolor=&quot;#ffffff&quot;&gt;&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;20&quot; width=&quot;16&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ibm.com/i/v14/icons/fw.gif&quot; /&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;339&quot;&gt;&lt;a class=&quot;fbox&quot; href=&quot;http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=1857869C25000&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5c81a7&quot;&gt;Errors -25573 and oserr = 233 or Network driver cannot accept a connection on the port&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;80&quot;&gt;&lt;div align=&quot;center&quot;&gt;2009-04-01&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign=&quot;top&quot; bordercolorlight=&quot;#ffffff&quot; bordercolordark=&quot;#ffffff&quot; bordercolor=&quot;#ffffff&quot;&gt;&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;20&quot; width=&quot;16&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ibm.com/i/v14/icons/fw.gif&quot; /&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;339&quot;&gt;&lt;a class=&quot;fbox&quot; href=&quot;http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=2997869C27000&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5c81a7&quot;&gt;HP 平台上如何判断是否达到文件描述符使用上限&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;80&quot;&gt;&lt;div align=&quot;center&quot;&gt;2009-04-01&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign=&quot;top&quot; bordercolorlight=&quot;#ffffff&quot; bordercolordark=&quot;#ffffff&quot; bordercolor=&quot;#ffffff&quot;&gt;&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;20&quot; width=&quot;16&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ibm.com/i/v14/icons/fw.gif&quot; /&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;339&quot;&gt;&lt;a class=&quot;fbox&quot; href=&quot;http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=2807869C30000&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5c81a7&quot;&gt;Informix XPS 安装配置和基本使用&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;80&quot;&gt;&lt;div align=&quot;center&quot;&gt;2009-04-01&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign=&quot;top&quot; bordercolorlight=&quot;#ffffff&quot; bordercolordark=&quot;#ffffff&quot; bordercolor=&quot;#ffffff&quot;&gt;&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;20&quot; width=&quot;16&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ibm.com/i/v14/icons/fw.gif&quot; /&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;339&quot;&gt;&lt;a class=&quot;fbox&quot; href=&quot;http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=7697869C26000&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5c81a7&quot;&gt;informix 虚拟处理器&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;80&quot;&gt;&lt;div align=&quot;center&quot;&gt;2009-04-01&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign=&quot;top&quot; bordercolorlight=&quot;#ffffff&quot; bordercolordark=&quot;#ffffff&quot; bordercolor=&quot;#ffffff&quot;&gt;&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;20&quot; width=&quot;16&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ibm.com/i/v14/icons/fw.gif&quot; /&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;339&quot;&gt;&lt;a class=&quot;fbox&quot; href=&quot;http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=1697869B12000&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5c81a7&quot;&gt;有关informix BTS defect问题导致IDS数据库系统运行故障的说明。&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;80&quot;&gt;&lt;div align=&quot;center&quot;&gt;2009-02-17&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign=&quot;top&quot; bordercolorlight=&quot;#ffffff&quot; bordercolordark=&quot;#ffffff&quot; bordercolor=&quot;#ffffff&quot;&gt;&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;20&quot; width=&quot;16&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ibm.com/i/v14/icons/fw.gif&quot; /&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;339&quot;&gt;&lt;a class=&quot;fbox&quot; href=&quot;http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=2427869A19000&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#996699&quot;&gt;informix中理解统计更新&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;80&quot;&gt;&lt;div align=&quot;center&quot;&gt;2009-02-17&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign=&quot;top&quot; bordercolorlight=&quot;#ffffff&quot; bordercolordark=&quot;#ffffff&quot; bordercolor=&quot;#ffffff&quot;&gt;&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;20&quot; width=&quot;16&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ibm.com/i/v14/icons/fw.gif&quot; /&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;339&quot;&gt;&lt;a class=&quot;fbox&quot; href=&quot;http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=1897869B13000&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#996699&quot;&gt;informix客户端连接数据库,报密码错误&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;80&quot;&gt;&lt;div align=&quot;center&quot;&gt;2009-02-17&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign=&quot;top&quot; bordercolorlight=&quot;#ffffff&quot; bordercolordark=&quot;#ffffff&quot; bordercolor=&quot;#ffffff&quot;&gt;&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;20&quot; width=&quot;16&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ibm.com/i/v14/icons/fw.gif&quot; /&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;339&quot;&gt;&lt;a class=&quot;fbox&quot; href=&quot;http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=2897869A12000&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5c81a7&quot;&gt;Informix数据库服务器数据访问方式分析及优化方法第一部分&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;80&quot;&gt;&lt;div align=&quot;center&quot;&gt;2009-02-17&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign=&quot;top&quot; bordercolorlight=&quot;#ffffff&quot; bordercolordark=&quot;#ffffff&quot; bordercolor=&quot;#ffffff&quot;&gt;&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;20&quot; width=&quot;16&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ibm.com/i/v14/icons/fw.gif&quot; /&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;339&quot;&gt;&lt;a class=&quot;fbox&quot; href=&quot;http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=1897869A13000&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5c81a7&quot;&gt;使用onlog查找、验证历史信息&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;80&quot;&gt;&lt;div align=&quot;center&quot;&gt;2009-02-13&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign=&quot;top&quot; bordercolorlight=&quot;#ffffff&quot; bordercolordark=&quot;#ffffff&quot; bordercolor=&quot;#ffffff&quot;&gt;&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;20&quot; width=&quot;16&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ibm.com/i/v14/icons/fw.gif&quot; /&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;339&quot;&gt;&lt;a class=&quot;fbox&quot; href=&quot;http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=1897869A22000&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5c81a7&quot;&gt;如何kill分布式事务类型的长事务&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;80&quot;&gt;&lt;div align=&quot;center&quot;&gt;2009-02-13&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign=&quot;top&quot; bordercolorlight=&quot;#ffffff&quot; bordercolordark=&quot;#ffffff&quot; bordercolor=&quot;#ffffff&quot;&gt;&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;20&quot; width=&quot;16&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ibm.com/i/v14/icons/fw.gif&quot; /&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;339&quot;&gt;&lt;a class=&quot;fbox&quot; href=&quot;http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=1197869A13000&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5c81a7&quot;&gt;Informix与client SDK安装顺序，及其匹配原则&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;80&quot;&gt;&lt;div align=&quot;center&quot;&gt;2009-02-13&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign=&quot;top&quot; bordercolorlight=&quot;#ffffff&quot; bordercolordark=&quot;#ffffff&quot; bordercolor=&quot;#ffffff&quot;&gt;&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;20&quot; width=&quot;16&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ibm.com/i/v14/icons/fw.gif&quot; /&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;339&quot;&gt;&lt;a class=&quot;fbox&quot; href=&quot;http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=1697869A22000&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5c81a7&quot;&gt;IDS 7版与IDS 9版HDR的差异&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;80&quot;&gt;&lt;div align=&quot;center&quot;&gt;2009-02-13&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr valign=&quot;top&quot; bordercolorlight=&quot;#ffffff&quot; bordercolordark=&quot;#ffffff&quot; bordercolor=&quot;#ffffff&quot;&gt;&lt;td bgcolor=&quot;#ffffff&quot; height=&quot;20&quot; width=&quot;16&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://www.ibm.com/i/v14/icons/fw.gif&quot; /&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;339&quot;&gt;&lt;a class=&quot;fbox&quot; href=&quot;http://www-900.ibm.com/cn/support/viewdoc/detail?DocId=1897868L24000&quot; target=&quot;_blank&quot;&gt;&lt;font color=&quot;#5c81a7&quot;&gt;如何估算长事务回滚的时间&lt;/font&gt;&lt;/a&gt;&lt;/td&gt;&lt;td bgcolor=&quot;#ffffff&quot; width=&quot;80&quot;&gt;&lt;div align=&quot;center&quot;&gt;2009-02-09&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
		<guid>http://www.517sou.net/Article/403.aspx</guid>
		<trackback:ping>http://www.517sou.net/Article/403/Trackback.ashx</trackback:ping>
		<comments>http://www.517sou.net/Article/403.aspx#CommentPostAnchor</comments>
		<wfw:commentRss>http://www.517sou.net/Article/403/Feeds.ashx</wfw:commentRss>
	</item>
	<item>
		<link>http://www.517sou.net/Article/402.aspx</link>
		<title>浅谈Java中的垃圾回收机制</title>
		<author>shanyiwan@live.com(flyinweb)</author>
		<category>技术文摘</category>
		<pubDate>Fri, 22 Jan 2010 08:37:54 GMT</pubDate>
		<description>&lt;p&gt;1.垃圾回收是一种动态存储管理技术，它自动地释放不再被程序引用的对象，按照特定的垃圾收集算法来实现资源自动回收的功能。当一个对象不再被引用的时候，内存回收它占领的空间，以便空间被后来的新对象使用。&lt;br /&gt;事实上，除了释放没用的对象，垃圾收集也可以清除内存记录碎片。&lt;br /&gt;2.但是任何一种垃圾收集算法一般要做2件基本的事情：（1）发现无用信息对象；（2）回收被无用对象占用的内存空间，使该空间可被程序再次使用。&lt;br /&gt;如何来发现无用的信息对象呢？如何来回收呢？&lt;br /&gt;3.大多数垃圾回收算法使用了根集(root set)这个概念；所谓根集就量正在执行的Java程序可以访问的引用变量的集合(包括局部变量、参数、类变量)，程序可以使用引用变量访问对象的属性和调用对象的方法。垃圾收集首选需要确定从根开始哪些是可达的和哪些是不可达的，从根集可达的对象都是活动对象，它们不能作为垃圾被回收，这也包括从根集间接可达的对象。而根集通过任意路径不可达的对象符合垃圾收集的条件，应该被回收。&lt;/p&gt;&lt;p&gt;&lt;br /&gt;1、 引用计数法(Reference Counting Collector)&lt;br /&gt;&lt;br /&gt;　　引用计数法是唯一没有使用根集的垃圾回收的法，该算法使用引用计数器来区分存活对象和不再使用的对象。一般来说，堆中的每个对象对应一个引用计数器。当每一次创建一个对象(new一个对象)并赋给一个变量时，引用计数器置为 1。当对象被赋给任意变量时，引用计数器每次加1当对象出了作用域后(该对象丢弃不再使用，请问是什么知道这个对象 是不要用了呢？)，引用计数器减1，一旦引用计数器为0，对象就满足了垃圾收集的条件。&lt;br /&gt;&lt;br /&gt;2、tracing算法(Tracing Collector)&lt;br /&gt;&lt;br /&gt;　　tracing算法是为了解决引用计数法的问题而提出，它使用了根集的概念。基于tracing算法的垃圾收集器从根集开始扫描，识别出哪些对象可达，哪些对象不可达，并用某种方式标记可达对象，例如对每个可达对象设置一个或多个位。在扫描识别过程中，基于tracing算法的垃圾收集也称为标记和清除(mark-and-sweep)垃圾收集器.&lt;br /&gt;&lt;br /&gt;3、compacting算法(Compacting Collector)&lt;br /&gt;&lt;br /&gt;　　为了解决堆碎片问题，基于tracing的垃圾回收吸收了Compacting算法的思想，在清除的过程中，算法将所有的对象移到堆的一端，堆的另一端就变成了一个相邻的空闲内存区，收集器会对它移动的所有对象的所有引用进行更新，使得这些引用在新的位置能识别原来 的对象。在基于Compacting算法的收集器的实现中，一般增加句柄和句柄表。　　&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style=&quot;color: rgb(255,0,0)&quot;&gt;分代垃圾回收详述&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p style=&quot;text-align: left&quot;&gt;&lt;img class=&quot;Image&quot; alt=&quot;&quot; src=&quot;http://www.517sou.net/Attach/month_1001/vyj09p_150432_1.gif&quot; /&gt;&lt;br /&gt;如上图所示，为Java堆中的各代分布。&lt;/p&gt;&lt;ol style=&quot;text-align: left&quot;&gt;&lt;li&gt;&lt;strong&gt;Young（年轻代）&lt;br /&gt;&lt;/strong&gt;年轻代分三个区。一个Eden区，两个Survivor区。大部分对象在 Eden区中生成。当Eden区满时，还存活的对象将被复制到Survivor区（两个中的一个），当这个Survivor区满时，此区的存活对象将被复制到另外一个Survivor区，当这个Survivor去也满了的时候，从第一个Survivor区复制过来的并且此时还存活的对象，将被复制“年老区 (Tenured)”。需要注意，Survivor的两个区是对称的，没先后关系，所以同一个区中可能同时存在从Eden复制过来对象，和从前一个Survivor复制过来的对象，而复制到年老区的只有从第一个Survivor去过来的对象。而且，Survivor区总有一个是空的。&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Tenured（年老代）&lt;br /&gt;&lt;/strong&gt;年老代存放从年轻代存活的对象。一般来说年老代存放的都是生命期较长的对象。&lt;/li&gt;&lt;li style=&quot;text-align: left&quot;&gt;&lt;strong&gt;Perm（持久代）&lt;br /&gt;&lt;/strong&gt;用于存放静态文件，如今 Java类、方法等。持久代对垃圾回收没有显著影响，但是有些应用可能动态生成或者调用一些class，例如Hibernate等，在这种时候需要设置一个比较大的持久代空间来存放这些运行过程中新增的类。持久代大小通过-XX:MaxPermSize=&amp;lt;N&amp;gt;进行设置。&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;strong&gt;&lt;span style=&quot;color: rgb(255,0,0)&quot;&gt;GC类型&lt;/span&gt;&lt;br /&gt;&lt;/strong&gt;GC有两种类型：&lt;strong&gt;Scavenge GC和Full GC&lt;/strong&gt;。&lt;/p&gt;&lt;ol style=&quot;text-align: left&quot;&gt;&lt;li&gt;Scavenge GC&lt;br /&gt;一般情况下，当新对象生成，并且在Eden申请空间失败时，就好触发Scavenge GC，堆Eden区域进行GC，清除非存活对象，并且把尚且存活的对象移动到Survivor区。然后整理Survivor的两个区。&lt;/li&gt;&lt;li&gt;&lt;p&gt;Full GC&lt;br /&gt;对整个堆进行整理，包括Young、Tenured和Perm。Full GC比Scavenge GC要慢，因此应该尽可能减少Full GC。有如下原因可能导致Full GC：&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Tenured被写满&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;Perm域被写满&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;System.gc()被显示调用&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;上一次GC之后Heap的各域分配策略动态变化&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;目前的收集器主要有三种：&lt;strong&gt;串行收集器、并行收集器、并发收集器&lt;/strong&gt;。&lt;br /&gt;&lt;/p&gt;&lt;ol style=&quot;text-align: left&quot;&gt;&lt;li&gt;&lt;strong&gt;串行收集器&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;使用单线程处理所有垃圾回收工作，因为无需多线程交互，所以效率比较高。但是，也无法使用多处理器的优势，所以此收集器适合单处理器机器。当然，此收集器也可以用在小数据量（&lt;strong&gt;100M&lt;/strong&gt;左右）情况下的多处理器机器上。可以使用&lt;strong&gt;-XX:+UseSerialGC&lt;/strong&gt;打开。&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;并行收集器&lt;br /&gt;&lt;/strong&gt;&amp;nbsp;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;对年轻代进行并行垃圾回收，因此可以减少垃圾回收时间。一般在多线程多处理器机器上使用。使用&lt;strong&gt;-XX:+UseParallelGC&lt;/strong&gt;.打开。并行收集器在J2SE5.0第六6更新上引入，在Java SE6.0中进行了增强--可以堆年老代进行并行收集。&lt;strong&gt;如果年老代不使用并发收集的话，是使用单线程进行垃圾回收&lt;/strong&gt;，因此会制约扩展能力。使用&lt;strong&gt;-XX:+UseParallelOldGC&lt;/strong&gt;打开。&lt;/li&gt;&lt;li&gt;使用&lt;strong&gt;-XX:ParallelGCThreads=&amp;lt;N&amp;gt;&lt;/strong&gt;设置并行垃圾回收的线程数。&lt;strong&gt;此值可以设置与机器处理器数量相等&lt;/strong&gt;。&lt;/li&gt;&lt;li&gt;&lt;p&gt;此收集器可以进行如下配置：&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;最大垃圾回收暂停:&lt;/strong&gt;指定垃圾回收时的最长暂停时间，通过&lt;strong&gt;-XX:MaxGCPauseMillis=&amp;lt;N&amp;gt;&lt;/strong&gt;指定。&amp;lt;N&amp;gt;为毫秒.如果指定了此值的话，&lt;strong&gt;堆大小和垃圾回收相关参数会进行调整以达到指定值&lt;/strong&gt;。设定此值可能会减少应用的吞吐量。&lt;/li&gt;&lt;li&gt;&lt;strong&gt;吞吐量:&lt;/strong&gt;吞吐量为&lt;strong&gt;垃圾回收时间与非垃圾回收时间的比值&lt;/strong&gt;，通过&lt;strong&gt;-XX:GCTimeRatio=&amp;lt;N&amp;gt;&lt;/strong&gt;来设定，公式为&lt;strong&gt;1/（1+N）&lt;/strong&gt;。例如，-XX:GCTimeRatio=19时，表示5%的时间用于垃圾回收。默认情况为99，即1%的时间用于垃圾回收。&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;并发收集器&lt;br /&gt;&lt;/strong&gt;可以保证大部分工作都并发进行（应用不停止），垃圾回收只暂停很少的时间，此收集器适合对响应时间要求比较高的中、大规模应用。使用&lt;strong&gt;-XX:+UseConcMarkSweepGC&lt;/strong&gt;打开。&lt;br /&gt;&amp;nbsp;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;并发收集器主要减少年老代的暂停时间，他在应用不停止的情况下使用独立的垃圾回收线程，跟踪可达对象。在每个年老代垃圾回收周期中，在收集初期并发收集器会对整个应用进行简短的暂停，在收集中还会再暂停一次。第二次暂停会比第一次稍长，在此过程中多个线程同时进行垃圾回收工作。&lt;/li&gt;&lt;li&gt;并发收集器使用&lt;strong&gt;处理器换来短暂的停顿时间&lt;/strong&gt;。在一个N个处理器的系统上，并发收集部分使用&lt;strong&gt;K/N&lt;/strong&gt;个可用处理器进行回收，一般情况下&lt;strong&gt;1&amp;lt;=K&amp;lt;=N/4&lt;/strong&gt;。&lt;/li&gt;&lt;li&gt;在只有&lt;strong&gt;一个处理器的主机上使用并发收集器&lt;/strong&gt;，设置为&lt;strong&gt;incremental mode&lt;/strong&gt;模式也可获得较短的停顿时间。&lt;/li&gt;&lt;li&gt;&lt;strong&gt;浮动垃圾&lt;/strong&gt;：由于在应用运行的同时进行垃圾回收，所以有些垃圾可能在垃圾回收进行完成时产生，这样就造成了“Floating Garbage”，这些垃圾需要在下次垃圾回收周期时才能回收掉。所以，并发收集器一般需要&lt;strong&gt;20%&lt;/strong&gt;的预留空间用于这些浮动垃圾。&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Concurrent Mode Failure&lt;/strong&gt;：并发收集器在应用运行时进行收集，所以需要保证堆在垃圾回收的这段时间有足够的空间供程序使用，否则，垃圾回收还未完成，堆空间先满了。这种情况下将会发生“并发模式失败”，此时整个应用将会暂停，进行垃圾回收。&lt;/li&gt;&lt;li&gt;&lt;strong&gt;启动并发收集器&lt;/strong&gt;：因为并发收集在应用运行时进行收集，所以必须保证收集完成之前有足够的内存空间供程序使用，否则会出现“Concurrent Mode Failure”。通过设置&lt;strong&gt;-XX:CMSInitiatingOccupancyFraction=&amp;lt;N&amp;gt;&lt;/strong&gt;指定还有多少剩余堆时开始执行并发收集&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;小结&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;串行处理器：&lt;/strong&gt;&lt;br /&gt;--适用情况：数据量比较小（100M左右）；单处理器下并且对响应时间无要求的应用。&lt;br /&gt;--缺点：只能用于小型应用&lt;/li&gt;&lt;li&gt;&lt;strong&gt;并行处理器：&lt;/strong&gt;&lt;br /&gt;--适用情况：“对吞吐量有高要求”，多CPU、对应用响应时间无要求的中、大型应用。举例：后台处理、科学计算。&lt;br /&gt;--缺点：应用响应时间可能较长&lt;/li&gt;&lt;li&gt;&lt;strong&gt;并发处理器：&lt;br /&gt;&lt;/strong&gt;--适用情况：“对响应时间有高要求”，多CPU、对应用响应时间有较高要求的中、大型应用。举例：Web服务器/应用服务器、电信交换、集成开发环境。&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;ol style=&quot;text-align: left&quot;&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;堆大小设置&lt;br /&gt;&lt;/strong&gt;JVM 中最大堆大小有三方面限制：相关操作系统的数据模型（32-bt还是64-bit）限制；系统的可用虚拟内存限制；系统的可用物理内存限制。32位系统下，一般限制在1.5G~2G；64为操作系统对内存无限制。我在Windows Server 2003 系统，3.5G物理内存，JDK5.0下测试，最大可设置为1478m。&lt;br /&gt;&lt;code&gt;&lt;strong&gt;&lt;span style=&quot;font-family: NSimsun&quot;&gt;典型设置：&lt;/span&gt;&lt;/strong&gt;&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;pre&gt;&lt;ol class=&quot;dp-xml&quot;&gt;&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span&gt;java&amp;nbsp;-Xmx3550m&amp;nbsp;-Xms3550m&amp;nbsp;-Xss128k&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;attribute&quot;&gt;-XX:NewRatio&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class=&quot;attribute-value&quot;&gt;4&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;attribute&quot;&gt;-XX:SurvivorRatio&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class=&quot;attribute-value&quot;&gt;4&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;attribute&quot;&gt;-XX:MaxPermSize&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class=&quot;attribute-value&quot;&gt;16m&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;attribute&quot;&gt;-XX:MaxTenuringThreshold&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class=&quot;attribute-value&quot;&gt;0&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;font-family: NSimsun&quot;&gt;&lt;code&gt;&lt;strong&gt;说明：&lt;/strong&gt;&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;font-family: NSimsun&quot;&gt;&lt;code&gt;&lt;strong&gt;-Xmx3550m&lt;/strong&gt;：设置JVM最大可用内存为3550M。&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;font-family: NSimsun&quot;&gt;&lt;code&gt;&lt;strong&gt;-Xms3550m&lt;/strong&gt;&lt;/code&gt;&lt;/span&gt;&lt;span style=&quot;font-family: NSimsun&quot;&gt;&lt;code&gt;：设置JVM促使内存为3550m。此值可以设置与-Xmx相同，以避免每次垃圾回收完成后JVM重新分配内存。&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;font-family: NSimsun&quot;&gt;&lt;code&gt;&lt;strong&gt;&lt;span style=&quot;color: rgb(255,0,0)&quot;&gt;-Xmn2g&lt;/span&gt;&lt;/strong&gt;&lt;/code&gt;&lt;/span&gt;&lt;span style=&quot;font-family: NSimsun&quot;&gt;&lt;code&gt;：设置年轻代大小为2G。&lt;strong&gt;&lt;span style=&quot;color: rgb(0,0,255)&quot;&gt;整个堆大小=年轻代大小 + 年老代大小 + 持久代大小&lt;/span&gt;&lt;/strong&gt;。持久代一般固定大小为64m，所以增大年轻代后，将会减小年老代大小。此值对系统性能影响较大，Sun官方推荐配置为整个堆的3/8。&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span&gt;&lt;span style=&quot;font-family: NSimsun&quot;&gt;&lt;code&gt;&lt;strong&gt;-Xss128k&lt;/strong&gt;&lt;/code&gt;&lt;/span&gt;&lt;code&gt;&lt;span style=&quot;font-family: NSimsun&quot;&gt;：设置每个线程的堆栈大小。JDK5.0以后每个线程堆栈大小为1M，以前每个线程堆栈大小为256K。更具应用的线程所需内存大小进行调整。在相同物理内存下，减小这个值能生成更多的线程。但是操作系统对一个进程内的线程数还是有限制的，不能无限生成，经验值在3000~5000左右。&lt;/span&gt;&lt;/code&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class=&quot;alt&quot;&gt;&lt;span style=&quot;font-family: NSimsun&quot;&gt;&lt;code&gt;&lt;strong&gt;-XX:NewRatio=4&lt;/strong&gt;&lt;/code&gt;&lt;/span&gt;&lt;span style=&quot;font-family: NSimsun&quot;&gt;&lt;code&gt;:设置年轻代（包括Eden和两个Survivor区）与年老代的比值（除去持久代）。设置为4，则年轻代与年老代所占比值为1：4，年轻代占整个堆栈的1/5&lt;/code&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/pre&gt;&lt;pre&gt;&lt;ol class=&quot;dp-xml&quot;&gt;&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span&gt;java&amp;nbsp;-Xmx3550m&amp;nbsp;-Xms3550m&amp;nbsp;-Xss128k&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;attribute&quot;&gt;-XX:NewRatio&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class=&quot;attribute-value&quot;&gt;4&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;attribute&quot;&gt;-XX:SurvivorRatio&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class=&quot;attribute-value&quot;&gt;4&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;attribute&quot;&gt;-XX:MaxPermSize&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class=&quot;attribute-value&quot;&gt;16m&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;attribute&quot;&gt;-XX:MaxTenuringThreshold&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class=&quot;attribute-value&quot;&gt;0&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li class=&quot;alt&quot;&gt;&lt;b&gt;&lt;span&gt;说明：&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;&lt;li class=&quot;alt&quot;&gt;&lt;span class=&quot;attribute&quot;&gt;-XX:NewRatio&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class=&quot;attribute-value&quot;&gt;4&lt;/span&gt;&lt;span&gt;:设置年轻代（包括Eden和两个Survivor区）与年老代的比值（除去持久代）。设置为4，则年轻代与年老代所占比值为1：4，年轻代占整个堆栈的1/5 &amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class=&quot;alt&quot;&gt;&lt;span class=&quot;attribute&quot;&gt;-XX:SurvivorRatio&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class=&quot;attribute-value&quot;&gt;4&lt;/span&gt;&lt;span&gt;：设置年轻代中Eden区与Survivor区的大小比值。设置为4，则两个Survivor区与一个Eden区的比值为2:4，一个Survivor区占整个年轻代的1/6 &amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class=&quot;alt&quot;&gt;&lt;span class=&quot;attribute&quot;&gt;-XX:MaxPermSize&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class=&quot;attribute-value&quot;&gt;16m&lt;/span&gt;&lt;span&gt;:设置持久代大小为16m。 &amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class=&quot;alt&quot;&gt;&lt;span class=&quot;attribute&quot;&gt;-XX:MaxTenuringThreshold&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class=&quot;attribute-value&quot;&gt;0&lt;/span&gt;&lt;span&gt;：设置垃圾最大年龄。&lt;b&gt;&lt;span style=&quot;color: #0000ff&quot;&gt;如果设置为0的话，则年轻代对象不经过Survivor区，直接进入年老代。&lt;/span&gt;&lt;/b&gt;对于年老代比较多的应用，可以提高效率。&lt;span style=&quot;color: #0000ff&quot;&gt;&lt;b&gt;如果将此值设置为一个较大值，则年轻代对象会在Survivor区进行多次复制，这样可以增加对象再年轻代的存活时间&lt;/b&gt;&lt;/span&gt;，增加在年轻代即被回收的概论。 &amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/pre&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;常见配置汇总&lt;/strong&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;p&gt;堆设置&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;-Xms&lt;/strong&gt;:初始堆大小&lt;/li&gt;&lt;li&gt;&lt;strong&gt;-Xmx&lt;/strong&gt;:最大堆大小&lt;/li&gt;&lt;li&gt;&lt;strong&gt;-XX:NewSize=n&lt;/strong&gt;:设置年轻代大小&lt;/li&gt;&lt;li&gt;&lt;strong&gt;-XX:NewRatio=n:&lt;/strong&gt;设置年轻代和年老代的比值。如:为3，表示年轻代与年老代比值为1：3，年轻代占整个年轻代年老代和的1/4&lt;/li&gt;&lt;li&gt;&lt;strong&gt;-XX:SurvivorRatio=n&lt;/strong&gt;:年轻代中Eden区与两个Survivor区的比值。注意Survivor区有两个。如：3，表示Eden：Survivor=3：2，一个Survivor区占整个年轻代的1/5&lt;/li&gt;&lt;li&gt;&lt;strong&gt;-XX:MaxPermSize=n&lt;/strong&gt;:设置持久代大小&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;p&gt;收集器设置&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;-XX:+UseSerialGC&lt;/strong&gt;:设置串行收集器&lt;/li&gt;&lt;li&gt;&lt;strong&gt;-XX:+UseParallelGC&lt;/strong&gt;:设置并行收集器&lt;/li&gt;&lt;li&gt;&lt;strong&gt;-XX:+UseParalledlOldGC&lt;/strong&gt;:设置并行年老代收集器&lt;/li&gt;&lt;li&gt;&lt;strong&gt;-XX:+UseConcMarkSweepGC&lt;/strong&gt;:设置并发收集器&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;p&gt;垃圾回收统计信息&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;-XX:+PrintGC&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;-XX:+PrintGCDetails&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;-XX:+PrintGCTimeStamps&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;-Xloggc:filename&lt;/strong&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;p&gt;并行收集器设置&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;-XX:ParallelGCThreads=n&lt;/strong&gt;:设置并行收集器收集时使用的CPU数。并行收集线程数。&lt;/li&gt;&lt;li&gt;&lt;strong&gt;-XX:MaxGCPauseMillis=n&lt;/strong&gt;:设置并行收集最大暂停时间&lt;/li&gt;&lt;li&gt;&lt;strong&gt;-XX:GCTimeRatio=n&lt;/strong&gt;:设置垃圾回收时间占程序运行时间的百分比。公式为1/(1+n)&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;并发收集器设置&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;-XX:+CMSIncrementalMode&lt;/strong&gt;:设置为增量模式。适用于单CPU情况。&lt;/li&gt;&lt;li&gt;&lt;strong&gt;-XX:ParallelGCThreads=n&lt;/strong&gt;:设置并发收集器年轻代收集方式为并行收集时，使用的CPU数。并行收集线程数&lt;/li&gt;&lt;/ul&gt;</description>
		<guid>http://www.517sou.net/Article/402.aspx</guid>
		<trackback:ping>http://www.517sou.net/Article/402/Trackback.ashx</trackback:ping>
		<comments>http://www.517sou.net/Article/402.aspx#CommentPostAnchor</comments>
		<wfw:commentRss>http://www.517sou.net/Article/402/Feeds.ashx</wfw:commentRss>
	</item>
	<item>
		<link>http://www.517sou.net/Article/401.aspx</link>
		<title>php中session过期时间设置</title>
		<author>shanyiwan@live.com(flyinweb)</author>
		<category>技术文摘</category>
		<pubDate>Fri, 22 Jan 2010 02:34:52 GMT</pubDate>
		<description>&lt;p&gt;php中session过期时间设置：修改PHP配置文件中的session.gc_maxlifetime。&lt;/p&gt;&lt;p&gt;概述：每一次php请求，会有1/100的概率（默认值）触发“session回收”。如果“session回收”发生，那就会检查/tmp/sess_*的文件，如果最后的修改时间到现在超过了1440秒（gc_maxlifetime的值），就将其删除，意味着这些session过期失效。&lt;/p&gt;&lt;p&gt;&lt;font color=&quot;#ff0000&quot;&gt;1. session在Server&lt;/font&gt;&lt;font color=&quot;#ff0000&quot;&gt;端（一般是Apache with PHP module）如何存在的？&lt;/font&gt;&lt;/p&gt;&lt;p&gt;默认的，php会将session保存在/tmp目录下，文件名为这个样子：sess_01aab840166fd1dc253e3b4a3f0b8381。每一个文件对应了一个session（会话）。&lt;/p&gt;&lt;div class=&quot;mycode&quot;&gt;more /tmp/sess_01aab840166fd1dc253e3b4a3f0b8381&lt;br /&gt;username|s:9:”jiangfeng”;admin|s:1:”0″;&lt;br /&gt;#变量名|类型:长度:值&lt;/div&gt;&lt;p&gt;删除这里的session文件，就表示对应的session失效了。&lt;/p&gt;&lt;p&gt;&lt;font color=&quot;#ff0000&quot;&gt;2. session在client端（一般是浏览器）如何存在的？&lt;/font&gt;&lt;/p&gt;&lt;p&gt;session在浏览器端，只需要保存session ID（由server端生成的唯一ID）就可以了。有两种保存方式：在cookie中、在url里面。如果cookie中保存session ID，就可以看到浏览器的cookie中有一个PHPSESID变量。如果是URL传递的，就可以看到形如:&lt;br /&gt;index.php?PHPSESID=01aab840166fd1dc253e3b4a3f0b8381的URL。（在server端通过session.use_cookies来控制使用哪一种方式）&lt;/p&gt;&lt;p&gt;&lt;font color=&quot;#ff0000&quot;&gt;3. 在server端，php如何判断session文件是否过期？&lt;/font&gt;&lt;/p&gt;&lt;p&gt;如果”最后的修改时间”到”现在”超过了gc_maxlifetime（默认是1440）秒，这个session文件就被认为是过期了，在下一次session回收的时候，如果这个文件仍然没有被更改过，这个session文件就会被删除（session就过期了）。&lt;/p&gt;&lt;p&gt;简单的说，如果我登录到某网站，如果在1440秒（默认值）内没有操作过，那么对应的session就认为是过期了。&lt;/p&gt;&lt;p&gt;所以，修改php.ini文件中的gc_maxlifetime变量就可以延长session的过期时间了：（例如，我们把过期时间修改为86400秒）&lt;/p&gt;&lt;div class=&quot;mycode&quot;&gt;session.gc_maxlifetime = 86400&lt;/div&gt;&lt;p&gt;然后，重启你的web服务（一般是apache）就可以了。&lt;/p&gt;&lt;p&gt;注意：php5里面session过期使用了回收机制。这里设置时间为86400秒，如果session在86400秒内没有被修改过，那么在下一次“回收”时才真的被删除。&lt;/p&gt;&lt;p&gt;&lt;font color=&quot;#ff0000&quot;&gt;3. session“回收”何时发生？&lt;/font&gt;&lt;/p&gt;&lt;p&gt;默认情况下，每一次php请求，就会有1/100的概率发生回收，所以可能简单的理解为“每100次php请求就有一次回收发生”。这个概率是通过以下参数控制的&lt;/p&gt;&lt;div class=&quot;mycode&quot;&gt;#概率是gc_probability/gc_divisor&lt;br /&gt;session.gc_probability = 1&lt;br /&gt;session.gc_divisor = 100&lt;/div&gt;&lt;p&gt;注意1：假设这种情况gc_maxlifetime=120，如果某个session文件最后修改时间是120秒之前，那么在下一次回收（1/100的概率）发生前，这个session仍然是有效的。&lt;/p&gt;&lt;p&gt;注意2：如果你的session使用session.save_path中使用别的地方保存session，session回收机制有可能不会自动处理过期session文件。这时需要定时手动（或者crontab）的删除过期的session：cd /path/to/sessions; find -cmin +24 | xargs rm&lt;/p&gt;&lt;p&gt;&lt;font color=&quot;#ff0000&quot;&gt;4. 一些特殊情况&lt;/font&gt;&lt;/p&gt;&lt;p&gt;因为回收机制会检查文件的“最后修改时间”，所以如果某个会话是活跃的，但是session的内容没有改变过，那么对应的session文件也就没有改变过，回收机制会认为这是一个长时间没有活跃的session而将其删除。这是我们不愿看到的，可以通过增加如下的简单代码解决这个问题：&lt;/p&gt;&lt;pre&gt;&lt;ol class=&quot;dp-c&quot;&gt;&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span&gt;&amp;lt;?php &amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class=&quot;keyword&quot;&gt;if&lt;/span&gt;&lt;span&gt;(!isset(&lt;/span&gt;&lt;span class=&quot;vars&quot;&gt;$_SESSION&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;&apos;last_access&apos;&lt;/span&gt;&lt;span&gt;])||(time()-&lt;/span&gt;&lt;span class=&quot;vars&quot;&gt;$_SESSION&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;&apos;last_access&apos;&lt;/span&gt;&lt;span&gt;])&amp;gt;60) &amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;vars&quot;&gt;$_SESSION&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;&apos;last_access&apos;&lt;/span&gt;&lt;span&gt;]&amp;nbsp;=&amp;nbsp;time(); &amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;?&amp;gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/pre&gt;&lt;p&gt;代码会每隔60秒，尝试修改修改一次session。&lt;/p&gt;&lt;p&gt;总结：如果想修改session过期时间，修改变量gc_maxlifetime就可以了。php5的session采用被动的回收机制（garbage collection）。过期的session文件不会自己消失，而是通过触发“回收”来处理过期的session。&lt;/p&gt;&lt;p&gt;更多资源：&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;http://cn.php.net/manual/en/session.configuration.php&quot; target=&quot;_blank&quot;&gt;PHP Runtime Configuration&lt;/a&gt;&lt;/p&gt;</description>
		<guid>http://www.517sou.net/Article/401.aspx</guid>
		<trackback:ping>http://www.517sou.net/Article/401/Trackback.ashx</trackback:ping>
		<comments>http://www.517sou.net/Article/401.aspx#CommentPostAnchor</comments>
		<wfw:commentRss>http://www.517sou.net/Article/401/Feeds.ashx</wfw:commentRss>
	</item>
	<item>
		<link>http://www.517sou.net/Article/400.aspx</link>
		<title>Pick up performance with generational garbage collection</title>
		<author>shanyiwan@live.com(flyinweb)</author>
		<category>技术文摘</category>
		<pubDate>Tue, 19 Jan 2010 10:05:26 GMT</pubDate>
		<description>&lt;p class=&quot;first&quot;&gt;Garbage collection (GC) reclaims the heap space previously  allocated to objects no longer needed. The process of locating and removing  those dead objects can stall your Java application while consuming as much as 25  percent of throughput.&lt;/p&gt;&lt;p&gt;Sun Microsystems introduced generational GC in the Java HotSpot VM for  Solaris. Generational GC separates older and newer objects into separate heap  spaces. With command line parameters, you control how the HotSpot JVM uses that  heap space to perform GC. HotSpot&apos;s default parameters are effective for most  small applications that require faster startup and a smaller footprint. But you  can select parameters that activate the Java HotSpot Server VM to improve the  throughput of large, server-side applications, like those running under BEA&apos;s  WebLogic, by 20 percent or more.&lt;/p&gt;&lt;p&gt;This article is written from the perspective of the infrastructure architect,  not the Java developer. I don&apos;t explain how to modify Java code to achieve  better GC. Instead, I show how the HotSpot JVM uses the system resources  allocated to it to provide significant throughput improvement with no code  modifications.&lt;/p&gt;&lt;h3&gt;Pre-HotSpot JVMs&lt;/h3&gt;&lt;p&gt;Prior to HotSpot, most JVMs had three main GC problems. First, &lt;em&gt;all&lt;/em&gt;  objects were scanned during every GC. As the number of objects increased, this  type of GC&apos;s performance time increased as well.&lt;/p&gt;&lt;p&gt;Second, partially accurate GC algorithms were conservative when reclaiming  memory. These algorithms had difficulty differentiating between pointers and  other data types. This often meant the algorithm would fail to collect all  garbage for fear of eliminating valid data objects.&lt;/p&gt;&lt;p&gt;Third, a garbage collector used &lt;em&gt;handles&lt;/em&gt; to refer indirectly to  objects in memory. Those handles were thought to expedite and simplify object  relocation during garbage collection; however, they proved to be a significant  performance bottleneck. The inability to relocate objects caused significant  memory fragmentation and prevented the use of more sophisticated GC algorithms.  Other collectors used handleless objects, but when relocated objects were  collected, all other objects had to be scanned so that pointers to relocated  objects could be updated.&lt;/p&gt;&lt;h3&gt;Post-HotSpot JVM&lt;/h3&gt;&lt;p&gt;The Exact VM (JVM 1.2.2) introduced &lt;em&gt;exact&lt;/em&gt; garbage collection. Sun  then improved the exact GC design in JVM 1.3 and renamed it generational GC.  Java HotSpot VM 1.3.1&apos;s GC is fully accurate, guaranteeing that:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;You can reliably reclaim all inaccessible objects&apos; memory&lt;/li&gt;&lt;li&gt;You can relocate all objects to compact memory, eliminating object memory  fragmentation&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;The HotSpot JVM uses a two-machine-word object header, rather than the  three-word header found in most other JVMs. This saves as much as 10 percent of  the heap size for typical applications while accelerating the code to scan all  objects.&lt;/p&gt;&lt;p&gt;The HotSpot JVM also eliminates the concept of handles. This reduces memory  usage and speeds processing. In the HotSpot JVM, object references are  implemented as direct pointers, providing C-speed access to instance variables.&lt;/p&gt;&lt;h3&gt;Three types of collection algorithms&lt;/h3&gt;&lt;p&gt;The HotSpot JVM provides three GC algorithms, each tuned for a specific type  of collection within a specific generation. The &lt;em&gt;copy&lt;/em&gt; (also known as  &lt;em&gt;scavenge&lt;/em&gt;) collection quickly cleans up short-lived objects in the new  generation heap. The &lt;em&gt;mark-compact&lt;/em&gt; algorithm employs a slower, more  robust technique to collect longer-lived objects in the old generation heap. The  &lt;em&gt;incremental&lt;/em&gt; algorithm attempts to improve old generation collection by  performing robust GC while minimizing pauses.&lt;/p&gt;&lt;h4&gt;Copy/scavenge collection&lt;/h4&gt;&lt;p&gt;Using the copy algorithm, the JVM reclaims most objects in the new generation  object space (also known as &lt;em&gt;eden&lt;/em&gt;) simply by making small  &lt;em&gt;scavenges&lt;/em&gt; -- a Java term for collecting and removing refuse.  Longer-lived objects are ultimately copied, or &lt;em&gt;tenured,&lt;/em&gt; into the old  object space.&lt;/p&gt;&lt;h4&gt;Mark-compact collection&lt;/h4&gt;&lt;p&gt;As more objects become tenured, the old object space begins to reach maximum  occupancy. The mark-compact algorithm, used to collect objects in the old object  space, has different requirements than the copy collection algorithm used in the  new object space.&lt;/p&gt;&lt;p&gt;The mark-compact algorithm first scans all objects, marking all reachable  objects. It then compacts all remaining gaps of dead objects. The mark-compact  algorithm occupies more time than the copy collection algorithm; however, it  requires less memory and eliminates memory fragmentation.&lt;/p&gt;&lt;h4&gt;Incremental (train) collection&lt;/h4&gt;&lt;p&gt;The new generation copy/scavenge and the old generation mark-compact  algorithms can&apos;t eliminate all JVM pauses. Such pauses are proportional to the  number of live objects. To address the need for pauseless GC, the HotSpot JVM  also offers incremental, or &lt;em&gt;train,&lt;/em&gt; collection.&lt;/p&gt;&lt;p&gt;Incremental collection breaks up old object collection pauses into many tiny  pauses even with large object areas. Instead of just a new and an old  generation, this algorithm has a middle generation comprising many small spaces.  There is some overhead associated with incremental collection; you might see as  much as a 10-percent speed degradation.&lt;/p&gt;&lt;p&gt;The &lt;code&gt;-Xincgc&lt;/code&gt; and &lt;code&gt;-Xnoincgc&lt;/code&gt; parameters control how  you use incremental collection. The next release of HotSpot JVM, version 1.4,  will attempt continuous, pauseless GC that will probably be a variation of the  incremental algorithm. I won&apos;t discuss incremental collection since it will soon  change.&lt;/p&gt;&lt;h3&gt;Performance factors&lt;/h3&gt;&lt;p&gt;JVM performance is usually measured by its GC&apos;s effectiveness. &lt;a href=&quot;#resources&quot;&gt;&amp;quot;Tuning Garbage Collection with the 1.3.1 Java Virtual  Machine&amp;quot;&lt;/a&gt; covers performance considerations in more depth. I will cover those  factors that concern this article.&lt;/p&gt;&lt;p&gt;A JVM&apos;s &lt;em&gt;throughput&lt;/em&gt; accounts for the percentage of total time GC does  not take place. Therefore, 80 percent throughput implies that garbage collection  consumes 20 percent of the JVM&apos;s processing while your application consumes only  80 percent. Throughput is also measured in &lt;em&gt;pauses,&lt;/em&gt; during which your  application stops processing while the JVM collects garbage.&lt;/p&gt;&lt;p&gt;&lt;em&gt;Footprint&lt;/em&gt; accounts for the JVM&apos;s required amount of memory. On  computers with limited memory, a large footprint can increase &lt;em&gt;swapping&lt;/em&gt;  and &lt;em&gt;paging&lt;/em&gt;, where the operating system (OS) struggles to find free  memory pages for the JVM to use. As OS paging increases, it consumes more  processors and likely decreases the JVM&apos;s overall performance.&lt;/p&gt;&lt;p&gt;Command line parameters that divide the heap between new and old generations  usually cause the greatest performance impact. If you increase the new  generation&apos;s size, you often improve the overall throughput; however, you also  increase footprint, which may slow down servers with limited memory.&lt;/p&gt;&lt;h3&gt;Heap layout&lt;/h3&gt;&lt;p&gt;The HotSpot JVM manages heap space in &lt;em&gt;generations&lt;/em&gt; -- that is, memory  pools for both new and old objects. As these objects accumulate, eventually a  low memory condition occurs, forcing garbage collection to take place. Figure 1  illustrates the heap space divided into the old and the new generation.&lt;/p&gt;&lt;p&gt;&lt;img height=&quot;235&quot; width=&quot;518&quot; alt=&quot;&quot; class=&quot;Image&quot; src=&quot;http://www.517sou.net/Attach/month_1001/js3tgd_180915_1.jpg&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Figure 1. Heap broken into its components&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;The new generation includes the new object space (eden), plus two survivor  spaces (SS#1 and SS#2), as Figure 1 shows. New objects allocate in eden.  Longer-lived objects are moved from the new generation and tenured to the old  generation.&lt;/p&gt;&lt;p&gt;Figure 1 shows another heap section, called the &lt;em&gt;permanent  generation&lt;/em&gt;, which holds the JVM&apos;s class and method objects. The  &lt;code&gt;-XX:MaxPermSize=64m&lt;/code&gt; command line parameter controls the permanent  generation&apos;s size. I won&apos;t discuss the permanent generation further in this  article.&lt;/p&gt;&lt;h4&gt;Control the heap size&lt;/h4&gt;&lt;p&gt;You can control the heap size using several parameters. The &lt;code&gt;-Xms&lt;/code&gt;  and &lt;code&gt;-Xmx&lt;/code&gt; parameters define the minimum and maximum heap sizes,  respectively. Most large, server-side applications set the values equal to each  other for a fixed heap size.&lt;/p&gt;&lt;p&gt;If you set those parameters unequal, then the JVM must increase or decrease  the heap size at each collection; the objective is to keep the living object  space&apos;s proportion within a specific range. The &lt;code&gt;-Xminf&lt;/code&gt; and  &lt;code&gt;-Xmaxf&lt;/code&gt; parameters define the total heap size&apos;s minimum proportion  and the maximum proportion, respectively.&lt;/p&gt;&lt;p&gt;If you use expandable heaps, you should bear in mind the impact of changing  the old and new generation heap sizes. When the heap grows or shrinks, the JVM  must recalculate the old and new generation sizes in order to maintain a  predefined ratio (the &lt;code&gt;NewRatio&lt;/code&gt; parameter).&lt;/p&gt;&lt;p&gt;The &lt;code&gt;NewSize&lt;/code&gt; and &lt;code&gt;MaxNewSize&lt;/code&gt; parameters control the  new generation&apos;s minimum and maximum size, respectively. You can regulate the  new generation size by setting these parameters equal. You can gain a fine  granularity when using these parameters to tune the new generation.&lt;/p&gt;&lt;h3&gt;Garbage collections&lt;/h3&gt;&lt;p&gt;When the new generation fills up, it triggers a &lt;em&gt;minor collection,&lt;/em&gt; in  which surviving objects are moved to the old generation. When the old generation  fills up, it triggers a &lt;em&gt;major collection,&lt;/em&gt; which involves the entire  object heap.&lt;/p&gt;&lt;h4&gt;Minor collections&lt;/h4&gt;&lt;p&gt;The Java HotSpot VM 1.3.1 uses copying collection for all minor collections.  Figure 2&apos;s top portion shows that newly allocated objects (the blank circles)  exist in eden. During a minor collection, the living objects (the dark circles)  in eden are copied to the first survivor space. Once the copy is complete, you  can use the entire eden space.&lt;/p&gt;&lt;center&gt;&lt;p&gt;&lt;img alt=&quot;&quot; class=&quot;Image&quot; src=&quot;http://www.517sou.net/Attach/month_1001/izsdjb_180917_2.jpg&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Figure 2. Minor collections. Click on thumbnail to view full-size  image.&lt;/strong&gt;&lt;/p&gt;&lt;/center&gt;&lt;p&gt;During the next GC, the living objects from eden and from the first survivor  space are copied to the second survivor space. This is illustrated in Figure 2&apos;s  middle portion, where all the living objects are copied, thus leaving only newly  allocated objects in eden and the first survivor space.&lt;/p&gt;&lt;p&gt;The minor collection copies objects between survivor spaces until they become  tenured; those objects are then copied to the old generation, as Figure 2&apos;s  bottom portion shows.&lt;/p&gt;&lt;h4&gt;Major collections&lt;/h4&gt;&lt;p&gt;The Java HotSpot VM 1.3.1 uses mark-compact collection for all major  collections; therefore, major collections occur in the old object space. Figure  3 illustrates the two-step process that comprises the mark-compact algorithm.  During the first step, garbage collection goes through the entire heap, marking  all unreachable objects (the red circles). During the second step, the  unreachable objects (red circles) are compacted, leaving only live objects (the  gray circles).&lt;/p&gt;&lt;p&gt;&lt;img height=&quot;318&quot; width=&quot;400&quot; alt=&quot;&quot; class=&quot;Image&quot; src=&quot;http://www.517sou.net/Attach/month_1001/h23gzr_180923_3.jpg&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Figure 3. Major collections&lt;/strong&gt;&lt;/p&gt;&lt;h3&gt;Ratio of old to new generations&lt;/h3&gt;&lt;p&gt;So far, my diagrams have casually drawn a line to separate the old and the  new generations. The actual placement of the dividing line between the old and  new generations is the most critical decision influencing HotSpot JVM  performance. Every time you start the HotSpot JVM, you determine where to place  this line by including or omitting one parameter.&lt;/p&gt;&lt;h4&gt;NewRatio&lt;/h4&gt;&lt;p&gt;You can divide the heap into old and new generations using the  &lt;code&gt;NewRatio&lt;/code&gt; parameter. If you use &lt;code&gt;-XX:NewRatio=5&lt;/code&gt;, then  you create an old-to-new ratio of 5:1; the old generation occupies 5/6 of the  heap while the new generation occupies 1/6 of the heap. If you increase the new  generation&apos;s size, minor collections may occur less often. However, because the  &lt;code&gt;-Xmx&lt;/code&gt; parameter sets the total heap size, you also decrease the old  generation&apos;s size. This may increase the frequency of major collections.&lt;/p&gt;&lt;h3&gt;Java HotSpot Client VM ratio&lt;/h3&gt;&lt;p&gt;The Java HotSpot Client VM 1.3.1 replaces both the classic JVM and the JVM  1.2 just-in-time (JIT) compilers to improve runtime performance for applications  and applets. The HotSpot Client JVM has been specially tuned to reduce  application startup time and memory footprint, making it particularly well  suited for client environments. On all platforms, the HotSpot Client JVM is the  default.&lt;/p&gt;&lt;p&gt;The default &lt;code&gt;NewRatio&lt;/code&gt; for the HotSpot Client JVM is 8; the old  generation occupies 8/9 of the heap while the new generation occupies 1/9, as  Figure 4 shows. This allocation is appropriate for client applications, like  Java GUIs, that allocate many short-lived objects. Objects created to support a  GUI window often do not live beyond the window display&apos;s life. After a few minor  collections for longer-running applications where objects live longer, tenure  occurs and the objects move to the old generation. Once this happens, every  subsequent collection is commonly a major one.&lt;/p&gt;&lt;p&gt;&lt;img height=&quot;184&quot; width=&quot;464&quot; alt=&quot;&quot; class=&quot;Image&quot; src=&quot;http://www.517sou.net/Attach/month_1001/8qwvec_180928_4.jpg&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Figure 4. Impact of NewRatio on generation sizes&lt;/strong&gt;&lt;/p&gt;&lt;h3&gt;Java HotSpot Server VM ratio&lt;/h3&gt;&lt;p&gt;The Java HotSpot Server VM 1.3.1 is similar to the HotSpot Client JVM except  that it has been specially tuned to maximize peak operating speed. It is  intended for long-running server applications, for which the fastest possible  operating speed is generally more important than having the fastest startup  time. To invoke the HotSpot Server JVM instead of the default HotSpot Client  JVM, use the &lt;code&gt;-server&lt;/code&gt; parameter; for example, &lt;code&gt;java -server  MyApp&lt;/code&gt;.&lt;/p&gt;&lt;p&gt;The default &lt;code&gt;NewRatio&lt;/code&gt; for the HotSpot Server JVM is 2; the old  generation occupies 2/3 of the heap while the new generation occupies 1/3, as  Figure 4 above shows. The larger new generation can accommodate many more  short-lived objects, thus decreasing the need for slow major collections. The  old generation is still sufficiently large enough to hold many long-lived  objects.&lt;/p&gt;&lt;h3&gt;Client JVM vs. Server JVM: Which is right for you?&lt;/h3&gt;&lt;p&gt;There is no simple answer to the question of which HotSpot JVM is right for  your application. Just because an application is long running doesn&apos;t mean it  doesn&apos;t allocate many short-lived objects. Also, just because an application is  a GUI doesn&apos;t mean it only allocates short-lived objects. Only you understand  how your application creates and destroys objects.&lt;/p&gt;&lt;p&gt;The &amp;quot;Capture GC Statistics&amp;quot; section below explains how to determine GC  behavior within your application. Poorly selected JVM parameters can severely  degrade your application performance. For applications running under the  WebLogic framework, I have often seen 20 to 30 percent performance improvement  simply by adding the &lt;code&gt;-server&lt;/code&gt; parameter, thereby selecting the  HotSpot Server JVM over the default HotSpot Client JVM.&lt;/p&gt;&lt;p&gt;In general, if your Java application is a standalone program, the HotSpot  Client JVM will probably give you the best performance. If your Java application  executes within a server framework, such as BEA WebLogic, the HotSpot Server JVM  will probably give you better performance. Try each and see what works best for  your application.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; When no client or server parameter is provided, the  Java HotSpot VM 1.3.1 uses its default value. The default is the first line in  the &lt;code&gt;jvm.cfg&lt;/code&gt; file, which is located in the  &lt;code&gt;&amp;lt;jvm_dir&amp;gt;/jre/lib&lt;/code&gt; directory. Rather than modifying all your  startup scripts to add the &lt;code&gt;-server&lt;/code&gt; parameter, you can make  &lt;code&gt;-server&lt;/code&gt; the first noncomment line in the file.&lt;/p&gt;&lt;h3&gt;SurvivorRatio&lt;/h3&gt;&lt;p&gt;The &lt;code&gt;SurvivorRatio&lt;/code&gt; parameter controls the size of the two  survivor spaces. For example, if you set the parameter to  &lt;code&gt;-XX:SurvivorRatio=10&lt;/code&gt;, the ratio between each survivor space and  eden is 1:10. Since two survivor spaces exist, each survivor space will be 1/12  of the new generation.&lt;/p&gt;&lt;p&gt;While &lt;code&gt;SurvivorRatio&lt;/code&gt; is generally less important to performance,  you should know that the default setting is 25. Figure 5 shows a drawn-to-scale  default HotSpot Server JVM heap with a &lt;code&gt;NewRatio&lt;/code&gt; of 2 (i.e., the old  generation is twice the size of the new generation) and a  &lt;code&gt;SurvivorRatio&lt;/code&gt; of 25 (i.e., a survivor space is 1/25 the size of  eden).&lt;/p&gt;&lt;p&gt;&lt;img height=&quot;100&quot; width=&quot;576&quot; alt=&quot;&quot; class=&quot;Image&quot; src=&quot;http://www.517sou.net/Attach/month_1001/0t29rm_180932_5.jpg&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Figure 5. SurvivorRatio default setting of 25&lt;/strong&gt;&lt;/p&gt;&lt;h3&gt;Word to the wise&lt;/h3&gt;&lt;p&gt;To improve performance, it&apos;s important to keep eden smaller than half the  heap size. This ensures that you have enough memory available to complete a  minor collection. When you lack enough memory, a major collection will occur,  which will bog down performance.&lt;/p&gt;&lt;p&gt;This means that the old generation must typically be larger than the new  generation. One reason for this is that the HotSpot JVM guarantees that if  everything is alive in eden, it can all be copied to the old space, so that  every collection triggers a full GC. An exception is if you use the  &lt;code&gt;-XX:MaxLiveObjectEvacuationRatio=&amp;lt;n&amp;gt;&lt;/code&gt; parameter. This ratio  lets you declare that you have short-lived objects and that the HotSpot JVM  needn&apos;t worry about having a large enough old space. This parameter can be 0 if  you want almost no old generation; the default value is 100, meaning that 100  percent of eden may contain live objects.&lt;/p&gt;&lt;p&gt;This gives you an idea of the level of control you can have over the way in  which the HotSpot JVM uses the heap space you allocate to it. It should also  show the level of understanding you should possess before using &lt;code&gt;-XX&lt;/code&gt;  parameters in production environments. For example, if you set the  &lt;code&gt;-XX:MaxLiveObjectEvacuationRatio=&amp;lt;n&amp;gt;&lt;/code&gt; parameter too low,  you will continually get an out-of-memory error, so use it with extreme caution.  (See &amp;quot;&lt;a id=&quot;return1&quot; href=&quot;#sidebar1&quot; name=&quot;return1&quot;&gt;Sidebar 1: Support for -XX  Parameters&lt;/a&gt;&amp;quot; at the end of this article.)&lt;/p&gt;&lt;h3&gt;Analyze GC behavior&lt;/h3&gt;&lt;p&gt;To determine which HotSpot JVM parameters are best for your application, you  may need to ask the JVM to display information about its GC behavior.&lt;/p&gt;&lt;h4&gt;Capture GC statistics&lt;/h4&gt;&lt;p&gt;Every time the JVM performs a collection, the command line parameter  &lt;code&gt;-verbosegc&lt;/code&gt; instructs it to output the heap data. In the following  sample output, there are four minor collections, one major collection, and then  three more minor collections. The numbers before and after the arrow indicate  the size of the live objects before and after the GC. The number in parentheses  is the total heap size. In the first GC, 40,549 KB of objects existed before  collection and 20,909 KB of objects after collection. This means that 19,640 KB  of objects were dead and collected. The total heap size is 64,768 KB. The  collection process required 0.0484179 seconds:&lt;/p&gt;&lt;div id=&quot;codewrap&quot;&gt;&lt;div id=&quot;codewrap159&quot;&gt;&lt;pre&gt;
[GC 40549K-&amp;gt;20909K(64768K), 0.0484179 secs]
[GC 41197K-&amp;gt;21405K(64768K), 0.0411095 secs]
[GC 41693K-&amp;gt;22995K(64768K), 0.0846190 secs]
[GC 43283K-&amp;gt;23672K(64768K), 0.0492838 secs]
[Full GC 43960K-&amp;gt;1749K(64768K), 0.1452965 secs]
[GC 22037K-&amp;gt;2810K(64768K), 0.0310949 secs]
[GC 23098K-&amp;gt;3657K(64768K), 0.0469624 secs]
[GC 23945K-&amp;gt;4847K(64768K), 0.0580108 secs]
&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;h4&gt;An awk script to analyze the GC data&lt;/h4&gt;&lt;p&gt;The following &lt;code&gt;awk&lt;/code&gt; script parses the output from  &lt;code&gt;-verbosegc&lt;/code&gt; on a Solaris computer, creating a file suitable for  importing into Excel for graphing. (Why &lt;code&gt;awk&lt;/code&gt;, you ask? As an  infrastructure architect, not a Java developer, I felt more comfortable using  &lt;code&gt;awk&lt;/code&gt;.)&lt;/p&gt;&lt;div id=&quot;codewrap&quot;&gt;&lt;div id=&quot;codewrap168&quot;&gt;&lt;pre&gt;
BEGIN {
  printf(&amp;quot;Minor\tMajor\tAlive\tFreed\n&amp;quot;)
}
{
  if ( substr(body,1,4) == &amp;quot;[GC &amp;quot; )  {
    # break each input line into 4 pieces in array[]
    split(body,array,&amp;quot; &amp;quot;);
    # array[1]=&amp;quot;[GC&amp;quot;
    # array[2]=&amp;quot;20713K-&amp;gt;549K(64768K),&amp;quot;
    # array[3]=&amp;quot;0.0086130&amp;quot;
    # array[4]=&amp;quot;secs]&amp;quot;
    printf(&amp;quot;%s\t0.0\t&amp;quot;,array[3])
    # break array[2]=&amp;quot;43960K-&amp;gt;1749K(64768K),&amp;quot; into 4 pieces in barray[]
    split(array[2],barray,&amp;quot;K&amp;quot;)
    # barray[1]=&amp;quot;43960&amp;quot;
    # barray[2]=&amp;quot;-&amp;gt;1749&amp;quot;
    # barray[3]=&amp;quot;(64768&amp;quot;
    # barray[4]=&amp;quot;),&amp;quot;
    before=barray[1]
    after=substr(barray[2],3)
    reclaim=before-after
    printf(&amp;quot;%s\t%s\n&amp;quot;,after,reclaim)
  }
  if ( substr(body,1,9) == &amp;quot;[Full GC &amp;quot; )  {
    # break each input line into 4 pieces in array[]
    split(body,array,&amp;quot; &amp;quot;);
    # array[1]=&amp;quot;[Full&amp;quot;
    # array[2]=&amp;quot;GC&amp;quot;
    # array[3]=&amp;quot;20713K-&amp;gt;549K(64768K),&amp;quot;
    # array[4]=&amp;quot;0.0086130&amp;quot;
    # array[5]=&amp;quot;secs]&amp;quot;
    printf(&amp;quot;0.0\t%s\t&amp;quot;,array[4]) 
    # break array[2]=&amp;quot;43960K-&amp;gt;1749K(64768K),&amp;quot; into 4 pieces in barray[]
    split(array[3],barray,&amp;quot;K&amp;quot;)
    # barray[1]=&amp;quot;43960&amp;quot;
    # barray[2]=&amp;quot;-&amp;gt;1749&amp;quot;
    # barray[3]=&amp;quot;(64768&amp;quot;
    # barray[4]=&amp;quot;),&amp;quot;
    before=barray[1]
    after=substr(barray[2],3)
    reclaim=before-after
    printf(&amp;quot;%s\t%s\n&amp;quot;,after,reclaim)
  }
  # no idea what this line is so skip it
  next;
}
&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;Here is sample output from the above &lt;code&gt;awk&lt;/code&gt; script:&lt;/p&gt;&lt;div id=&quot;codewrap&quot;&gt;&lt;div id=&quot;codewrap173&quot;&gt;&lt;pre&gt;
Minor       Major       Alive       Freed
0.0484179   0.0         20909       19640
0.0411095   0.0         21405       19792
0.0846190   0.0         22995       18698
0.0492838   0.0         23672       19611
0.0         0.1452965   1749        42211
0.0310949   0.0         2810        19227
0.0469624   0.0         3657        19441
0.0580108   0.0         4847        19098
&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;I imported the &lt;code&gt;awk&lt;/code&gt; script&apos;s output into MS Excel. Figure 6  illustrates a graph created from the two lefthand columns. It shows the  frequency of minor and major collections plus the amount of time required to  perform the GC (i.e., the pauses).&lt;/p&gt;&lt;p&gt;&lt;img height=&quot;289&quot; width=&quot;493&quot; alt=&quot;&quot; class=&quot;Image&quot; src=&quot;http://www.517sou.net/Attach/month_1001/nqogl7_180933_6.jpg&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Figure 6. Sample graph of minor/major  collections&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Figure 7 illustrates a graph created from the two righthand columns. It shows  the amount of memory live objects consumed following each GC, as well as the  amount of memory freed when dead objects were reclaimed.&lt;/p&gt;&lt;p&gt;&lt;img height=&quot;289&quot; width=&quot;493&quot; alt=&quot;&quot; class=&quot;Image&quot; src=&quot;http://www.517sou.net/Attach/month_1001/2qkpv6_180940_7.jpg&quot; /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Figure 7. Sample graph of GC behavior&lt;/strong&gt;&lt;/p&gt;&lt;h3&gt;Tenure distribution&lt;/h3&gt;&lt;p&gt;After objects have been collected several times, they become tenured and are  promoted to the old generation. You can use the  &lt;code&gt;-XX:+PrintTenuringDistribution&lt;/code&gt; parameter to display the information  the JVM uses during its tenure calculations.&lt;/p&gt;&lt;p&gt;The JVM attempts to keep a target percentage of the survivor spaces empty, as  defined by the &lt;code&gt;-XX:TargetSurvivorRatio&lt;/code&gt; parameter. The default value  is 50, meaning that the goal is to empty one-half (50 percent) of the survivor  capacity following GC. The JVM computes the desired survivor size as shown  below, and then computes the object threshold. An object&apos;s &lt;em&gt;threshold&lt;/em&gt;  accounts for the number of times an object is copied before it is tenured; this  is recalculated at each collection:&lt;/p&gt;&lt;div id=&quot;codewrap&quot;&gt;&lt;div id=&quot;codewrap197&quot;&gt;&lt;pre&gt;
    (survivor_capacity * TargetSurvivorRatio) / 100 * sizeof(a pointer)
&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;Below is sample output when running &lt;code&gt;java -verbosegc  -XX:+PrintTenuringDistribution MyApp&lt;/code&gt;. In the first GC, the desired  survivor size is 393,216 bytes (384 KB) and the threshold is 1, meaning that  objects will be tenured following one collection. Then the garbage collector  goes through the &lt;em&gt;ages,&lt;/em&gt; the number of times the collector decides not to  promote:&lt;/p&gt;&lt;div id=&quot;codewrap&quot;&gt;&lt;div id=&quot;codewrap203&quot;&gt;&lt;pre&gt;
[GC
Desired survivor size 393216 bytes, new threshold 1 (max 32)
- age   1:   509624 bytes,   509624 total
 20288K-&amp;gt;497K(64768K), 0.0147963 secs]
[GC
Desired survivor size 393216 bytes, new threshold 32 (max 32)
- age   1:   169616 bytes,   169616 total
 27697K-&amp;gt;6997K(64768K), 0.0038858 secs]
[GC
Desired survivor size 393216 bytes, new threshold 32 (max 32)
- age   1:   191392 bytes,   191392 total
- age   2:    52944 bytes,   244336 total
 27285K-&amp;gt;7070K(64768K), 0.0046738 secs]
[GC
Desired survivor size 393216 bytes, new threshold 1 (max 32)
- age   1:   733488 bytes,   733488 total
- age   3:    52944 bytes,   786432 total
 27358K-&amp;gt;7662K(64768K), 0.0148100 secs]
&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;In the first GC above, objects occupying 509,624 bytes have already been  copied once, meaning that they are in the first age bucket (age 1). In the third  GC, there are objects occupying 191,392 bytes in the first age bucket and  objects occupying 52,944 bytes in the second age bucket. Since the threshold is  32 during the third GC, you see that the objects were not tenured, because in  the fourth GC there are objects occupying 52,944 bytes in the third age bucket.&lt;/p&gt;&lt;p&gt;(See &amp;quot;&lt;a href=&quot;#sidebar2&quot;&gt;Sidebar 2: Performance Test Program&lt;/a&gt;&amp;quot; at the end  of this article for information on Ed Ort&apos;s &lt;code&gt;HeapTest&lt;/code&gt; program used  to test parameters in this article.)&lt;/p&gt;&lt;h3&gt;Take out the trash&lt;/h3&gt;&lt;p&gt;Ordinarily, the Java developer doesn&apos;t have to be concerned with the  complexity of memory allocation and GC within the JVM. However, understanding  aspects of this hidden implementation can help you ensure effective resource  use. Garbage collection algorithms make assumptions about the way applications  use objects. The HotSpot JVM&apos;s tunable parameters let you adjust the GC  algorithms to better meet your application&apos;s behavior characteristics. Sometimes  just adding the &lt;code&gt;-server&lt;/code&gt; parameter to switch from the default  HotSpot Client JVM to the HotSpot Server JVM can improve throughput of WebLogic  applications by 20 percent or more.&lt;/p&gt;&lt;p&gt;Stay tuned for the Java HotSpot VM 1.4 release, which will extend the train,  or incremental, garbage collector algorithm to perform GC in parallel.&lt;/p&gt;</description>
		<guid>http://www.517sou.net/Article/400.aspx</guid>
		<trackback:ping>http://www.517sou.net/Article/400/Trackback.ashx</trackback:ping>
		<comments>http://www.517sou.net/Article/400.aspx#CommentPostAnchor</comments>
		<wfw:commentRss>http://www.517sou.net/Article/400/Feeds.ashx</wfw:commentRss>
	</item>
	<item>
		<link>http://www.517sou.net/Article/399.aspx</link>
		<title>Apache patch for libexpat.so: could not read symbols: File in wrong format</title>
		<author>shanyiwan@live.com(flyinweb)</author>
		<category>WEB服务器</category>
		<pubDate>Mon, 18 Jan 2010 09:19:15 GMT</pubDate>
		<description>&lt;div class=&quot;serendipity_entry serendipity_entry_author_Jens-Brey &quot;&gt;&lt;div class=&quot;serendipity_entry_body&quot;&gt;If you want to compile Apache 2.2.4 under Red Hat AS 5.0 x86-64 you can get this error:&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #ff0000&quot;&gt;/usr/lib/libexpat.so: could not read symbols: File in wrong format&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;There is a patch in the ASF Bugzilla (&lt;a href=&quot;http://issues.apache.org/bugzilla/show_bug.cgi?id=28205&quot; target=&quot;_blank&quot;&gt;&lt;u&gt;&lt;font color=&quot;#0066cc&quot;&gt;http://issues.apache.org/bugzilla/show_bug.cgi?id=28205&lt;/font&gt;&lt;/u&gt;&lt;/a&gt; ), but this patch works only up to version 2.2.3. So, i create a new one, which works with 2.2.4 &lt;img style=&quot;display: inline; vertical-align: bottom&quot; class=&quot;emoticon&quot; alt=&quot;;-)&quot; src=&quot;http://blog.chaos-co.de/templates/default/img/emoticons/wink.png&quot; /&gt;&lt;br /&gt;&lt;br /&gt;Here it is &lt;a href=&quot;http://blog.chaos-co.de/downloads/apr-util_2.2.4.patch&quot; target=&quot;_blank&quot;&gt;&lt;u&gt;&lt;font color=&quot;#0066cc&quot;&gt;http://blog.chaos-co.de/downloads/apr-util_2.2.4.patch&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Unpack your apache with tar, go in the httpd-2.2.4/srclib/apr-util directory and apply it with &amp;quot;patch -p1 &amp;lt; /usr/local/src/apr-util_2.2.4.patch&amp;quot;&lt;br /&gt;&lt;br /&gt;The patch updates apu-conf.m4 to build an updated configure that knows what to do with a 64 bit directive. So, once you’ve applied the patch, you should delete the file:&lt;br /&gt;&lt;br /&gt;srclib/apr-util/configure&lt;br /&gt;&lt;br /&gt;and go back to the root directory of the source distro and delete the configure file there too.&lt;br /&gt;&lt;br /&gt;Then, rebuild the configure scripts:&lt;br /&gt;&lt;br /&gt;./buildconf&lt;br /&gt;&lt;br /&gt;You now have a 64 bit enabled apr-util. To take advantage of it, you need to add this line to the root configure options:&lt;br /&gt;&lt;br /&gt;--enable-lib64&lt;br /&gt;&lt;br /&gt;Here’s the root configure in full:&lt;br /&gt;&lt;br /&gt;./configure --prefix=/usr/local/httpd-2.2.4_php4/ --with-mpm=worker --enable-so --enable-rewrite --enable-status --enable-lib64 --libdir=/usr/lib64&lt;/div&gt;&lt;/div&gt;&lt;p&gt;*********************************************************************&lt;/p&gt;&lt;p&gt;If you get this error&lt;/p&gt;&lt;p class=&quot;code&quot;&gt;/usr/lib/libexpat.so: could not read symbols: File in wrong format&lt;/p&gt;&lt;p&gt;add the following option to your apache configure file:&lt;/p&gt;&lt;p class=&quot;code&quot;&gt;--with-expat=builtin&lt;/p&gt;&lt;p&gt;You place that into:&lt;br /&gt;/usr/local/directadmin/custombuild/configure/ap2/configure.apache&lt;br /&gt;as:&lt;/p&gt;&lt;p class=&quot;code&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;--with-expat=builtin&amp;quot; \&lt;/p&gt;&lt;p&gt;taking note of the \ character that must be present on all lines except for that last line.&lt;/p&gt;</description>
		<guid>http://www.517sou.net/Article/399.aspx</guid>
		<trackback:ping>http://www.517sou.net/Article/399/Trackback.ashx</trackback:ping>
		<comments>http://www.517sou.net/Article/399.aspx#CommentPostAnchor</comments>
		<wfw:commentRss>http://www.517sou.net/Article/399/Feeds.ashx</wfw:commentRss>
	</item>
	<item>
		<link>http://www.517sou.net/Article/398.aspx</link>
		<title>Java Memory Analysis(Eclipse Memory Analyzer)</title>
		<author>shanyiwan@live.com(flyinweb)</author>
		<category>技术文摘</category>
		<pubDate>Mon, 18 Jan 2010 03:47:22 GMT</pubDate>
		<description>&lt;h2&gt;The Memory Analyzer is Open Source!&lt;/h2&gt;&lt;p&gt;The Memory Analyzer is an &lt;b&gt;Open Source Project&lt;/b&gt; at Eclipse (&lt;a href=&quot;http://www.eclipse.org/mat/&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;&lt;u&gt;&lt;font color=&quot;#0066cc&quot;&gt;http://www.eclipse.org/mat/&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;) licensed under the &lt;b&gt;Eclipse Public License&lt;/b&gt;. Check out our &lt;a href=&quot;http://dev.eclipse.org/blogs/memoryanalyzer&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;&lt;u&gt;&lt;font color=&quot;#0066cc&quot;&gt;blog&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;, the &lt;a href=&quot;http://wiki.eclipse.org/index.php/MemoryAnalyzer&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;&lt;u&gt;&lt;font color=&quot;#0066cc&quot;&gt;WIKI&lt;/font&gt;&lt;/u&gt;&lt;/a&gt; and the &lt;a href=&quot;http://www.eclipse.org/newsportal/thread.php?group=eclipse.technology.memory-analyzer&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;&lt;u&gt;&lt;font color=&quot;#0066cc&quot;&gt;forum&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;. If you find a bug, please file it against &lt;a href=&quot;https://bugs.eclipse.org/bugs/enter_bug.cgi?product=MAT&quot; rel=&quot;nofollow&quot;&gt;&lt;u&gt;&lt;font color=&quot;#0066cc&quot;&gt;Bugzilla&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;While the open source version contains all the core features, the &lt;a title=&quot;Download the SAP Netweaver enhancements for the Eclipse Memory Analyzer&quot; href=&quot;http://wiki.sdn.sap.com/wiki/display/Java/Download+the+SAP+Netweaver+enhancements+for+the+Eclipse+Memory+Analyzer&quot; target=&quot;_blank&quot;&gt;&lt;u&gt;&lt;font color=&quot;#0066cc&quot;&gt;SAP Netweaver Extensions&lt;/font&gt;&lt;/u&gt;&lt;/a&gt; provide names for NetWeaver deployment units and information about caches, sessions, etc. The extensions are helpful if you analyze heap dumps from NetWeaver Java Server systems.&lt;/p&gt;&lt;h2&gt;What does the Memory Analyzer do?&lt;/h2&gt;&lt;p&gt;SAP Memory Analyzer is a &lt;a title=&quot;Performance Numbers&quot; href=&quot;http://wiki.sdn.sap.com/wiki/display/Java/Performance+Numbers&quot; target=&quot;_blank&quot;&gt;&lt;u&gt;&lt;font color=&quot;#0066cc&quot;&gt;fast&lt;/font&gt;&lt;/u&gt;&lt;/a&gt; and &lt;a title=&quot;Feature List&quot; href=&quot;http://wiki.sdn.sap.com/wiki/display/Java/Feature+List&quot; target=&quot;_blank&quot;&gt;&lt;u&gt;&lt;font color=&quot;#0066cc&quot;&gt;feature-rich&lt;/font&gt;&lt;/u&gt;&lt;/a&gt; heap analyzer that helps you easily &lt;b&gt;find big chunks of memory&lt;/b&gt; and identify &lt;b&gt;who is keeping these objects alive&lt;/b&gt;.&lt;/p&gt;&lt;p&gt;The Memory Analyzer was developed to analyze productive heap dumps with hundreds of millions of objects. Once the heap dump is parsed, you can re-open it instantly, immediately get the retained size of single objects and quickly approximate the retained size of a set of objects. The Analyzer is (relatively) low on resource consumption, so you can analyze multi-GB heap dumps on 32 bit boxes.&lt;/p&gt;&lt;p&gt;&lt;a title=&quot;What does the community think of this tool?&quot; href=&quot;http://wiki.sdn.sap.com/wiki/pages/viewpage.action?pageId=35057&quot; target=&quot;_blank&quot;&gt;&lt;u&gt;&lt;font color=&quot;#0066cc&quot;&gt;Read what our users have to say!&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;&lt;/p&gt;&lt;h2&gt;What heap dumps are supported?&lt;/h2&gt;&lt;p&gt;SAP Memory Analyzer supports by default HPROF binary heap dumps, a de-facto standard of Sun supported also by other vendors:&lt;/p&gt;&lt;p&gt;&lt;b&gt;Sun&lt;/b&gt;, &lt;b&gt;SAP&lt;/b&gt; and &lt;b&gt;HP&lt;/b&gt; JDK/JVM from version &lt;b&gt;1.4.2_12&lt;/b&gt; and &lt;b&gt;5.0_7&lt;/b&gt; and &lt;b&gt;6.0&lt;/b&gt; upwards&lt;/p&gt;&lt;p&gt;Memory Analyzer can also read memory-related information from&amp;nbsp;&lt;b&gt;IBM&lt;/b&gt; system dumps. For the purpose one has to &lt;a href=&quot;http://www.ibm.com/developerworks/java/jdk/tools/mat.html&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;&lt;u&gt;&lt;font color=&quot;#0066cc&quot;&gt;install the IBM DTFJ adapter&lt;/font&gt;&lt;/u&gt;&lt;/a&gt; into the Memory Analyzer. Minimum-required versions are:&lt;/p&gt;&lt;p&gt;&lt;b&gt;IBM&lt;/b&gt; JDK &lt;b&gt;1.4.2 SR12&lt;/b&gt;, &lt;b&gt;5.0 SR8a&lt;/b&gt; and &lt;b&gt;6.0 SR2&lt;/b&gt;. Read more &lt;a href=&quot;http://dev.eclipse.org/blogs/memoryanalyzer/2008/10/23/troubleshooting-memory-problems-from-ibm-systems-with-memory-analyzer/&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;&lt;u&gt;&lt;font color=&quot;#0066cc&quot;&gt;here&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;.&lt;/p&gt;&lt;h2&gt;On what platforms does the SAP Memory Analyzer run?&lt;/h2&gt;&lt;p&gt;The Memory Analyzer is based on Eclipse 3.3 and needs a 1.5 JDK. You can either download the standalone application or unzip the plug-ins to your Eclipse installation. The former is available for all platforms that SWT is available. We greatly appreciate your feedback regarding platforms other than Windows as our scarce resources let us primarily target Windows.&lt;/p&gt;&lt;h2&gt;How can I get a heap dump?&lt;/h2&gt;&lt;p&gt;Please see &lt;a title=&quot;How can I get a heap dump?&quot; href=&quot;http://wiki.sdn.sap.com/wiki/pages/viewpage.action?pageId=33456&quot; target=&quot;_blank&quot;&gt;&lt;u&gt;&lt;font color=&quot;#0066cc&quot;&gt;here&lt;/font&gt;&lt;/u&gt;&lt;/a&gt; for details.&lt;/p&gt;&lt;h2&gt;&lt;a href=&quot;http://wiki.sdn.sap.com/wiki/pages/viewpage.action?pageId=33456&quot; target=&quot;_blank&quot;&gt;How can I get an HPROF&amp;nbsp;heap dump?&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;b&gt;Are you running an AS Java Weekstone with SAP JVM...&lt;/b&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Use the ConfigTool to configure the following VM parameters:&lt;br /&gt;-XX:+HeapDumpOnOutOfMemoryError&lt;br /&gt;-XX:+HeapDumpOnCtrlBreak&lt;/li&gt;&lt;li&gt;In SAP MMC right-click on the AS Java server process and select Dump Stack Trace&lt;/li&gt;&lt;li&gt;The heap file is written to the working directory of the server, e.g. /usr/sap/&amp;lt;SID&amp;gt;/J&amp;lt;instance&amp;gt;/j2ee/cluster/server&amp;lt;node&amp;gt;/&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;b&gt;...or a plain Java Application?&lt;/b&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;If you are running a SAP JVM, use ~/bin/jvmmon.exe&lt;/li&gt;&lt;li&gt;On a Sun or HP VM please see the table below.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;b&gt;All options to get an HPROF dump in detail...&lt;/b&gt;&lt;/p&gt;&lt;p&gt;via Java VM parameters (see ConfigTool on how to set those for AS Java installations):&lt;/p&gt;&lt;ul&gt;&lt;li&gt;-XX:+HeapDumpOnOutOfMemoryError writes heap dump on OutOfMemoryError (recommended)&lt;/li&gt;&lt;li&gt;-XX:+HeapDumpOnCtrlBreak writes heap dump together with thread dump on CTRL+BREAK (recommended; use SAP MMC to trigger dumps for AS Java installations)&lt;/li&gt;&lt;li&gt;-agentlib:hprof=heap=dump,format=b combines the above two settings (old way; not recommended as the VM frequently dies after CTRL+BREAK with strange errors)&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;via tools:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Sun JMap: jmap.exe -dump:format=b,file=HeapDump.hprof &amp;lt;pid&amp;gt;&lt;/li&gt;&lt;li&gt;Sun JConsole: Launch jconsole.exe and invoke operation dumpHeap() on HotSpotDiagnostic MBean&lt;/li&gt;&lt;li&gt;SAP JVMMon: Launch jvmmon.exe and call menu for dumping the heap&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Heap dump will be written to the working directory.&lt;table style=&quot;border-bottom: medium none; border-left: medium none; border-collapse: collapse; border-top: medium none; border-right: medium none; mso-border-alt: solid black 1.5pt; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt; mso-border-insideh: .75pt solid black; mso-border-insidev: .75pt solid black&quot; class=&quot;MsoTableGrid5&quot; border=&quot;1&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;&lt;tbody&gt;&lt;tr style=&quot;mso-yfti-irow: 0; mso-yfti-firstrow: yes&quot;&gt;&lt;td style=&quot;border-bottom: black 1pt solid; border-left: black 1.5pt solid; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; padding-right: 5.4pt; border-top: black 1.5pt solid; border-right: black 1pt solid; padding-top: 0cm; mso-border-top-alt: 1.5pt; mso-border-left-alt: 1.5pt; mso-border-bottom-alt: .75pt; mso-border-right-alt: .75pt; mso-border-color-alt: black; mso-border-style-alt: solid&quot; valign=&quot;top&quot;&gt;&lt;p style=&quot;text-align: left; line-height: 13pt; margin: 0cm 0cm 0pt; mso-pagination: widow-orphan&quot; class=&quot;MsoNormal&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-family: Tahoma; color: black; font-size: 8.5pt; mso-font-kerning: 0pt&quot; lang=&quot;EN-US&quot;&gt;Vendor / Release &lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: black 1pt solid; border-left: #f0f0f0; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; padding-right: 5.4pt; border-top: black 1.5pt solid; border-right: black 1pt solid; padding-top: 0cm; mso-border-alt: solid black .75pt; mso-border-top-alt: solid black 1.5pt; mso-border-left-alt: solid black .75pt&quot; valign=&quot;top&quot;&gt;&lt;p style=&quot;text-align: left; line-height: 13pt; margin: 0cm 0cm 0pt; mso-pagination: widow-orphan&quot; class=&quot;MsoNormal&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-family: Tahoma; color: black; font-size: 8.5pt; mso-font-kerning: 0pt&quot; lang=&quot;EN-US&quot;&gt;VM Parameter &lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: black 1pt solid; border-left: #f0f0f0; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; padding-right: 5.4pt; border-top: black 1.5pt solid; border-right: black 1pt solid; padding-top: 0cm; mso-border-alt: solid black .75pt; mso-border-top-alt: solid black 1.5pt; mso-border-left-alt: solid black .75pt&quot; valign=&quot;top&quot;&gt;&lt;p style=&quot;text-align: left; line-height: 13pt; margin: 0cm 0cm 0pt; mso-pagination: widow-orphan&quot; class=&quot;MsoNormal&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-family: Tahoma; color: black; font-size: 8.5pt; mso-font-kerning: 0pt&quot; lang=&quot;EN-US&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: black 1pt solid; border-left: #f0f0f0; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; padding-right: 5.4pt; border-top: black 1.5pt solid; border-right: black 1pt solid; padding-top: 0cm; mso-border-alt: solid black .75pt; mso-border-top-alt: solid black 1.5pt; mso-border-left-alt: solid black .75pt&quot; valign=&quot;top&quot;&gt;&lt;p style=&quot;text-align: left; line-height: 13pt; margin: 0cm 0cm 0pt; mso-pagination: widow-orphan&quot; class=&quot;MsoNormal&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-family: Tahoma; color: black; font-size: 8.5pt; mso-font-kerning: 0pt&quot; lang=&quot;EN-US&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: black 1pt solid; border-left: #f0f0f0; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; padding-right: 5.4pt; border-top: black 1.5pt solid; border-right: black 1pt solid; padding-top: 0cm; mso-border-alt: solid black .75pt; mso-border-top-alt: solid black 1.5pt; mso-border-left-alt: solid black .75pt&quot; valign=&quot;top&quot;&gt;&lt;p style=&quot;text-align: left; line-height: 13pt; margin: 0cm 0cm 0pt; mso-pagination: widow-orphan&quot; class=&quot;MsoNormal&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-family: Tahoma; color: black; font-size: 8.5pt; mso-font-kerning: 0pt&quot; lang=&quot;EN-US&quot;&gt;Sun Tools &lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: black 1pt solid; border-left: #f0f0f0; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; padding-right: 5.4pt; border-top: black 1.5pt solid; border-right: black 1pt solid; padding-top: 0cm; mso-border-alt: solid black .75pt; mso-border-top-alt: solid black 1.5pt; mso-border-left-alt: solid black .75pt&quot; valign=&quot;top&quot;&gt;&lt;p style=&quot;text-align: left; line-height: 13pt; margin: 0cm 0cm 0pt; mso-pagination: widow-orphan&quot; class=&quot;MsoNormal&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-family: Tahoma; color: black; font-size: 8.5pt; mso-font-kerning: 0pt&quot; lang=&quot;EN-US&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: black 1pt solid; border-left: #f0f0f0; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; padding-right: 5.4pt; border-top: black 1.5pt solid; border-right: black 1.5pt solid; padding-top: 0cm; mso-border-top-alt: 1.5pt; mso-border-left-alt: .75pt; mso-border-bottom-alt: .75pt; mso-border-right-alt: 1.5pt; mso-border-color-alt: black; mso-border-style-alt: solid&quot; valign=&quot;top&quot;&gt;&lt;p style=&quot;text-align: left; line-height: 13pt; margin: 0cm 0cm 0pt; mso-pagination: widow-orphan&quot; class=&quot;MsoNormal&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-family: Tahoma; color: black; font-size: 8.5pt; mso-font-kerning: 0pt&quot; lang=&quot;EN-US&quot;&gt;SAP Tool &lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;mso-yfti-irow: 1&quot;&gt;&lt;td style=&quot;border-bottom: black 1pt solid; border-left: black 1.5pt solid; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; padding-right: 5.4pt; border-top: #f0f0f0; border-right: black 1pt solid; padding-top: 0cm; mso-border-alt: solid black .75pt; mso-border-top-alt: solid black .75pt; mso-border-left-alt: solid black 1.5pt&quot; valign=&quot;top&quot;&gt;&lt;p style=&quot;text-align: left; line-height: 13pt; margin: 0cm 0cm 0pt; mso-pagination: widow-orphan&quot; class=&quot;MsoNormal&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-family: Tahoma; color: black; font-size: 8.5pt; mso-font-kerning: 0pt&quot; lang=&quot;EN-US&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: black 1pt solid; border-left: #f0f0f0; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; padding-right: 5.4pt; border-top: #f0f0f0; border-right: black 1pt solid; padding-top: 0cm; mso-border-alt: solid black .75pt; mso-border-top-alt: solid black .75pt; mso-border-left-alt: solid black .75pt&quot; valign=&quot;top&quot;&gt;&lt;p style=&quot;text-align: left; line-height: 13pt; margin: 0cm 0cm 0pt; mso-pagination: widow-orphan&quot; class=&quot;MsoNormal&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-family: Tahoma; color: black; font-size: 8.5pt; mso-font-kerning: 0pt&quot; lang=&quot;EN-US&quot;&gt;On out of memory &lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: black 1pt solid; border-left: #f0f0f0; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; padding-right: 5.4pt; border-top: #f0f0f0; border-right: black 1pt solid; padding-top: 0cm; mso-border-alt: solid black .75pt; mso-border-top-alt: solid black .75pt; mso-border-left-alt: solid black .75pt&quot; valign=&quot;top&quot;&gt;&lt;p style=&quot;text-align: left; line-height: 13pt; margin: 0cm 0cm 0pt; mso-pagination: widow-orphan&quot; class=&quot;MsoNormal&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-family: Tahoma; color: black; font-size: 8.5pt; mso-font-kerning: 0pt&quot; lang=&quot;EN-US&quot;&gt;On Ctrl+Break &lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: black 1pt solid; border-left: #f0f0f0; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; padding-right: 5.4pt; border-top: #f0f0f0; border-right: black 1pt solid; padding-top: 0cm; mso-border-alt: solid black .75pt; mso-border-top-alt: solid black .75pt; mso-border-left-alt: solid black .75pt&quot; valign=&quot;top&quot;&gt;&lt;p style=&quot;text-align: left; line-height: 13pt; margin: 0cm 0cm 0pt; mso-pagination: widow-orphan&quot; class=&quot;MsoNormal&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-family: Tahoma; color: black; font-size: 8.5pt; mso-font-kerning: 0pt&quot; lang=&quot;EN-US&quot;&gt;Agent &lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: black 1pt solid; border-left: #f0f0f0; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; padding-right: 5.4pt; border-top: #f0f0f0; border-right: black 1pt solid; padding-top: 0cm; mso-border-alt: solid black .75pt; mso-border-top-alt: solid black .75pt; mso-border-left-alt: solid black .75pt&quot; valign=&quot;top&quot;&gt;&lt;p style=&quot;text-align: left; line-height: 13pt; margin: 0cm 0cm 0pt; mso-pagination: widow-orphan&quot; class=&quot;MsoNormal&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-family: Tahoma; color: black; font-size: 8.5pt; mso-font-kerning: 0pt&quot; lang=&quot;EN-US&quot;&gt;JMap &lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: black 1pt solid; border-left: #f0f0f0; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; padding-right: 5.4pt; border-top: #f0f0f0; border-right: black 1pt solid; padding-top: 0cm; mso-border-alt: solid black .75pt; mso-border-top-alt: solid black .75pt; mso-border-left-alt: solid black .75pt&quot; valign=&quot;top&quot;&gt;&lt;p style=&quot;text-align: left; line-height: 13pt; margin: 0cm 0cm 0pt; mso-pagination: widow-orphan&quot; class=&quot;MsoNormal&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-family: Tahoma; color: black; font-size: 8.5pt; mso-font-kerning: 0pt&quot; lang=&quot;EN-US&quot;&gt;JConsole &lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: black 1pt solid; border-left: #f0f0f0; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; padding-right: 5.4pt; border-top: #f0f0f0; border-right: black 1.5pt solid; padding-top: 0cm; mso-border-alt: solid black .75pt; mso-border-top-alt: solid black .75pt; mso-border-left-alt: solid black .75pt; mso-border-right-alt: solid black 1.5pt&quot; valign=&quot;top&quot;&gt;&lt;p style=&quot;text-align: left; line-height: 13pt; margin: 0cm 0cm 0pt; mso-pagination: widow-orphan&quot; class=&quot;MsoNormal&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-family: Tahoma; color: black; font-size: 8.5pt; mso-font-kerning: 0pt&quot; lang=&quot;EN-US&quot;&gt;JVMMon &lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;mso-yfti-irow: 2&quot;&gt;&lt;td style=&quot;border-bottom: black 1pt solid; border-left: black 1.5pt solid; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; padding-right: 5.4pt; border-top: #f0f0f0; border-right: black 1pt solid; padding-top: 0cm; mso-border-alt: solid black .75pt; mso-border-top-alt: solid black .75pt; mso-border-left-alt: solid black 1.5pt&quot; valign=&quot;top&quot;&gt;&lt;p style=&quot;text-align: left; line-height: 13pt; margin: 0cm 0cm 0pt; mso-pagination: widow-orphan&quot; class=&quot;MsoNormal&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-family: Tahoma; color: black; font-size: 8.5pt; mso-font-kerning: 0pt&quot; lang=&quot;EN-US&quot;&gt;Sun, HP &lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: black 1pt solid; border-left: #f0f0f0; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; padding-right: 5.4pt; border-top: #f0f0f0; border-right: black 1pt solid; padding-top: 0cm; mso-border-alt: solid black .75pt; mso-border-top-alt: solid black .75pt; mso-border-left-alt: solid black .75pt&quot; valign=&quot;top&quot;&gt;&lt;p style=&quot;text-align: left; line-height: 13pt; margin: 0cm 0cm 0pt; mso-pagination: widow-orphan&quot; class=&quot;MsoNormal&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-family: Tahoma; color: black; font-size: 8.5pt; mso-font-kerning: 0pt&quot; lang=&quot;EN-US&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: black 1pt solid; border-left: #f0f0f0; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; padding-right: 5.4pt; border-top: #f0f0f0; border-right: black 1pt solid; padding-top: 0cm; mso-border-alt: solid black .75pt; mso-border-top-alt: solid black .75pt; mso-border-left-alt: solid black .75pt&quot; valign=&quot;top&quot;&gt;&lt;p style=&quot;text-align: left; line-height: 13pt; margin: 0cm 0cm 0pt; mso-pagination: widow-orphan&quot; class=&quot;MsoNormal&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-family: Tahoma; color: black; font-size: 8.5pt; mso-font-kerning: 0pt&quot; lang=&quot;EN-US&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: black 1pt solid; border-left: #f0f0f0; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; padding-right: 5.4pt; border-top: #f0f0f0; border-right: black 1pt solid; padding-top: 0cm; mso-border-alt: solid black .75pt; mso-border-top-alt: solid black .75pt; mso-border-left-alt: solid black .75pt&quot; valign=&quot;top&quot;&gt;&lt;p style=&quot;text-align: left; line-height: 13pt; margin: 0cm 0cm 0pt; mso-pagination: widow-orphan&quot; class=&quot;MsoNormal&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-family: Tahoma; color: black; font-size: 8.5pt; mso-font-kerning: 0pt&quot; lang=&quot;EN-US&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: black 1pt solid; border-left: #f0f0f0; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; padding-right: 5.4pt; border-top: #f0f0f0; border-right: black 1pt solid; padding-top: 0cm; mso-border-alt: solid black .75pt; mso-border-top-alt: solid black .75pt; mso-border-left-alt: solid black .75pt&quot; valign=&quot;top&quot;&gt;&lt;p style=&quot;text-align: left; line-height: 13pt; margin: 0cm 0cm 0pt; mso-pagination: widow-orphan&quot; class=&quot;MsoNormal&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-family: Tahoma; color: black; font-size: 8.5pt; mso-font-kerning: 0pt&quot; lang=&quot;EN-US&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: black 1pt solid; border-left: #f0f0f0; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; padding-right: 5.4pt; border-top: #f0f0f0; border-right: black 1pt solid; padding-top: 0cm; mso-border-alt: solid black .75pt; mso-border-top-alt: solid black .75pt; mso-border-left-alt: solid black .75pt&quot; valign=&quot;top&quot;&gt;&lt;p style=&quot;text-align: left; line-height: 13pt; margin: 0cm 0cm 0pt; mso-pagination: widow-orphan&quot; class=&quot;MsoNormal&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-family: Tahoma; color: black; font-size: 8.5pt; mso-font-kerning: 0pt&quot; lang=&quot;EN-US&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: black 1pt solid; border-left: #f0f0f0; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; padding-right: 5.4pt; border-top: #f0f0f0; border-right: black 1.5pt solid; padding-top: 0cm; mso-border-alt: solid black .75pt; mso-border-top-alt: solid black .75pt; mso-border-left-alt: solid black .75pt; mso-border-right-alt: solid black 1.5pt&quot; valign=&quot;top&quot;&gt;&lt;p style=&quot;text-align: left; line-height: 13pt; margin: 0cm 0cm 0pt; mso-pagination: widow-orphan&quot; class=&quot;MsoNormal&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-family: Tahoma; color: black; font-size: 8.5pt; mso-font-kerning: 0pt&quot; lang=&quot;EN-US&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;mso-yfti-irow: 3&quot;&gt;&lt;td style=&quot;border-bottom: black 1pt solid; border-left: black 1.5pt solid; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; padding-right: 5.4pt; border-top: #f0f0f0; border-right: black 1pt solid; padding-top: 0cm; mso-border-alt: solid black .75pt; mso-border-top-alt: solid black .75pt; mso-border-left-alt: solid black 1.5pt&quot; valign=&quot;top&quot;&gt;&lt;p style=&quot;text-align: left; line-height: 13pt; margin: 0cm 0cm 0pt; mso-pagination: widow-orphan&quot; class=&quot;MsoNormal&quot; align=&quot;left&quot;&gt;&lt;st1:chsdate w:st=&quot;on&quot; isrocdate=&quot;False&quot; islunardate=&quot;False&quot; day=&quot;30&quot; month=&quot;12&quot; year=&quot;1899&quot;&gt;&lt;span style=&quot;font-family: Tahoma; color: black; font-size: 8.5pt; mso-font-kerning: 0pt&quot; lang=&quot;EN-US&quot;&gt;1.4.2&lt;/span&gt;&lt;/st1:chsdate&gt;&lt;span style=&quot;font-family: Tahoma; color: black; font-size: 8.5pt; mso-font-kerning: 0pt&quot; lang=&quot;EN-US&quot;&gt;_12 &lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: black 1pt solid; border-left: #f0f0f0; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; padding-right: 5.4pt; border-top: #f0f0f0; border-right: black 1pt solid; padding-top: 0cm; mso-border-alt: solid black .75pt; mso-border-top-alt: solid black .75pt; mso-border-left-alt: solid black .75pt&quot; valign=&quot;top&quot;&gt;&lt;p style=&quot;text-align: left; line-height: 13pt; margin: 0cm 0cm 0pt; mso-pagination: widow-orphan&quot; class=&quot;MsoNormal&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-family: Tahoma; color: black; font-size: 8.5pt; mso-font-kerning: 0pt&quot; lang=&quot;EN-US&quot;&gt;Yes &lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: black 1pt solid; border-left: #f0f0f0; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; padding-right: 5.4pt; border-top: #f0f0f0; border-right: black 1pt solid; padding-top: 0cm; mso-border-alt: solid black .75pt; mso-border-top-alt: solid black .75pt; mso-border-left-alt: solid black .75pt&quot; valign=&quot;top&quot;&gt;&lt;p style=&quot;text-align: left; line-height: 13pt; margin: 0cm 0cm 0pt; mso-pagination: widow-orphan&quot; class=&quot;MsoNormal&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-family: Tahoma; color: black; font-size: 8.5pt; mso-font-kerning: 0pt&quot; lang=&quot;EN-US&quot;&gt;Yes &lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: black 1pt solid; border-left: #f0f0f0; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; padding-right: 5.4pt; border-top: #f0f0f0; border-right: black 1pt solid; padding-top: 0cm; mso-border-alt: solid black .75pt; mso-border-top-alt: solid black .75pt; mso-border-left-alt: solid black .75pt&quot; valign=&quot;top&quot;&gt;&lt;p style=&quot;text-align: left; line-height: 13pt; margin: 0cm 0cm 0pt; mso-pagination: widow-orphan&quot; class=&quot;MsoNormal&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-family: Tahoma; color: black; font-size: 8.5pt; mso-font-kerning: 0pt&quot; lang=&quot;EN-US&quot;&gt;Yes &lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: black 1pt solid; border-left: #f0f0f0; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; padding-right: 5.4pt; border-top: #f0f0f0; border-right: black 1pt solid; padding-top: 0cm; mso-border-alt: solid black .75pt; mso-border-top-alt: solid black .75pt; mso-border-left-alt: solid black .75pt&quot; valign=&quot;top&quot;&gt;&lt;p style=&quot;text-align: left; line-height: 13pt; margin: 0cm 0cm 0pt; mso-pagination: widow-orphan&quot; class=&quot;MsoNormal&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-family: Tahoma; color: black; font-size: 8.5pt; mso-font-kerning: 0pt&quot; lang=&quot;EN-US&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: black 1pt solid; border-left: #f0f0f0; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; padding-right: 5.4pt; border-top: #f0f0f0; border-right: black 1pt solid; padding-top: 0cm; mso-border-alt: solid black .75pt; mso-border-top-alt: solid black .75pt; mso-border-left-alt: solid black .75pt&quot; valign=&quot;top&quot;&gt;&lt;p style=&quot;text-align: left; line-height: 13pt; margin: 0cm 0cm 0pt; mso-pagination: widow-orphan&quot; class=&quot;MsoNormal&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-family: Tahoma; color: black; font-size: 8.5pt; mso-font-kerning: 0pt&quot; lang=&quot;EN-US&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: black 1pt solid; border-left: #f0f0f0; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; padding-right: 5.4pt; border-top: #f0f0f0; border-right: black 1.5pt solid; padding-top: 0cm; mso-border-alt: solid black .75pt; mso-border-top-alt: solid black .75pt; mso-border-left-alt: solid black .75pt; mso-border-right-alt: solid black 1.5pt&quot; valign=&quot;top&quot;&gt;&lt;p style=&quot;text-align: left; line-height: 13pt; margin: 0cm 0cm 0pt; mso-pagination: widow-orphan&quot; class=&quot;MsoNormal&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-family: Tahoma; color: black; font-size: 8.5pt; mso-font-kerning: 0pt&quot; lang=&quot;EN-US&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;mso-yfti-irow: 4&quot;&gt;&lt;td style=&quot;border-bottom: black 1pt solid; border-left: black 1.5pt solid; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; padding-right: 5.4pt; border-top: #f0f0f0; border-right: black 1pt solid; padding-top: 0cm; mso-border-alt: solid black .75pt; mso-border-top-alt: solid black .75pt; mso-border-left-alt: solid black 1.5pt&quot; valign=&quot;top&quot;&gt;&lt;p style=&quot;text-align: left; line-height: 13pt; margin: 0cm 0cm 0pt; mso-pagination: widow-orphan&quot; class=&quot;MsoNormal&quot; align=&quot;left&quot;&gt;&lt;st1:chsdate w:st=&quot;on&quot; isrocdate=&quot;False&quot; islunardate=&quot;False&quot; day=&quot;30&quot; month=&quot;12&quot; year=&quot;1899&quot;&gt;&lt;span style=&quot;font-family: Tahoma; color: black; font-size: 8.5pt; mso-font-kerning: 0pt&quot; lang=&quot;EN-US&quot;&gt;1.5.0&lt;/span&gt;&lt;/st1:chsdate&gt;&lt;span style=&quot;font-family: Tahoma; color: black; font-size: 8.5pt; mso-font-kerning: 0pt&quot; lang=&quot;EN-US&quot;&gt;_07 &lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: black 1pt solid; border-left: #f0f0f0; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; padding-right: 5.4pt; border-top: #f0f0f0; border-right: black 1pt solid; padding-top: 0cm; mso-border-alt: solid black .75pt; mso-border-top-alt: solid black .75pt; mso-border-left-alt: solid black .75pt&quot; valign=&quot;top&quot;&gt;&lt;p style=&quot;text-align: left; line-height: 13pt; margin: 0cm 0cm 0pt; mso-pagination: widow-orphan&quot; class=&quot;MsoNormal&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-family: Tahoma; color: black; font-size: 8.5pt; mso-font-kerning: 0pt&quot; lang=&quot;EN-US&quot;&gt;Yes &lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: black 1pt solid; border-left: #f0f0f0; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; padding-right: 5.4pt; border-top: #f0f0f0; border-right: black 1pt solid; padding-top: 0cm; mso-border-alt: solid black .75pt; mso-border-top-alt: solid black .75pt; mso-border-left-alt: solid black .75pt&quot; valign=&quot;top&quot;&gt;&lt;p style=&quot;text-align: left; line-height: 13pt; margin: 0cm 0cm 0pt; mso-pagination: widow-orphan&quot; class=&quot;MsoNormal&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-family: Tahoma; color: black; font-size: 8.5pt; mso-font-kerning: 0pt&quot; lang=&quot;EN-US&quot;&gt;Yes (Since &lt;st1:chsdate w:st=&quot;on&quot; isrocdate=&quot;False&quot; islunardate=&quot;False&quot; day=&quot;30&quot; month=&quot;12&quot; year=&quot;1899&quot;&gt;1.5.0&lt;/st1:chsdate&gt;_15) &lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: black 1pt solid; border-left: #f0f0f0; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; padding-right: 5.4pt; border-top: #f0f0f0; border-right: black 1pt solid; padding-top: 0cm; mso-border-alt: solid black .75pt; mso-border-top-alt: solid black .75pt; mso-border-left-alt: solid black .75pt&quot; valign=&quot;top&quot;&gt;&lt;p style=&quot;text-align: left; line-height: 13pt; margin: 0cm 0cm 0pt; mso-pagination: widow-orphan&quot; class=&quot;MsoNormal&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-family: Tahoma; color: black; font-size: 8.5pt; mso-font-kerning: 0pt&quot; lang=&quot;EN-US&quot;&gt;Yes &lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: black 1pt solid; border-left: #f0f0f0; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; padding-right: 5.4pt; border-top: #f0f0f0; border-right: black 1pt solid; padding-top: 0cm; mso-border-alt: solid black .75pt; mso-border-top-alt: solid black .75pt; mso-border-left-alt: solid black .75pt&quot; valign=&quot;top&quot;&gt;&lt;p style=&quot;text-align: left; line-height: 13pt; margin: 0cm 0cm 0pt; mso-pagination: widow-orphan&quot; class=&quot;MsoNormal&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-family: Tahoma; color: black; font-size: 8.5pt; mso-font-kerning: 0pt&quot; lang=&quot;EN-US&quot;&gt;Yes (Only Solaris and Linux) &lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: black 1pt solid; border-left: #f0f0f0; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; padding-right: 5.4pt; border-top: #f0f0f0; border-right: black 1pt solid; padding-top: 0cm; mso-border-alt: solid black .75pt; mso-border-top-alt: solid black .75pt; mso-border-left-alt: solid black .75pt&quot; valign=&quot;top&quot;&gt;&lt;p style=&quot;text-align: left; line-height: 13pt; margin: 0cm 0cm 0pt; mso-pagination: widow-orphan&quot; class=&quot;MsoNormal&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-family: Tahoma; color: black; font-size: 8.5pt; mso-font-kerning: 0pt&quot; lang=&quot;EN-US&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: black 1pt solid; border-left: #f0f0f0; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; padding-right: 5.4pt; border-top: #f0f0f0; border-right: black 1.5pt solid; padding-top: 0cm; mso-border-alt: solid black .75pt; mso-border-top-alt: solid black .75pt; mso-border-left-alt: solid black .75pt; mso-border-right-alt: solid black 1.5pt&quot; valign=&quot;top&quot;&gt;&lt;p style=&quot;text-align: left; line-height: 13pt; margin: 0cm 0cm 0pt; mso-pagination: widow-orphan&quot; class=&quot;MsoNormal&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-family: Tahoma; color: black; font-size: 8.5pt; mso-font-kerning: 0pt&quot; lang=&quot;EN-US&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;mso-yfti-irow: 5&quot;&gt;&lt;td style=&quot;border-bottom: black 1pt solid; border-left: black 1.5pt solid; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; padding-right: 5.4pt; border-top: #f0f0f0; border-right: black 1pt solid; padding-top: 0cm; mso-border-alt: solid black .75pt; mso-border-top-alt: solid black .75pt; mso-border-left-alt: solid black 1.5pt&quot; valign=&quot;top&quot;&gt;&lt;p style=&quot;text-align: left; line-height: 13pt; margin: 0cm 0cm 0pt; mso-pagination: widow-orphan&quot; class=&quot;MsoNormal&quot; align=&quot;left&quot;&gt;&lt;st1:chsdate w:st=&quot;on&quot; isrocdate=&quot;False&quot; islunardate=&quot;False&quot; day=&quot;30&quot; month=&quot;12&quot; year=&quot;1899&quot;&gt;&lt;span style=&quot;font-family: Tahoma; color: black; font-size: 8.5pt; mso-font-kerning: 0pt&quot; lang=&quot;EN-US&quot;&gt;1.6.0&lt;/span&gt;&lt;/st1:chsdate&gt;&lt;span style=&quot;font-family: Tahoma; color: black; font-size: 8.5pt; mso-font-kerning: 0pt&quot; lang=&quot;EN-US&quot;&gt;_00 &lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: black 1pt solid; border-left: #f0f0f0; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; padding-right: 5.4pt; border-top: #f0f0f0; border-right: black 1pt solid; padding-top: 0cm; mso-border-alt: solid black .75pt; mso-border-top-alt: solid black .75pt; mso-border-left-alt: solid black .75pt&quot; valign=&quot;top&quot;&gt;&lt;p style=&quot;text-align: left; line-height: 13pt; margin: 0cm 0cm 0pt; mso-pagination: widow-orphan&quot; class=&quot;MsoNormal&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-family: Tahoma; color: black; font-size: 8.5pt; mso-font-kerning: 0pt&quot; lang=&quot;EN-US&quot;&gt;Yes &lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: black 1pt solid; border-left: #f0f0f0; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; padding-right: 5.4pt; border-top: #f0f0f0; border-right: black 1pt solid; padding-top: 0cm; mso-border-alt: solid black .75pt; mso-border-top-alt: solid black .75pt; mso-border-left-alt: solid black .75pt&quot; valign=&quot;top&quot;&gt;&lt;p style=&quot;text-align: left; line-height: 13pt; margin: 0cm 0cm 0pt; mso-pagination: widow-orphan&quot; class=&quot;MsoNormal&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-family: Tahoma; color: black; font-size: 8.5pt; mso-font-kerning: 0pt&quot; lang=&quot;EN-US&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: black 1pt solid; border-left: #f0f0f0; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; padding-right: 5.4pt; border-top: #f0f0f0; border-right: black 1pt solid; padding-top: 0cm; mso-border-alt: solid black .75pt; mso-border-top-alt: solid black .75pt; mso-border-left-alt: solid black .75pt&quot; valign=&quot;top&quot;&gt;&lt;p style=&quot;text-align: left; line-height: 13pt; margin: 0cm 0cm 0pt; mso-pagination: widow-orphan&quot; class=&quot;MsoNormal&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-family: Tahoma; color: black; font-size: 8.5pt; mso-font-kerning: 0pt&quot; lang=&quot;EN-US&quot;&gt;Yes &lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: black 1pt solid; border-left: #f0f0f0; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; padding-right: 5.4pt; border-top: #f0f0f0; border-right: black 1pt solid; padding-top: 0cm; mso-border-alt: solid black .75pt; mso-border-top-alt: solid black .75pt; mso-border-left-alt: solid black .75pt&quot; valign=&quot;top&quot;&gt;&lt;p style=&quot;text-align: left; line-height: 13pt; margin: 0cm 0cm 0pt; mso-pagination: widow-orphan&quot; class=&quot;MsoNormal&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-family: Tahoma; color: black; font-size: 8.5pt; mso-font-kerning: 0pt&quot; lang=&quot;EN-US&quot;&gt;Yes &lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: black 1pt solid; border-left: #f0f0f0; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; padding-right: 5.4pt; border-top: #f0f0f0; border-right: black 1pt solid; padding-top: 0cm; mso-border-alt: solid black .75pt; mso-border-top-alt: solid black .75pt; mso-border-left-alt: solid black .75pt&quot; valign=&quot;top&quot;&gt;&lt;p style=&quot;text-align: left; line-height: 13pt; margin: 0cm 0cm 0pt; mso-pagination: widow-orphan&quot; class=&quot;MsoNormal&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-family: Tahoma; color: black; font-size: 8.5pt; mso-font-kerning: 0pt&quot; lang=&quot;EN-US&quot;&gt;Yes (Not working with AS Java) &lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: black 1pt solid; border-left: #f0f0f0; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; padding-right: 5.4pt; border-top: #f0f0f0; border-right: black 1.5pt solid; padding-top: 0cm; mso-border-alt: solid black .75pt; mso-border-top-alt: solid black .75pt; mso-border-left-alt: solid black .75pt; mso-border-right-alt: solid black 1.5pt&quot; valign=&quot;top&quot;&gt;&lt;p style=&quot;text-align: left; line-height: 13pt; margin: 0cm 0cm 0pt; mso-pagination: widow-orphan&quot; class=&quot;MsoNormal&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-family: Tahoma; color: black; font-size: 8.5pt; mso-font-kerning: 0pt&quot; lang=&quot;EN-US&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;mso-yfti-irow: 6&quot;&gt;&lt;td style=&quot;border-bottom: black 1pt solid; border-left: black 1.5pt solid; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; padding-right: 5.4pt; border-top: #f0f0f0; border-right: black 1pt solid; padding-top: 0cm; mso-border-alt: solid black .75pt; mso-border-top-alt: solid black .75pt; mso-border-left-alt: solid black 1.5pt&quot; valign=&quot;top&quot;&gt;&lt;p style=&quot;text-align: left; line-height: 13pt; margin: 0cm 0cm 0pt; mso-pagination: widow-orphan&quot; class=&quot;MsoNormal&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-family: Tahoma; color: black; font-size: 8.5pt; mso-font-kerning: 0pt&quot; lang=&quot;EN-US&quot;&gt;SAP &lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: black 1pt solid; border-left: #f0f0f0; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; padding-right: 5.4pt; border-top: #f0f0f0; border-right: black 1pt solid; padding-top: 0cm; mso-border-alt: solid black .75pt; mso-border-top-alt: solid black .75pt; mso-border-left-alt: solid black .75pt&quot; valign=&quot;top&quot;&gt;&lt;p style=&quot;text-align: left; line-height: 13pt; margin: 0cm 0cm 0pt; mso-pagination: widow-orphan&quot; class=&quot;MsoNormal&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-family: Tahoma; color: black; font-size: 8.5pt; mso-font-kerning: 0pt&quot; lang=&quot;EN-US&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: black 1pt solid; border-left: #f0f0f0; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; padding-right: 5.4pt; border-top: #f0f0f0; border-right: black 1pt solid; padding-top: 0cm; mso-border-alt: solid black .75pt; mso-border-top-alt: solid black .75pt; mso-border-left-alt: solid black .75pt&quot; valign=&quot;top&quot;&gt;&lt;p style=&quot;text-align: left; line-height: 13pt; margin: 0cm 0cm 0pt; mso-pagination: widow-orphan&quot; class=&quot;MsoNormal&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-family: Tahoma; color: black; font-size: 8.5pt; mso-font-kerning: 0pt&quot; lang=&quot;EN-US&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: black 1pt solid; border-left: #f0f0f0; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; padding-right: 5.4pt; border-top: #f0f0f0; border-right: black 1pt solid; padding-top: 0cm; mso-border-alt: solid black .75pt; mso-border-top-alt: solid black .75pt; mso-border-left-alt: solid black .75pt&quot; valign=&quot;top&quot;&gt;&lt;p style=&quot;text-align: left; line-height: 13pt; margin: 0cm 0cm 0pt; mso-pagination: widow-orphan&quot; class=&quot;MsoNormal&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-family: Tahoma; color: black; font-size: 8.5pt; mso-font-kerning: 0pt&quot; lang=&quot;EN-US&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: black 1pt solid; border-left: #f0f0f0; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; padding-right: 5.4pt; border-top: #f0f0f0; border-right: black 1pt solid; padding-top: 0cm; mso-border-alt: solid black .75pt; mso-border-top-alt: solid black .75pt; mso-border-left-alt: solid black .75pt&quot; valign=&quot;top&quot;&gt;&lt;p style=&quot;text-align: left; line-height: 13pt; margin: 0cm 0cm 0pt; mso-pagination: widow-orphan&quot; class=&quot;MsoNormal&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-family: Tahoma; color: black; font-size: 8.5pt; mso-font-kerning: 0pt&quot; lang=&quot;EN-US&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: black 1pt solid; border-left: #f0f0f0; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; padding-right: 5.4pt; border-top: #f0f0f0; border-right: black 1pt solid; padding-top: 0cm; mso-border-alt: solid black .75pt; mso-border-top-alt: solid black .75pt; mso-border-left-alt: solid black .75pt&quot; valign=&quot;top&quot;&gt;&lt;p style=&quot;text-align: left; line-height: 13pt; margin: 0cm 0cm 0pt; mso-pagination: widow-orphan&quot; class=&quot;MsoNormal&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-family: Tahoma; color: black; font-size: 8.5pt; mso-font-kerning: 0pt&quot; lang=&quot;EN-US&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: black 1pt solid; border-left: #f0f0f0; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; padding-right: 5.4pt; border-top: #f0f0f0; border-right: black 1.5pt solid; padding-top: 0cm; mso-border-alt: solid black .75pt; mso-border-top-alt: solid black .75pt; mso-border-left-alt: solid black .75pt; mso-border-right-alt: solid black 1.5pt&quot; valign=&quot;top&quot;&gt;&lt;p style=&quot;text-align: left; line-height: 13pt; margin: 0cm 0cm 0pt; mso-pagination: widow-orphan&quot; class=&quot;MsoNormal&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-family: Tahoma; color: black; font-size: 8.5pt; mso-font-kerning: 0pt&quot; lang=&quot;EN-US&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;mso-yfti-irow: 7; mso-yfti-lastrow: yes&quot;&gt;&lt;td style=&quot;border-bottom: black 1.5pt solid; border-left: black 1.5pt solid; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; padding-right: 5.4pt; border-top: #f0f0f0; border-right: black 1pt solid; padding-top: 0cm; mso-border-top-alt: .75pt; mso-border-left-alt: 1.5pt; mso-border-bottom-alt: 1.5pt; mso-border-right-alt: .75pt; mso-border-color-alt: black; mso-border-style-alt: solid&quot; valign=&quot;top&quot;&gt;&lt;p style=&quot;text-align: left; line-height: 13pt; margin: 0cm 0cm 0pt; mso-pagination: widow-orphan&quot; class=&quot;MsoNormal&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-family: Tahoma; color: black; font-size: 8.5pt; mso-font-kerning: 0pt&quot; lang=&quot;EN-US&quot;&gt;Any &lt;st1:chsdate w:st=&quot;on&quot; isrocdate=&quot;False&quot; islunardate=&quot;False&quot; day=&quot;30&quot; month=&quot;12&quot; year=&quot;1899&quot;&gt;1.5.0&lt;/st1:chsdate&gt;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: black 1.5pt solid; border-left: #f0f0f0; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; padding-right: 5.4pt; border-top: #f0f0f0; border-right: black 1pt solid; padding-top: 0cm; mso-border-alt: solid black .75pt; mso-border-top-alt: solid black .75pt; mso-border-left-alt: solid black .75pt; mso-border-bottom-alt: solid black 1.5pt&quot; valign=&quot;top&quot;&gt;&lt;p style=&quot;text-align: left; line-height: 13pt; margin: 0cm 0cm 0pt; mso-pagination: widow-orphan&quot; class=&quot;MsoNormal&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-family: Tahoma; color: black; font-size: 8.5pt; mso-font-kerning: 0pt&quot; lang=&quot;EN-US&quot;&gt;Yes &lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: black 1.5pt solid; border-left: #f0f0f0; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; padding-right: 5.4pt; border-top: #f0f0f0; border-right: black 1pt solid; padding-top: 0cm; mso-border-alt: solid black .75pt; mso-border-top-alt: solid black .75pt; mso-border-left-alt: solid black .75pt; mso-border-bottom-alt: solid black 1.5pt&quot; valign=&quot;top&quot;&gt;&lt;p style=&quot;text-align: left; line-height: 13pt; margin: 0cm 0cm 0pt; mso-pagination: widow-orphan&quot; class=&quot;MsoNormal&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-family: Tahoma; color: black; font-size: 8.5pt; mso-font-kerning: 0pt&quot; lang=&quot;EN-US&quot;&gt;Yes &lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: black 1.5pt solid; border-left: #f0f0f0; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; padding-right: 5.4pt; border-top: #f0f0f0; border-right: black 1pt solid; padding-top: 0cm; mso-border-alt: solid black .75pt; mso-border-top-alt: solid black .75pt; mso-border-left-alt: solid black .75pt; mso-border-bottom-alt: solid black 1.5pt&quot; valign=&quot;top&quot;&gt;&lt;p style=&quot;text-align: left; line-height: 13pt; margin: 0cm 0cm 0pt; mso-pagination: widow-orphan&quot; class=&quot;MsoNormal&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-family: Tahoma; color: black; font-size: 8.5pt; mso-font-kerning: 0pt&quot; lang=&quot;EN-US&quot;&gt;Yes &lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: black 1.5pt solid; border-left: #f0f0f0; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; padding-right: 5.4pt; border-top: #f0f0f0; border-right: black 1pt solid; padding-top: 0cm; mso-border-alt: solid black .75pt; mso-border-top-alt: solid black .75pt; mso-border-left-alt: solid black .75pt; mso-border-bottom-alt: solid black 1.5pt&quot; valign=&quot;top&quot;&gt;&lt;p style=&quot;text-align: left; line-height: 13pt; margin: 0cm 0cm 0pt; mso-pagination: widow-orphan&quot; class=&quot;MsoNormal&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-family: Tahoma; color: black; font-size: 8.5pt; mso-font-kerning: 0pt&quot; lang=&quot;EN-US&quot;&gt;Yes (Only Solaris and Linux) &lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: black 1.5pt solid; border-left: #f0f0f0; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; padding-right: 5.4pt; border-top: #f0f0f0; border-right: black 1pt solid; padding-top: 0cm; mso-border-alt: solid black .75pt; mso-border-top-alt: solid black .75pt; mso-border-left-alt: solid black .75pt; mso-border-bottom-alt: solid black 1.5pt&quot; valign=&quot;top&quot;&gt;&lt;p style=&quot;text-align: left; line-height: 13pt; margin: 0cm 0cm 0pt; mso-pagination: widow-orphan&quot; class=&quot;MsoNormal&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-family: Tahoma; color: black; font-size: 8.5pt; mso-font-kerning: 0pt&quot; lang=&quot;EN-US&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-bottom: black 1.5pt solid; border-left: #f0f0f0; padding-bottom: 0cm; background-color: transparent; padding-left: 5.4pt; padding-right: 5.4pt; border-top: #f0f0f0; border-right: black 1.5pt solid; padding-top: 0cm; mso-border-top-alt: solid black .75pt; mso-border-left-alt: solid black .75pt&quot; valign=&quot;top&quot;&gt;&lt;p style=&quot;text-align: left; line-height: 13pt; margin: 0cm 0cm 0pt; mso-pagination: widow-orphan&quot; class=&quot;MsoNormal&quot; align=&quot;left&quot;&gt;&lt;span style=&quot;font-family: Tahoma; color: black; font-size: 8.5pt; mso-font-kerning: 0pt&quot; lang=&quot;EN-US&quot;&gt;Yes &lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/p&gt;&lt;p&gt;If you run into problems opening a heap dump with the SAP Memory Analyzer (Error message: &amp;quot;Unrecognized heap dump sub-record type&amp;quot;), please let us know. This indicates a corrupt heap dump file. In this case we would like to learn which tool/approach you have chosen to dump the heap.&lt;/p&gt;&lt;h2&gt;When HPROF heap dumps are NOT written on OutOfMemoryError?&lt;/h2&gt;&lt;p&gt;Heap dumps are not written on OutOfMemoryError for the following reasons:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Application creates and throws OutOfMemoryError on its own&lt;/li&gt;&lt;li&gt;Another resource like threads per process is exhausted&lt;/li&gt;&lt;li&gt;C heap is exhausted&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;As for the C heap, the best way to see that you won&apos;t get a heap dump is if it happens in C code (eArray.cpp in the example below):&lt;br /&gt;&lt;/p&gt;&lt;div style=&quot;border-right-width: 1px; border-top-width: 1px; border-bottom-width: 1px; border-left-width: 1px&quot; class=&quot;preformatted panel&quot;&gt;&lt;div class=&quot;preformattedContent panelContent&quot;&gt;&lt;pre&gt;
# An unexpected error has been detected by SAP Java Virtual Machine:
# java.lang.OutOfMemoryError: requested 2048000 bytes for eArray.cpp:80: GrET*. Out of swap space or heap resource limit exceeded (check with limits or ulimit)?
# Internal Error (\\...\hotspot\src\share\vm\memory\allocation.inline.hpp, 26), pid=6000, tid=468
&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;br clear=&quot;all&quot; /&gt;C heap problems may arise for different reasons, e.g. out of swap space situations, process limits exhaustion or just address space limitations, e.g. heavy fragmentation or just the depletion of it on machines with limited address space like 32 bit machines. The hs_err-file will help you with more information on this type of error. Java heap dumps wouldn&apos;t be of any help, anyways.&lt;/p&gt;&lt;p&gt;Also please note that a heap dump is written only on the first OutOfMemoryError. If the application chooses to catch it and continues to run, the next OutOfMemoryError will never cause a heap dump to be written!&amp;nbsp;&lt;/p&gt;&lt;h2&gt;How can I get an IBM system dump?&lt;/h2&gt;&lt;p&gt;How to get an IBM system dump to be analyzed with Memory Analyzer +&amp;nbsp;DTFJ Adapter depends on the concrete IBM system / JVM. The following resources should provide the necessary description:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;SAP Note 1259465&amp;nbsp;- For &lt;b&gt;NetWeaver 6.40 / 7.0x on AIX&lt;/b&gt;&lt;/li&gt;&lt;li&gt;SAP Note 1265455 - For &lt;b&gt;NetWeaver 6.40 / 7.0x on&amp;nbsp;pLinux (Linux on Power)&lt;/b&gt;&lt;/li&gt;&lt;li&gt;SAP Note 1263258 - For &lt;b&gt;NetWeaver 6.40 / 7.0x on xLinux (IBM VM for Linux on x86_64)&lt;/b&gt;&amp;nbsp;&lt;/li&gt;&lt;li&gt;SAP Note 1267126 - For &lt;b&gt;NetWeaver 6.40 / 7.0x on&amp;nbsp;IBM i&lt;/b&gt;&lt;/li&gt;&lt;li&gt;SAP Note 1336952 - For &lt;b&gt;NetWeaver 6.40 / 7.0x on&amp;nbsp;zLinux (Linux on System z)&lt;/b&gt;&lt;/li&gt;&lt;li&gt;The DTFJ Adapter Help available under the &amp;quot;Help&amp;quot; menu in Memory Analyzer after the &lt;a href=&quot;http://www.ibm.com/developerworks/java/jdk/tools/mat.html&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;&lt;u&gt;&lt;font color=&quot;#0066cc&quot;&gt;DTFJ adapter&lt;/font&gt;&lt;/u&gt;&lt;/a&gt; is installed&lt;/li&gt;&lt;li&gt;IBM&apos;s &lt;a href=&quot;http://www.ibm.com/developerworks/java/jdk/diagnosis/&quot; rel=&quot;nofollow&quot; target=&quot;_blank&quot;&gt;&lt;u&gt;&lt;font color=&quot;#0066cc&quot;&gt;Diagnosis documentation&lt;/font&gt;&lt;/u&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Source From:&lt;a href=&quot;http://wiki.sdn.sap.com/wiki/display/Java/Java+Memory+Analysis&quot; target=&quot;_blank&quot;&gt;wiki.sdn.sap.com/wiki/display/Java/Java+Memory+Analysis&lt;/a&gt;&lt;/p&gt;</description>
		<guid>http://www.517sou.net/Article/398.aspx</guid>
		<trackback:ping>http://www.517sou.net/Article/398/Trackback.ashx</trackback:ping>
		<comments>http://www.517sou.net/Article/398.aspx#CommentPostAnchor</comments>
		<wfw:commentRss>http://www.517sou.net/Article/398/Feeds.ashx</wfw:commentRss>
	</item>
</channel>
</rss>