<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>AnySQL.net</title>
	
	<link>http://www.anysql.net</link>
	<description>Oracle数据库恢复, DBA工具, DataReport等</description>
	<lastBuildDate>Sat, 21 Nov 2009 04:52:33 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<image><link>http://www.anysql.net</link><url>http://www.feedburner.com/fb/images/pub/fb_pwrd.gif</url><title>AnySQL.net</title></image><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/AnySQL" type="application/rss+xml" /><feedburner:emailServiceId>AnySQL</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><feedburner:browserFriendly>This is an XML content feed. It is intended to be viewed in a newsreader or syndicated to another site, subject to copyright and fair use.</feedburner:browserFriendly><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item>
		<title>首次AUL恢复失败案例</title>
		<link>http://feedproxy.google.com/~r/AnySQL/~3/Lht3e8Otzxk/aul-fail-oracle-bug-7705591.html</link>
		<comments>http://www.anysql.net/aulmydul/aul-fail-oracle-bug-7705591.html#comments</comments>
		<pubDate>Fri, 20 Nov 2009 15:00:44 +0000</pubDate>
		<dc:creator>anysql</dc:creator>
				<category><![CDATA[AUL/MyDUL]]></category>
		<category><![CDATA[DUL]]></category>
		<category><![CDATA[Recovery]]></category>

		<guid isPermaLink="false">http://www.anysql.net/?p=717</guid>
		<description><![CDATA[&#160; &#160; 首次遇到AUL恢复失败。经过一天一夜的恢复偿试，未能恢复全部记录，11月18日第一次恢复时，AUL恢复程序一直不结束，恢复出来的DMP文件一直在增长，直到用掉了所有的可用空间。11月19日用调试模式运行恢复进程，发现AUL恢复程序处于一种死循环的状态，当时的输出如下：


……
Recover rows from chained block RDBA=29371932 ...
Recover rows from chained block RDBA=29371771 ...
Recover rows from chained block RDBA=29371579 ...
Recover rows from chained block RDBA=29371868 ...
Recover rows from chained block RDBA=29371884 ...
Recover rows from chained block RDBA=29371900 ...
Recover rows from chained block RDBA=29371916 ...
Recover rows from chained block RDBA=29371932 ...
……


&#160; &#160; 由于要恢复的表中含有LONG RAW字段，里面存放的都是比较大的图片，PDF文档或WORD文档的二进制文件，从1MB到8MB不等，所以需要链接块（Chained Blocks）来用多个块存放一条记录。从上面截取的调试信息中，红色的第一行和最后一行，访问的数据块是相同的，这一点是不能理解的。当我们通过标记第一个块为损坏块后，后面又出现了类似的情况，通过求助于Oracle官方的支持网站，进行资料查找，发现有一个Bug和这种情况息息相关：


Bug [...]]]></description>
			<content:encoded><![CDATA[<p>&nbsp; &nbsp; 首次遇到AUL恢复失败。经过一天一夜的恢复偿试，未能恢复全部记录，11月18日第一次恢复时，AUL恢复程序一直不结束，恢复出来的DMP文件一直在增长，直到用掉了所有的可用空间。11月19日用调试模式运行恢复进程，发现AUL恢复程序处于一种死循环的状态，当时的输出如下：</p>

<blockquote class="prefont">
……<br />
<font color="red">Recover rows from chained block RDBA=29371932 ...</font><br />
Recover rows from chained block RDBA=29371771 ...<br />
Recover rows from chained block RDBA=29371579 ...<br />
Recover rows from chained block RDBA=29371868 ...<br />
Recover rows from chained block RDBA=29371884 ...<br />
Recover rows from chained block RDBA=29371900 ...<br />
Recover rows from chained block RDBA=29371916 ...<br />
<font color="red">Recover rows from chained block RDBA=29371932 ...</font><br />
……<br />
</blockquote>

<p>&nbsp; &nbsp; 由于要恢复的表中含有LONG RAW字段，里面存放的都是比较大的图片，PDF文档或WORD文档的二进制文件，从1MB到8MB不等，所以需要链接块（Chained Blocks）来用多个块存放一条记录。从上面截取的调试信息中，红色的第一行和最后一行，访问的数据块是相同的，这一点是不能理解的。当我们通过标记第一个块为损坏块后，后面又出现了类似的情况，通过求助于Oracle官方的支持网站，进行资料查找，发现有一个Bug和这种情况息息相关：</p>

<blockquote>
Bug 7705591  Corruption with self-referenced row in MSSM tablespace
</blockquote>

<p>&nbsp; &nbsp; 这个Bug已经确认会在10.2.0.2和10.2.0.4上遇到，并且目前的所有版本中都可能遇到，Oracle在这个Bug上写明，要到未来版本才能修复。这个Bug详细的英文解说如下：</p>

<blockquote>
A chained row (logical row continued in another row) in a table can be corrupted where the next row piece (nrid) points to itself.Data corruption resulting from a lost row piece can occur very intermittently in blocks experiencing high concurrency in MSSM tablespaces (dba_tablespaces.segment_space_management=MANUAL). It is most likely to happen but not limited to tables with a large number of columns (e.g. more than 255 columns). Without the fix of Bug 8720802 tools like DBVERIFY / RMAN / ANALYZE don't detect this logical corruption. The fix for this bug does not repair existent corruptions.
</blockquote>

<p>&nbsp; &nbsp; 简单地说就是CHAINED BLOCKS形成了一个环路, 无法跳出去，如果没有打上8720802这个补丁，连Oracle的工具DBV/RMAN/ANALYZE命令等都检测不出这种情况。并且修复这个Bug也不能纠正现有的记录。在Metalink上还有其他一些有关行链接的Bug, 可以用关键字“oracle chained row corruption bug”去搜索，也可能造成记录头的混乱。</p>

<p>&nbsp; &nbsp; 而恢复软件能顺利恢复的基础是，要么块是完好的，要么块能免被检查出来是损坏的，但按照现状，这个Bug引起的问题，很多工具都不能检测到这种情况。AUL现在可以检测出来行链接进行死循环的情况，但无法应对其他一些有关行链接的Bug引起的逻辑损坏，目前来讲逻辑损坏会导致，恢复出来的DMP文件无法导入，引起恢复失败。</p>
<h3  class="related_post_title">Relative Posts:</h3><ul class="related_post"><li>2009/06/09 -- <a href="http://www.anysql.net/aulmydul/aul-bugs-found-200906.html" title="AUL程序上的两处缺陷">AUL程序上的两处缺陷</a> (1)</li><li>2008/12/27 -- <a href="http://www.anysql.net/aulmydul/aul_parallel_scan_extent.html" title="AUL并行扫描Extent">AUL并行扫描Extent</a> (1)</li><li>2008/08/01 -- <a href="http://www.anysql.net/aulmydul/to_date_from_quarter.html" title="终极Oracle数据恢复工具 &#8212; AUL">终极Oracle数据恢复工具 &#8212; AUL</a> (8)</li><li>2008/05/12 -- <a href="http://www.anysql.net/aulmydul/undo_and_index_bugs.html" title="Oracle不行再用AUL">Oracle不行再用AUL</a> (7)</li><li>2008/04/17 -- <a href="http://www.anysql.net/aulmydul/aul_for_sybase_ase.html" title="Oracle DUL不行就用AUL">Oracle DUL不行就用AUL</a> (10)</li><li>2008/03/26 -- <a href="http://www.anysql.net/aulmydul/try_make_good_suggestion.html" title="不是好人, 这么无耻!">不是好人, 这么无耻!</a> (24)</li><li>2008/03/20 -- <a href="http://www.anysql.net/aulmydul/aul_recover_sequences.html" title="AUL恢复Oracle视图代码?">AUL恢复Oracle视图代码?</a> (0)</li><li>2008/03/20 -- <a href="http://www.anysql.net/aulmydul/aul_recover_triggers.html" title="AUL恢复Oracle Sequence?">AUL恢复Oracle Sequence?</a> (0)</li><li>2008/03/20 -- <a href="http://www.anysql.net/aulmydul/aul_recover_table_indexes.html" title="AUL恢复Oracle触发器?">AUL恢复Oracle触发器?</a> (0)</li><li>2008/03/20 -- <a href="http://www.anysql.net/aulmydul/aul_recover_source_code.html" title="AUL恢复Oracle索引结构?">AUL恢复Oracle索引结构?</a> (0)</li></ul><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/AnySQL?a=Lht3e8Otzxk:GDG3uxtDVdc:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/AnySQL?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AnySQL?a=Lht3e8Otzxk:GDG3uxtDVdc:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/AnySQL?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AnySQL?a=Lht3e8Otzxk:GDG3uxtDVdc:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/AnySQL?i=Lht3e8Otzxk:GDG3uxtDVdc:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AnySQL?a=Lht3e8Otzxk:GDG3uxtDVdc:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/AnySQL?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AnySQL?a=Lht3e8Otzxk:GDG3uxtDVdc:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/AnySQL?d=dnMXMwOfBR0" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/AnySQL/~4/Lht3e8Otzxk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.anysql.net/aulmydul/aul-fail-oracle-bug-7705591.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.anysql.net/aulmydul/aul-fail-oracle-bug-7705591.html</feedburner:origLink></item>
		<item>
		<title>MySQL数据迁移测试</title>
		<link>http://feedproxy.google.com/~r/AnySQL/~3/TsM5Qg1arI0/sqluldr2-mysql-data-migration-test.html</link>
		<comments>http://www.anysql.net/tools/sqluldr2-mysql-data-migration-test.html#comments</comments>
		<pubDate>Fri, 06 Nov 2009 23:35:01 +0000</pubDate>
		<dc:creator>anysql</dc:creator>
				<category><![CDATA[Tools]]></category>
		<category><![CDATA[Data]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Oracle]]></category>

		<guid isPermaLink="false">http://www.anysql.net/?p=716</guid>
		<description><![CDATA[&#160; &#160; 早上在笔记本上测试了一下, 以生成Insert语句的方式, 从Oracle到MySQL迁移数据的速度. 对于MySQL来讲, 是不是绑定变量并不重要, 在MySQL的客户端编程中, 并没有绑定变量的概念, 这是因为MySQL并没有Oracle中类似的共享池, 而是由每个连接进程自行去解释SQL并执行. 

&#160; &#160; 写了一个Windows上的批处理脚本, 用SQLULDR2从Oracle中查询数据, 并生成MySQL的Insert脚本, 用管道输入到MySQL中去执行. 


@echo off
echo %TIME%
sqluldr2 ... table=emp_his format=mysql quote=0x27 escape=0x53 null=null file=- &#124; mysql test
echo %TIME%


&#160; &#160; 首先在MyISAM下测试, 先将表改成MyISAM方式存贮. 


mysql&#62; alter table emp_his engine= myisam;
Query OK, 0 rows affected (0.05 sec)
Records: 0&#160; Duplicates: 0&#160; Warnings: 0


&#160; &#160; 进行数据装载测试, 可以看出还是很快的. 


D:\mysql-5.0.84-win32\bin&#62;runload.bat
 [...]]]></description>
			<content:encoded><![CDATA[<p>&nbsp; &nbsp; 早上在笔记本上测试了一下, 以生成Insert语句的方式, 从Oracle到MySQL迁移数据的速度. 对于MySQL来讲, 是不是绑定变量并不重要, 在MySQL的客户端编程中, 并没有绑定变量的概念, 这是因为MySQL并没有Oracle中类似的共享池, 而是由每个连接进程自行去解释SQL并执行. </p>

<p>&nbsp; &nbsp; 写了一个Windows上的批处理脚本, 用SQLULDR2从Oracle中查询数据, 并生成MySQL的Insert脚本, 用管道输入到MySQL中去执行. </p>

<blockquote class="prefont">
@echo off<br />
echo %TIME%<br />
sqluldr2 ... table=emp_his format=mysql quote=0x27 escape=0x53 null=null file=- | mysql test<br />
echo %TIME%
</blockquote>

<p>&nbsp; &nbsp; 首先在MyISAM下测试, 先将表改成MyISAM方式存贮. </p>

<blockquote class="prefont">
mysql&gt; alter table emp_his engine= myisam;<br />
Query OK, 0 rows affected (0.05 sec)<br />
Records: 0&nbsp; Duplicates: 0&nbsp; Warnings: 0
</blockquote>

<p>&nbsp; &nbsp; 进行数据装载测试, 可以看出还是很快的. </p>

<blockquote class="prefont">
D:\mysql-5.0.84-win32\bin&gt;runload.bat<br />
 7:12:28.10<br />
 7:12:41.87
</blockquote>

<p>&nbsp; &nbsp; 查一下总共迁移的记录数. </p>

<blockquote class="prefont">
mysql&gt; select count(*) from emp_his;<br />
+----------+<br />
| count(*) |<br />
+----------+<br />
|&nbsp;  951308 |<br />
+----------+<br />
1 row in set (0.00 sec)
</blockquote>

<p>&nbsp; &nbsp; 接下来在Innodb下测试, 将表改成Innodb方式存贮. </p>

<blockquote class="prefont">
mysql&gt; alter table emp_his engine= innodb;<br />
Query OK, 0 rows affected (0.06 sec)<br />
Records: 0&nbsp; Duplicates: 0&nbsp; Warnings: 0
</blockquote>

<p>&nbsp; &nbsp; 进行数据装载测试, 可以看出比MyISAM要慢不少. </p>

<blockquote class="prefont">
D:\mysql-5.0.84-win32\bin&gt;runload.bat<br />
 7:09:34.85<br />
 7:10:06.15
</blockquote>

<p>&nbsp; &nbsp; 查一下总共迁移的记录数. </p>

<blockquote class="prefont">
mysql&gt; select count(*) from emp_his;<br />
+----------+<br />
| count(*) |<br />
+----------+<br />
|&nbsp;  951308 |<br />
+----------+<br />
1 row in set (2.11 sec)
</blockquote>

<p>&nbsp; &nbsp; 在MySQL中, 将同样的表从MyISAM转到Innodb, 需要多少时间?

<blockquote class="prefont">
mysql&gt; alter table emp_his engine= innodb;<br />
Query OK, 951308 rows affected (16.67 sec)<br />
Records: 951308&nbsp; Duplicates: 0&nbsp; Warnings: 0
</blockquote>

<p>&nbsp; &nbsp; 对于在笔记本上测试的这个结果, 个人是相当满意的, 测试的表有8个字段, 差不多等于平均数. </p><h3  class="related_post_title">Relative Posts:</h3><ul class="related_post"><li>2009/10/30 -- <a href="http://www.anysql.net/tools/sqluldr2-high-perf-insert-unload.html" title="SQLULDR2功能增加, 性能不减">SQLULDR2功能增加, 性能不减</a> (9)</li><li>2009/10/28 -- <a href="http://www.anysql.net/tools/sqluldr2-mysql-insert-sqls.html" title="SQLULDR2生成Insert SQL语句">SQLULDR2生成Insert SQL语句</a> (4)</li><li>2009/10/27 -- <a href="http://www.anysql.net/tools/sqluldr2-more-escape-chars.html" title="将SQLULDR2转义符进行到底">将SQLULDR2转义符进行到底</a> (3)</li><li>2009/10/26 -- <a href="http://www.anysql.net/tools/sqluldr2-mysql-escape-char.html" title="SQLULDR2处理MySQL转义符">SQLULDR2处理MySQL转义符</a> (1)</li><li>2009/08/31 -- <a href="http://www.anysql.net/tools/sqluldr2-mysql-null-value.html" title="SQLULDR2处理MySQL的空值">SQLULDR2处理MySQL的空值</a> (2)</li><li>2009/06/25 -- <a href="http://www.anysql.net/tools/oramon-system-event.html" title="oramon如何收集V$SYSTEM_EVENT数据?">oramon如何收集V$SYSTEM_EVENT数据?</a> (3)</li><li>2009/06/25 -- <a href="http://www.anysql.net/tools/oramon-session-history.html" title="oramon如何从V$SESSION收集性能数据?">oramon如何从V$SESSION收集性能数据?</a> (0)</li><li>2009/06/24 -- <a href="http://www.anysql.net/oracle/oramon-system-statistics.html" title="oramon如何从V$SYSSTAT收集性能数据?">oramon如何从V$SYSSTAT收集性能数据?</a> (1)</li><li>2009/06/09 -- <a href="http://www.anysql.net/tools/copydata-perl-scripts.html" title="copydata异构数据拷贝">copydata异构数据拷贝</a> (6)</li><li>2009/05/26 -- <a href="http://www.anysql.net/dba/hard-choose-mysql-or-oracle.html" title="MySQL或Oracle, 是个问题?">MySQL或Oracle, 是个问题?</a> (7)</li></ul><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/AnySQL?a=TsM5Qg1arI0:pp2aSg4LCfI:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/AnySQL?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AnySQL?a=TsM5Qg1arI0:pp2aSg4LCfI:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/AnySQL?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AnySQL?a=TsM5Qg1arI0:pp2aSg4LCfI:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/AnySQL?i=TsM5Qg1arI0:pp2aSg4LCfI:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AnySQL?a=TsM5Qg1arI0:pp2aSg4LCfI:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/AnySQL?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AnySQL?a=TsM5Qg1arI0:pp2aSg4LCfI:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/AnySQL?d=dnMXMwOfBR0" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/AnySQL/~4/TsM5Qg1arI0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.anysql.net/tools/sqluldr2-mysql-data-migration-test.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://www.anysql.net/tools/sqluldr2-mysql-data-migration-test.html</feedburner:origLink></item>
		<item>
		<title>oramon新增三个性能数据</title>
		<link>http://feedproxy.google.com/~r/AnySQL/~3/1zPqfN4v1Q0/oramon-arclog-undo-logfilesync.html</link>
		<comments>http://www.anysql.net/tools/oramon-arclog-undo-logfilesync.html#comments</comments>
		<pubDate>Thu, 05 Nov 2009 11:46:13 +0000</pubDate>
		<dc:creator>anysql</dc:creator>
				<category><![CDATA[Tools]]></category>
		<category><![CDATA[DBA]]></category>
		<category><![CDATA[Tuning]]></category>

		<guid isPermaLink="false">http://www.anysql.net/?p=715</guid>
		<description><![CDATA[&#160; &#160; 自从上次加了OS的性能指标后, 已经好久没有更新oramon了, 根据最近获得的经验, 发现还是有必要加上以下三个数据: 可重用日志组数(ARCLOG), 回滚段使用(UNDO), 日志同步时长(LGFC). 

&#160; &#160; 可重用日志组数指数据库中已经归档, 并且状态为不活动(INACTIVE)的联机日志的组数, 可以用于监控归档速度及日志切换速度, 并根据这个数据进行报警. 回滚段使用指的是所有回滚段占用的空间的总大小, 在OLTP数据库中, 如果UNDO表空间满了, 可能会遇到Bug, 引起数据库表空间锁的争用. 日志同步时长可以用来评价日志写出去的速度, 或Oracle面临的事务压力. 

&#160; &#160; 下面是在笔记本上获得的数据库性能数据. 


www.AnySQL.net&#160; Arc Undo Lgfc
11/05-18:59:17&#160; &#160; 0&#160;  62&#160; &#160; 5
11/05-18:59:27&#160; &#160; 0&#160;  62&#160;  10
11/05-18:59:37&#160; &#160; 0&#160;  62&#160;  10
11/05-18:59:47&#160; &#160; 0&#160;  62&#160;  10
11/05-18:59:57&#160; &#160; 0&#160; [...]]]></description>
			<content:encoded><![CDATA[<p>&nbsp; &nbsp; 自从上次加了OS的性能指标后, 已经好久没有更新oramon了, 根据最近获得的经验, 发现还是有必要加上以下三个数据: 可重用日志组数(ARCLOG), 回滚段使用(UNDO), 日志同步时长(LGFC). </p>

<p>&nbsp; &nbsp; 可重用日志组数指数据库中已经归档, 并且状态为不活动(INACTIVE)的联机日志的组数, 可以用于监控归档速度及日志切换速度, 并根据这个数据进行报警. 回滚段使用指的是所有回滚段占用的空间的总大小, 在OLTP数据库中, 如果UNDO表空间满了, 可能会遇到Bug, 引起数据库表空间锁的争用. 日志同步时长可以用来评价日志写出去的速度, 或Oracle面临的事务压力. </p>

<p>&nbsp; &nbsp; 下面是在笔记本上获得的数据库性能数据. </p>

<blockquote class="prefont">
www.AnySQL.net&nbsp; Arc Undo Lgfc<br />
11/05-18:59:17&nbsp; &nbsp; 0&nbsp;  62&nbsp; &nbsp; 5<br />
11/05-18:59:27&nbsp; &nbsp; 0&nbsp;  62&nbsp;  10<br />
11/05-18:59:37&nbsp; &nbsp; 0&nbsp;  62&nbsp;  10<br />
11/05-18:59:47&nbsp; &nbsp; 0&nbsp;  62&nbsp;  10<br />
11/05-18:59:57&nbsp; &nbsp; 0&nbsp;  62&nbsp;  10<br />
11/05-19:00:07&nbsp; &nbsp; 0&nbsp;  62&nbsp;  10<br />
11/05-19:00:17&nbsp; &nbsp; 0&nbsp;  62&nbsp;  10<br />
11/05-19:00:27&nbsp; &nbsp; 0&nbsp;  62&nbsp; &nbsp; 0<br />
11/05-19:00:37&nbsp; &nbsp; 0&nbsp;  62&nbsp; &nbsp; 0<br />
11/05-19:00:47&nbsp; &nbsp; 0&nbsp;  62&nbsp; &nbsp; 0<br />
11/05-19:00:57&nbsp; &nbsp; 0&nbsp;  62&nbsp;  10<br />
</blockquote>

<p>&nbsp; &nbsp; 收集了数据后, 可以根据数据轻松地增加监控点, 或者将数据显示在WebChart的图上, 以供性能或容量分析. 在真实的苛刻的环境下的应用, 会使oramon越来越成熟, 为诊断Oracle的疑难杂症提供有力的数据依据.</p>


<h3  class="related_post_title">Relative Posts:</h3><ul class="related_post"><li>2009/06/25 -- <a href="http://www.anysql.net/tools/oramon-system-event.html" title="oramon如何收集V$SYSTEM_EVENT数据?">oramon如何收集V$SYSTEM_EVENT数据?</a> (3)</li><li>2009/06/25 -- <a href="http://www.anysql.net/tools/oramon-session-history.html" title="oramon如何从V$SESSION收集性能数据?">oramon如何从V$SESSION收集性能数据?</a> (0)</li><li>2009/06/24 -- <a href="http://www.anysql.net/oracle/oramon-system-statistics.html" title="oramon如何从V$SYSSTAT收集性能数据?">oramon如何从V$SYSSTAT收集性能数据?</a> (1)</li><li>2009/05/22 -- <a href="http://www.anysql.net/dba/benefit-from-oramon-perf-alert.html" title="从oramon新报警中受益">从oramon新报警中受益</a> (1)</li><li>2009/05/21 -- <a href="http://www.anysql.net/dba/oramon-database-perf-alert.html" title="用oramon的数据进行报警">用oramon的数据进行报警</a> (3)</li><li>2009/04/21 -- <a href="http://www.anysql.net/tools/display_oramon_perf_data.html" title="用图表显示oramon数据">用图表显示oramon数据</a> (2)</li><li>2009/04/15 -- <a href="http://www.anysql.net/tools/load_oramon_perf_data.html" title="装载oramon性能数据">装载oramon性能数据</a> (0)</li><li>2009/04/15 -- <a href="http://www.anysql.net/tools/install_and_start_oramon.html" title="安装与运行oramon">安装与运行oramon</a> (2)</li><li>2009/04/14 -- <a href="http://www.anysql.net/tools/oramon_gather_perf_data.html" title="oramon, 收集性能数据">oramon, 收集性能数据</a> (5)</li><li>2007/08/20 -- <a href="http://www.anysql.net/tools/oramon_running_one_week.html" title="oramon稳定运行一周">oramon稳定运行一周</a> (5)</li></ul><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/AnySQL?a=1zPqfN4v1Q0:nUjUplW2n4A:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/AnySQL?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AnySQL?a=1zPqfN4v1Q0:nUjUplW2n4A:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/AnySQL?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AnySQL?a=1zPqfN4v1Q0:nUjUplW2n4A:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/AnySQL?i=1zPqfN4v1Q0:nUjUplW2n4A:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AnySQL?a=1zPqfN4v1Q0:nUjUplW2n4A:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/AnySQL?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AnySQL?a=1zPqfN4v1Q0:nUjUplW2n4A:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/AnySQL?d=dnMXMwOfBR0" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/AnySQL/~4/1zPqfN4v1Q0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.anysql.net/tools/oramon-arclog-undo-logfilesync.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://www.anysql.net/tools/oramon-arclog-undo-logfilesync.html</feedburner:origLink></item>
		<item>
		<title>SQLULDR2功能增加, 性能不减</title>
		<link>http://feedproxy.google.com/~r/AnySQL/~3/Ncd7OICggAM/sqluldr2-high-perf-insert-unload.html</link>
		<comments>http://www.anysql.net/tools/sqluldr2-high-perf-insert-unload.html#comments</comments>
		<pubDate>Fri, 30 Oct 2009 14:57:46 +0000</pubDate>
		<dc:creator>anysql</dc:creator>
				<category><![CDATA[Tools]]></category>
		<category><![CDATA[Export]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false">http://www.anysql.net/?p=714</guid>
		<description><![CDATA[&#160; &#160; SQLULDR2生成文件时增加了对MySQL转义符的支持, 并且支持导出成MySQL用的Insert回插脚本, 也支持通用的Insert回插脚本. 针对不同的选项, 用大约100万条记录的数据在笔记本上做了测试, 测试表有8个字段, 包括字符,数字和日期类型. 

&#160; &#160; 先是测试不做任何转义符处理, 生成文本文件的速度, 基本上受制于笔记本硬盘写出的速度了. 


C:\&#62;sqluldr2 scott/tiger query=emp_his
&#160; &#160; &#160;  0 rows exported at 2009-10-30 22:37:14, size 0 MB.
&#160; 961307 rows exported at 2009-10-30 22:37:21, size 48 MB.
&#160; &#160; &#160; &#160;  output file uldrdata.txt closed at 961307 rows, size 49 MB.


&#160; &#160; 接下是生成转义符处理过后的, MySQL用的文本文件, [...]]]></description>
			<content:encoded><![CDATA[<p>&nbsp; &nbsp; SQLULDR2生成文件时增加了对MySQL转义符的支持, 并且支持导出成MySQL用的Insert回插脚本, 也支持通用的Insert回插脚本. 针对不同的选项, 用大约100万条记录的数据在笔记本上做了测试, 测试表有8个字段, 包括字符,数字和日期类型. </p>

<p>&nbsp; &nbsp; 先是测试不做任何转义符处理, 生成文本文件的速度, 基本上受制于笔记本硬盘写出的速度了. </p>

<blockquote class="prefont">
C:\&gt;sqluldr2 scott/tiger query=emp_his<br />
&nbsp; &nbsp; &nbsp;  0 rows exported at 2009-10-30 22:37:14, size 0 MB.<br />
&nbsp; 961307 rows exported at 2009-10-30 22:37:21, size 48 MB.<br />
&nbsp; &nbsp; &nbsp; &nbsp;  output file uldrdata.txt closed at 961307 rows, size 49 MB.
</blockquote>

<p>&nbsp; &nbsp; 接下是生成转义符处理过后的, MySQL用的文本文件, 速度在这次测试环境下没有下降. </p>

<blockquote class="prefont">
C:\&gt;sqluldr2 scott/tiger query=emp_his escape=0x5c quote=0x22 null=0x5cN field=0x2c record=0x0a<br />
&nbsp; &nbsp; &nbsp;  0 rows exported at 2009-10-30 22:38:49, size 0 MB.<br />
&nbsp; 961307 rows exported at 2009-10-30 22:38:56, size 52 MB.<br />
&nbsp; &nbsp; &nbsp; &nbsp;  output file uldrdata.txt closed at 961307 rows, size 56 MB.
</blockquote>


<p>&nbsp; &nbsp; 测试生成MySQL插入用的Insert SQL文件, 速度在这次测试环境下也没有下降. </p>

<blockquote class="prefont">
C:\&gt;sqluldr2 scott/tiger query=emp_his escape=0x5c quote=0x27 null=null field=0x2c format=mysql table=emp_his<br />
&nbsp; &nbsp; &nbsp;  0 rows exported at 2009-10-30 22:39:28, size 0 MB.<br />
&nbsp; 961307 rows exported at 2009-10-30 22:39:34, size 56 MB.<br />
&nbsp; &nbsp; &nbsp; &nbsp;  output file uldrdata.txt closed at 961307 rows, size 60 MB.
</blockquote>


<p>&nbsp; &nbsp; 生成普通的Insert SQL文件, 因为每一条记录都是一个Insert语句, 所以文件很大, 花在IO上的时间多了一些. </p>

<blockquote class="prefont">
C:\&gt;sqluldr2 scott/tiger query=emp_his&nbsp; quote=0x27 null=null field=0x2c format=sql table=emp_his<br />
&nbsp; &nbsp; &nbsp;  0 rows exported at 2009-10-30 22:40:01, size 0 MB.<br />
&nbsp; 961307 rows exported at 2009-10-30 22:40:11, size 124 MB.<br />
&nbsp; &nbsp; &nbsp; &nbsp;  output file uldrdata.txt closed at 961307 rows, size 128 MB.
</blockquote>

<p>&nbsp; &nbsp; 生成100万条记录的Insert SQL语句的速度基本上没有下降, 没有因为处理逻辑的复杂而增加处理时间, 功能增强而性能不减, 实属不易. </p>

<p>&nbsp; &nbsp; 当你需要迁移Oracle数据到MySQL或其他数据库时, 不妨用用SQLULDR2, 还可以生成普通的Insert SQL语句, 来迁移数据到不知名的小数据库, 比如说SQLite, Microsoft Access等. </p>
<h3  class="related_post_title">Relative Posts:</h3><ul class="related_post"><li>2009/10/28 -- <a href="http://www.anysql.net/tools/sqluldr2-mysql-insert-sqls.html" title="SQLULDR2生成Insert SQL语句">SQLULDR2生成Insert SQL语句</a> (4)</li><li>2009/10/27 -- <a href="http://www.anysql.net/tools/sqluldr2-more-escape-chars.html" title="将SQLULDR2转义符进行到底">将SQLULDR2转义符进行到底</a> (3)</li><li>2009/10/26 -- <a href="http://www.anysql.net/tools/sqluldr2-mysql-escape-char.html" title="SQLULDR2处理MySQL转义符">SQLULDR2处理MySQL转义符</a> (1)</li><li>2009/08/31 -- <a href="http://www.anysql.net/tools/sqluldr2-mysql-null-value.html" title="SQLULDR2处理MySQL的空值">SQLULDR2处理MySQL的空值</a> (2)</li><li>2008/11/28 -- <a href="http://www.anysql.net/tools/ociuldr_data_form_display.html" title="ociuldr还有可改进之处!">ociuldr还有可改进之处!</a> (4)</li><li>2009/11/07 -- <a href="http://www.anysql.net/tools/sqluldr2-mysql-data-migration-test.html" title="MySQL数据迁移测试">MySQL数据迁移测试</a> (4)</li><li>2009/04/02 -- <a href="http://www.anysql.net/tools/sqluldr2_license.html" title="给SQLULDR2加上Key保护">给SQLULDR2加上Key保护</a> (6)</li><li>2009/04/01 -- <a href="http://www.anysql.net/tools/sqluldr2_stdout_output.html" title="SQLULDR2输出到STDOUT">SQLULDR2输出到STDOUT</a> (4)</li><li>2009/03/31 -- <a href="http://www.anysql.net/tools/sqluldr2_simple_query.html" title="指定表名导出文本">指定表名导出文本</a> (0)</li><li>2009/03/27 -- <a href="http://www.anysql.net/tools/sqluldr2_comming.html" title="用OCI 8实现了sqluldr2">用OCI 8实现了sqluldr2</a> (8)</li></ul><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/AnySQL?a=Ncd7OICggAM:IoWQP7T2ihA:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/AnySQL?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AnySQL?a=Ncd7OICggAM:IoWQP7T2ihA:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/AnySQL?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AnySQL?a=Ncd7OICggAM:IoWQP7T2ihA:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/AnySQL?i=Ncd7OICggAM:IoWQP7T2ihA:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AnySQL?a=Ncd7OICggAM:IoWQP7T2ihA:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/AnySQL?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AnySQL?a=Ncd7OICggAM:IoWQP7T2ihA:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/AnySQL?d=dnMXMwOfBR0" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/AnySQL/~4/Ncd7OICggAM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.anysql.net/tools/sqluldr2-high-perf-insert-unload.html/feed</wfw:commentRss>
		<slash:comments>9</slash:comments>
		<feedburner:origLink>http://www.anysql.net/tools/sqluldr2-high-perf-insert-unload.html</feedburner:origLink></item>
		<item>
		<title>SQLULDR2生成Insert SQL语句</title>
		<link>http://feedproxy.google.com/~r/AnySQL/~3/yjN5THys5uk/sqluldr2-mysql-insert-sqls.html</link>
		<comments>http://www.anysql.net/tools/sqluldr2-mysql-insert-sqls.html#comments</comments>
		<pubDate>Wed, 28 Oct 2009 14:56:47 +0000</pubDate>
		<dc:creator>anysql</dc:creator>
				<category><![CDATA[Tools]]></category>
		<category><![CDATA[Export]]></category>
		<category><![CDATA[MySQL]]></category>

		<guid isPermaLink="false">http://www.anysql.net/?p=712</guid>
		<description><![CDATA[&#160; &#160; 导出与导入之间如果可以用管道符,  则可以节约生成文件的时间, 以缩减数据迁移的时间, SQLULDR2和Oracle的SQL * Loader可以这样用, 在跨网络迁移数据时, 也行可以用"导出-&#62;压缩-&#62;网络-&#62;解压-&#62;导入"这样的管理流程. 这段时间在测试从Oracle向MySQL迁移数据时, 发现MySQL的LOAD DATA命令无法从标准输入读入数据, 也就是没有办法进行普通的管道操作, 必须导出成文件, 然后导入文件.  

&#160; &#160; 考虑到MySQL没有绑定变量的概念, 其实都是文本SQL操作, 因此使用Insert的性能也许不比LOAD DATA差. 在加入MySQL标准的转义符支持后, 要生成INSERT语句也很容易, 就在SQLULDR2中加入了这个功能. 

&#160; &#160; 使用SQLULDR2的FORMAT参数, 可以实现这个功能. 


sqluldr2 ... table=tablename format=mysql null=null escape=0x5c quote=0x27 


&#160; &#160; 这时在输出文件中, 就是INSERT语句, 如下所示, 一个批处理(由ARRAY参数决定)是一条INSERT语句. 


INSERT INTO tablename (COL1,COL2,COL3) VALUES
('A\\B\"\t','2009-10-28 22:31:22',1),
('A\\B\"\t','2009-10-28 22:32:24',2);


&#160; &#160; 当我们要迁移数据时, 就可以用管道操作了. 


sqluldr2 [...]]]></description>
			<content:encoded><![CDATA[<p>&nbsp; &nbsp; 导出与导入之间如果可以用管道符,  则可以节约生成文件的时间, 以缩减数据迁移的时间, SQLULDR2和Oracle的SQL * Loader可以这样用, 在跨网络迁移数据时, 也行可以用"导出-&gt;压缩-&gt;网络-&gt;解压-&gt;导入"这样的管理流程. 这段时间在测试从Oracle向MySQL迁移数据时, 发现MySQL的LOAD DATA命令无法从标准输入读入数据, 也就是没有办法进行普通的管道操作, 必须导出成文件, 然后导入文件. </p> 

<p>&nbsp; &nbsp; 考虑到MySQL没有绑定变量的概念, 其实都是文本SQL操作, 因此使用Insert的性能也许不比LOAD DATA差. 在加入<a href="http://www.anysql.net/tools/sqluldr2-more-escape-chars.html">MySQL标准的转义符支持</a>后, 要生成INSERT语句也很容易, 就在SQLULDR2中加入了这个功能. </p>

<p>&nbsp; &nbsp; 使用SQLULDR2的FORMAT参数, 可以实现这个功能. </p>

<blockquote class="prefont">
sqluldr2 ... table=tablename format=mysql null=null escape=0x5c quote=0x27 
</blockquote>

<p>&nbsp; &nbsp; 这时在输出文件中, 就是INSERT语句, 如下所示, 一个批处理(由ARRAY参数决定)是一条INSERT语句. </p>

<blockquote class="prefont">
INSERT INTO tablename (COL1,COL2,COL3) VALUES<br />
('A\\B\"\t','2009-10-28 22:31:22',1),<br />
('A\\B\"\t','2009-10-28 22:32:24',2);
</blockquote>

<p>&nbsp; &nbsp; 当我们要迁移数据时, 就可以用管道操作了. </p>

<blockquote class="prefont">
sqluldr2 ... table=table_name format=mysql null=null escape=0x5c quote=0x27 file=- | mysql database_name
</blockquote>

<p>&nbsp; &nbsp; 这样迁移数据, 也许要比生成文件中转来得快, 有空找几百万条记录试试看. 并研究准备的插入语句, 是不是值得支持一下.</p>
<h3  class="related_post_title">Relative Posts:</h3><ul class="related_post"><li>2009/10/30 -- <a href="http://www.anysql.net/tools/sqluldr2-high-perf-insert-unload.html" title="SQLULDR2功能增加, 性能不减">SQLULDR2功能增加, 性能不减</a> (9)</li><li>2009/10/27 -- <a href="http://www.anysql.net/tools/sqluldr2-more-escape-chars.html" title="将SQLULDR2转义符进行到底">将SQLULDR2转义符进行到底</a> (3)</li><li>2009/10/26 -- <a href="http://www.anysql.net/tools/sqluldr2-mysql-escape-char.html" title="SQLULDR2处理MySQL转义符">SQLULDR2处理MySQL转义符</a> (1)</li><li>2009/08/31 -- <a href="http://www.anysql.net/tools/sqluldr2-mysql-null-value.html" title="SQLULDR2处理MySQL的空值">SQLULDR2处理MySQL的空值</a> (2)</li><li>2008/11/28 -- <a href="http://www.anysql.net/tools/ociuldr_data_form_display.html" title="ociuldr还有可改进之处!">ociuldr还有可改进之处!</a> (4)</li><li>2009/11/07 -- <a href="http://www.anysql.net/tools/sqluldr2-mysql-data-migration-test.html" title="MySQL数据迁移测试">MySQL数据迁移测试</a> (4)</li><li>2009/04/02 -- <a href="http://www.anysql.net/tools/sqluldr2_license.html" title="给SQLULDR2加上Key保护">给SQLULDR2加上Key保护</a> (6)</li><li>2009/04/01 -- <a href="http://www.anysql.net/tools/sqluldr2_stdout_output.html" title="SQLULDR2输出到STDOUT">SQLULDR2输出到STDOUT</a> (4)</li><li>2009/03/31 -- <a href="http://www.anysql.net/tools/sqluldr2_simple_query.html" title="指定表名导出文本">指定表名导出文本</a> (0)</li><li>2009/03/27 -- <a href="http://www.anysql.net/tools/sqluldr2_comming.html" title="用OCI 8实现了sqluldr2">用OCI 8实现了sqluldr2</a> (8)</li></ul><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/AnySQL?a=yjN5THys5uk:zmgrmi8J_Xs:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/AnySQL?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AnySQL?a=yjN5THys5uk:zmgrmi8J_Xs:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/AnySQL?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AnySQL?a=yjN5THys5uk:zmgrmi8J_Xs:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/AnySQL?i=yjN5THys5uk:zmgrmi8J_Xs:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AnySQL?a=yjN5THys5uk:zmgrmi8J_Xs:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/AnySQL?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AnySQL?a=yjN5THys5uk:zmgrmi8J_Xs:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/AnySQL?d=dnMXMwOfBR0" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/AnySQL/~4/yjN5THys5uk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.anysql.net/tools/sqluldr2-mysql-insert-sqls.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://www.anysql.net/tools/sqluldr2-mysql-insert-sqls.html</feedburner:origLink></item>
		<item>
		<title>一次简单C程序的性能优化</title>
		<link>http://feedproxy.google.com/~r/AnySQL/~3/YFkMjPn536E/simple-c-program-tuning.html</link>
		<comments>http://www.anysql.net/developer/simple-c-program-tuning.html#comments</comments>
		<pubDate>Tue, 27 Oct 2009 08:53:17 +0000</pubDate>
		<dc:creator>anysql</dc:creator>
				<category><![CDATA[Developer]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[Tuning]]></category>

		<guid isPermaLink="false">http://www.anysql.net/?p=711</guid>
		<description><![CDATA[&#160; &#160; 下面这段简单的程序, 如何优化?  


#include &#60;stdio.h&#62;

void main ()
{
&#160;  int i;
&#160;  for (i=0;i&#60;20000000;i++)
&#160;  {
&#160; &#160; &#160;  printf("%012d\n",i);
&#160;  }
}


&#160; &#160; 下午居然想到要来优化这段程序, 并且写出了更好的程序, 性能提升了30%, 从18秒提升到了12秒. 


#include &#60;stdio.h&#62;

typedef struct _NUMERLIST
{
&#160; &#160; int len;
&#160; &#160; char buf[5];
} NUMBERLIST;

void printNumber(int num, NUMBERLIST numlist[])
{
&#160; &#160; int v_num,i,j,k,pos=0;
&#160; &#160; char tmpbuf[32];
&#160; &#160; memset(tmpbuf,0,32);
&#160; &#160; v_num=num;
&#160; &#160; for(i=3;i&#62;=0;i--)
&#160; [...]]]></description>
			<content:encoded><![CDATA[<p>&nbsp; &nbsp; 下面这段简单的程序, 如何优化?  </p>

<blockquote class="prefont">
#include &lt;stdio.h&gt;<br />
<br />
void main ()<br />
{<br />
&nbsp;  int i;<br />
&nbsp;  for (i=0;i&lt;20000000;i++)<br />
&nbsp;  {<br />
&nbsp; &nbsp; &nbsp;  printf("%012d\n",i);<br />
&nbsp;  }<br />
}
</blockquote>

<p>&nbsp; &nbsp; 下午居然想到要来优化这段程序, 并且写出了更好的程序, <strong>性能提升了30%, 从18秒提升到了12秒</strong>. </p>

<blockquote class="prefont">
#include &lt;stdio.h&gt;<br />
<br />
typedef struct _NUMERLIST<br />
{<br />
&nbsp; &nbsp; int len;<br />
&nbsp; &nbsp; char buf[5];<br />
} NUMBERLIST;<br />
<br />
void printNumber(int num, NUMBERLIST numlist[])<br />
{<br />
&nbsp; &nbsp; int v_num,i,j,k,pos=0;<br />
&nbsp; &nbsp; char tmpbuf[32];<br />
&nbsp; &nbsp; memset(tmpbuf,0,32);<br />
&nbsp; &nbsp; v_num=num;<br />
&nbsp; &nbsp; for(i=3;i&gt;=0;i--)<br />
&nbsp; &nbsp; {<br />
&nbsp; v_num = num;<br />
&nbsp; for(k=0;k&lt;i;k++) v_num = v_num/1000;<br />
&nbsp; v_num = v_num % 1000;<br />
&nbsp; if (v_num &gt; 999)<br />
&nbsp; &nbsp; &nbsp; pos = pos + sprintf(tmpbuf+pos,"%03d", v_num);<br />
&nbsp; &nbsp; &nbsp; &nbsp; else<br />
&nbsp; {<br />
&nbsp; &nbsp; &nbsp; memcpy(tmpbuf+pos, numlist[v_num].buf,3);<br />
&nbsp; &nbsp; &nbsp; pos = pos + 3;<br />
&nbsp; }<br />
&nbsp; &nbsp; }<br />
&nbsp; &nbsp; printf("%s\n", tmpbuf);<br />
}<br />
<br />
void main ()<br />
{<br />
&nbsp;  NUMBERLIST numlist[1000];<br />
&nbsp;  int i;<br />
&nbsp;  for (i=0;i&lt;1000;i++)<br />
&nbsp;  {<br />
&nbsp; &nbsp; &nbsp;  sprintf(numlist[i].buf, "%03d", i);<br />
&nbsp;  }<br />
&nbsp;  for (i=0;i&lt;20000000;i++)<br />
&nbsp;  {<br />
&nbsp; &nbsp; &nbsp;  printNumber(i, numlist);<br />
&nbsp;  }<br />
}<br />
</blockquote>

<p>&nbsp; &nbsp; 如果优化一下两个程序的IO, 采用缓冲输出, 估计第二段程序更显优势. </p><h3  class="related_post_title">Relative Posts:</h3><ul class="related_post"><li>2009/11/05 -- <a href="http://www.anysql.net/tools/oramon-arclog-undo-logfilesync.html" title="oramon新增三个性能数据">oramon新增三个性能数据</a> (3)</li><li>2009/07/09 -- <a href="http://www.anysql.net/dba/oracle-where-filter-order.html" title="SQL执行filter条件的顺序问题">SQL执行filter条件的顺序问题</a> (2)</li><li>2009/07/01 -- <a href="http://www.anysql.net/dba/partition-table-statistics-choose.html" title="分区表用哪个级别的统计信息?">分区表用哪个级别的统计信息?</a> (2)</li><li>2009/06/25 -- <a href="http://www.anysql.net/tools/oramon-system-event.html" title="oramon如何收集V$SYSTEM_EVENT数据?">oramon如何收集V$SYSTEM_EVENT数据?</a> (3)</li><li>2009/06/25 -- <a href="http://www.anysql.net/tools/oramon-session-history.html" title="oramon如何从V$SESSION收集性能数据?">oramon如何从V$SESSION收集性能数据?</a> (0)</li><li>2009/06/24 -- <a href="http://www.anysql.net/oracle/oramon-system-statistics.html" title="oramon如何从V$SYSSTAT收集性能数据?">oramon如何从V$SYSSTAT收集性能数据?</a> (1)</li><li>2009/05/22 -- <a href="http://www.anysql.net/dba/benefit-from-oramon-perf-alert.html" title="从oramon新报警中受益">从oramon新报警中受益</a> (1)</li><li>2009/05/21 -- <a href="http://www.anysql.net/dba/oramon-database-perf-alert.html" title="用oramon的数据进行报警">用oramon的数据进行报警</a> (3)</li><li>2009/05/19 -- <a href="http://www.anysql.net/tools/deploy_new_oramon_version.html" title="新版oramon正式上线">新版oramon正式上线</a> (4)</li><li>2009/05/08 -- <a href="http://www.anysql.net/dba/analyze_perf_data_two.html" title="分析性能数据之二">分析性能数据之二</a> (5)</li></ul><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/AnySQL?a=YFkMjPn536E:G3nFeucVRWk:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/AnySQL?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AnySQL?a=YFkMjPn536E:G3nFeucVRWk:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/AnySQL?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AnySQL?a=YFkMjPn536E:G3nFeucVRWk:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/AnySQL?i=YFkMjPn536E:G3nFeucVRWk:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AnySQL?a=YFkMjPn536E:G3nFeucVRWk:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/AnySQL?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AnySQL?a=YFkMjPn536E:G3nFeucVRWk:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/AnySQL?d=dnMXMwOfBR0" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/AnySQL/~4/YFkMjPn536E" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.anysql.net/developer/simple-c-program-tuning.html/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		<feedburner:origLink>http://www.anysql.net/developer/simple-c-program-tuning.html</feedburner:origLink></item>
		<item>
		<title>将SQLULDR2转义符进行到底</title>
		<link>http://feedproxy.google.com/~r/AnySQL/~3/CfnlHaPSzXs/sqluldr2-more-escape-chars.html</link>
		<comments>http://www.anysql.net/tools/sqluldr2-more-escape-chars.html#comments</comments>
		<pubDate>Tue, 27 Oct 2009 01:29:43 +0000</pubDate>
		<dc:creator>anysql</dc:creator>
				<category><![CDATA[Tools]]></category>
		<category><![CDATA[Export]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[SQLLDR]]></category>

		<guid isPermaLink="false">http://www.anysql.net/?p=710</guid>
		<description><![CDATA[&#160; &#160; 昨天更详细地研究了一下MySQL中的转义符, 其实这不是MySQL专有的, 我们常用的CSV文件格式, 或是Microsoft SQL Server或Sybase能接受的文本文件, 都有同样的转义符定义, 这其实是一个数据交换的标准, 只是Oracle并没有好好地顺从这个标准. 但SQLULDR2的主要任务是将数据从Oracle方便地迁移到其他的数据库, 所以就需要将转义符的支持进行到底了. 

&#160; &#160; 最新版本的SQLULDR2可以对六个字符进行转义处理, 指定的转义符本身, 单引号, 双引号, 回车符, 换行符及TAB键. 我们来测试一下, 在一个表的字段值插入这六个字符组成的字符串. 


SQL&#62; create table escape_test (col1 varchar2(100));

表已创建。

SQL&#62; INSERT INTO ESCAPE_TEST VALUES ('''\"'&#124;&#124;CHR(9)&#124;&#124;CHR(13)&#124;&#124;CHR(10));

已创建 1 行。


&#160; &#160; 然后用SQLULDR来导出, 需要指定ESCAPE选项. 


D:\&#62;sqluldr2 sys query="select * from system.escape_test" escape=\ quote='
&#160; &#160; &#160;  0 rows exported at 2009-10-27 [...]]]></description>
			<content:encoded><![CDATA[<p>&nbsp; &nbsp; 昨天更详细地研究了一下MySQL中的转义符, 其实这不是MySQL专有的, 我们常用的CSV文件格式, 或是Microsoft SQL Server或Sybase能接受的文本文件, 都有同样的转义符定义, 这其实是一个数据交换的标准, 只是Oracle并没有好好地顺从这个标准. 但SQLULDR2的主要任务是将数据从Oracle方便地迁移到其他的数据库, 所以就需要将转义符的支持进行到底了. </p>

<p>&nbsp; &nbsp; 最新版本的SQLULDR2可以对六个字符进行转义处理, 指定的转义符本身, 单引号, 双引号, 回车符, 换行符及TAB键. 我们来测试一下, 在一个表的字段值插入这六个字符组成的字符串. </p>

<blockquote class="prefont">
SQL&gt; create table escape_test (col1 varchar2(100));<br />
<br />
表已创建。<br />
<br />
SQL&gt; INSERT INTO ESCAPE_TEST VALUES ('''\"'||CHR(9)||CHR(13)||CHR(10));<br />
<br />
已创建 1 行。
</blockquote>

<p>&nbsp; &nbsp; 然后用SQLULDR来导出, 需要指定ESCAPE选项. </p>

<blockquote class="prefont">
D:\&gt;sqluldr2 sys query="select * from system.escape_test" escape=\ quote='<br />
&nbsp; &nbsp; &nbsp;  0 rows exported at 2009-10-27 09:14:46, size 0 MB.<br />
&nbsp; &nbsp; &nbsp;  1 rows exported at 2009-10-27 09:14:46, size 0 MB.<br />
&nbsp; &nbsp; &nbsp; &nbsp;  output file uldrdata.txt closed at 1 rows, size 0 MB.
</blockquote>

<p>&nbsp; &nbsp; 如果是巨量数据导出, 使用ESCAPE选项时性能可能会有很大的下降, 或者CPU的使用量会上升很多. </p>

<blockquote class="prefont">
D:\&gt;type uldrdata.txt<br />
'\'\\\"\t\r\n'
</blockquote>

<p>&nbsp; &nbsp; 可以看到, 这六个字符全被转义了, 有了这个功能, 可以生成更好的CSV文件, 就可以始终用逗号分隔字符, 用换行分隔记录了, 不必费心地选择字符分隔符与记录分隔符了. </p>
<h3  class="related_post_title">Relative Posts:</h3><ul class="related_post"><li>2009/10/26 -- <a href="http://www.anysql.net/tools/sqluldr2-mysql-escape-char.html" title="SQLULDR2处理MySQL转义符">SQLULDR2处理MySQL转义符</a> (1)</li><li>2009/08/31 -- <a href="http://www.anysql.net/tools/sqluldr2-mysql-null-value.html" title="SQLULDR2处理MySQL的空值">SQLULDR2处理MySQL的空值</a> (2)</li><li>2009/10/30 -- <a href="http://www.anysql.net/tools/sqluldr2-high-perf-insert-unload.html" title="SQLULDR2功能增加, 性能不减">SQLULDR2功能增加, 性能不减</a> (9)</li><li>2009/10/28 -- <a href="http://www.anysql.net/tools/sqluldr2-mysql-insert-sqls.html" title="SQLULDR2生成Insert SQL语句">SQLULDR2生成Insert SQL语句</a> (4)</li><li>2009/04/02 -- <a href="http://www.anysql.net/tools/sqluldr2_license.html" title="给SQLULDR2加上Key保护">给SQLULDR2加上Key保护</a> (6)</li><li>2008/11/28 -- <a href="http://www.anysql.net/tools/ociuldr_data_form_display.html" title="ociuldr还有可改进之处!">ociuldr还有可改进之处!</a> (4)</li><li>2008/01/25 -- <a href="http://www.anysql.net/tools/ociuldr_update_20080125.html" title="ociuldr更新(2008/01/25)">ociuldr更新(2008/01/25)</a> (13)</li><li>2007/08/22 -- <a href="http://www.anysql.net/tools/ociuldr_option_array.html" title="ociuldr的更新, 为了更好的long类型支持">ociuldr的更新, 为了更好的long类型支持</a> (1)</li><li>2007/01/02 -- <a href="http://www.anysql.net/tools/ociuldr_bind_variable.html" title="在ociuldr的SQL中使用绑定变量">在ociuldr的SQL中使用绑定变量</a> (4)</li><li>2009/11/07 -- <a href="http://www.anysql.net/tools/sqluldr2-mysql-data-migration-test.html" title="MySQL数据迁移测试">MySQL数据迁移测试</a> (4)</li></ul><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/AnySQL?a=CfnlHaPSzXs:-ody9m_aE8A:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/AnySQL?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AnySQL?a=CfnlHaPSzXs:-ody9m_aE8A:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/AnySQL?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AnySQL?a=CfnlHaPSzXs:-ody9m_aE8A:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/AnySQL?i=CfnlHaPSzXs:-ody9m_aE8A:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AnySQL?a=CfnlHaPSzXs:-ody9m_aE8A:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/AnySQL?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AnySQL?a=CfnlHaPSzXs:-ody9m_aE8A:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/AnySQL?d=dnMXMwOfBR0" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/AnySQL/~4/CfnlHaPSzXs" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.anysql.net/tools/sqluldr2-more-escape-chars.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://www.anysql.net/tools/sqluldr2-more-escape-chars.html</feedburner:origLink></item>
		<item>
		<title>SQLULDR2处理MySQL转义符</title>
		<link>http://feedproxy.google.com/~r/AnySQL/~3/md0Hwxurg0Y/sqluldr2-mysql-escape-char.html</link>
		<comments>http://www.anysql.net/tools/sqluldr2-mysql-escape-char.html#comments</comments>
		<pubDate>Mon, 26 Oct 2009 03:37:15 +0000</pubDate>
		<dc:creator>anysql</dc:creator>
				<category><![CDATA[Tools]]></category>
		<category><![CDATA[Export]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[SQLLDR]]></category>

		<guid isPermaLink="false">http://www.anysql.net/?p=709</guid>
		<description><![CDATA[&#160; &#160; 继上一次发现了SQLULDR2对MySQL NULL的支持问题后, 在进一步迁移大数据量的测试中, 又发现了转义字符的问题, 在Oracle的字段值中, 出现了MySQL中的转义符, 例如Oracle中有这样的值. 


SQL&#62; select col1 from test;

COL
---
A\B


&#160; &#160; 继续测试了其他的一些不常见的字符作为转义符, 可是在几亿条记录中, 这些不常见的字符统统不可用. 这里我们有两个解决方法, 第一个是在源端替换, 使用Oracle的Replace函数, 如下所示: 


SQL&#62; select replace(COL1,'\','\\') as col1 from test;

COL1
----
A\\B


&#160; &#160; 使用REPLACE函数, 有些不方便, 要在SELECT的很多字段上都加上REPLACE函数, 性能影响自不必说, 改SQL也是一件麻烦的事情, 于是就使用第二种方法, 使用不可见的字符来做控制符, 比如Control + Z, 其ASCII代码是26, MySQL中用\Z表示. 用SQLULDR2导出记录时, 指定如下NULL选项. 


NULL=0x1AN


&#160; &#160; 接下来在MySQL导入时, 指定转义符为\Z就可以了. 


LOAD DATA ... ESCAPE BY '\Z' ...
LOAD [...]]]></description>
			<content:encoded><![CDATA[<p>&nbsp; &nbsp; 继上一次发现了<a href="http://www.anysql.net/tools/sqluldr2-mysql-null-value.html">SQLULDR2对MySQL NULL的支持</a>问题后, 在进一步迁移大数据量的测试中, 又发现了转义字符的问题, 在Oracle的字段值中, 出现了MySQL中的转义符, 例如Oracle中有这样的值. </p>

<blockquote class="prefont">
SQL&gt; select col1 from test;<br />
<br />
COL<br />
---<br />
A\B
</blockquote>

<p>&nbsp; &nbsp; 继续测试了其他的一些不常见的字符作为转义符, 可是在几亿条记录中, 这些不常见的字符统统不可用. 这里我们有两个解决方法, 第一个是在源端替换, 使用Oracle的Replace函数, 如下所示: </p>

<blockquote class="prefont">
SQL&gt; select replace(COL1,'\','\\') as col1 from test;<br />
<br />
COL1<br />
----<br />
A\\B
</blockquote>

<p>&nbsp; &nbsp; 使用REPLACE函数, 有些不方便, 要在SELECT的很多字段上都加上REPLACE函数, 性能影响自不必说, 改SQL也是一件麻烦的事情, 于是就使用第二种方法, 使用不可见的字符来做控制符, 比如Control + Z, 其ASCII代码是26, MySQL中用\Z表示. 用SQLULDR2导出记录时, 指定如下NULL选项. </p>

<blockquote class="prefont">
NULL=0x1AN
</blockquote>

<p>&nbsp; &nbsp; 接下来在MySQL导入时, 指定转义符为\Z就可以了. </p>

<blockquote class="prefont">
LOAD DATA ... ESCAPE BY '\Z' ...<br />
LOAD DATA ... ESCAPE BY X'1A' ...<br />
</blockquote>

<p>&nbsp; &nbsp; 如果用了不可见字符还不行, 即Oracle字段值中有不可见字符, 那就回到第一种方法吧. </p><h3  class="related_post_title">Relative Posts:</h3><ul class="related_post"><li>2009/10/27 -- <a href="http://www.anysql.net/tools/sqluldr2-more-escape-chars.html" title="将SQLULDR2转义符进行到底">将SQLULDR2转义符进行到底</a> (3)</li><li>2009/08/31 -- <a href="http://www.anysql.net/tools/sqluldr2-mysql-null-value.html" title="SQLULDR2处理MySQL的空值">SQLULDR2处理MySQL的空值</a> (2)</li><li>2009/10/30 -- <a href="http://www.anysql.net/tools/sqluldr2-high-perf-insert-unload.html" title="SQLULDR2功能增加, 性能不减">SQLULDR2功能增加, 性能不减</a> (9)</li><li>2009/10/28 -- <a href="http://www.anysql.net/tools/sqluldr2-mysql-insert-sqls.html" title="SQLULDR2生成Insert SQL语句">SQLULDR2生成Insert SQL语句</a> (4)</li><li>2009/04/02 -- <a href="http://www.anysql.net/tools/sqluldr2_license.html" title="给SQLULDR2加上Key保护">给SQLULDR2加上Key保护</a> (6)</li><li>2008/11/28 -- <a href="http://www.anysql.net/tools/ociuldr_data_form_display.html" title="ociuldr还有可改进之处!">ociuldr还有可改进之处!</a> (4)</li><li>2008/01/25 -- <a href="http://www.anysql.net/tools/ociuldr_update_20080125.html" title="ociuldr更新(2008/01/25)">ociuldr更新(2008/01/25)</a> (13)</li><li>2007/08/22 -- <a href="http://www.anysql.net/tools/ociuldr_option_array.html" title="ociuldr的更新, 为了更好的long类型支持">ociuldr的更新, 为了更好的long类型支持</a> (1)</li><li>2007/01/02 -- <a href="http://www.anysql.net/tools/ociuldr_bind_variable.html" title="在ociuldr的SQL中使用绑定变量">在ociuldr的SQL中使用绑定变量</a> (4)</li><li>2009/11/07 -- <a href="http://www.anysql.net/tools/sqluldr2-mysql-data-migration-test.html" title="MySQL数据迁移测试">MySQL数据迁移测试</a> (4)</li></ul><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/AnySQL?a=md0Hwxurg0Y:olt0Hay9M2Y:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/AnySQL?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AnySQL?a=md0Hwxurg0Y:olt0Hay9M2Y:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/AnySQL?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AnySQL?a=md0Hwxurg0Y:olt0Hay9M2Y:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/AnySQL?i=md0Hwxurg0Y:olt0Hay9M2Y:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AnySQL?a=md0Hwxurg0Y:olt0Hay9M2Y:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/AnySQL?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AnySQL?a=md0Hwxurg0Y:olt0Hay9M2Y:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/AnySQL?d=dnMXMwOfBR0" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/AnySQL/~4/md0Hwxurg0Y" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.anysql.net/tools/sqluldr2-mysql-escape-char.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.anysql.net/tools/sqluldr2-mysql-escape-char.html</feedburner:origLink></item>
		<item>
		<title>多支持了四种业务图</title>
		<link>http://feedproxy.google.com/~r/AnySQL/~3/Hy0fDs0zCEk/four-extra-businees-charts.html</link>
		<comments>http://www.anysql.net/tools/four-extra-businees-charts.html#comments</comments>
		<pubDate>Mon, 21 Sep 2009 07:25:54 +0000</pubDate>
		<dc:creator>anysql</dc:creator>
				<category><![CDATA[Tools]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Tomcat]]></category>
		<category><![CDATA[WebChart]]></category>

		<guid isPermaLink="false">http://www.anysql.net/?p=708</guid>
		<description><![CDATA[&#160; &#160; 给DataReport增加JFreeChart的支持后, 发现支持的图的类型更多了, 目前为止相比以前多了四种, 第一种是点(Dot)图. 





&#160; &#160; 第二种是差距(Difference)图. 





&#160; &#160; 第二种是步线(Step)图. 





&#160; &#160; 第二种是堆叠面积(Stacked Area)图. 





&#160; &#160; 接下来要增加的是甘特(Gantt)图和拔号(Dial)图, 争取将DataReport做成指定数据的SQL来源就可以画出各种业务图的简易平台. 


Relative Posts:2009/07/28 -- DataReport增加JfreeChart支持 (7)2009/07/25 -- DataReport的图片服务功能 (0)2009/07/23 -- 更灵活的DataReport格式控制 (0)2009/07/20 -- 解决Tomcat 6上的中文问题 (0)2009/07/11 -- 持续改进DataReport报表程序 (2)2009/07/08 -- DataReport的结果集合并 (0)2009/06/30 -- DataReport的数据共享改进 (2)2009/04/20 -- 设定WebChart多行值 (0)2009/04/01 -- WebChart的颜色定制 (0)2009/06/04 -- 如何打开WebChart的链接? (0)]]></description>
			<content:encoded><![CDATA[<p>&nbsp; &nbsp; 给DataReport增加JFreeChart的支持后, 发现支持的图的类型更多了, 目前为止相比以前多了四种, 第一种是点(Dot)图. </p>

<blockquote>
<img src="http://www.anysql.net/images/webchart_dot.png" border="0" />
</blockquote>

<p>&nbsp; &nbsp; 第二种是差距(Difference)图. </p>

<blockquote>
<img src="http://www.anysql.net/images/webchart_diff.png" border="0" />
</blockquote>

<p>&nbsp; &nbsp; 第二种是步线(Step)图. </p>

<blockquote>
<img src="http://www.anysql.net/images/webchart_step.png" border="0" />
</blockquote>

<p>&nbsp; &nbsp; 第二种是堆叠面积(Stacked Area)图. </p>

<blockquote>
<img src="http://www.anysql.net/images/webchart_stackarea.png" border="0" />
</blockquote>

<p>&nbsp; &nbsp; 接下来要增加的是甘特(Gantt)图和拔号(Dial)图, 争取将DataReport做成指定数据的SQL来源就可以画出各种业务图的简易平台. </p>


<h3  class="related_post_title">Relative Posts:</h3><ul class="related_post"><li>2009/07/28 -- <a href="http://www.anysql.net/tools/webchart-jfreechart-support.html" title="DataReport增加JfreeChart支持">DataReport增加JfreeChart支持</a> (7)</li><li>2009/07/25 -- <a href="http://www.anysql.net/tools/webchart-business-chart-service.html" title="DataReport的图片服务功能">DataReport的图片服务功能</a> (0)</li><li>2009/07/23 -- <a href="http://www.anysql.net/tools/webchart-cell-formater.html" title="更灵活的DataReport格式控制">更灵活的DataReport格式控制</a> (0)</li><li>2009/07/20 -- <a href="http://www.anysql.net/tools/tomcat6-page-encoding.html" title="解决Tomcat 6上的中文问题">解决Tomcat 6上的中文问题</a> (0)</li><li>2009/07/11 -- <a href="http://www.anysql.net/tools/webchart-change-file-extention.html" title="持续改进DataReport报表程序">持续改进DataReport报表程序</a> (2)</li><li>2009/07/08 -- <a href="http://www.anysql.net/tools/webchart-data-unionall.html" title="DataReport的结果集合并">DataReport的结果集合并</a> (0)</li><li>2009/06/30 -- <a href="http://www.anysql.net/tools/webchart-query-data-share.html" title="DataReport的数据共享改进">DataReport的数据共享改进</a> (2)</li><li>2009/04/20 -- <a href="http://www.anysql.net/tools/webchart_multi_lines_value.html" title="设定WebChart多行值">设定WebChart多行值</a> (0)</li><li>2009/04/01 -- <a href="http://www.anysql.net/tools/webchart_custom_colors.html" title="WebChart的颜色定制">WebChart的颜色定制</a> (0)</li><li>2009/06/04 -- <a href="http://www.anysql.net/tools/webchart-new-xsl-template.html" title="如何打开WebChart的链接?">如何打开WebChart的链接?</a> (0)</li></ul><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/AnySQL?a=Hy0fDs0zCEk:FbbmIRszD1Q:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/AnySQL?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AnySQL?a=Hy0fDs0zCEk:FbbmIRszD1Q:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/AnySQL?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AnySQL?a=Hy0fDs0zCEk:FbbmIRszD1Q:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/AnySQL?i=Hy0fDs0zCEk:FbbmIRszD1Q:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AnySQL?a=Hy0fDs0zCEk:FbbmIRszD1Q:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/AnySQL?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AnySQL?a=Hy0fDs0zCEk:FbbmIRszD1Q:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/AnySQL?d=dnMXMwOfBR0" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/AnySQL/~4/Hy0fDs0zCEk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.anysql.net/tools/four-extra-businees-charts.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.anysql.net/tools/four-extra-businees-charts.html</feedburner:origLink></item>
		<item>
		<title>DBA有什么个人前途?</title>
		<link>http://feedproxy.google.com/~r/AnySQL/~3/MhVjeU_v6FU/where-is-dba-future.html</link>
		<comments>http://www.anysql.net/dba/where-is-dba-future.html#comments</comments>
		<pubDate>Fri, 11 Sep 2009 05:41:10 +0000</pubDate>
		<dc:creator>anysql</dc:creator>
				<category><![CDATA[DBA]]></category>
		<category><![CDATA[Life]]></category>

		<guid isPermaLink="false">http://www.anysql.net/?p=706</guid>
		<description><![CDATA[&#160; &#160; 一篇大家说说DBA有什么前途, 激起了很多人的讨论, 更重要的是激起了很多人的思考, 这不是DBA这一个职业的问题, 好象是所有做技术的都面临的问题. 综合来讲, 职业是可以换的, 比如DBA可以转向SA, 转向架构师, 也可以转向其他的非技职业, 所以重点不在于你现在是不是DBA, 或将来想不想当DBA. 有前途的一定是人, 而不是某个职业, 每个职业都有有前途的人, 但没有一个职业可以让从事这个职业的所有人都有前途, 应当去关注个人的问题.  

&#160; &#160; 个人成就, 我们工作不外乎追求个人成就, 这个成就可以是赚到所需的钱, 让你的家庭过得很好, 得到别人的认同, 承认你的工作付出与工作效果, 或可以是得到名声, 让很多的人尊重你, 或是帮助了别人所得到的快乐感, 或是上面几种的一个综合体. 如果单以薪水收入来计算个人成就, 就扭曲了个人成就了, 如果你是打工者, 不论何种岗位, 都不可能比你的老板赚得多, 打工者就永远没有快乐与个人成就感吗? 多想想一个职业除薪水之外的可以让你有成就感的事情, 市场决定了公司里某个职位的薪水的上下震幅, 如果你的工作成绩不超出职位范围, 那么很难得到超过范围的薪水. 

&#160; &#160; 个人价值, 企业用社会价值来换取财富, 个人用个人价值来换取薪水, 这一切都以价值为基础, 价值决定回报, 而不是职业决定回报, 不以价值决定回报的只是拥有超级资源的少数人, 你是那类少数人吗? 对于大多数人来讲都要努力创造额外价值, 以让自已更上一层楼. DBA只是一个工作的称呼而已, [...]]]></description>
			<content:encoded><![CDATA[<p>&nbsp; &nbsp; 一篇<a href="http://www.itpub.net/viewthread.php?tid=1213713&extra=&page=1">大家说说DBA有什么前途</a>, 激起了很多人的讨论, 更重要的是激起了很多人的思考, 这不是DBA这一个职业的问题, 好象是所有做技术的都面临的问题. 综合来讲, 职业是可以换的, 比如DBA可以转向SA, 转向架构师, 也可以转向其他的非技职业, 所以重点不在于你现在是不是DBA, 或将来想不想当DBA. 有前途的一定是人, 而不是某个职业, 每个职业都有有前途的人, 但没有一个职业可以让从事这个职业的所有人都有前途, 应当去关注个人的问题. </p> 

<p>&nbsp; &nbsp; <strong>个人成就</strong>, 我们工作不外乎追求个人成就, 这个成就可以是赚到所需的钱, 让你的家庭过得很好, 得到别人的认同, 承认你的工作付出与工作效果, 或可以是得到名声, 让很多的人尊重你, 或是帮助了别人所得到的快乐感, 或是上面几种的一个综合体. 如果单以薪水收入来计算个人成就, 就扭曲了个人成就了, 如果你是打工者, 不论何种岗位, 都不可能比你的老板赚得多, 打工者就永远没有快乐与个人成就感吗? 多想想一个职业除薪水之外的可以让你有成就感的事情, 市场决定了公司里某个职位的薪水的上下震幅, 如果你的工作成绩不超出职位范围, 那么很难得到超过范围的薪水. </p>

<p>&nbsp; &nbsp; <strong>个人价值</strong>, 企业用社会价值来换取财富, 个人用个人价值来换取薪水, 这一切都以价值为基础, <a href="http://www.anysql.net/life/with-value-based-life.html">价值决定回报</a>, 而不是职业决定回报, 不以价值决定回报的只是拥有超级资源的少数人, 你是那类少数人吗? 对于大多数人来讲都要<a href="http://www.anysql.net/life/with-value-based-life.html">努力创造额外价值</a>, 以让自已更上一层楼. DBA只是一个工作的称呼而已, 但是我们常会想, 某某事不是DBA的职责范围, 而不去做, 不去创造更多的个人价值, 以至于有些人只认为导出和导入是DBA的事, 其他的都不是DBA这个职位的事, 找个人换掉当然也很容易了. </p>

<p>&nbsp; &nbsp; <strong>工作职责</strong>, 不知道从何时起, DBA成了众多IT从业人员最向望的职业, 事情不多工资又高, 却实有些企事业单位就只需要这样的DBA, 但不是所有的单位都这样, 新兴行业及信息化的深入, 都对DBA提出了真真实实的技术要求, 你不可能也不会在一个企业做一辈子, 你允许, 企业也不允许, 或企业允许, 你也不会允许, 因此一定要考虑其他企业对于DBA的要求, 你才能被很多的企业接受. 这就要求你能承担更多的工作职责, 学会没事去找事做, 从实践中成长, 享受自已技术成长的乐趣. 人家找你做事时, 不要去想这是不是DBA做的事, 而是去想这事我能不能做得好, 达到人家的需求, 能达到就去做. 或者主动去了解其他人的需求, 看看能不能帮助他们, 别用什么职业应当做的圈子去死扣在自已头上. </p>

<p>&nbsp; &nbsp; 除了去关注人家的收入外, 多去看看人家在职业上的付出, 改变一下对个人成就的衡量标准, 努力在岗位上创造应有价值, 超出工作职责的范围去创造额外价值, 除了钱外, 个人的成长或与其他人一同成长, 更能给我们带来快乐. </p>
<h3  class="related_post_title">Relative Posts:</h3><ul class="related_post"><li>2009/08/25 -- <a href="http://www.anysql.net/dba/dba-experience-growth.html" title="关于技术积累的几点想法">关于技术积累的几点想法</a> (5)</li><li>2009/08/17 -- <a href="http://www.anysql.net/life/create-dba-extra-values.html" title="努力创造DBA额外价值">努力创造DBA额外价值</a> (27)</li><li>2009/08/12 -- <a href="http://www.anysql.net/life/with-value-based-life.html" title="个人价值决定个人回报">个人价值决定个人回报</a> (9)</li><li>2009/08/04 -- <a href="http://www.anysql.net/dba/dba-most-important-things.html" title="DBA最缺的不是技术">DBA最缺的不是技术</a> (8)</li><li>2009/08/02 -- <a href="http://www.anysql.net/life/harder-work-than-dba.html" title="当群众演员比干DBA还累">当群众演员比干DBA还累</a> (9)</li><li>2007/01/18 -- <a href="http://www.anysql.net/life/need_be_creative.html" title="华为万件专利没有原创, 中国的DBA呢?">华为万件专利没有原创, 中国的DBA呢?</a> (4)</li><li>2009/11/05 -- <a href="http://www.anysql.net/tools/oramon-arclog-undo-logfilesync.html" title="oramon新增三个性能数据">oramon新增三个性能数据</a> (3)</li><li>2009/09/08 -- <a href="http://www.anysql.net/life/why-we-buy-apartment.html" title="因丈母娘的需求而买房?">因丈母娘的需求而买房?</a> (5)</li><li>2009/09/03 -- <a href="http://www.anysql.net/life/build-online-trade-credit.html" title="收费有助于网购信用">收费有助于网购信用</a> (1)</li><li>2009/07/29 -- <a href="http://www.anysql.net/dba/how-dns-work-for-us.html" title="域名解释与行人问路">域名解释与行人问路</a> (2)</li></ul><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/AnySQL?a=MhVjeU_v6FU:mmLe3mGpMeY:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/AnySQL?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AnySQL?a=MhVjeU_v6FU:mmLe3mGpMeY:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/AnySQL?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AnySQL?a=MhVjeU_v6FU:mmLe3mGpMeY:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/AnySQL?i=MhVjeU_v6FU:mmLe3mGpMeY:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AnySQL?a=MhVjeU_v6FU:mmLe3mGpMeY:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/AnySQL?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AnySQL?a=MhVjeU_v6FU:mmLe3mGpMeY:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/AnySQL?d=dnMXMwOfBR0" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/AnySQL/~4/MhVjeU_v6FU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.anysql.net/dba/where-is-dba-future.html/feed</wfw:commentRss>
		<slash:comments>13</slash:comments>
		<feedburner:origLink>http://www.anysql.net/dba/where-is-dba-future.html</feedburner:origLink></item>
		<item>
		<title>因丈母娘的需求而买房?</title>
		<link>http://feedproxy.google.com/~r/AnySQL/~3/2Nc3iJPTu1E/why-we-buy-apartment.html</link>
		<comments>http://www.anysql.net/life/why-we-buy-apartment.html#comments</comments>
		<pubDate>Tue, 08 Sep 2009 12:41:43 +0000</pubDate>
		<dc:creator>anysql</dc:creator>
				<category><![CDATA[Life]]></category>

		<guid isPermaLink="false">http://www.anysql.net/?p=705</guid>
		<description><![CDATA[&#160; &#160; 城市打工者想着房价到顶, 想了好几年了, 可是今年四月份开始又涨了不少, 杭州余杭区闲林的更是涨了50%到100%, 而且买的人还特多. 为了平息房价高的民愤, 不少房地产大亨不痛不痒地和我们说, 买不起房可以租房啊. 是买房还是租房, 得听小人物的真心话, 象我这种小人物的心声. 

&#160; &#160; 租房其实是一个不错的选择, 但目前没有以公司名义来出租房子的, 居住的权利得不到保证, 如果房东哪一天想卖房, 随时可以赶你走, 要想长期租房却没有法律保护, 因此也不能好好地改善自已的居住环境, 例如对房子进行装修, 生活质量就大打折扣, 为了和谐生活, 还是得自已买房. 政府搞的廉租房, 量太少了, 解决不了租房的问题, 没有公司来搞专业出租, 是因为买房来出租是不划算的, 是亏本的, 所以租房不能改善生活. 租房没有成体系, 是买房的一大动力. 

&#160; &#160; 不是中国人喜欢存款, 都喜欢用钱投资, 以钱生钱的, 但目前可以投资的方法基本上只有两种: 股市和房产, 投资实业还没有这样的信用环境, 基本上都是被老板卷钱逃跑的命, 所以股市好时, 大量人涌入股市, 房子会不涨价, 股市不好时, 大量的人去炒房, 房市会涨价, 反正房价涨了, 对于税收, GDP及地方政府的业绩, 近期内都是好的, 加上近几年投资房产的都赚得流油, [...]]]></description>
			<content:encoded><![CDATA[<p>&nbsp; &nbsp; 城市打工者想着房价到顶, 想了好几年了, 可是今年四月份开始又涨了不少, 杭州余杭区闲林的更是涨了50%到100%, 而且买的人还特多. 为了平息房价高的民愤, 不少房地产大亨不痛不痒地和我们说, 买不起房可以租房啊. 是买房还是租房, 得听小人物的真心话, 象我这种小人物的心声. </p>

<p>&nbsp; &nbsp; 租房其实是一个不错的选择, 但目前没有以公司名义来出租房子的, 居住的权利得不到保证, 如果房东哪一天想卖房, 随时可以赶你走, 要想长期租房却没有法律保护, 因此也不能好好地改善自已的居住环境, 例如对房子进行装修, 生活质量就大打折扣, 为了和谐生活, 还是得自已买房. 政府搞的廉租房, 量太少了, 解决不了租房的问题, 没有公司来搞专业出租, 是因为买房来出租是不划算的, 是亏本的, 所以租房不能改善生活. 租房没有成体系, 是买房的一大动力. </p>

<p>&nbsp; &nbsp; 不是中国人喜欢存款, 都喜欢用钱投资, 以钱生钱的, 但目前可以投资的方法基本上只有两种: 股市和房产, 投资实业还没有这样的信用环境, 基本上都是被老板卷钱逃跑的命, 所以股市好时, 大量人涌入股市, 房子会不涨价, 股市不好时, 大量的人去炒房, 房市会涨价, 反正房价涨了, 对于税收, GDP及地方政府的业绩, 近期内都是好的, 加上近几年投资房产的都赚得流油, 如今至少能在水电煤依次呼叫着涨价的经济形势下, 让资金保值吧. 投资渠道的缺少, 是房价高的一大重要原因.</p>

<p>&nbsp; &nbsp; 有了小孩子后, 户口的重要性就提升了, 没有户口会给小孩的生活及上学带来众多的麻烦, 另外需要办个什么证明的, 或什么证的, 如出生证, 护照等, 没户口办起来就很麻烦, 很容易花个几千块钱才能拿到一张盖着萝卜章的纸, 成本其实很高, 小孩上个学, 没有房子要多交一定的赞助费, 等等. 为了户口, 为了小孩, 也得买个房子住. </p>

<p>&nbsp; &nbsp; 专家说的丈母娘的需求, 也是有一点的, 但没有那么重要. 到是中国自古以来养成的习惯意识, 会促使每个男人想去买房, 以给一个家庭安定的生活, 但这是一种动力, 不能成为房价高的原因. 如果非得说这是主要原因, 估计这专家曾被丈母娘逼过.</p>

<p>&nbsp; &nbsp; 以上几点, 都是小人物我的真实经历与想法, 但丈母娘的需求产生的影响很少, 其他三点大约起着相等的作用, 结婚时没有房, 是租房住的, 从没有对租的房子进行装修, 以改善居住水准. 小孩也要上学了, 也担心目前的依次涨价, 所以出手买房了, 而不是选择租房. 也说说你选择买房而非租房的理由吧,</p>

<h3  class="related_post_title">Relative Posts:</h3><ul class="related_post"><li>2009/09/11 -- <a href="http://www.anysql.net/dba/where-is-dba-future.html" title="DBA有什么个人前途?">DBA有什么个人前途?</a> (13)</li><li>2009/09/03 -- <a href="http://www.anysql.net/life/build-online-trade-credit.html" title="收费有助于网购信用">收费有助于网购信用</a> (1)</li><li>2009/08/25 -- <a href="http://www.anysql.net/dba/dba-experience-growth.html" title="关于技术积累的几点想法">关于技术积累的几点想法</a> (5)</li><li>2009/08/17 -- <a href="http://www.anysql.net/life/create-dba-extra-values.html" title="努力创造DBA额外价值">努力创造DBA额外价值</a> (27)</li><li>2009/08/12 -- <a href="http://www.anysql.net/life/with-value-based-life.html" title="个人价值决定个人回报">个人价值决定个人回报</a> (9)</li><li>2009/08/04 -- <a href="http://www.anysql.net/dba/dba-most-important-things.html" title="DBA最缺的不是技术">DBA最缺的不是技术</a> (8)</li><li>2009/08/02 -- <a href="http://www.anysql.net/life/harder-work-than-dba.html" title="当群众演员比干DBA还累">当群众演员比干DBA还累</a> (9)</li><li>2009/07/29 -- <a href="http://www.anysql.net/dba/how-dns-work-for-us.html" title="域名解释与行人问路">域名解释与行人问路</a> (2)</li><li>2009/07/24 -- <a href="http://www.anysql.net/developer/user-daily-action-curve.html" title="用户行为概率曲线">用户行为概率曲线</a> (0)</li><li>2009/07/22 -- <a href="http://www.anysql.net/life/full-eclipse-2009.html" title="2009年日全食对网络交易的影响">2009年日全食对网络交易的影响</a> (9)</li></ul><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/AnySQL?a=2Nc3iJPTu1E:jNmBhJ1Lqso:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/AnySQL?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AnySQL?a=2Nc3iJPTu1E:jNmBhJ1Lqso:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/AnySQL?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AnySQL?a=2Nc3iJPTu1E:jNmBhJ1Lqso:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/AnySQL?i=2Nc3iJPTu1E:jNmBhJ1Lqso:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AnySQL?a=2Nc3iJPTu1E:jNmBhJ1Lqso:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/AnySQL?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AnySQL?a=2Nc3iJPTu1E:jNmBhJ1Lqso:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/AnySQL?d=dnMXMwOfBR0" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/AnySQL/~4/2Nc3iJPTu1E" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.anysql.net/life/why-we-buy-apartment.html/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		<feedburner:origLink>http://www.anysql.net/life/why-we-buy-apartment.html</feedburner:origLink></item>
		<item>
		<title>后台脚本挂起的几种原因</title>
		<link>http://feedproxy.google.com/~r/AnySQL/~3/4jfXlv-h04E/few-crontab-hang-cases.html</link>
		<comments>http://www.anysql.net/developer/few-crontab-hang-cases.html#comments</comments>
		<pubDate>Fri, 04 Sep 2009 08:41:00 +0000</pubDate>
		<dc:creator>anysql</dc:creator>
				<category><![CDATA[Developer]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://www.anysql.net/?p=704</guid>
		<description><![CDATA[&#160; &#160; 或多或少我们都会在crontab中放置几个定时任务, 这些任务的监控是个问题, 最严重的当属脚本执行到一半挂起, 大部份情况下还是由于脚本写得不够强壮, 要检查一下. 

&#160; &#160; 我经历过以下三种情况下的挂起, 第一种是在调用sqlplus时, 由于连接信息不对, 导致第一次不能登录数据库, sqlplus处于等待输入密码的阶段, 引起脚本挂起. 解决方法如下, 使用"-L"选项禁止出现密码输入提示. 


sqlplus -L -s "/ as sysdba" &#60;&#60; EOF
...
exit;
EOF


&#160; &#160; 第二个情况是, 用ssh去远程主机执行命令时, 和远程主机的ssh没有打通, 导致ssh也出现等待输出密码阶段, 引起程序挂起. 解决方法也是用选择禁用密码输入. 


ssh -n -a -q -o NumberOfPasswordPrompts=0 …


&#160; &#160; 第三种情况是, 由于网络路由问题, 或其他网络服务问题, 引起网络IO一直等待. 解决的方法是要选择可控性比较强的脚本语言, 比如在Perl中(Linux/Unix)中, 就可以通过信号中断机制来处理挂起情形. 


eval {
&#160; local $SIG{ALRM} = sub { die [...]]]></description>
			<content:encoded><![CDATA[<p>&nbsp; &nbsp; 或多或少我们都会在crontab中放置几个定时任务, 这些任务的监控是个问题, 最严重的当属脚本执行到一半挂起, 大部份情况下还是由于脚本写得不够强壮, 要检查一下. </p>

<p>&nbsp; &nbsp; 我经历过以下三种情况下的挂起, 第一种是在调用sqlplus时, 由于连接信息不对, 导致第一次不能登录数据库, sqlplus处于等待输入密码的阶段, 引起脚本挂起. 解决方法如下, 使用"-L"选项禁止出现密码输入提示. </p>

<blockquote class="prefont">
sqlplus -L -s "/ as sysdba" &lt;&lt; EOF<br />
...<br />
exit;<br />
EOF
</blockquote>

<p>&nbsp; &nbsp; 第二个情况是, 用ssh去远程主机执行命令时, 和远程主机的ssh没有打通, 导致ssh也出现等待输出密码阶段, 引起程序挂起. 解决方法也是用选择禁用密码输入. </p>

<blockquote class="prefont">
ssh -n -a -q -o NumberOfPasswordPrompts=0 …
</blockquote>

<p>&nbsp; &nbsp; 第三种情况是, 由于网络路由问题, 或其他网络服务问题, 引起网络IO一直等待. 解决的方法是要选择可控性比较强的脚本语言, 比如在Perl中(Linux/Unix)中, 就可以通过信号中断机制来处理挂起情形. </p>

<blockquote class="prefont">
eval {<br />
&nbsp; local $SIG{ALRM} = sub { die "???\n" }; <br />
&nbsp; alarm 20;<br />
&nbsp; 可能会超时的任务代码;<br />
&nbsp; alarm 0;<br />
};
</blockquote>

<p>&nbsp; &nbsp; 有其他的情况, 请共享出来, 好让大家少走弯路, 助人为快乐之本. </p><h3  class="related_post_title">Relative Posts:</h3><ul class="related_post"><li>2009/11/07 -- <a href="http://www.anysql.net/tools/sqluldr2-mysql-data-migration-test.html" title="MySQL数据迁移测试">MySQL数据迁移测试</a> (4)</li><li>2009/11/05 -- <a href="http://www.anysql.net/tools/oramon-arclog-undo-logfilesync.html" title="oramon新增三个性能数据">oramon新增三个性能数据</a> (3)</li><li>2009/10/30 -- <a href="http://www.anysql.net/tools/sqluldr2-high-perf-insert-unload.html" title="SQLULDR2功能增加, 性能不减">SQLULDR2功能增加, 性能不减</a> (9)</li><li>2009/10/28 -- <a href="http://www.anysql.net/tools/sqluldr2-mysql-insert-sqls.html" title="SQLULDR2生成Insert SQL语句">SQLULDR2生成Insert SQL语句</a> (4)</li><li>2009/10/27 -- <a href="http://www.anysql.net/tools/sqluldr2-more-escape-chars.html" title="将SQLULDR2转义符进行到底">将SQLULDR2转义符进行到底</a> (3)</li><li>2009/10/26 -- <a href="http://www.anysql.net/tools/sqluldr2-mysql-escape-char.html" title="SQLULDR2处理MySQL转义符">SQLULDR2处理MySQL转义符</a> (1)</li><li>2009/09/21 -- <a href="http://www.anysql.net/tools/four-extra-businees-charts.html" title="多支持了四种业务图">多支持了四种业务图</a> (0)</li><li>2009/08/31 -- <a href="http://www.anysql.net/tools/sqluldr2-mysql-null-value.html" title="SQLULDR2处理MySQL的空值">SQLULDR2处理MySQL的空值</a> (2)</li><li>2009/07/28 -- <a href="http://www.anysql.net/tools/webchart-jfreechart-support.html" title="DataReport增加JfreeChart支持">DataReport增加JfreeChart支持</a> (7)</li><li>2009/07/25 -- <a href="http://www.anysql.net/tools/webchart-business-chart-service.html" title="DataReport的图片服务功能">DataReport的图片服务功能</a> (0)</li></ul><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/AnySQL?a=4jfXlv-h04E:hZH8vaGWsO8:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/AnySQL?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AnySQL?a=4jfXlv-h04E:hZH8vaGWsO8:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/AnySQL?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AnySQL?a=4jfXlv-h04E:hZH8vaGWsO8:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/AnySQL?i=4jfXlv-h04E:hZH8vaGWsO8:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AnySQL?a=4jfXlv-h04E:hZH8vaGWsO8:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/AnySQL?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AnySQL?a=4jfXlv-h04E:hZH8vaGWsO8:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/AnySQL?d=dnMXMwOfBR0" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/AnySQL/~4/4jfXlv-h04E" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.anysql.net/developer/few-crontab-hang-cases.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.anysql.net/developer/few-crontab-hang-cases.html</feedburner:origLink></item>
		<item>
		<title>收费有助于网购信用</title>
		<link>http://feedproxy.google.com/~r/AnySQL/~3/dVcLO9tUluA/build-online-trade-credit.html</link>
		<comments>http://www.anysql.net/life/build-online-trade-credit.html#comments</comments>
		<pubDate>Thu, 03 Sep 2009 09:43:29 +0000</pubDate>
		<dc:creator>anysql</dc:creator>
				<category><![CDATA[Life]]></category>

		<guid isPermaLink="false">http://www.anysql.net/?p=703</guid>
		<description><![CDATA[&#160; &#160; 珍惜一件东西的程度取决于获得这件东西的成本, 以及失去这件东西要付出的代价. 用最欠缺的资源换取的东西就是我们最看重的. 没钱时贵的东西就是最看重和最心疼的, 有钱时用友谊换来的东西则是最看重和最心疼的. 信用也是一样, 要让人懂得和珍爱信用, 取决于获得这种信用的成本和失去这种信用的成本. 

&#160; &#160; 网上购物, 我们看重网购信用, 但又不相信网购信用. 那么多卖家在炒作网购信用, 说明很看重网信用, 也有很多的人想炒高了网购信用去骗人一把, 又让人不得不去怀疑网购信用, 所以支付宝的担保交易在网购中很吃香. 建设一个良好的信用炒作预防系统, 也只能发挥一点点的作用, 因为获取网购信用, 及失去网购信用的成本都不高. 

&#160; &#160; 因为在网上成交并没有额外付出成本, 所以任何卖家可以无限制地去炒作网购信用, 所需要的成本只是找到一个比防信用炒作系统更高明的方法而已, 不被发现我就可以快速重新获得网购信用. 网购信用失去了, 注册一个帐号, 再去炒就行了. 

&#160; &#160; 在防信用炒作系统建设方面, 目前看来永远是道高一尺, 魔高一丈, 实在只能发挥有限的作用. 由于网购信用获得成本过低, 导致了网上信用失去的成本也很低, 因此网购信用可以被任意地一次一次地重新摧毁和重新建设. 导致了积累的网购信用信息很难被人认可, 发挥出应用的价值. 

&#160; &#160; 落后的地方, 网上的信用一般会较差, 网下的信用会较好, 比如, 向农村的商店去赊商品, 就不会这么不讲信用, 因为你不讲信用, 后面就赊不到了, 同村的其他商店也不会赊给你, [...]]]></description>
			<content:encoded><![CDATA[<p>&nbsp; &nbsp; 珍惜一件东西的程度取决于获得这件东西的成本, 以及失去这件东西要付出的代价. 用最欠缺的资源换取的东西就是我们最看重的. 没钱时贵的东西就是最看重和最心疼的, 有钱时用友谊换来的东西则是最看重和最心疼的. 信用也是一样, 要让人懂得和珍爱信用, 取决于获得这种信用的成本和失去这种信用的成本. </p>

<p>&nbsp; &nbsp; 网上购物, 我们看重网购信用, 但又不相信网购信用. 那么多卖家在炒作网购信用, 说明很看重网信用, 也有很多的人想炒高了网购信用去骗人一把, 又让人不得不去怀疑网购信用, 所以支付宝的担保交易在网购中很吃香. 建设一个良好的信用炒作预防系统, 也只能发挥一点点的作用, 因为获取网购信用, 及失去网购信用的成本都不高. </p>

<p>&nbsp; &nbsp; 因为在网上成交并没有额外付出成本, 所以任何卖家可以无限制地去炒作网购信用, 所需要的成本只是找到一个比防信用炒作系统更高明的方法而已, 不被发现我就可以快速重新获得网购信用. 网购信用失去了, 注册一个帐号, 再去炒就行了. </p>

<p>&nbsp; &nbsp; 在防信用炒作系统建设方面, 目前看来永远是道高一尺, 魔高一丈, 实在只能发挥有限的作用. 由于网购信用获得成本过低, 导致了网上信用失去的成本也很低, 因此网购信用可以被任意地一次一次地重新摧毁和重新建设. 导致了积累的网购信用信息很难被人认可, 发挥出应用的价值. </p>

<p>&nbsp; &nbsp; 落后的地方, 网上的信用一般会较差, 网下的信用会较好, 比如, 向农村的商店去赊商品, 就不会这么不讲信用, 因为你不讲信用, 后面就赊不到了, 同村的其他商店也不会赊给你, 以后有困难时向人借钱也会很难. 这种情况下失去网下的信用, 所付的成本就比较大. </p>

<p>&nbsp; &nbsp; 从整个世界来看, 服务收费的地方, 信用都比较好, 而服务免费的地方, 信用都比较差, 网络购物平台只是为大量的网民提供服务的一个平台, 因此要解决网购信用, 按成交收费, 也是一个很重要的手段, 增加信用炒作的成本, 使人们更珍惜网购信用. </p>

<h3  class="related_post_title">Relative Posts:</h3><ul class="related_post"><li>2009/09/11 -- <a href="http://www.anysql.net/dba/where-is-dba-future.html" title="DBA有什么个人前途?">DBA有什么个人前途?</a> (13)</li><li>2009/09/08 -- <a href="http://www.anysql.net/life/why-we-buy-apartment.html" title="因丈母娘的需求而买房?">因丈母娘的需求而买房?</a> (5)</li><li>2009/08/25 -- <a href="http://www.anysql.net/dba/dba-experience-growth.html" title="关于技术积累的几点想法">关于技术积累的几点想法</a> (5)</li><li>2009/08/17 -- <a href="http://www.anysql.net/life/create-dba-extra-values.html" title="努力创造DBA额外价值">努力创造DBA额外价值</a> (27)</li><li>2009/08/12 -- <a href="http://www.anysql.net/life/with-value-based-life.html" title="个人价值决定个人回报">个人价值决定个人回报</a> (9)</li><li>2009/08/04 -- <a href="http://www.anysql.net/dba/dba-most-important-things.html" title="DBA最缺的不是技术">DBA最缺的不是技术</a> (8)</li><li>2009/08/02 -- <a href="http://www.anysql.net/life/harder-work-than-dba.html" title="当群众演员比干DBA还累">当群众演员比干DBA还累</a> (9)</li><li>2009/07/29 -- <a href="http://www.anysql.net/dba/how-dns-work-for-us.html" title="域名解释与行人问路">域名解释与行人问路</a> (2)</li><li>2009/07/24 -- <a href="http://www.anysql.net/developer/user-daily-action-curve.html" title="用户行为概率曲线">用户行为概率曲线</a> (0)</li><li>2009/07/22 -- <a href="http://www.anysql.net/life/full-eclipse-2009.html" title="2009年日全食对网络交易的影响">2009年日全食对网络交易的影响</a> (9)</li></ul><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/AnySQL?a=dVcLO9tUluA:azrznyX6ASs:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/AnySQL?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AnySQL?a=dVcLO9tUluA:azrznyX6ASs:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/AnySQL?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AnySQL?a=dVcLO9tUluA:azrznyX6ASs:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/AnySQL?i=dVcLO9tUluA:azrznyX6ASs:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AnySQL?a=dVcLO9tUluA:azrznyX6ASs:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/AnySQL?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AnySQL?a=dVcLO9tUluA:azrznyX6ASs:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/AnySQL?d=dnMXMwOfBR0" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/AnySQL/~4/dVcLO9tUluA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.anysql.net/life/build-online-trade-credit.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.anysql.net/life/build-online-trade-credit.html</feedburner:origLink></item>
		<item>
		<title>SQLULDR2处理MySQL的空值</title>
		<link>http://feedproxy.google.com/~r/AnySQL/~3/ZPUE7w2x9j4/sqluldr2-mysql-null-value.html</link>
		<comments>http://www.anysql.net/tools/sqluldr2-mysql-null-value.html#comments</comments>
		<pubDate>Mon, 31 Aug 2009 09:53:27 +0000</pubDate>
		<dc:creator>anysql</dc:creator>
				<category><![CDATA[Tools]]></category>
		<category><![CDATA[Export]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[SQLLDR]]></category>

		<guid isPermaLink="false">http://www.anysql.net/?p=702</guid>
		<description><![CDATA[&#160; &#160; 要将Oracle数据库中的大量数据迁移到MySQL中, 用SQLULDR2生成格式化文本文件, 然后用mysqlimport来导入到目标库, 是一个高效免费的方案. 最近正好有这样的一个数据迁移需求, 并做了一些测试, 速度很不错, 但MySQL对于空值(NULL)的处理有些特殊, 在以前的SQLULDR2中, 空值输出成空的字符串, 如下所示. 


ICOL$,TABLE,4
CON$,TABLE,
UNDO$,TABLE,
C_COBJ#,CLUSTER,
PROXY_ROLE_DATA$,TABLE,
......
 

&#160; &#160; 用mysqlimport导入数据时, 第三列上的空值(Oracle中)导入到MySQL中时, 就不是空值(NULL)了, 而是长度为0的字符串, 如果导入到数字类型中, 则全变成0, 很显然这不是我们想要的结果. mysqlimport在默认情况下, 会将\N处理成NULL值, 因此从Oracle导出成文本时, 需要将空值处理一下, 以方便在MySQL中准确导入.


ICOL$,TABLE,4
CON$,TABLE,\N
UNDO$,TABLE,\N
C_COBJ#,CLUSTER,\N
PROXY_ROLE_DATA$,TABLE,\N
......
 

&#160; &#160; 在使用SQLULDR2时, 指定NULL命令行选项即可, 如下所示. 


SQLULDR2 sys QUERY=tab NULL=\N


&#160; &#160; 前几天还在想SQLULDR2都这么多命令行选项了, 应当齐了吧, 没想到又多了一个用户需求导致的命令行选项. 用户需求真是值得我们好好研究. 

 
Relative Posts:2009/10/27 -- 将SQLULDR2转义符进行到底 (3)2009/10/26 -- SQLULDR2处理MySQL转义符 (1)2009/10/30 -- SQLULDR2功能增加, 性能不减 (9)2009/10/28 [...]]]></description>
			<content:encoded><![CDATA[<p>&nbsp; &nbsp; 要将Oracle数据库中的大量数据迁移到MySQL中, 用SQLULDR2生成格式化文本文件, 然后用mysqlimport来导入到目标库, 是一个高效免费的方案. 最近正好有这样的一个数据迁移需求, 并做了一些测试, 速度很不错, 但MySQL对于空值(NULL)的处理有些特殊, 在以前的SQLULDR2中, 空值输出成空的字符串, 如下所示. </p>

<blockquote class="prefont">
ICOL$,TABLE,4<br />
CON$,TABLE,<br />
UNDO$,TABLE,<br />
C_COBJ#,CLUSTER,<br />
PROXY_ROLE_DATA$,TABLE,<br />
......
</blockquote> 

<p>&nbsp; &nbsp; 用mysqlimport导入数据时, 第三列上的空值(Oracle中)导入到MySQL中时, 就不是空值(NULL)了, 而是长度为0的字符串, 如果导入到数字类型中, 则全变成0, 很显然这不是我们想要的结果. mysqlimport在默认情况下, 会将\N处理成NULL值, 因此从Oracle导出成文本时, 需要将空值处理一下, 以方便在MySQL中准确导入.</p>

<blockquote class="prefont">
ICOL$,TABLE,4<br />
CON$,TABLE,\N<br />
UNDO$,TABLE,\N<br />
C_COBJ#,CLUSTER,\N<br />
PROXY_ROLE_DATA$,TABLE,\N<br />
......
</blockquote> 

<p>&nbsp; &nbsp; 在使用SQLULDR2时, 指定NULL命令行选项即可, 如下所示. </p>

<blockquote class="prefont">
SQLULDR2 sys QUERY=tab NULL=\N
</blockquote>

<p>&nbsp; &nbsp; 前几天还在想SQLULDR2都这么多命令行选项了, 应当齐了吧, 没想到又多了一个用户需求导致的命令行选项. 用户需求真是值得我们好好研究. </p>

 
<h3  class="related_post_title">Relative Posts:</h3><ul class="related_post"><li>2009/10/27 -- <a href="http://www.anysql.net/tools/sqluldr2-more-escape-chars.html" title="将SQLULDR2转义符进行到底">将SQLULDR2转义符进行到底</a> (3)</li><li>2009/10/26 -- <a href="http://www.anysql.net/tools/sqluldr2-mysql-escape-char.html" title="SQLULDR2处理MySQL转义符">SQLULDR2处理MySQL转义符</a> (1)</li><li>2009/10/30 -- <a href="http://www.anysql.net/tools/sqluldr2-high-perf-insert-unload.html" title="SQLULDR2功能增加, 性能不减">SQLULDR2功能增加, 性能不减</a> (9)</li><li>2009/10/28 -- <a href="http://www.anysql.net/tools/sqluldr2-mysql-insert-sqls.html" title="SQLULDR2生成Insert SQL语句">SQLULDR2生成Insert SQL语句</a> (4)</li><li>2009/04/02 -- <a href="http://www.anysql.net/tools/sqluldr2_license.html" title="给SQLULDR2加上Key保护">给SQLULDR2加上Key保护</a> (6)</li><li>2008/11/28 -- <a href="http://www.anysql.net/tools/ociuldr_data_form_display.html" title="ociuldr还有可改进之处!">ociuldr还有可改进之处!</a> (4)</li><li>2008/01/25 -- <a href="http://www.anysql.net/tools/ociuldr_update_20080125.html" title="ociuldr更新(2008/01/25)">ociuldr更新(2008/01/25)</a> (13)</li><li>2007/08/22 -- <a href="http://www.anysql.net/tools/ociuldr_option_array.html" title="ociuldr的更新, 为了更好的long类型支持">ociuldr的更新, 为了更好的long类型支持</a> (1)</li><li>2007/01/02 -- <a href="http://www.anysql.net/tools/ociuldr_bind_variable.html" title="在ociuldr的SQL中使用绑定变量">在ociuldr的SQL中使用绑定变量</a> (4)</li><li>2009/11/07 -- <a href="http://www.anysql.net/tools/sqluldr2-mysql-data-migration-test.html" title="MySQL数据迁移测试">MySQL数据迁移测试</a> (4)</li></ul><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/AnySQL?a=ZPUE7w2x9j4:hfyGlRxCGKg:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/AnySQL?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AnySQL?a=ZPUE7w2x9j4:hfyGlRxCGKg:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/AnySQL?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AnySQL?a=ZPUE7w2x9j4:hfyGlRxCGKg:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/AnySQL?i=ZPUE7w2x9j4:hfyGlRxCGKg:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AnySQL?a=ZPUE7w2x9j4:hfyGlRxCGKg:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/AnySQL?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AnySQL?a=ZPUE7w2x9j4:hfyGlRxCGKg:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/AnySQL?d=dnMXMwOfBR0" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/AnySQL/~4/ZPUE7w2x9j4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.anysql.net/tools/sqluldr2-mysql-null-value.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://www.anysql.net/tools/sqluldr2-mysql-null-value.html</feedburner:origLink></item>
		<item>
		<title>关于技术积累的几点想法</title>
		<link>http://feedproxy.google.com/~r/AnySQL/~3/tqUlslJmQiQ/dba-experience-growth.html</link>
		<comments>http://www.anysql.net/dba/dba-experience-growth.html#comments</comments>
		<pubDate>Tue, 25 Aug 2009 12:12:18 +0000</pubDate>
		<dc:creator>anysql</dc:creator>
				<category><![CDATA[DBA]]></category>
		<category><![CDATA[Life]]></category>

		<guid isPermaLink="false">http://www.anysql.net/?p=700</guid>
		<description><![CDATA[&#160; &#160; DBA要创建额外价值以获取更多的回报, 前提是要有丰富的技术积累, 然后努力去运用积累的技术去满足公司或客户的需求. 每个人对于技术积累的理解有所不同, 在这里说一下个人的看法, 个人注重以下四个方面的技术积累. 

&#160; &#160; 基础知识积累, 这一点大伙都没有疑问, 并且谁都很重视, 例如努力阅读技术资料, 积极与人讨论, 上ITPub阅读技术贴子, 参加技术培训等, 都是基础知识积累的有效手段. 有个一年半载的时间, 可以将基础知识学得比较扎实, 可以将DBA的常规工作做得非常好了. 

&#160; &#160; 实践经验积累, 这部份是经过亲自实践的那部份基础知识的集合, 加上在运用基础知识的过程中措索出来的有效解决问题的方法或思维模式的结合体. 这部份其实并没有超出基础知识的范畴, 经常会发现, 一个问题得到解决的手段是靠很基础的知识点, 单独拎出来的话, 绝对是考100分的那种, 但往往解决问题的人不是你. 因此我也认为只完成了基础知识积累是不够的, 还必须经过一层有效的转换, 能够确实去解决问题. 

&#160; &#160; 用户需求积累, 学习技术后最大的乐趣是去帮助别人, 一种是去教导别人, 还有一种是去解决用户的需求. 既然解决需求是技术的最终目的, 那么我们就要去积累用户的需求, 根据用户的需求深化技术领域, 学以致用比较重要. 对于这一点体会比较深刻的是文本导出工具, 居然前前后后历时三年, 还有新的用户需求出来, 不是因为什么OCI编程的基础知识积累驱动了我, 而是用户需求驱动我去持续维护. 

&#160; &#160; 工具脚本积累, 要轻构地发挥DBA价值, 就要有称手的利器, [...]]]></description>
			<content:encoded><![CDATA[<p>&nbsp; &nbsp; DBA要创建额外价值以获取更多的回报, 前提是要有丰富的技术积累, 然后努力去运用积累的技术去满足公司或客户的需求. 每个人对于技术积累的理解有所不同, 在这里说一下个人的看法, 个人注重以下四个方面的技术积累. </p>

<p>&nbsp; &nbsp; <strong>基础知识积累</strong>, 这一点大伙都没有疑问, 并且谁都很重视, 例如努力阅读技术资料, 积极与人讨论, 上ITPub阅读技术贴子, 参加技术培训等, 都是基础知识积累的有效手段. 有个一年半载的时间, 可以将基础知识学得比较扎实, 可以将DBA的常规工作做得非常好了. </p>

<p>&nbsp; &nbsp; <strong>实践经验积累</strong>, 这部份是经过亲自实践的那部份基础知识的集合, 加上在运用基础知识的过程中措索出来的有效解决问题的方法或思维模式的结合体. 这部份其实并没有超出基础知识的范畴, 经常会发现, 一个问题得到解决的手段是靠很基础的知识点, 单独拎出来的话, 绝对是考100分的那种, 但往往解决问题的人不是你. 因此我也认为只完成了基础知识积累是不够的, 还必须经过一层有效的转换, 能够确实去解决问题. </p>

<p>&nbsp; &nbsp; <strong>用户需求积累</strong>, 学习技术后最大的乐趣是去帮助别人, 一种是去教导别人, 还有一种是去解决用户的需求. 既然解决需求是技术的最终目的, 那么我们就要去积累用户的需求, 根据用户的需求深化技术领域, 学以致用比较重要. 对于这一点体会比较深刻的是文本导出工具, 居然前前后后历时三年, 还有新的用户需求出来, 不是因为什么OCI编程的基础知识积累驱动了我, 而是用户需求驱动我去持续维护. </p>

<p>&nbsp; &nbsp; <strong>工具脚本积累</strong>, 要轻构地发挥DBA价值, 就要有称手的利器, 脚本和工具就是称手的利器. 在DBA的领域里, 虽然有很多前辈们写的现成脚本或工具, 但出自国内的DBA之手的工具还很少, 国内的DBA还是需要关注这一点, 这方面和国外DBA的差距不是一点的大, 虽然我们的基础知识及实践经验比他们丰富, 对比工作过的一个外资公司和一个国内公司, 在工具方面的差别有点让我震憾. SQLULDR, WebChart及oramon为我的DBA工作提供了很大的方便, 让我可以比其他DBA更快更好地了解所要管理的系统的运行特点.</p>

<p>&nbsp; &nbsp; 以上是个人对自身技术积累的一点总结, 希望对大家有点帮助. </p>

<h3  class="related_post_title">Relative Posts:</h3><ul class="related_post"><li>2009/09/11 -- <a href="http://www.anysql.net/dba/where-is-dba-future.html" title="DBA有什么个人前途?">DBA有什么个人前途?</a> (13)</li><li>2009/08/17 -- <a href="http://www.anysql.net/life/create-dba-extra-values.html" title="努力创造DBA额外价值">努力创造DBA额外价值</a> (27)</li><li>2009/08/12 -- <a href="http://www.anysql.net/life/with-value-based-life.html" title="个人价值决定个人回报">个人价值决定个人回报</a> (9)</li><li>2009/08/04 -- <a href="http://www.anysql.net/dba/dba-most-important-things.html" title="DBA最缺的不是技术">DBA最缺的不是技术</a> (8)</li><li>2009/08/02 -- <a href="http://www.anysql.net/life/harder-work-than-dba.html" title="当群众演员比干DBA还累">当群众演员比干DBA还累</a> (9)</li><li>2007/01/18 -- <a href="http://www.anysql.net/life/need_be_creative.html" title="华为万件专利没有原创, 中国的DBA呢?">华为万件专利没有原创, 中国的DBA呢?</a> (4)</li><li>2009/11/05 -- <a href="http://www.anysql.net/tools/oramon-arclog-undo-logfilesync.html" title="oramon新增三个性能数据">oramon新增三个性能数据</a> (3)</li><li>2009/09/08 -- <a href="http://www.anysql.net/life/why-we-buy-apartment.html" title="因丈母娘的需求而买房?">因丈母娘的需求而买房?</a> (5)</li><li>2009/09/03 -- <a href="http://www.anysql.net/life/build-online-trade-credit.html" title="收费有助于网购信用">收费有助于网购信用</a> (1)</li><li>2009/07/29 -- <a href="http://www.anysql.net/dba/how-dns-work-for-us.html" title="域名解释与行人问路">域名解释与行人问路</a> (2)</li></ul><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/AnySQL?a=tqUlslJmQiQ:rdUjM-issj0:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/AnySQL?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AnySQL?a=tqUlslJmQiQ:rdUjM-issj0:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/AnySQL?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AnySQL?a=tqUlslJmQiQ:rdUjM-issj0:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/AnySQL?i=tqUlslJmQiQ:rdUjM-issj0:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AnySQL?a=tqUlslJmQiQ:rdUjM-issj0:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/AnySQL?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/AnySQL?a=tqUlslJmQiQ:rdUjM-issj0:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/AnySQL?d=dnMXMwOfBR0" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/AnySQL/~4/tqUlslJmQiQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.anysql.net/dba/dba-experience-growth.html/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		<feedburner:origLink>http://www.anysql.net/dba/dba-experience-growth.html</feedburner:origLink></item>
	</channel>
</rss>
