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

<channel>
	<title>AnySQL.net &#187; Oracle</title>
	<atom:link href="http://www.anysql.net/tag/oracle/feed" rel="self" type="application/rss+xml" />
	<link>http://www.anysql.net</link>
	<description>SQLULDR2, DataCopy, DataSync, WebChart, OraMon, AUL/MyDUL, 性能优化及容量分析</description>
	<lastBuildDate>Sun, 29 Aug 2010 00:14:25 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>2011年起SQLULDR2中的收费功能</title>
		<link>http://www.anysql.net/tools/sqluldr2-non-free-features.html</link>
		<comments>http://www.anysql.net/tools/sqluldr2-non-free-features.html#comments</comments>
		<pubDate>Sat, 19 Jun 2010 13:41:30 +0000</pubDate>
		<dc:creator>anysql</dc:creator>
				<category><![CDATA[Tools]]></category>
		<category><![CDATA[CSV]]></category>
		<category><![CDATA[Export]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Text]]></category>

		<guid isPermaLink="false">http://www.anysql.net/?p=766</guid>
		<description><![CDATA[&#160; &#160; 决定从2011年开始, 对文本导出工具SQLULDR2中的部份功能收费, 当然这些收费的功能一般是用不到的, 所以大家也不用太担心这个工具还能不能再用. 四个收费的功能是: 自动生成SQL*Loader控制文件, 按记录数切分文件, 按大小切分文件, 大表并行导出, 如果对这个有很强的意见, 可以在这里回复. &#160; &#160; 自动生成SQL*Loader控制文件功能取决于是否用TABLE参数指定目标文件名. sqluldr2 &#8230; table=target_table control=target_table.ctl &#160; &#160; 按记录数切分文件的功能取决于三个命令行选项: FILE, ROWS, BATCH. 其中FILE选项指定的文件名中需要包括&#8221;%b&#8221;特征串, 以表示生成的文件号. ROWS指定单个文件的记录数, 而BATCH则指定是否切换成多个文件. sqluldr2 &#8230; rows=100000 batch=yes file=uldrdata.%b.txt &#160; &#160; 按大小切分文件的功能取决于两个命令行选项: FILE, SIZE. 其中FILE选项指定的文件名中需要包括&#8221;%b&#8221;特征串, 以表示生成的文件号; 而SIZE选项指定每个文件的目标大小. sqluldr2 &#8230; size=100 file=uldrdata.%b.txt &#160; &#160; 大表并行导出功能, 用法比较复杂一些, 可以参照这篇英文文章. 注册码和源数据库的名字关联，只要源库的名字相同，则可以共用注册码，并且DataCopy, DataSync, oramon也自动获得注册码, [...]]]></description>
			<content:encoded><![CDATA[<p>&nbsp; &nbsp; 决定从2011年开始, 对文本导出工具SQLULDR2中的部份功能收费, 当然这些收费的功能一般是用不到的, 所以大家也不用太担心这个工具还能不能再用. 四个收费的功能是: <strong>自动生成SQL*Loader控制文件</strong>, <strong>按记录数切分文件</strong>, <strong>按大小切分文件</strong>, <strong>大表并行导出</strong>, 如果对这个有很强的意见, 可以在这里回复. </p>
<p>&nbsp; &nbsp; 自动生成SQL*Loader控制文件功能取决于是否用TABLE参数指定目标文件名.</p>
<blockquote class="prefont"><p>
sqluldr2 &#8230; table=target_table control=target_table.ctl
</p></blockquote>
<p>&nbsp; &nbsp; 按记录数切分文件的功能取决于三个命令行选项: FILE, ROWS, BATCH. 其中FILE选项指定的文件名中需要包括&#8221;%b&#8221;特征串, 以表示生成的文件号. ROWS指定单个文件的记录数, 而BATCH则指定是否切换成多个文件.</p>
<blockquote class="prefont"><p>
sqluldr2 &#8230; rows=100000 batch=yes file=uldrdata.%b.txt
</p></blockquote>
<p>&nbsp; &nbsp; 按大小切分文件的功能取决于两个命令行选项: FILE, SIZE. 其中FILE选项指定的文件名中需要包括&#8221;%b&#8221;特征串, 以表示生成的文件号; 而SIZE选项指定每个文件的目标大小. </p>
<blockquote class="prefont"><p>
sqluldr2 &#8230; size=100 file=uldrdata.%b.txt
</p></blockquote>
<p>&nbsp; &nbsp; 大表并行导出功能, 用法比较复杂一些, 可以参照这篇<a href="http://www.dbatools.net/mytools/parallel-inside-sqluldr2.html">英文文章</a>. 注册码和源数据库的名字关联，只要源库的名字相同，则可以共用注册码，并且DataCopy, DataSync, oramon也自动获得注册码, 实际上是这四个工具的注册码一起获得.</p>
<h3  class="related_post_title">Relative Posts:</h3><ul class="related_post"><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> (15)</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>2010/06/24 -- <a href="http://www.anysql.net/tools/sqluldr2-charset-option.html" title="控制SQLULDR2的字符集">控制SQLULDR2的字符集</a> (1)</li><li>2010/05/11 -- <a href="http://www.anysql.net/tools/sqluldr2-gui-version.html" title="图形版Oracle文本导出工具">图形版Oracle文本导出工具</a> (10)</li><li>2010/04/18 -- <a href="http://www.anysql.net/tools/parallel-inside-sqluldr2.html" title="SQLULDR2 : Parallel Inside Now!">SQLULDR2 : Parallel Inside Now!</a> (12)</li><li>2010/02/08 -- <a href="http://www.anysql.net/tools/sqluldr2-form-display.html" title="SQLULDR2也可改善用户体验">SQLULDR2也可改善用户体验</a> (4)</li><li>2007/01/30 -- <a href="http://www.anysql.net/tools/ociuldr_option_head.html" title="ociuldr的新选项, 是否在第一行打印字段名">ociuldr的新选项, 是否在第一行打印字段名</a> (7)</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>2006/11/23 -- <a href="http://www.anysql.net/tools/ociuldr_option_batch.html" title="ociuldr支持分成几个文件导出了">ociuldr支持分成几个文件导出了</a> (8)</li><li>2006/11/16 -- <a href="http://www.anysql.net/tools/ociuldr_option_table.html" title="ociuldr小工具的新选项 &#8212; table">ociuldr小工具的新选项 &#8212; table</a> (7)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.anysql.net/tools/sqluldr2-non-free-features.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>MySQL数据迁移测试</title>
		<link>http://www.anysql.net/tools/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 &#8230; table=emp_his format=mysql quote=0&#215;27 escape=0&#215;53 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; [...]]]></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"><p>
@echo off<br />
echo %TIME%<br />
sqluldr2 &#8230; table=emp_his format=mysql quote=0&#215;27 escape=0&#215;53 null=null file=- | mysql test<br />
echo %TIME%
</p></blockquote>
<p>&nbsp; &nbsp; 首先在MyISAM下测试, 先将表改成MyISAM方式存贮. </p>
<blockquote class="prefont"><p>
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
</p></blockquote>
<p>&nbsp; &nbsp; 进行数据装载测试, 可以看出还是很快的. </p>
<blockquote class="prefont"><p>
D:\mysql-5.0.84-win32\bin&gt;runload.bat<br />
 7:12:28.10<br />
 7:12:41.87
</p></blockquote>
<p>&nbsp; &nbsp; 查一下总共迁移的记录数. </p>
<blockquote class="prefont"><p>
mysql&gt; select count(*) from emp_his;<br />
+&#8212;&#8212;&#8212;-+<br />
| count(*) |<br />
+&#8212;&#8212;&#8212;-+<br />
|&nbsp;  951308 |<br />
+&#8212;&#8212;&#8212;-+<br />
1 row in set (0.00 sec)
</p></blockquote>
<p>&nbsp; &nbsp; 接下来在Innodb下测试, 将表改成Innodb方式存贮. </p>
<blockquote class="prefont"><p>
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
</p></blockquote>
<p>&nbsp; &nbsp; 进行数据装载测试, 可以看出比MyISAM要慢不少. </p>
<blockquote class="prefont"><p>
D:\mysql-5.0.84-win32\bin&gt;runload.bat<br />
 7:09:34.85<br />
 7:10:06.15
</p></blockquote>
<p>&nbsp; &nbsp; 查一下总共迁移的记录数. </p>
<blockquote class="prefont"><p>
mysql&gt; select count(*) from emp_his;<br />
+&#8212;&#8212;&#8212;-+<br />
| count(*) |<br />
+&#8212;&#8212;&#8212;-+<br />
|&nbsp;  951308 |<br />
+&#8212;&#8212;&#8212;-+<br />
1 row in set (2.11 sec)
</p></blockquote>
<p>&nbsp; &nbsp; 在MySQL中, 将同样的表从MyISAM转到Innodb, 需要多少时间?</p>
<blockquote class="prefont"><p>
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
</p></blockquote>
<p>&nbsp; &nbsp; 对于在笔记本上测试的这个结果, 个人是相当满意的, 测试的表有8个字段, 差不多等于平均数. </p>
<h3  class="related_post_title">Relative Posts:</h3><ul class="related_post"><li>2010/06/19 -- <a href="http://www.anysql.net/tools/sqluldr2-non-free-features.html" title="2011年起SQLULDR2中的收费功能">2011年起SQLULDR2中的收费功能</a> (3)</li><li>2010/05/12 -- <a href="http://www.anysql.net/tools/datacopy-gui-version.html" title="图形版Oracle数据迁移工具">图形版Oracle数据迁移工具</a> (11)</li><li>2010/04/18 -- <a href="http://www.anysql.net/tools/parallel-inside-sqluldr2.html" title="SQLULDR2 : Parallel Inside Now!">SQLULDR2 : Parallel Inside Now!</a> (12)</li><li>2010/04/16 -- <a href="http://www.anysql.net/tools/parallel-inside-datacopy.html" title="DataCopy : Parallel Inside Now!">DataCopy : Parallel Inside Now!</a> (2)</li><li>2010/04/15 -- <a href="http://www.anysql.net/tools/parallel-datacopy-datasync.html" title="并行SQLULDR2和DataCopy操作">并行SQLULDR2和DataCopy操作</a> (4)</li><li>2010/04/10 -- <a href="http://www.anysql.net/tools/datacopy-datasync-nls-lang.html" title="不同字符集的数据迁移">不同字符集的数据迁移</a> (6)</li><li>2010/04/10 -- <a href="http://www.anysql.net/tools/datasync-mview-log-creation.html" title="DataSync之物化视图日志助手">DataSync之物化视图日志助手</a> (0)</li><li>2010/03/27 -- <a href="http://www.anysql.net/tools/datasync-data-replication.html" title="Oracle中轻松复制SCOTT.EMP">Oracle中轻松复制SCOTT.EMP</a> (5)</li><li>2010/03/20 -- <a href="http://www.anysql.net/tools/datacopy-conflict-filler-options.html" title="DataCopy选项: conflict和filler">DataCopy选项: conflict和filler</a> (0)</li><li>2010/03/16 -- <a href="http://www.anysql.net/tools/datacopy-data-sync-mode.html" title="用DataCopy进行Oracle数据同步">用DataCopy进行Oracle数据同步</a> (6)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.anysql.net/tools/sqluldr2-mysql-data-migration-test.html/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>oramon如何收集V$SYSTEM_EVENT数据?</title>
		<link>http://www.anysql.net/tools/oramon-system-event.html</link>
		<comments>http://www.anysql.net/tools/oramon-system-event.html#comments</comments>
		<pubDate>Thu, 25 Jun 2009 07:45:29 +0000</pubDate>
		<dc:creator>anysql</dc:creator>
				<category><![CDATA[Tools]]></category>
		<category><![CDATA[DBA]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Tuning]]></category>

		<guid isPermaLink="false">http://www.anysql.net/?p=675</guid>
		<description><![CDATA[&#160; &#160; 基于等待事件的性能调优方法, 自从提出来后就一直很管用, 很快就替换掉了根据命中率来调优的老方法. 当然oramon也同样关于等待事件的数据, 同样以10秒钟的频率计算出10秒内发生的等待事件数据, 并用如下格式保存. 06/25-15:23:44 206-49792:416125:83, 203-18279:89351:48, 157-8436:47502:56, 21-153:1438:93, 4-397:1360:34, 195-10382:906:0, 209-128:726:56, 210-26:514:197, 372-1409:24:0, 233-111:15:1, 207-1:10:100, 234-50:0:0, 152-2:0:0, 06/25-15:23:54 206-49756:414376:83, 203-18221:90461:49, 157-10301:52368:50, 4-448:1543:34, 209-161:1007:62, 21-180:973:54, 195-10376:926:0, 210-36:566:157, 372-1343:21:0, 207-2:13:65, 233-61:0:0, 234-50:0:0, 152-3:0:0, &#160; &#160; 每一个时间点一行, 按总等待时间降序排列各个事件的数据, 单个事件的格式为&#8221;事件号-等待次数:等待时间:平均时长&#8221;, 需要注意的是平均时长的单位是万分之一秒, 而不是千分之一秒(毫秒). 可以从目标库(不同版本会有差异)中根据事件号来查询等待事件名称. SQL&#62; select name from v$event_name where event#=206; NAME &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211; db file [...]]]></description>
			<content:encoded><![CDATA[<p>&nbsp; &nbsp; 基于等待事件的性能调优方法, 自从提出来后就一直很管用, 很快就替换掉了根据命中率来调优的老方法. 当然oramon也同样关于等待事件的数据, 同样以10秒钟的频率计算出10秒内发生的等待事件数据, 并用如下格式保存. </p>
<blockquote class="prefont"><p>
06/25-15:23:44 206-49792:416125:83, 203-18279:89351:48, 157-8436:47502:56, 21-153:1438:93, 4-397:1360:34, 195-10382:906:0, 209-128:726:56, 210-26:514:197, 372-1409:24:0, 233-111:15:1, 207-1:10:100, 234-50:0:0, 152-2:0:0,<br />
06/25-15:23:54 206-49756:414376:83, 203-18221:90461:49, 157-10301:52368:50, 4-448:1543:34, 209-161:1007:62, 21-180:973:54, 195-10376:926:0, 210-36:566:157, 372-1343:21:0, 207-2:13:65, 233-61:0:0, 234-50:0:0, 152-3:0:0,
</p></blockquote>
<p>&nbsp; &nbsp; 每一个时间点一行, 按总等待时间降序排列各个事件的数据, 单个事件的格式为&#8221;事件号-等待次数:等待时间:平均时长&#8221;, 需要注意的是平均时长的单位是万分之一秒, 而不是千分之一秒(毫秒). 可以从目标库(不同版本会有差异)中根据事件号来查询等待事件名称. </p>
<blockquote class="prefont"><p>
SQL&gt; select name from v$event_name where event#=206;</p>
<p>NAME<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
db file sequential read
</p></blockquote>
<p>&nbsp; &nbsp; 象上面的例子中, 可以看到平均单块读的时间为8毫秒, 这个值可以用来评价OLTP系统的存贮响应时间. 利用10秒钟的等待事件数据, 帮我们发现了Oracle中超长log file sync等待的问题, 并成功绕过这个Bug, 有利于保持数据库系统的稳定运行. </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-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/21 -- <a href="http://www.anysql.net/dba/oramon-database-perf-alert.html" title="用oramon的数据进行报警">用oramon的数据进行报警</a> (3)</li><li>2007/08/20 -- <a href="http://www.anysql.net/tools/oramon_running_one_week.html" title="oramon稳定运行一周">oramon稳定运行一周</a> (5)</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/05/22 -- <a href="http://www.anysql.net/dba/benefit-from-oramon-perf-alert.html" title="从oramon新报警中受益">从oramon新报警中受益</a> (1)</li><li>2009/04/21 -- <a href="http://www.anysql.net/tools/display_oramon_perf_data.html" title="用图表显示oramon数据">用图表显示oramon数据</a> (10)</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></ul>]]></content:encoded>
			<wfw:commentRss>http://www.anysql.net/tools/oramon-system-event.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>oramon如何从V$SESSION收集性能数据?</title>
		<link>http://www.anysql.net/tools/oramon-session-history.html</link>
		<comments>http://www.anysql.net/tools/oramon-session-history.html#comments</comments>
		<pubDate>Thu, 25 Jun 2009 05:23:12 +0000</pubDate>
		<dc:creator>anysql</dc:creator>
				<category><![CDATA[Tools]]></category>
		<category><![CDATA[DBA]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Tuning]]></category>

		<guid isPermaLink="false">http://www.anysql.net/?p=674</guid>
		<description><![CDATA[&#160; &#160; 当我们真正遇到数据库的负载问题时, 一般都会有大量的活动会话，处理执行或是处于等待状态, 要解决问题或找出问题的根源, 就要知道那时这些活动会话在做些什到或等待什么? 在Oracle 10g中我们可以查询V$SESSION获得这些信息, 在Oracle 9i及更早的版本中, 则需要将V$SESSION和V$SESSION_WAIT关联起来. &#160; &#160; oramon中就记录了这些信息, 记录的数据如下, 格式为&#8221;事件号:SQL Hash Value-会话数&#8221;. 表示在某个时间点有多少个会话在执行这个SQL, 这些会话处理什么样的等待状态. &#8230;&#8230; 10/30-20:02:37&#160;&#160;205:2815233029:1, 372:4160993935:1 10/30-20:02:47&#160;&#160;205:1623840268:1, 372:1569451005:1, 372:4160993935:1 10/30-20:02:57&#160;&#160;205:374916427:1, 372:3179818757:1, 372:4160993935:1 10/30-20:03:07&#160;&#160;205:1623840268:1, 372:860679981:1, 372:4160993935:1 10/30-20:03:17&#160;&#160;372:4160993935:1 10/30-20:03:27&#160;&#160;372:270817213:1, 372:4160993935:1 10/30-20:03:37&#160;&#160;372:4160993935:1 &#8230;&#8230; &#160; &#160; oramon每10秒执行一次查询并记录数据, 因此遇到问题时, 可以用记录的数据进行跟踪分析, 或进行事后分析. 为解决突发类的负载问题, 提供了有力的数据支持, 从我的经验中, 这些信息是非常有用的, 帮我找出了很多性能问题的根本原因, 从而切实解决了很多的问题. Relative Posts:2009/06/25 -- oramon如何收集V$SYSTEM_EVENT数据? (3)2009/06/24 -- [...]]]></description>
			<content:encoded><![CDATA[<p>&nbsp; &nbsp; 当我们真正遇到数据库的负载问题时, 一般都会有大量的活动会话，处理执行或是处于等待状态, 要解决问题或找出问题的根源, 就要知道那时这些活动会话在做些什到或等待什么? 在Oracle 10g中我们可以查询V$SESSION获得这些信息, 在Oracle 9i及更早的版本中, 则需要将V$SESSION和V$SESSION_WAIT关联起来. </p>
<p>&nbsp; &nbsp; oramon中就记录了这些信息, 记录的数据如下, 格式为&#8221;事件号:SQL Hash Value-会话数&#8221;. 表示在某个时间点有多少个会话在执行这个SQL, 这些会话处理什么样的等待状态.</p>
<blockquote class="prefont"><p>
&#8230;&#8230;<br />
10/30-20:02:37&nbsp;&nbsp;205:2815233029:1, 372:4160993935:1<br />
10/30-20:02:47&nbsp;&nbsp;205:1623840268:1, 372:1569451005:1, 372:4160993935:1<br />
10/30-20:02:57&nbsp;&nbsp;205:374916427:1, 372:3179818757:1, 372:4160993935:1<br />
10/30-20:03:07&nbsp;&nbsp;205:1623840268:1, 372:860679981:1, 372:4160993935:1<br />
10/30-20:03:17&nbsp;&nbsp;372:4160993935:1<br />
10/30-20:03:27&nbsp;&nbsp;372:270817213:1, 372:4160993935:1<br />
10/30-20:03:37&nbsp;&nbsp;372:4160993935:1<br />
&#8230;&#8230;
</p></blockquote>
<p>&nbsp; &nbsp; oramon每10秒执行一次查询并记录数据, 因此遇到问题时, 可以用记录的数据进行跟踪分析, 或进行事后分析. 为解决突发类的负载问题, 提供了有力的数据支持, 从我的经验中, 这些信息是非常有用的, 帮我找出了很多性能问题的根本原因, 从而切实解决了很多的问题. </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/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/21 -- <a href="http://www.anysql.net/dba/oramon-database-perf-alert.html" title="用oramon的数据进行报警">用oramon的数据进行报警</a> (3)</li><li>2007/08/20 -- <a href="http://www.anysql.net/tools/oramon_running_one_week.html" title="oramon稳定运行一周">oramon稳定运行一周</a> (5)</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/05/22 -- <a href="http://www.anysql.net/dba/benefit-from-oramon-perf-alert.html" title="从oramon新报警中受益">从oramon新报警中受益</a> (1)</li><li>2009/04/21 -- <a href="http://www.anysql.net/tools/display_oramon_perf_data.html" title="用图表显示oramon数据">用图表显示oramon数据</a> (10)</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></ul>]]></content:encoded>
			<wfw:commentRss>http://www.anysql.net/tools/oramon-session-history.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>oramon如何从V$SYSSTAT收集性能数据?</title>
		<link>http://www.anysql.net/oracle/oramon-system-statistics.html</link>
		<comments>http://www.anysql.net/oracle/oramon-system-statistics.html#comments</comments>
		<pubDate>Wed, 24 Jun 2009 00:09:10 +0000</pubDate>
		<dc:creator>anysql</dc:creator>
				<category><![CDATA[Oracle]]></category>
		<category><![CDATA[DBA]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Tuning]]></category>

		<guid isPermaLink="false">http://www.anysql.net/?p=671</guid>
		<description><![CDATA[&#160; &#160; Oracle系统级的性能统计数据对于解决性能问题十分有用, 因此在8, 8i, 9i, 10g, 11g的发展过程中, 性能统计项一直在不断增加. 要充分发挥这些数据的作用, 关键是如何展示这些性能数据, 以利于性能问题分析, 例如关于Oracle中物理读的一些统计值. SQL&#62; SELECT name, value FROM V$SYSSTAT WHERE STATISTIC# IN (54,120,56); NAME&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;VALUE &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212; &#8212;&#8212;&#8212;- physical reads&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 2373 physical reads direct&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;39 physical reads direct (lob)&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 0 &#160; &#160; 如果只看绝对值, 是没有多少作用的, 从中看不到什么有用的信息. 20:10:24 SQL&#62; select name,value from v$sysstat where statistic#=54; NAME&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;VALUE &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212; &#8212;&#8212;&#8212;- physical reads&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; [...]]]></description>
			<content:encoded><![CDATA[<p>&nbsp; &nbsp; Oracle系统级的性能统计数据对于解决性能问题十分有用, 因此在8, 8i, 9i, 10g, 11g的发展过程中, 性能统计项一直在不断增加. 要充分发挥这些数据的作用, 关键是如何展示这些性能数据, 以利于性能问题分析, 例如关于Oracle中物理读的一些统计值. </p>
<blockquote class="prefont"><p>
SQL&gt; SELECT name, value FROM V$SYSSTAT WHERE STATISTIC# IN (54,120,56);</p>
<p>NAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;VALUE<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212; &#8212;&#8212;&#8212;-<br />
physical reads&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 2373<br />
physical reads direct&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;39<br />
physical reads direct (lob)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0
</p></blockquote>
<p>&nbsp; &nbsp; 如果只看绝对值, 是没有多少作用的, 从中看不到什么有用的信息. </p>
<blockquote class="prefont"><p>
20:10:24 SQL&gt; select name,value from v$sysstat where statistic#=54;</p>
<p>NAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;VALUE<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212; &#8212;&#8212;&#8212;-<br />
physical reads&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3340</p>
<p>&#8230;&#8230;</p>
<p>20:10:36 SQL&gt; select name,value from v$sysstat where statistic#=54;</p>
<p>NAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;VALUE<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212; &#8212;&#8212;&#8212;-<br />
physical reads&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 6371
</p></blockquote>
<p>&nbsp; &nbsp; 执行两次, 差值(6371 &#8211; 3340 = 3031)表示Oracle在两次收集的12秒时间(20:10:24 to 20:10:36)内总共从磁盘上读取了3031个数据块, 平均每秒钟303个块, 就很好地告诉了我们数据库的物理IO压力情况. 用oramon可以将不同的性能指标数据和时间显示成二维矩阵, 方便我们查看和分析问题. </p>
<blockquote class="prefont"><p>
www.AnySQL.net Exec BGets RReq Read Writ Redo &#8230;<br />
11/27-20:15:47&nbsp;&nbsp; 54&nbsp;&nbsp; 206&nbsp;&nbsp; 15&nbsp;&nbsp; 15&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;0 &#8230;<br />
11/27-20:15:57&nbsp;&nbsp;196&nbsp;&nbsp; 718&nbsp;&nbsp; 41&nbsp;&nbsp; 41&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;664 &#8230;<br />
11/27-20:16:07&nbsp;&nbsp; 64&nbsp;&nbsp; 637&nbsp;&nbsp; 19&nbsp;&nbsp; 61&nbsp;&nbsp;&nbsp;&nbsp;0 6192 &#8230;<br />
11/27-20:16:17&nbsp;&nbsp; 17&nbsp;&nbsp;&nbsp;&nbsp;16&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;0 &#8230;<br />
11/27-20:16:27&nbsp;&nbsp; 17&nbsp;&nbsp;&nbsp;&nbsp;13&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;0 &#8230;<br />
11/27-20:16:37&nbsp;&nbsp; 16&nbsp;&nbsp;&nbsp;&nbsp; 6&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;0 &#8230;
</p></blockquote>
<p>&nbsp; &nbsp; 用oramon工具可以较高频率(10秒一次)来收集数据, 更容易抓取瞬间的数据负载变化, 通过分析这段时间的各个性能数据, 如: Exec=执行次数, BGets=逻辑读, RReq=读请求, Read=特理读, Writ=物理写, Redo=日志量, 等等, 便可以知道负载升高的精确原因, 从而去采取有效措辞.</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/05/21 -- <a href="http://www.anysql.net/dba/oramon-database-perf-alert.html" title="用oramon的数据进行报警">用oramon的数据进行报警</a> (3)</li><li>2007/08/20 -- <a href="http://www.anysql.net/tools/oramon_running_one_week.html" title="oramon稳定运行一周">oramon稳定运行一周</a> (5)</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/05/22 -- <a href="http://www.anysql.net/dba/benefit-from-oramon-perf-alert.html" title="从oramon新报警中受益">从oramon新报警中受益</a> (1)</li><li>2009/04/21 -- <a href="http://www.anysql.net/tools/display_oramon_perf_data.html" title="用图表显示oramon数据">用图表显示oramon数据</a> (10)</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></ul>]]></content:encoded>
			<wfw:commentRss>http://www.anysql.net/oracle/oramon-system-statistics.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>MySQL或Oracle, 是个问题?</title>
		<link>http://www.anysql.net/dba/hard-choose-mysql-or-oracle.html</link>
		<comments>http://www.anysql.net/dba/hard-choose-mysql-or-oracle.html#comments</comments>
		<pubDate>Wed, 27 May 2009 03:20:25 +0000</pubDate>
		<dc:creator>anysql</dc:creator>
				<category><![CDATA[DBA]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Oracle]]></category>

		<guid isPermaLink="false">http://www.anysql.net/wordpress/uncategorized/mysql%e6%88%96oracle-%e6%98%af%e4%b8%aa%e9%97%ae%e9%a2%98.html</guid>
		<description><![CDATA[&#160; &#160; SUN没有被Oracle收购前, 都会不加思索地考虑用MySQL来替代部份Oracle数据库, 以降低Oracle的许可证费用, 或降低Oracle来谈判许可证费用时的筹码. 因为MySQL无许可证费用, 可以免费地用, 但被Oracle收购后, 就不知道免费的MySQL的命运如何了, 可以预见收费的MySQL肯定会加强, 而且国外有前Oracle员工预测MySQL的水费水平会和Oracle比较接近. 国外人一样在担心MySQL的命运, 在担心继续使用会不会又上Oracle的这条大船. &#160; &#160; 我也面临这个选择, 综合分析了一下现有的Oracle数据库, 能迁到MySQL上的不多, 能迁的迁移成本也很高, 结合持术人员人手比较紧的实情, 要做MySQL迁移, 是很难搞得定的, 从新项目开始, 自始至终就用MySQL则是很可行的. 刚好有一个项目, 可以用Oracle, 也可以用MySQL或其他的数据库, 非常的不好选择. &#160; &#160; 用MySQL主要担心什么问题? 第一是稳定性问题, Oracle的确可以给我们提供很稳定的服务, 但MySQL就不知道了. 第二是可用率的问题, 如果要用于比较重要的系统, 到底可以做到多高的可用率? 这两个问题, 都不好模似或测试, 也没有多少经验可以借签. 而面临的这个可以选择的项目, 刚好是一个比较重要的项目, 要追求稳定性和可用率的. &#160; &#160; 象国内银行这种数据库用得很多的企业, 和Oracle谈判时, 并不计算真实的Oracle主机的CPU个数, 而是确定一种无限制的许可证费, 例如一年多少钱, 在银行内部不限制Oracle使用的范围, 算下来Oracle的许可证费用也没有那么贵, 是可以接受的. &#160; [...]]]></description>
			<content:encoded><![CDATA[<p>&nbsp; &nbsp; SUN没有被Oracle收购前, 都会不加思索地考虑用MySQL来替代部份Oracle数据库, 以降低Oracle的许可证费用, 或降低Oracle来谈判许可证费用时的筹码. 因为MySQL无许可证费用, 可以免费地用, 但被Oracle收购后, 就不知道免费的MySQL的命运如何了, 可以预见收费的MySQL肯定会加强, 而且国外有前Oracle员工预测MySQL的水费水平会和Oracle比较接近. 国外人一样在担心MySQL的命运, 在担心继续使用会不会又上Oracle的这条大船. </p>
<p>&nbsp; &nbsp; 我也面临这个选择, 综合分析了一下现有的Oracle数据库, 能迁到MySQL上的不多, 能迁的迁移成本也很高, 结合持术人员人手比较紧的实情, 要做MySQL迁移, 是很难搞得定的, 从新项目开始, 自始至终就用MySQL则是很可行的. 刚好有一个项目, 可以用Oracle, 也可以用MySQL或其他的数据库, 非常的不好选择.</p>
<p>&nbsp; &nbsp; 用MySQL主要担心什么问题? 第一是稳定性问题, Oracle的确可以给我们提供很稳定的服务, 但MySQL就不知道了. 第二是可用率的问题, 如果要用于比较重要的系统, 到底可以做到多高的可用率? 这两个问题, 都不好模似或测试, 也没有多少经验可以借签. 而面临的这个可以选择的项目, 刚好是一个比较重要的项目, 要追求稳定性和可用率的. </p>
<p>&nbsp; &nbsp; 象国内银行这种数据库用得很多的企业, 和Oracle谈判时, 并不计算真实的Oracle主机的CPU个数, 而是确定一种无限制的许可证费, 例如一年多少钱, 在银行内部不限制Oracle使用的范围, 算下来Oracle的许可证费用也没有那么贵, 是可以接受的. </p>
<p>&nbsp; &nbsp; 关键是MySQL现在也属于Oracle了, 用了Oracle是Oracle, 用了MySQL还是Oracle, 的确有些头疼, 从这儿看来Postgre SQL以后也是这条路, 说不定也被Oracle意外间接获得. 越来越想不通了. </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> (8)</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/21 -- <a href="http://www.anysql.net/dba/oramon-database-perf-alert.html" title="用oramon的数据进行报警">用oramon的数据进行报警</a> (3)</li><li>2009/04/05 -- <a href="http://www.anysql.net/dba/oramon_webchart_solution.html" title="轻量级Oracle性能监控">轻量级Oracle性能监控</a> (3)</li><li>2008/12/13 -- <a href="http://www.anysql.net/developer/owc_sub_chart_demo.html" title="如何画一个SubChart图?">如何画一个SubChart图?</a> (3)</li><li>2008/12/11 -- <a href="http://www.anysql.net/developer/owc_sparse_data_chart.html" title="画一个Web图表有多难?">画一个Web图表有多难?</a> (0)</li><li>2008/12/11 -- <a href="http://www.anysql.net/developer/web_tow_axis_chart.html" title="画图? WebChart够用了!">画图? WebChart够用了!</a> (1)</li><li>2008/11/25 -- <a href="http://www.anysql.net/developer/purge_archivelog_by_space.html" title="指定保留多少GB的归档">指定保留多少GB的归档</a> (1)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.anysql.net/dba/hard-choose-mysql-or-oracle.html/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>用oramon的数据进行报警</title>
		<link>http://www.anysql.net/dba/oramon-database-perf-alert.html</link>
		<comments>http://www.anysql.net/dba/oramon-database-perf-alert.html#comments</comments>
		<pubDate>Thu, 21 May 2009 07:03:30 +0000</pubDate>
		<dc:creator>anysql</dc:creator>
				<category><![CDATA[DBA]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[Tuning]]></category>

		<guid isPermaLink="false">http://www.anysql.net/wordpress/uncategorized/%e7%94%a8oramon%e7%9a%84%e6%95%b0%e6%8d%ae%e8%bf%9b%e8%a1%8c%e6%8a%a5%e8%ad%a6.html</guid>
		<description><![CDATA[&#160; &#160; 对于互联网企业后台的数据库来讲, 有效的性能监控与报警是非常重要的, 一般来说数据库上的并发事务大, 任何地方出错后, 就会导至数据库进入恶性循环, 如果未及时解决, 要么数据库挂起, 要么让应用挂起, 方能得到最后解脱. 有钱的单位请专门的人员进行7&#215;24小时监控, 专门盯着数据库主机Load的变化, 或者是安装监控程序进行5分钟数据采样, 并根据Load或CPU利用率情况进行报警, 如Nagios等. &#160; &#160; 从实际情况看来, 专人看管和5分钟的监控都不够好, 5分钟可以重起一次一般的数据库了. 监控的频率很难选择, 监控报警的标准很难确定. 关键在于要有良好的性能数据, 及根据这些性能数据的有效报警机制. 用oramon收集Oracle的运行性能数据, 将报警机制集成到实时采集oramon数据的程序中, 就完美解决了这个事情. &#160; &#160; 昨天用Perl重写了oramon数据采集程序, 一是要集成报警功能, 二是性能测试库不一定用Oracle, 可能会用MySQL, 以后也可以用Postgre SQL等, 还是选用脚本型语言较好. oramon以十秒的频率采集数据, 在报警时没有根据一个点的数据来确认是否报警, 而一律根据最后5个采样点的数据, 也就是接近一分钟内5个数据的平均值来判断. 经过一天的测试, 最后的报警条件设置如下. &#160; &#160; 活动会话: 如果最近5个点的活动会话数都大于大于某个值(根据各个数据库的情况, 设置不同的值)就报警. Enq会话: 如果最近5个点的处理Enqueue等待的会话数都大于10就报警. IO等待: 如果最近5个点CPU WIO的比例值都大于40就报警. CPU使用率: 如果最近5个点CPU [...]]]></description>
			<content:encoded><![CDATA[<p>&nbsp; &nbsp; 对于互联网企业后台的数据库来讲, 有效的性能监控与报警是非常重要的, 一般来说数据库上的并发事务大, 任何地方出错后, 就会导至数据库进入恶性循环, 如果未及时解决, 要么数据库挂起, 要么让应用挂起, 方能得到最后解脱. 有钱的单位请专门的人员进行7&#215;24小时监控, 专门盯着数据库主机Load的变化, 或者是安装监控程序进行5分钟数据采样, 并根据Load或CPU利用率情况进行报警, 如Nagios等. </p>
<p>&nbsp; &nbsp; 从实际情况看来, 专人看管和5分钟的监控都不够好, 5分钟可以重起一次一般的数据库了. 监控的频率很难选择, 监控报警的标准很难确定. 关键在于要有良好的性能数据, 及根据这些性能数据的有效报警机制. 用oramon收集Oracle的运行性能数据, 将报警机制集成到实时采集oramon数据的程序中, 就完美解决了这个事情. </p>
<p>&nbsp; &nbsp; 昨天用Perl重写了oramon数据采集程序, 一是要集成报警功能, 二是性能测试库不一定用Oracle, 可能会用MySQL, 以后也可以用Postgre SQL等, 还是选用脚本型语言较好. oramon以十秒的频率采集数据, 在报警时没有根据一个点的数据来确认是否报警, 而一律根据最后5个采样点的数据, 也就是接近一分钟内5个数据的平均值来判断. 经过一天的测试, 最后的报警条件设置如下. </p>
<p>&nbsp; &nbsp; 活动会话: 如果最近5个点的活动会话数都大于大于某个值(根据各个数据库的情况, 设置不同的值)就报警. Enq会话: 如果最近5个点的处理Enqueue等待的会话数都大于10就报警. IO等待: 如果最近5个点CPU WIO的比例值都大于40就报警. CPU使用率: 如果最近5个点CPU User的比例值都大于80就报警. 并行进程: 如果最近5个点活动并行进程的值都大于4就报警. </p>
<p>&nbsp; &nbsp; 利用oramon收集的数据, 可以根据很多有意义的性能数据进行报警设置, 如Swap IO情况, 如physical read, db file scatter read, 平均db file sequential read的等待时间, 还可以根据从Oracle层面计算出来的IOPS量进行报警. </p>
<p>&nbsp; &nbsp; 将报警机制集成在数据扫描程序中, 可以使报警变得很及时, 出现情况一分钟就可以报出来. 另外根据5个点的数据来报警, 误报的机率大大降低. 例如今天就根据Enqueue等待的报警及时发现了问题. 有这样的报警系统才能掌控数据库的运行, 才能做到心中有数, 安心睡觉.</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>2007/08/20 -- <a href="http://www.anysql.net/tools/oramon_running_one_week.html" title="oramon稳定运行一周">oramon稳定运行一周</a> (5)</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/05/22 -- <a href="http://www.anysql.net/dba/benefit-from-oramon-perf-alert.html" title="从oramon新报警中受益">从oramon新报警中受益</a> (1)</li><li>2009/04/21 -- <a href="http://www.anysql.net/tools/display_oramon_perf_data.html" title="用图表显示oramon数据">用图表显示oramon数据</a> (10)</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></ul>]]></content:encoded>
			<wfw:commentRss>http://www.anysql.net/dba/oramon-database-perf-alert.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>拯救数据, 拯救地球?</title>
		<link>http://www.anysql.net/aulmydul/aul_customer_world_map.html</link>
		<comments>http://www.anysql.net/aulmydul/aul_customer_world_map.html#comments</comments>
		<pubDate>Sun, 26 Apr 2009 16:35:34 +0000</pubDate>
		<dc:creator>anysql</dc:creator>
				<category><![CDATA[AUL/MyDUL]]></category>
		<category><![CDATA[Data]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Recovery]]></category>

		<guid isPermaLink="false">http://www.anysql.net/wordpress/uncategorized/%e6%8b%af%e6%95%91%e6%95%b0%e6%8d%ae-%e6%8b%af%e6%95%91%e5%9c%b0%e7%90%83.html</guid>
		<description><![CDATA[&#160; &#160; AUL正式提供商业数据恢复服务已经快四年了, 这期间恢复了不少国家的数据库, 将提供过恢复服务的客户所在的国家, 用Google Chart API画了一张世界地图, 看起来也不错. &#160; &#160; 非洲大陆很有前途, 大洋洲还是一片空白, 还没有为印度的客户恢复过, 不知道以后是不是可以补全一些. 上周五一位昆明的网友跟我说他用AUL没能恢复数据, 给了我远程登录的权限, 用Demo许可证去恢复了一下, 居然98%数据都恢复了, 那位网友就马上下线, 不再和我联系了. &#160; &#160; 提供有价值的东西, 可以取得一些回报, 正在被大多数人接受. Relative Posts:2008/08/01 -- 终极Oracle数据恢复工具 &#8212; AUL (8)2008/07/06 -- 连错库误删100多张表 (9)2008/03/28 -- 选择AUL恢复数据的理由 (3)2008/03/19 -- Oracle数据恢复服务模式 (0)2007/11/06 -- 将完成AUL最后一个心愿, 支持Compress表 (2)2010/01/10 -- 出售AUL固定许可证 (4)2009/06/09 -- AUL程序上的两处缺陷 (1)2008/12/27 -- AUL并行扫描Extent (1)2008/08/14 [...]]]></description>
			<content:encoded><![CDATA[<p>&nbsp; &nbsp; AUL正式提供商业数据恢复服务已经快四年了, 这期间恢复了不少国家的数据库, 将提供过恢复服务的<a href="http://www.dbatools.net/mydul/aul_customer.html">客户</a>所在的国家, 用Google Chart API画了一张世界地图, 看起来也不错. </p>
<blockquote><p>
<img src="http://www.anysql.net/images/aul_world_map.png" border="0" />
</p></blockquote>
<p>&nbsp; &nbsp; 非洲大陆很有前途, 大洋洲还是一片空白, 还没有为印度的客户恢复过, 不知道以后是不是可以补全一些. 上周五一位昆明的网友跟我说他用AUL没能恢复数据, 给了我远程登录的权限, 用Demo许可证去恢复了一下, 居然98%数据都恢复了, 那位网友就马上下线, 不再和我联系了. </p>
<p>&nbsp; &nbsp; 提供有价值的东西, 可以取得一些回报, 正在被大多数人接受. </p>
<h3  class="related_post_title">Relative Posts:</h3><ul class="related_post"><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/07/06 -- <a href="http://www.anysql.net/aulmydul/tuning_update_sql_01.html" title="连错库误删100多张表">连错库误删100多张表</a> (9)</li><li>2008/03/28 -- <a href="http://www.anysql.net/aulmydul/blame_after_steal_mydul.html" title="选择AUL恢复数据的理由">选择AUL恢复数据的理由</a> (3)</li><li>2008/03/19 -- <a href="http://www.anysql.net/aulmydul/oracle_final_data_recovery.html" title="Oracle数据恢复服务模式">Oracle数据恢复服务模式</a> (0)</li><li>2007/11/06 -- <a href="http://www.anysql.net/aulmydul/aul_compress_beta.html" title="将完成AUL最后一个心愿, 支持Compress表">将完成AUL最后一个心愿, 支持Compress表</a> (2)</li><li>2010/01/10 -- <a href="http://www.anysql.net/aulmydul/aul-fixed-license-mode.html" title="出售AUL固定许可证">出售AUL固定许可证</a> (4)</li><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/14 -- <a href="http://www.anysql.net/life/forced_free_data_recovery.html" title="一次被迫免费的恢复">一次被迫免费的恢复</a> (14)</li><li>2008/08/13 -- <a href="http://www.anysql.net/dba/good_protect_your_data.html" title="小心看好你的数据">小心看好你的数据</a> (5)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.anysql.net/aulmydul/aul_customer_world_map.html/feed</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>猜想Oracle Direct方式</title>
		<link>http://www.anysql.net/dba/oracle_direct_export.html</link>
		<comments>http://www.anysql.net/dba/oracle_direct_export.html#comments</comments>
		<pubDate>Fri, 17 Apr 2009 03:45:19 +0000</pubDate>
		<dc:creator>anysql</dc:creator>
				<category><![CDATA[DBA]]></category>
		<category><![CDATA[Direct]]></category>
		<category><![CDATA[Export]]></category>
		<category><![CDATA[Oracle]]></category>

		<guid isPermaLink="false">http://www.anysql.net/wordpress/uncategorized/%e7%8c%9c%e6%83%b3oracle-direct%e6%96%b9%e5%bc%8f.html</guid>
		<description><![CDATA[&#160; &#160; 前段时间发现Direct方式导出要比普通方式快一倍, 一直在想原因. 仔细参详了OCI开发者指南文档中有关Direct装载的方式后, 对于Direct方式和普通方式的区别作了一个猜测. 下图是在普通方式下进行批量处理时记录的返回情况, 每一个列是一个数组. &#160; &#160; 这种方式下, 导出成文本时, 从Oracle获得一批记录后, 客户端程序需要做两个循环, 来一行一行地写出. 而Direct方式下, Oracle返回的记录格式不一样, 如下图所示. &#160; &#160; 在Direct方式下, 返回的顺利是一行串一行的方式, 使用Export或Export Datapump时, 就可以不用进行符何循环, 直接将取出来放到缓冲中的记录写出到文件, 从而节约了客户端的资源, 从Oracle数据库中记录的存贮格式来看, 以Directs格式存放更合适, 只不过Oracle并没有开放这个程序接口, 也没有为文本方式导出开发类似的API接口. &#160; &#160; 也许有这样的接口, 只是Oracle不告诉我们, 可以请个很懂Windows程序的人来Debug进行分析一下. Relative Posts:2010/06/19 -- 2011年起SQLULDR2中的收费功能 (3)2009/04/09 -- expdp, exp和sqluldr2 (2)2009/02/05 -- 导出时如何统一表空间? (2)2008/05/15 -- 将dmp数据导入到另一个表 (3)2008/02/20 -- 导出时的字符集转换 (1)2008/01/25 -- [...]]]></description>
			<content:encoded><![CDATA[<p>&nbsp; &nbsp; 前段时间发现Direct方式导出要比普通方式<a href="http://www.anysql.net/dba/sqluldr2_exp_expdp.html">快一倍</a>, 一直在想原因. 仔细参详了OCI开发者指南文档中有关Direct装载的方式后, 对于Direct方式和普通方式的区别作了一个猜测. 下图是在普通方式下进行批量处理时记录的返回情况, 每一个列是一个数组. </p>
<blockquote><p>
<img src="http://www.anysql.net/images/oracle_normal_mode.gif" border="0" />
</p></blockquote>
<p>&nbsp; &nbsp; 这种方式下, 导出成文本时, 从Oracle获得一批记录后, 客户端程序需要做两个循环, 来一行一行地写出. 而Direct方式下, Oracle返回的记录格式不一样, 如下图所示. </p>
<blockquote><p>
<img src="http://www.anysql.net/images/oracle_direct_mode.gif" border="0" />
</p></blockquote>
<p>&nbsp; &nbsp; 在Direct方式下, 返回的顺利是一行串一行的方式, 使用Export或Export Datapump时, 就可以不用进行符何循环, 直接将取出来放到缓冲中的记录写出到文件, 从而节约了客户端的资源, 从Oracle数据库中记录的存贮格式来看, 以Directs格式存放更合适, 只不过Oracle并没有开放这个程序接口, 也没有为文本方式导出开发类似的API接口. </p>
<p>&nbsp; &nbsp; 也许有这样的接口, 只是Oracle不告诉我们, 可以请个很懂Windows程序的人来Debug进行分析一下. </p>
<h3  class="related_post_title">Relative Posts:</h3><ul class="related_post"><li>2010/06/19 -- <a href="http://www.anysql.net/tools/sqluldr2-non-free-features.html" title="2011年起SQLULDR2中的收费功能">2011年起SQLULDR2中的收费功能</a> (3)</li><li>2009/04/09 -- <a href="http://www.anysql.net/dba/sqluldr2_exp_expdp.html" title="expdp, exp和sqluldr2">expdp, exp和sqluldr2</a> (2)</li><li>2009/02/05 -- <a href="http://www.anysql.net/dba/change_export_tablespace.html" title="导出时如何统一表空间?">导出时如何统一表空间?</a> (2)</li><li>2008/05/15 -- <a href="http://www.anysql.net/dba/aul_better_for_nchar.html" title="将dmp数据导入到另一个表">将dmp数据导入到另一个表</a> (3)</li><li>2008/02/20 -- <a href="http://www.anysql.net/dba/export_charset_convert.html" title="导出时的字符集转换">导出时的字符集转换</a> (1)</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> (15)</li><li>2007/11/28 -- <a href="http://www.anysql.net/dba/oracle_export_parallel.html" title="Hack了一把Oracle的exp工具">Hack了一把Oracle的exp工具</a> (9)</li><li>2007/11/28 -- <a href="http://www.anysql.net/oracle/tune_oracle_exp_imp.html" title="如何提高Oracle exp/imp的速度?">如何提高Oracle exp/imp的速度?</a> (7)</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/07/10 -- <a href="http://www.anysql.net/tools/dmp2utf8_download_increase.html" title="dmp2utf8的下载量骤增, 不知什么原因?">dmp2utf8的下载量骤增, 不知什么原因?</a> (5)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.anysql.net/dba/oracle_direct_export.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>轻量级Oracle性能监控</title>
		<link>http://www.anysql.net/dba/oramon_webchart_solution.html</link>
		<comments>http://www.anysql.net/dba/oramon_webchart_solution.html#comments</comments>
		<pubDate>Sun, 05 Apr 2009 21:56:59 +0000</pubDate>
		<dc:creator>anysql</dc:creator>
				<category><![CDATA[DBA]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Tuning]]></category>
		<category><![CDATA[WebChart]]></category>

		<guid isPermaLink="false">http://www.anysql.net/wordpress/uncategorized/%e8%bd%bb%e9%87%8f%e7%ba%a7oracle%e6%80%a7%e8%83%bd%e7%9b%91%e6%8e%a7.html</guid>
		<description><![CDATA[&#160; &#160; 有些DBA将性能监控等同于某些值超过某个阀值时进行自动报警, 但这是不够的. 对于数据库的性能监控, 我的感觉是要不停地收集性能数据, 并进行有效的展示, 和持续的关注与分析. DBA才是性能监控的关键资源, 任何工具只能发挥数据收集及展示的功能, 但如果没有好的工具, DBA资源就不能很好地发挥作用. &#160; &#160; oramon是自行开发的一个Oracle性能收集工具, WebChart是自行开发的一个Web图表展示平台. 过节的第一天, 改造了一下oramon, 并编写了一个scanomon的程序, 形成了一个轻量级的性能监控解决方案. &#160; &#160; oramon会将重要的性能数据写两份, 一份是文本方式分析用的, 另一份是给scanomon用的. scanomon会将oramon收集的数据实时地装载到性能数据库中. 然后用WebChart进行可定制的灵活展示(如将所有数据库的Load Average和Active Session个数, 显示到一个页面中). 然后DBA才能对数据库的性能十分了解, 做到有把握的数据库运行. &#160; &#160; oramon收集的信息, 都是从实践中总结提炼出来的性能数据, 可以十分有效地发作用. 现在管理的数据库用的就是这套简单的解决方案, 所有的性能问题都能被及时发现, 并最终得到解决. Relative Posts:2009/06/25 -- oramon如何收集V$SYSTEM_EVENT数据? (3)2009/06/25 -- oramon如何从V$SESSION收集性能数据? (0)2009/06/24 -- oramon如何从V$SYSSTAT收集性能数据? (1)2009/05/21 -- 用oramon的数据进行报警 (3)2009/05/19 -- [...]]]></description>
			<content:encoded><![CDATA[<p>&nbsp; &nbsp; 有些DBA将性能监控等同于某些值超过某个阀值时进行自动报警, 但这是不够的. 对于数据库的性能监控, 我的感觉是要不停地收集性能数据, 并进行有效的展示, 和持续的关注与分析. DBA才是性能监控的关键资源, 任何工具只能发挥数据收集及展示的功能, 但如果没有好的工具, DBA资源就不能很好地发挥作用. </p>
<p>&nbsp; &nbsp; oramon是自行开发的一个Oracle性能收集工具, WebChart是自行开发的一个Web图表展示平台. 过节的第一天, 改造了一下oramon, 并编写了一个scanomon的程序, 形成了一个轻量级的性能监控解决方案. </p>
<p><img src="http://www.anysql.net/images/oramon_webchart.png" borde="0" /></p>
<p>&nbsp; &nbsp; oramon会将重要的性能数据写两份, 一份是文本方式分析用的, 另一份是给scanomon用的. scanomon会将oramon收集的数据实时地装载到性能数据库中. 然后用WebChart进行可定制的灵活展示(如将所有数据库的Load Average和Active Session个数, 显示到<a href="http://www.flickr.com/photos/anysql/3406354331/in/photostream/">一个页面</a>中). 然后DBA才能对数据库的性能十分了解, 做到有把握的数据库运行. </p>
<p>&nbsp; &nbsp; oramon收集的信息, 都是从实践中总结提炼出来的性能数据, 可以十分有效地发作用. 现在管理的数据库用的就是这套简单的解决方案, 所有的性能问题都能被及时发现, 并最终得到解决. </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/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/04/21 -- <a href="http://www.anysql.net/tools/display_oramon_perf_data.html" title="用图表显示oramon数据">用图表显示oramon数据</a> (10)</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>2008/12/13 -- <a href="http://www.anysql.net/developer/owc_sub_chart_demo.html" title="如何画一个SubChart图?">如何画一个SubChart图?</a> (3)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.anysql.net/dba/oramon_webchart_solution.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>归档日志管理不容易</title>
		<link>http://www.anysql.net/dba/keep_enough_archive_log.html</link>
		<comments>http://www.anysql.net/dba/keep_enough_archive_log.html#comments</comments>
		<pubDate>Fri, 06 Feb 2009 17:10:21 +0000</pubDate>
		<dc:creator>anysql</dc:creator>
				<category><![CDATA[DBA]]></category>
		<category><![CDATA[Archive]]></category>
		<category><![CDATA[Drop]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Recovery]]></category>

		<guid isPermaLink="false">http://www.anysql.net/wordpress/uncategorized/%e5%bd%92%e6%a1%a3%e6%97%a5%e5%bf%97%e7%ae%a1%e7%90%86%e4%b8%8d%e5%ae%b9%e6%98%93.html</guid>
		<description><![CDATA[&#160; &#160; 昨天晚上接到一网友电话, 咨询一件事情, 聊了一会后才明白了是什么事情. 一个数据库中有两个用户A和B, 理论上所有的表应当分别存在DATA_A和DATA_B中, 现在要清掉B用户及DATA_B表空间以释入空间, 没有事先做足够多的检查, 就将DATA_B表空间及数据文件删除了, 事后发现A用户有一两个重要的表存在DATA_B表空间上, 引起了系统停机问题. &#160; &#160; 由于数据库巨大, 最近的全备是一年多以前的了, 从里面还原出来进行恢复, 才发现丢了一年前的一两个归档日志, 因此束手无策, 来咨询我怎么办, 其实已经没有捷径可走了. 这个问题的背后从小处看却是归档日志管理的问题, 理论上大家都知道应当去定期检查, 但事实上能照着做的人很少. &#160; &#160; 最近我自已也有两个和归档日志有关的问题, 还好年前用智能化角本来管理归档日志了, 才避免了Standby的重建工作. 第一次在节前业务高峰, 远程Standby的存贮设备太差了, 恢复跟不上, 积累了上TB的归档日志, 如果用原来的归档清除脚本, 早就不行了, 用了智能的脚本强行顶着, 最后撑到了现在跟上了, 要不又要重建几个TB的Standby了. &#160; &#160; 第二次是过年中间远程备库的机器挂起了, 大家都回去过年了, 又是Standby就暂时不管了, 因为智能脚本中只会在Primary上删除已经在这个Standby上应用过的日志, 所以很多天的归档日志得以保留下来, 将机器重起一下后, 再传归档日志过去, 又一次避免了Standby的重建工作. &#160; &#160; 也和很多企业, 没有充分认识到数据的作用, 没有给管理员一个简单一些的操作环境, 有关. 当然更重要的是DBA要有责任心, [...]]]></description>
			<content:encoded><![CDATA[<p>&nbsp; &nbsp; 昨天晚上接到一网友电话, 咨询一件事情, 聊了一会后才明白了是什么事情. 一个数据库中有两个用户A和B, 理论上所有的表应当分别存在DATA_A和DATA_B中, 现在要清掉B用户及DATA_B表空间以释入空间, 没有事先做足够多的检查, 就将DATA_B表空间及数据文件删除了, 事后发现A用户有一两个重要的表存在DATA_B表空间上, 引起了系统停机问题. </p>
<p>&nbsp; &nbsp; 由于数据库巨大, 最近的全备是一年多以前的了, 从里面还原出来进行恢复, 才发现丢了一年前的一两个归档日志, 因此束手无策, 来咨询我怎么办, 其实已经没有捷径可走了.  这个问题的背后从小处看却是归档日志管理的问题, 理论上大家都知道应当去定期检查, 但事实上能照着做的人很少. </p>
<p>&nbsp; &nbsp; 最近我自已也有两个和归档日志有关的问题, 还好年前用<a href="http://www.anysql.net/dba/perl_purge_primary_archivelog.html">智能化角本</a>来管理归档日志了, 才避免了Standby的重建工作. 第一次在节前业务高峰, 远程Standby的存贮设备太差了, 恢复跟不上, 积累了上TB的归档日志, 如果用原来的归档清除脚本, 早就不行了, 用了智能的脚本强行顶着, 最后撑到了现在跟上了, 要不又要重建几个TB的Standby了. </p>
<p>&nbsp; &nbsp; 第二次是过年中间远程备库的机器挂起了, 大家都回去过年了, 又是Standby就暂时不管了, 因为智能脚本中只会在Primary上删除已经在这个Standby上应用过的日志, 所以很多天的归档日志得以保留下来, 将机器重起一下后, 再传归档日志过去, 又一次避免了Standby的重建工作. </p>
<p>&nbsp; &nbsp; 也和很多企业, 没有充分认识到数据的作用, 没有给管理员一个简单一些的操作环境, 有关. 当然更重要的是DBA要有责任心, 然后才能细心认真地工作. </p>
<h3  class="related_post_title">Relative Posts:</h3><ul class="related_post"><li>2008/07/06 -- <a href="http://www.anysql.net/aulmydul/tuning_update_sql_01.html" title="连错库误删100多张表">连错库误删100多张表</a> (9)</li><li>2007/06/02 -- <a href="http://www.anysql.net/research/use_mylog_for_recovery.html" title="MyLOG程序对于Drop类误操作恢复的作用">MyLOG程序对于Drop类误操作恢复的作用</a> (0)</li><li>2009/04/26 -- <a href="http://www.anysql.net/aulmydul/aul_customer_world_map.html" title="拯救数据, 拯救地球?">拯救数据, 拯救地球?</a> (9)</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/11/25 -- <a href="http://www.anysql.net/developer/purge_archivelog_by_space.html" title="指定保留多少GB的归档">指定保留多少GB的归档</a> (1)</li><li>2008/08/14 -- <a href="http://www.anysql.net/life/forced_free_data_recovery.html" title="一次被迫免费的恢复">一次被迫免费的恢复</a> (14)</li><li>2008/08/13 -- <a href="http://www.anysql.net/dba/good_protect_your_data.html" title="小心看好你的数据">小心看好你的数据</a> (5)</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></ul>]]></content:encoded>
			<wfw:commentRss>http://www.anysql.net/dba/keep_enough_archive_log.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>导出时如何统一表空间?</title>
		<link>http://www.anysql.net/dba/change_export_tablespace.html</link>
		<comments>http://www.anysql.net/dba/change_export_tablespace.html#comments</comments>
		<pubDate>Thu, 05 Feb 2009 21:34:37 +0000</pubDate>
		<dc:creator>anysql</dc:creator>
				<category><![CDATA[DBA]]></category>
		<category><![CDATA[Export]]></category>
		<category><![CDATA[Index]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Partition]]></category>
		<category><![CDATA[Table]]></category>

		<guid isPermaLink="false">http://www.anysql.net/wordpress/uncategorized/%e5%af%bc%e5%87%ba%e6%97%b6%e5%a6%82%e4%bd%95%e7%bb%9f%e4%b8%80%e8%a1%a8%e7%a9%ba%e9%97%b4.html</guid>
		<description><![CDATA[&#160; &#160; 很久以前SAN还没有普及时, 学习当DBA时曾学到过要将表和索引分开存放, 并且不同的数据放不同的表空间中, 然后查看V$FILESTAT看文件的繁忙程度, 在多个物理盘之间平衡IO以达到性能的优化. 正式库是这样细心设计, 测试库和开发库也会这样细心设计, 但给跨平台数据迁移时带来了很多的麻烦, 尤其是有几十个表空间时, 不但浪费空间, 还容易导入导出时出表空间不存在的错误, 影响速度. &#160; &#160; Oracle的Exp工具就是一个很好的迁移工具, 将表/索引/视图/存贮过程等对象统一打包去, 但不容易解决多个表空间的问题. 在这里有一个非官方公开的方法, Oracle数据库中有一套为Exp工具定制的元数据, 来定义对象的各种属性, 包括数据对象所在的表空间, 只要改一下这些定义就可以了. 在9i中将catexp.sql脚本中下面视图的定义改一下就可以统一表空间了. exu9tabs exu9pds exu9ind_base exu9sto exu9lob exu9ltts exu8tbp exu8ixp &#160; &#160; 将里面的有关表空间位置(ts$.name)的定义, 改成你想要的表空间的名字, 如原来的定义为: &#8230;&#8230; SELECT&#160; 0, o$.name, o$.owner#, 0, &#160; &#160; &#160; &#160; NVL(t$.bobj#, 0), ts$.name &#160; FROM&#160; &#160; sys.tab$ [...]]]></description>
			<content:encoded><![CDATA[<p>&nbsp; &nbsp; 很久以前SAN还没有普及时, 学习当DBA时曾学到过要将表和索引分开存放, 并且不同的数据放不同的表空间中, 然后查看V$FILESTAT看文件的繁忙程度, 在多个物理盘之间平衡IO以达到性能的优化. 正式库是这样细心设计, 测试库和开发库也会这样细心设计, 但给跨平台数据迁移时带来了很多的麻烦, 尤其是有几十个表空间时, 不但浪费空间, 还容易导入导出时出表空间不存在的错误, 影响速度. </p>
<p>&nbsp; &nbsp; Oracle的Exp工具就是一个很好的迁移工具, 将表/索引/视图/存贮过程等对象统一打包去, 但不容易解决多个表空间的问题. 在这里有一个非官方公开的方法, Oracle数据库中有一套为Exp工具定制的元数据, 来定义对象的各种属性, 包括数据对象所在的表空间, 只要改一下这些定义就可以了. 在9i中将catexp.sql脚本中下面视图的定义改一下就可以统一表空间了. </p>
<blockquote class="prefont"><p>
exu9tabs<br />
exu9pds <br />
exu9ind_base <br />
exu9sto <br />
exu9lob <br />
exu9ltts <br />
exu8tbp <br />
exu8ixp
</p></blockquote>
<p>&nbsp; &nbsp; 将里面的有关表空间位置(ts$.name)的定义, 改成你想要的表空间的名字, 如原来的定义为: </p>
<blockquote class="prefont"><p>
&#8230;&#8230;<br />
SELECT&nbsp; 0, o$.name, o$.owner#, 0, <br />
&nbsp; &nbsp; &nbsp; &nbsp; NVL(t$.bobj#, 0), ts$.name <br />
&nbsp;  FROM&nbsp; &nbsp; sys.tab$ t$, sys.obj$ o$, sys.ts$ ts$<br />
&nbsp;  WHERE&nbsp;  t$.obj# = o$.obj# AND<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  t$.ts# = ts$.ts# AND<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  o$.owner# != 0 AND<br />
&#8230;&#8230;
</p></blockquote>
<p>&nbsp; &nbsp; 改成固定的值, 如DATA, 如下所示: </p>
<blockquote class="prefont"><p>
&#8230;&#8230;<br />
SELECT&nbsp; 0, o$.name, o$.owner#, 0, <br />
&nbsp; &nbsp; &nbsp; &nbsp; NVL(t$.bobj#, 0), &#8216;DATA&#8217; /* ts$.name */<br />
&nbsp;  FROM&nbsp; &nbsp; sys.tab$ t$, sys.obj$ o$, sys.ts$ ts$<br />
&nbsp;  WHERE&nbsp;  t$.obj# = o$.obj# AND<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  t$.ts# = ts$.ts# AND<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  o$.owner# != 0 AND<br />
&#8230;&#8230;
</p></blockquote>
<p>&nbsp; &nbsp; 最后运行一下utlrp重新编译一下失效的视图, 再进行导出时, 所有的表/索引或分区都在一个表空间(DATA)上了. 这里不包括子分区的定义, 因为要测试的环境中没有子分区, 就没有改子分区的有关定义部份了. </p>
<p>&nbsp; &nbsp; 危险操作, 不要随便模妨, 不要直接去改catexp.sql文件, 将相关视图的定义拷出到新的文件中, 并且改动视图前, 请先备份好原来的视图定义, 以便还原. </p>
<h3  class="related_post_title">Relative Posts:</h3><ul class="related_post"><li>2008/06/23 -- <a href="http://www.anysql.net/dba/apache_tomcat.html" title="根据表名搜索SQL语句">根据表名搜索SQL语句</a> (0)</li><li>2008/05/15 -- <a href="http://www.anysql.net/dba/aul_better_for_nchar.html" title="将dmp数据导入到另一个表">将dmp数据导入到另一个表</a> (3)</li><li>2008/02/28 -- <a href="http://www.anysql.net/oracle/oracle_zero_cost_plan.html" title="Oracle CBO认为Cost为0">Oracle CBO认为Cost为0</a> (2)</li><li>2007/08/21 -- <a href="http://www.anysql.net/oracle/indexed_fixed_column.html" title="如何获得X$表上的特殊索引信息?">如何获得X$表上的特殊索引信息?</a> (0)</li><li>2007/08/12 -- <a href="http://www.anysql.net/oracle/use_concat_not_working.html" title="USE_CONCAT对X$表有时并不工作">USE_CONCAT对X$表有时并不工作</a> (0)</li><li>2007/08/02 -- <a href="http://www.anysql.net/oracle/oracle_kernel_table_index.html" title="如何以较好的性能访问Oracle内核表?">如何以较好的性能访问Oracle内核表?</a> (1)</li><li>2007/01/31 -- <a href="http://www.anysql.net/oracle/oracleglobal_partition_index.html" title="你用过Oracle的Global Partition Index吗?">你用过Oracle的Global Partition Index吗?</a> (12)</li><li>2010/06/19 -- <a href="http://www.anysql.net/tools/sqluldr2-non-free-features.html" title="2011年起SQLULDR2中的收费功能">2011年起SQLULDR2中的收费功能</a> (3)</li><li>2010/01/15 -- <a href="http://www.anysql.net/tools/sqluldr2-create-table-syntax.html" title="两个用户的SQLULDR2需求">两个用户的SQLULDR2需求</a> (1)</li><li>2009/07/01 -- <a href="http://www.anysql.net/dba/partition-table-statistics-choose.html" title="分区表用哪个级别的统计信息?">分区表用哪个级别的统计信息?</a> (2)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.anysql.net/dba/change_export_tablespace.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>WebChart的DB连接配置</title>
		<link>http://www.anysql.net/tools/webchart_dbconn_config.html</link>
		<comments>http://www.anysql.net/tools/webchart_dbconn_config.html#comments</comments>
		<pubDate>Tue, 03 Feb 2009 00:53:57 +0000</pubDate>
		<dc:creator>anysql</dc:creator>
				<category><![CDATA[Tools]]></category>
		<category><![CDATA[Builder]]></category>
		<category><![CDATA[Chart]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Tomcat]]></category>
		<category><![CDATA[WebChart]]></category>

		<guid isPermaLink="false">http://www.anysql.net/wordpress/uncategorized/webchart%e7%9a%84db%e8%bf%9e%e6%8e%a5%e9%85%8d%e7%bd%ae.html</guid>
		<description><![CDATA[&#160; &#160; WebChart中有自已的连接池管理器, 至于为什么不用Tomcat的, 则是因为开发WebChart第一版时有好几个比较流行的Java EJB&#38;Servlet容易, 各个容易的程序接口不太一样, 所以就写了一个自已的湊合着用了, 反正主要的目标是内部使用一下的程序, 没有指望一天有几十万或上百万的访问量. 配置文件放在如下位置: WEB-INF/dbconn.cfg &#160; &#160; 是一个文本文件, 可以用任何文本编辑回打开编辑. 内容如下所示: # 启用的数据库连接 DBLIST=连接名[&#124;连接名[&#124;连接名… ]] # 连接参数设置 连接名.DBTYPE={ORACLE&#124;SYBASE&#124;MSSQL&#124;DB2NET&#124;DB2APP&#124;MYSQL&#124;ODBC} 连接名.DBHOST=数据库信息 连接名.DBUSER=数据库用户 连接名.DBPASS=用户口令 连接名.MAXCONNS=最大连接数 连接名.INITCONNS=初始连接数 &#8230;&#8230; # WebChart 元数据库连接名称 ADMINDB=连接名 &#160; &#160; DBLIST这一行指定多个数据源的名字, 可以在WebChart页面定义文件(WCML文件)中为某个SQL语句指定数据源, 如果没有显式指定数据源名字, 则访问名为DEFAULT的数据源. 然后是每个数据源的连接属性定义, 类型(DBTYPE), JDBC数据库URL(DBHOST), 用户名(DBUSER), 口令(DBPASS), 最大连接数(MAXCONNS), 最小连接数(INITCONNS). 当要使用WebChart默认的安全机制时, 需要指定一个元数据的连接位置(ADMINDB=数据源名), 以创建WebChart安全功能中所需要用到的几张表. &#160; &#160; 对于WebChart目前的连接池, 没有连接超时机制, 如果你的连接信息不对, [...]]]></description>
			<content:encoded><![CDATA[<p>&nbsp; &nbsp; WebChart中有自已的连接池管理器, 至于为什么不用Tomcat的, 则是因为开发WebChart第一版时有好几个比较流行的Java EJB&amp;Servlet容易, 各个容易的程序接口不太一样, 所以就写了一个自已的湊合着用了, 反正主要的目标是内部使用一下的程序, 没有指望一天有几十万或上百万的访问量. 配置文件放在如下位置: </p>
<blockquote class="prefont"><p>
WEB-INF/dbconn.cfg
</p></blockquote>
<p>&nbsp; &nbsp; 是一个文本文件, 可以用任何文本编辑回打开编辑. 内容如下所示: </p>
<blockquote class="prefont"><p>
# 启用的数据库连接<br />
DBLIST=连接名[|连接名[|连接名… ]]</p>
<p># 连接参数设置<br />
连接名.DBTYPE={ORACLE|SYBASE|MSSQL|DB2NET|DB2APP|MYSQL|ODBC}<br />
连接名.DBHOST=数据库信息<br />
连接名.DBUSER=数据库用户<br />
连接名.DBPASS=用户口令<br />
连接名.MAXCONNS=最大连接数<br />
连接名.INITCONNS=初始连接数</p>
<p>&#8230;&#8230;</p>
<p># WebChart 元数据库连接名称<br />
ADMINDB=连接名
</p></blockquote>
<p>&nbsp; &nbsp; DBLIST这一行指定多个数据源的名字, 可以在WebChart页面定义文件(WCML文件)中为某个SQL语句指定数据源, 如果没有显式指定数据源名字, 则访问名为DEFAULT的数据源. 然后是每个数据源的连接属性定义, 类型(DBTYPE), JDBC数据库URL(DBHOST), 用户名(DBUSER), 口令(DBPASS), 最大连接数(MAXCONNS), 最小连接数(INITCONNS). 当要使用WebChart默认的安全机制时, 需要指定一个元数据的连接位置(ADMINDB=数据源名), 以创建WebChart安全功能中所需要用到的几张表. </p>
<p>&nbsp; &nbsp; 对于WebChart目前的连接池, 没有连接超时机制, 如果你的连接信息不对, 导致不能连上数据库, 会引起页面永远打不开处于等待状态. </p>
<p>&nbsp; &nbsp; 目前密码还是明文保存的, 将会在近期改进这一点, 以提高系统的安全性. </p>
<h3  class="related_post_title">Relative Posts:</h3><ul class="related_post"><li>2009/01/13 -- <a href="http://www.anysql.net/tools/webchart_install_windows.html" title="WebChart的安装与配置">WebChart的安装与配置</a> (24)</li><li>2009/01/12 -- <a href="http://www.anysql.net/developer/webchart_online_editor.html" title="WebChart在线编辑功能">WebChart在线编辑功能</a> (0)</li><li>2009/01/14 -- <a href="http://www.anysql.net/developer/webchart_excel.html" title="WebChart的Excel导出">WebChart的Excel导出</a> (4)</li><li>2009/01/13 -- <a href="http://www.anysql.net/developer/webchart_framework.html" title="WebChart的技术结构">WebChart的技术结构</a> (1)</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/02/07 -- <a href="http://www.anysql.net/tools/webchart_chart_demo.html" title="WebChart的图形例子">WebChart的图形例子</a> (4)</li><li>2008/12/13 -- <a href="http://www.anysql.net/developer/owc_sub_chart_demo.html" title="如何画一个SubChart图?">如何画一个SubChart图?</a> (3)</li><li>2008/12/11 -- <a href="http://www.anysql.net/developer/owc_sparse_data_chart.html" title="画一个Web图表有多难?">画一个Web图表有多难?</a> (0)</li><li>2008/12/11 -- <a href="http://www.anysql.net/developer/web_tow_axis_chart.html" title="画图? WebChart够用了!">画图? WebChart够用了!</a> (1)</li><li>2008/08/05 -- <a href="http://www.anysql.net/developer/webchart_business_monitor.html" title="WebChart监控系统">WebChart监控系统</a> (6)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.anysql.net/tools/webchart_dbconn_config.html/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>WebChart的安装与配置</title>
		<link>http://www.anysql.net/tools/webchart_install_windows.html</link>
		<comments>http://www.anysql.net/tools/webchart_install_windows.html#comments</comments>
		<pubDate>Wed, 14 Jan 2009 04:37:58 +0000</pubDate>
		<dc:creator>anysql</dc:creator>
				<category><![CDATA[Tools]]></category>
		<category><![CDATA[Builder]]></category>
		<category><![CDATA[Chart]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Tomcat]]></category>
		<category><![CDATA[WebChart]]></category>

		<guid isPermaLink="false">http://www.anysql.net/wordpress/uncategorized/webchart%e7%9a%84%e5%ae%89%e8%a3%85%e4%b8%8e%e9%85%8d%e7%bd%ae.html</guid>
		<description><![CDATA[&#160; &#160; 吹了半天WebChart的功能, 及技术框架后, 已经有网友反应比较需要这个功能了, 却发现下载WebChart后, 不知道如何安装与配置. 希望看完这篇后, 你能安装成功. &#160; &#160; 首先要下载和安装Java SDK, 可以从Sun的Java官方网站下载, 注意一定要Java开发包(JDK, Java Development Kit), 光有运行环境(JRE, Java Runtime Enviroment)是不够的, 并且一定要是1.4以上的版本. 如果你机器上安装了Oracle 10g以上的版本, 则Oracle主目录下的jdk目录拷过来就可以使用了. 为了简单起见, 建议安装到以下目录: c:\jdk &#160; &#160; 并且添加如下环境变量: JAVA_HOME=c:\jdk &#160; &#160; 接下来下载Tomcat, 直接解压到根目录下, 然后重命名Tomcat的主目录为: c:\TomcatWebChart &#160; &#160; 下载WebChart并解压到如下目录: c:\TomcatWebChart\webapps &#160; &#160; 然后要拷贝数据库的JDBC驱动程序包, 到如下目录: c:\TomcatWebChart\common\lib &#160; &#160; 安装部份已经完成, 接下来要编辑数据库连接配置文件, 用文本编辑器打开如下文件: c:\TomcatWebChart\webapps\webchart\WEB-INF\dbconn.cfg &#160; [...]]]></description>
			<content:encoded><![CDATA[<p>&nbsp; &nbsp; 吹了半天<a href="http://www.dbatools.net/mytools/webchart_feature_overview.html">WebChart的功能</a>, 及<a href="http://www.anysql.net/developer/webchart_framework.html">技术框架</a>后, 已经有网友反应比较需要这个功能了, 却发现<a href="http://www.anysql.net/software/webchart.zip">下载WebChart</a>后, 不知道如何安装与配置. 希望看完这篇后, 你能安装成功. </p>
<p>&nbsp; &nbsp; 首先要下载和安装Java SDK, 可以从Sun的<a href="http://java.sun.com/j2se/1.4.2/download.html">Java官方网站</a>下载, 注意一定要Java开发包(JDK, Java Development Kit), 光有运行环境(JRE, Java Runtime Enviroment)是不够的, 并且一定要是1.4以上的版本. 如果你机器上安装了Oracle 10g以上的版本, 则Oracle主目录下的jdk目录拷过来就可以使用了. 为了简单起见, 建议安装到以下目录: </p>
<blockquote class="prefont"><p>
c:\jdk
</p></blockquote>
<p>&nbsp; &nbsp; 并且添加如下环境变量: </p>
<blockquote class="prefont"><p>
JAVA_HOME=c:\jdk
</p></blockquote>
<p>&nbsp; &nbsp; 接下来下载<a href="http://labs.xiaonei.com/apache-mirror/tomcat/tomcat-4/v4.1.39/bin/apache-tomcat-4.1.39.zip">Tomcat</a>, 直接解压到根目录下, 然后重命名Tomcat的主目录为: </p>
<blockquote class="prefont"><p>
c:\TomcatWebChart
</p></blockquote>
<p>&nbsp; &nbsp; <a href="http://www.anysql.net/software/webchart.zip">下载WebChart</a>并解压到如下目录: </p>
<blockquote class="prefont"><p>
c:\TomcatWebChart\webapps
</p></blockquote>
<p>&nbsp; &nbsp; 然后要拷贝数据库的JDBC驱动程序包, 到如下目录: </p>
<blockquote class="prefont"><p>
c:\TomcatWebChart\common\lib
</p></blockquote>
<p>&nbsp; &nbsp; 安装部份已经完成, 接下来要编辑数据库连接配置文件, 用文本编辑器打开如下文件: </p>
<blockquote class="prefont"><p>
c:\TomcatWebChart\webapps\webchart\WEB-INF\dbconn.cfg
</p></blockquote>
<p>&nbsp; &nbsp; 下面是连接到本地Oracle数据库Scott用户的例子, 建议初始安装时完全按一样的环境搭建, 这样可以让默认的例子跑起来. </p>
<blockquote class="prefont"><p>
# WebChart Metadata Connection<br />
ADMINDB=DEFAULT</p>
<p># Database name list<br />
DBLIST=DEFAULT</p>
<p># Connection Paramters for each database name<br />
DEFAULT.DBTYPE=oracle<br />
DEFAULT.DBHOST=localhost:1521:db10g<br />
DEFAULT.DBUSER=SCOTT<br />
DEFAULT.DBPASS=TIGER<br />
DEFAULT.MAXCONNS=8<br />
DEFAULT.INITCONNS=2<br />
DEFAULT.LOCALE=SIMPLIFIED_CHINESE
</p></blockquote>
<p>&nbsp; &nbsp; 然后运行如下命令, 起动Tomcat服务: </p>
<blockquote class="prefont"><p>
c:\TomcatWebChart\bin\startup.bat
</p></blockquote>
<p>&nbsp; &nbsp; 接下来打开IE, 在地址栏输入以下地址来看Demo页面: </p>
<blockquote class="prefont"><p>
http://localhost:8080/webchart/demo1.rhtml<br />
http://localhost:8080/webchart/demo2.rhtml<br />
http://localhost:8080/webchart/demo3.rhtml
</p></blockquote>
<p>&nbsp; &nbsp; 你可以到相应的目录, 打开这些WCML文件看看, 或偿试编辑他们, 看看运行的效果. </p>
<h3  class="related_post_title">Relative Posts:</h3><ul class="related_post"><li>2009/02/02 -- <a href="http://www.anysql.net/tools/webchart_dbconn_config.html" title="WebChart的DB连接配置">WebChart的DB连接配置</a> (7)</li><li>2009/01/12 -- <a href="http://www.anysql.net/developer/webchart_online_editor.html" title="WebChart在线编辑功能">WebChart在线编辑功能</a> (0)</li><li>2009/01/14 -- <a href="http://www.anysql.net/developer/webchart_excel.html" title="WebChart的Excel导出">WebChart的Excel导出</a> (4)</li><li>2009/01/13 -- <a href="http://www.anysql.net/developer/webchart_framework.html" title="WebChart的技术结构">WebChart的技术结构</a> (1)</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/02/07 -- <a href="http://www.anysql.net/tools/webchart_chart_demo.html" title="WebChart的图形例子">WebChart的图形例子</a> (4)</li><li>2008/12/13 -- <a href="http://www.anysql.net/developer/owc_sub_chart_demo.html" title="如何画一个SubChart图?">如何画一个SubChart图?</a> (3)</li><li>2008/12/11 -- <a href="http://www.anysql.net/developer/owc_sparse_data_chart.html" title="画一个Web图表有多难?">画一个Web图表有多难?</a> (0)</li><li>2008/12/11 -- <a href="http://www.anysql.net/developer/web_tow_axis_chart.html" title="画图? WebChart够用了!">画图? WebChart够用了!</a> (1)</li><li>2008/08/05 -- <a href="http://www.anysql.net/developer/webchart_business_monitor.html" title="WebChart监控系统">WebChart监控系统</a> (6)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.anysql.net/tools/webchart_install_windows.html/feed</wfw:commentRss>
		<slash:comments>24</slash:comments>
		</item>
		<item>
		<title>WebChart的技术结构</title>
		<link>http://www.anysql.net/developer/webchart_framework.html</link>
		<comments>http://www.anysql.net/developer/webchart_framework.html#comments</comments>
		<pubDate>Tue, 13 Jan 2009 17:04:04 +0000</pubDate>
		<dc:creator>anysql</dc:creator>
				<category><![CDATA[Developer]]></category>
		<category><![CDATA[Chart]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Tomcat]]></category>
		<category><![CDATA[WebChart]]></category>

		<guid isPermaLink="false">http://www.anysql.net/wordpress/uncategorized/webchart%e7%9a%84%e6%8a%80%e6%9c%af%e7%bb%93%e6%9e%84.html</guid>
		<description><![CDATA[&#160; &#160; 想要说明WebChart的技术结构, 光用文字描述还真有些复杂, 先看一个图好了. &#160; &#160; WebChart是一个三层结构的应用, 最左边是浏览器能看到的页面, 默认下载的版本中是禁掉PDF的支持的, 原因是因为PDF这块03年时还不成熟, 占了太多的内存, 所以就禁掉了, 有空会再研究一下看看是否可以放开的. 因此客户端不需要任何安装的. &#160; &#160; WebChart全部都在中间层上, 首先有一个J2EE Servlet容器, 在容器里面编写了几个Servlet程序, 结合Oracle的画图包和AnySQL中的数据库查询组件来实现功能. 整个结构中有一个配置文件, 主要是配置到数据库的连接, 使用XSL文件控制数据到浏览器上的输出格式, WCML文件是WebChart Mark Language的缩写, 用来定义一个页面, 其实是一个用来定义页面或图表各种属性的文本文件. &#160; &#160; 最右边是数据层, 基于JDBC的Java程序, 使得可以连接各种不同的数据库, 获取数据进行展示. &#160; &#160; 从结构可以看出, 要使用WebChart, 你需要一台服务器, 上面需要安装JDK, 并需要一个Servlet容器, 如Tomcat. 在我的笔记本上, JDK和Tomcat的安装目录分别为: JAVA_HOME=c:\jdk TOMCAT_HOME=d:\TomcatWebChart &#160; &#160; 然后, 下载WebChart, 解压到Tomcat的webapps子目录, 安装就完成了, 接下来修改一下配置文件中的数据库连接信息, [...]]]></description>
			<content:encoded><![CDATA[<p>&nbsp; &nbsp; 想要说明WebChart的技术结构, 光用文字描述还真有些复杂, 先看一个图好了. </p>
<blockquote><p>
<img src="http://www.anysql.net/images/webchart_framework.gif" border="0">
</p></blockquote>
<p>&nbsp; &nbsp; WebChart是一个三层结构的应用, 最左边是浏览器能看到的页面, 默认下载的版本中是禁掉PDF的支持的, 原因是因为PDF这块03年时还不成熟, 占了太多的内存, 所以就禁掉了, 有空会再研究一下看看是否可以放开的. 因此客户端不需要任何安装的.</p>
<p>&nbsp; &nbsp; WebChart全部都在中间层上, 首先有一个J2EE Servlet容器, 在容器里面编写了几个Servlet程序, 结合<a href="http://download.oracle.com/docs/html/A96127_01/jcb_intro.htm" target="_blank">Oracle的画图包</a>和<a href="http://www.anysql.net/tag/AnySQL">AnySQL</a>中的数据库查询组件来实现功能. 整个结构中有一个配置文件, 主要是配置到数据库的连接, 使用XSL文件控制数据到浏览器上的输出格式, WCML文件是WebChart Mark Language的缩写, 用来定义一个页面, 其实是一个用来定义页面或图表各种属性的文本文件. </p>
<p>&nbsp; &nbsp; 最右边是数据层, 基于JDBC的Java程序, 使得可以连接各种不同的数据库, 获取数据进行展示. </p>
<p>&nbsp; &nbsp; 从结构可以看出, 要使用WebChart, 你需要一台服务器, 上面需要<a href="http://java.sun.com/j2se/1.4.2/download.html" target="_blank">安装JDK</a>, 并需要一个Servlet容器, 如<a href="http://tomcat.apache.org/download-41.cgi" target="_blank">Tomcat</a>. 在我的笔记本上, JDK和Tomcat的安装目录分别为: </p>
<blockquote class="prefont"><p>
JAVA_HOME=c:\jdk<br />
TOMCAT_HOME=d:\TomcatWebChart
</p></blockquote>
<p>&nbsp; &nbsp; 然后, <a href="http://www.anysql.net/software/webchart.zip">下载WebChart</a>, 解压到Tomcat的webapps子目录, 安装就完成了, 接下来修改一下配置文件中的数据库连接信息, 起动Tomcat就可以工作了. </p>
<h3  class="related_post_title">Relative Posts:</h3><ul class="related_post"><li>2009/02/02 -- <a href="http://www.anysql.net/tools/webchart_dbconn_config.html" title="WebChart的DB连接配置">WebChart的DB连接配置</a> (7)</li><li>2009/01/13 -- <a href="http://www.anysql.net/tools/webchart_install_windows.html" title="WebChart的安装与配置">WebChart的安装与配置</a> (24)</li><li>2009/01/12 -- <a href="http://www.anysql.net/developer/webchart_online_editor.html" title="WebChart在线编辑功能">WebChart在线编辑功能</a> (0)</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/02/07 -- <a href="http://www.anysql.net/tools/webchart_chart_demo.html" title="WebChart的图形例子">WebChart的图形例子</a> (4)</li><li>2009/01/14 -- <a href="http://www.anysql.net/developer/webchart_excel.html" title="WebChart的Excel导出">WebChart的Excel导出</a> (4)</li><li>2010/08/23 -- <a href="http://www.anysql.net/tools/datareport-pagesize.html" title="DataReport的多栏显示">DataReport的多栏显示</a> (2)</li><li>2010/05/07 -- <a href="http://www.anysql.net/tools/webchart-batch-query.html" title="批量数据查询需求">批量数据查询需求</a> (0)</li><li>2010/03/04 -- <a href="http://www.anysql.net/tools/webchart-rows-filter.html" title="为DataReport增加条件过滤功能">为DataReport增加条件过滤功能</a> (1)</li><li>2010/02/26 -- <a href="http://www.anysql.net/tools/webchart-dbconn-config2.html" title="WebChart的DB连接配置2">WebChart的DB连接配置2</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.anysql.net/developer/webchart_framework.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
