<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet href='http://feed.feedsky.com/styles/temp01.xsl' type='text/xsl' ?><!--这是一个由Feedsy提供技术支持的Feed，为了提高读者阅读的体验，以及满足用户美化自己Feed的需要，我们设计了多种精美的Feed模板，提供给大家选择，所有最终呈现出来的样式，皆由用户自愿选择使用，未经许可，任何团体和个人，请不要擅自修改样式或者盗用，这是对于用户选择权的尊重。--><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:fs="http://www.feedsky.com/namespace/feed" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><atom:link href="http://feed.feedsky.com/anysql" type="application/rss+xml" rel="self"></atom:link><fs:self_link href="http://feed.feedsky.com/anysql" type="application/rss+xml"></fs:self_link><lastBuildDate>Fri, 09 Dec 2011 04:51:08 GMT</lastBuildDate><title>AnySQL.net</title><description>个人软件, 生活, 研究与专业的Oracle数据恢复服务</description><image><url>http://www.feedsky.com/feed/anysql/sc/gif</url><title>AnySQL.net</title><link>http://www.anysql.net</link></image><link>http://www.anysql.net</link><sy:updatePeriod>hourly</sy:updatePeriod><sy:updateFrequency>1</sy:updateFrequency><language>en</language><pubDate>Fri, 09 Dec 2011 04:51:08 GMT</pubDate><item><title>WebChart的JSON格式输出</title><link>http://item.feedsky.com/~feedsky/anysql/~7604541/585617111/1230545/1/item.html</link><content:encoded>&lt;p&gt;&amp;nbsp; &amp;nbsp; WebChart增加JSON格式输出，可以将查询结果以JSON格式的文本进行输出，直接作为ExtJS的Ext.data.Store的输入. 页面(jsontest.rhtml)定义如下: &lt;/p&gt;
&lt;blockquote class=&quot;prefont&quot;&gt;&lt;p&gt;
webchart.doctype=json&lt;/p&gt;
&lt;p&gt;webchart.query_1=select empno, ename from emp order by empno
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; 用浏览器访问页面时，返回JSON格式的纯文本. &lt;/p&gt;
&lt;blockquote class=&quot;prefont&quot;&gt;&lt;p&gt;
{&lt;br /&gt;
&amp;nbsp; &amp;#8220;metaData&amp;#8221;:&lt;br /&gt;
&amp;nbsp; {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;#8220;root&amp;#8221;: &amp;#8220;rows&amp;#8221;,&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;#8220;fields&amp;#8221;: [&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&quot;name&quot;: &quot;empno&quot;, &quot;type&quot;: &quot;int&quot;},&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&quot;name&quot;: &quot;ename&quot;}],&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;#8220;remoteSort&amp;#8221;: true&lt;br /&gt;
&amp;nbsp; },&lt;br /&gt;
&amp;nbsp; &amp;#8220;rows&amp;#8221;:&lt;br /&gt;
&amp;nbsp; [&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;empno&quot;: 1,&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;ename&quot;: &quot;Lou Fangxin&quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; },&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;empno&quot;: 2,&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &quot;ename&quot;: &quot;Zhi Qiong&quot;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;br /&gt;
&amp;nbsp; ]&lt;br /&gt;
}
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; 在ExtJS 4中可以直接用如下代码，得到一个Store类型变量. &lt;/p&gt;
&lt;blockquote class=&quot;prefont&quot;&gt;&lt;p&gt;
Ext.define(&amp;#8216;mydata&amp;#8217;, {extend: &amp;#8216;Ext.data.Model&amp;#8217;});&lt;br /&gt;
var store2 = Ext.create(&amp;#8216;Ext.data.Store&amp;#8217;, &lt;br /&gt;
&amp;nbsp; &amp;nbsp; {model: &amp;#8216;mydata&amp;#8217;, proxy:{type: &amp;#8216;ajax&amp;#8217;, url: &amp;#8216;sampledata.txt&amp;#8217;, reader: {type: &amp;#8216;json&amp;#8217;}}});
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; 然后用ExtJS进行表格输出或者画图，将数据接口直接交给WebChart来方便地处理. &lt;/p&gt;
&lt;h3  class=&quot;related_post_title&quot;&gt;Relative Posts:&lt;/h3&gt;&lt;ul class=&quot;related_post&quot;&gt;&lt;li&gt;2009/12/04 -- &lt;a href=&quot;http://www.anysql.net/tools/webchart-auto-reload-page.html&quot; title=&quot;报表页面自动刷新属性&quot;&gt;报表页面自动刷新属性&lt;/a&gt; (0)&lt;/li&gt;&lt;li&gt;2010/12/18 -- &lt;a href=&quot;http://www.anysql.net/tools/datareport-table-formater.html&quot; title=&quot;控制DataReport的表格格式&quot;&gt;控制DataReport的表格格式&lt;/a&gt; (4)&lt;/li&gt;&lt;li&gt;2010/08/23 -- &lt;a href=&quot;http://www.anysql.net/tools/datareport-pagesize.html&quot; title=&quot;DataReport的多栏显示&quot;&gt;DataReport的多栏显示&lt;/a&gt; (2)&lt;/li&gt;&lt;li&gt;2010/05/07 -- &lt;a href=&quot;http://www.anysql.net/tools/webchart-batch-query.html&quot; title=&quot;批量数据查询需求&quot;&gt;批量数据查询需求&lt;/a&gt; (0)&lt;/li&gt;&lt;li&gt;2010/03/04 -- &lt;a href=&quot;http://www.anysql.net/tools/webchart-rows-filter.html&quot; title=&quot;为DataReport增加条件过滤功能&quot;&gt;为DataReport增加条件过滤功能&lt;/a&gt; (1)&lt;/li&gt;&lt;li&gt;2010/02/26 -- &lt;a href=&quot;http://www.anysql.net/tools/webchart-dbconn-config2.html&quot; title=&quot;WebChart的DB连接配置2&quot;&gt;WebChart的DB连接配置2&lt;/a&gt; (0)&lt;/li&gt;&lt;li&gt;2010/02/20 -- &lt;a href=&quot;http://www.anysql.net/tools/webchart-multidb-support.html&quot; title=&quot;定义不同数据源的SQL&quot;&gt;定义不同数据源的SQL&lt;/a&gt; (4)&lt;/li&gt;&lt;li&gt;2010/01/26 -- &lt;a href=&quot;http://www.anysql.net/tools/webchart-logical-dbaccess2.html&quot; title=&quot;逻辑连接层与物理连接层(2)&quot;&gt;逻辑连接层与物理连接层(2)&lt;/a&gt; (1)&lt;/li&gt;&lt;li&gt;2010/01/21 -- &lt;a href=&quot;http://www.anysql.net/tools/anysql-jdbc-driver.html&quot; title=&quot;AnySQL JDBC Driver&quot;&gt;AnySQL JDBC Driver&lt;/a&gt; (1)&lt;/li&gt;&lt;li&gt;2010/01/20 -- &lt;a href=&quot;http://www.anysql.net/tools/webchart-logical-dbaccess.html&quot; title=&quot;逻辑连接层与物理连接层&quot;&gt;逻辑连接层与物理连接层&lt;/a&gt; (4)&lt;/li&gt;&lt;/ul&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/585617111/anysql/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/anysql/~7604541/585617111/1230545/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</content:encoded><wfw:commentRss>http://www.anysql.net/tools/webchar-json-output.html/feed</wfw:commentRss><slash:comments>0</slash:comments><description>&amp;#160; &amp;#160; WebChart增加JSON格式输出，可以将查询结果以JSON格式的文本进行输出，直接作为ExtJS的Ext.data.Store的输入. 页面(jsontest.rhtml)定义如下: webchart.doctype=json webchart.query_1=select empno, ename from emp order by empno &amp;#160; &amp;#160; 用浏览器访问页面时，返回JSON格式的纯文本. { &amp;#160; &amp;#8220;metaData&amp;#8221;: &amp;#160; { &amp;#160; &amp;#160; &amp;#160; &amp;#8220;root&amp;#8221;: &amp;#8220;rows&amp;#8221;, &amp;#160; &amp;#160; &amp;#160; &amp;#8220;fields&amp;#8221;: [ &amp;#160; &amp;#160; &amp;#160; &amp;#160; {&quot;name&quot;: &quot;empno&quot;, &quot;type&quot;: &quot;int&quot;}, &amp;#160; &amp;#160; &amp;#160; &amp;#160; {&quot;name&quot;: &quot;ename&quot;}], &amp;#160; &amp;#160; &amp;#160; &amp;#8220;remoteSort&amp;#8221;: true &amp;#160; }, &amp;#160; &amp;#8220;rows&amp;#8221;: &amp;#160; [...]&lt;img src=&quot;http://www1.feedsky.com/t1/585617111/anysql/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/anysql/~7604541/585617111/1230545/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>Tool</category><category>Tools</category><category>Java</category><category>WebChart</category><category>JavaScript</category><pubDate>Fri, 09 Dec 2011 12:51:08 +0800</pubDate><author>anysql</author><comments>http://www.anysql.net/tools/webchar-json-output.html#comments</comments><guid isPermaLink="false">http://www.anysql.net/?p=797</guid><dc:creator>anysql</dc:creator><fs:srclink>http://www.anysql.net/tools/webchar-json-output.html</fs:srclink><fs:srcfeed>http://www.anysql.net/feed</fs:srcfeed><fs:itemid>feedsky/anysql/~7604541/585617111/1230545</fs:itemid></item><item><title>多个测试环境的表结构同步</title><link>http://item.feedsky.com/~feedsky/anysql/~7604541/585617112/1230545/1/item.html</link><content:encoded>&lt;p&gt;&amp;nbsp; &amp;nbsp; 一个复杂系统往往会有几套开发测试环境，对于开发DBA或测试环境DBA来讲，维护这些环境之间的同步是一个比较烦琐的事情。在2005年时，曾和当时的三个同事，花了足足三天时间来手工同步两个环境的表结构差异，最后促使我去开发一个表结构自动同步工具，现在是对那个工具的进一步升级。&lt;/p&gt;
&lt;blockquote class=&quot;prefont&quot;&gt;&lt;p&gt;
&amp;#8211; GetDDL: DDL Script Generator for Oracle, Release 3.0.1&lt;br /&gt;
&amp;#8211; (@) Copyright Lou Fangxin (AnySQL.net) 2010, all rights reserved.&lt;br /&gt;
&amp;#8211; Oracle Data Recovery, System Tuning and Monitoring and Tuning Service&lt;/p&gt;
&lt;p&gt;Usage: ocidiff fromuser=&amp;#8230; touser=&amp;#8230; file=&amp;#8230;&lt;/p&gt;
&lt;p&gt;Options:&lt;br /&gt;
&amp;nbsp; fromuser&amp;nbsp;  &amp;#8212; Source Connection String&lt;br /&gt;
&amp;nbsp; fromschema &amp;#8212; Source Schema to Switch&lt;br /&gt;
&amp;nbsp; touser&amp;nbsp; &amp;nbsp;  &amp;#8212; Destination Connection String&lt;br /&gt;
&amp;nbsp; toschema&amp;nbsp;  &amp;#8212; Destination Schema to Swith&lt;br /&gt;
&amp;nbsp; tstab&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;#8212; Tablespace for Tables&lt;br /&gt;
&amp;nbsp; tsind&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;#8212; Tablespace for Indexes&lt;br /&gt;
&amp;nbsp; sync&amp;nbsp; &amp;nbsp; &amp;nbsp;  &amp;#8212; Sync List (ALL,SEQUENCE,TABLE,INDEX,VIEW,SOURCE,COMMENT)&lt;br /&gt;
&amp;nbsp; file&amp;nbsp; &amp;nbsp; &amp;nbsp;  &amp;#8212; Output Script File Name&lt;br /&gt;
&amp;nbsp; log&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;#8212; SQL*Plus Spool log file name&lt;br /&gt;
&amp;nbsp; auto&amp;nbsp; &amp;nbsp; &amp;nbsp;  &amp;#8212; Automaticall call SQL*Plus to sync(YES)
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; 上面的命令行选项，对于DBA来讲应当都比较容易理解，就不一个一个讲了。File和Log选项有一些特殊的设置，指定文件名时可以用%Y来表示年份，用%M来表示月份，同理用%D来表示日期，以便给自动同步工具留下足够的运行日志。&lt;/p&gt;
&lt;blockquote class=&quot;prefont&quot;&gt;&lt;p&gt;
ocidiff &amp;#8230;&amp;#8230; file=scott_%%y%%m%%d.sql log=scott_%%y%%m%%d.log &amp;#8230;
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; 运行时加上&amp;#8221;AUTO=YES&amp;#8221;选项，会自动调用SQL*Plus连接到远程库上执行，执行后会留带日期的SQL和日志文件。&lt;/p&gt;
&lt;blockquote class=&quot;prefont&quot;&gt;&lt;p&gt;
D:\ocidiff&amp;gt;dir /b scott_*&lt;br /&gt;
scott_20110419.log&lt;br /&gt;
scott_20110419.sql
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; 对于生成的自动同步SQL的脚本准确性，还需要进行大量的测试及进一步的改进，&lt;a href=&quot;http://www.anysql.net/software/ocidiff.zip&quot;&gt;下载&lt;/a&gt;试试吧。&lt;/p&gt;
&lt;h3  class=&quot;related_post_title&quot;&gt;Relative Posts:&lt;/h3&gt;&lt;ul class=&quot;related_post&quot;&gt;&lt;li&gt;2009/02/05 -- &lt;a href=&quot;http://www.anysql.net/dba/change_export_tablespace.html&quot; title=&quot;导出时如何统一表空间?&quot;&gt;导出时如何统一表空间?&lt;/a&gt; (2)&lt;/li&gt;&lt;li&gt;2008/06/23 -- &lt;a href=&quot;http://www.anysql.net/dba/apache_tomcat.html&quot; title=&quot;根据表名搜索SQL语句&quot;&gt;根据表名搜索SQL语句&lt;/a&gt; (0)&lt;/li&gt;&lt;li&gt;2008/05/26 -- &lt;a href=&quot;http://www.anysql.net/oracle/imp_to_another_table.html&quot; title=&quot;ASSM表空间真浪费&quot;&gt;ASSM表空间真浪费&lt;/a&gt; (6)&lt;/li&gt;&lt;li&gt;2008/05/15 -- &lt;a href=&quot;http://www.anysql.net/dba/aul_better_for_nchar.html&quot; title=&quot;将dmp数据导入到另一个表&quot;&gt;将dmp数据导入到另一个表&lt;/a&gt; (3)&lt;/li&gt;&lt;li&gt;2008/03/13 -- &lt;a href=&quot;http://www.anysql.net/dba/deny_table_big_dml.html&quot; title=&quot;如何防止大的DML语句?&quot;&gt;如何防止大的DML语句?&lt;/a&gt; (3)&lt;/li&gt;&lt;li&gt;2008/03/04 -- &lt;a href=&quot;http://www.anysql.net/tools/ocidiff_assist_51job_dba.html&quot; title=&quot;ocidiff助力51job日常维护&quot;&gt;ocidiff助力51job日常维护&lt;/a&gt; (6)&lt;/li&gt;&lt;li&gt;2008/03/03 -- &lt;a href=&quot;http://www.anysql.net/dba/is_column_order_matter.html&quot; title=&quot;先报身高? 还是体重?&quot;&gt;先报身高? 还是体重?&lt;/a&gt; (4)&lt;/li&gt;&lt;li&gt;2008/02/14 -- &lt;a href=&quot;http://www.anysql.net/dba/oracle_rename_table_syntax.html&quot; title=&quot;Rename Table的语法&quot;&gt;Rename Table的语法&lt;/a&gt; (0)&lt;/li&gt;&lt;li&gt;2007/12/24 -- &lt;a href=&quot;http://www.anysql.net/tools/get_table_ddl.html&quot; title=&quot;Get DDL工具&quot;&gt;Get DDL工具&lt;/a&gt; (7)&lt;/li&gt;&lt;li&gt;2007/12/11 -- &lt;a href=&quot;http://www.anysql.net/dba/drop_4tb_table.html&quot; title=&quot;删除4TB的表&quot;&gt;删除4TB的表&lt;/a&gt; (5)&lt;/li&gt;&lt;/ul&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/585617112/anysql/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/anysql/~7604541/585617112/1230545/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</content:encoded><wfw:commentRss>http://www.anysql.net/tools/ocidiff-oracle-schema-auto-repair.html/feed</wfw:commentRss><slash:comments>8</slash:comments><description>&amp;#160; &amp;#160; 一个复杂系统往往会有几套开发测试环境，对于开发DBA或测试环境DBA来讲，维护这些环境之间的同步是一个比较烦琐的事情。在2005年时，曾和当时的三个同事，花了足足三天时间来手工同步两个环境的表结构差异，最后促使我去开发一个表结构自动同步工具，现在是对那个工具的进一步升级。 &amp;#8211; GetDDL: DDL Script Generator for Oracle, Release 3.0.1 &amp;#8211; (@) Copyright Lou Fangxin (AnySQL.net) 2010, all rights reserved. &amp;#8211; Oracle Data Recovery, System Tuning and Monitoring and Tuning Service Usage: ocidiff fromuser=&amp;#8230; touser=&amp;#8230; file=&amp;#8230; Options: &amp;#160; fromuser&amp;#160; &amp;#8212; Source Connection String &amp;#160; fromschema &amp;#8212; Source Schema to Switch &amp;#160; touser&amp;#160; &amp;#160; [...]&lt;img src=&quot;http://www1.feedsky.com/t1/585617112/anysql/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/anysql/~7604541/585617112/1230545/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>Tools</category><category>Compare</category><category>Oracle</category><category>Table</category><pubDate>Tue, 19 Apr 2011 13:57:04 +0800</pubDate><author>anysql</author><comments>http://www.anysql.net/tools/ocidiff-oracle-schema-auto-repair.html#comments</comments><guid isPermaLink="false">http://www.anysql.net/?p=796</guid><dc:creator>anysql</dc:creator><fs:srclink>http://www.anysql.net/tools/ocidiff-oracle-schema-auto-repair.html</fs:srclink><fs:srcfeed>http://www.anysql.net/feed</fs:srcfeed><fs:itemid>feedsky/anysql/~7604541/585617112/1230545</fs:itemid></item><item><title>AUL for Oracle ASM数据恢复测试</title><link>http://item.feedsky.com/~feedsky/anysql/~7604541/585617113/1230545/1/item.html</link><content:encoded>&lt;p&gt;&amp;nbsp; &amp;nbsp; 创建了一个跨越在两个盘中的Oracle ASM表空间，并在上面建了一个有49万条记录的表，用来进行ASM恢复测试。&lt;/p&gt;
&lt;blockquote class=&quot;prefont&quot;&gt;&lt;p&gt;
SQL&amp;gt; select disk_number, name,path from v$asm_disk;&lt;/p&gt;
&lt;p&gt;DISK_NUMBER NAME&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;  PATH&lt;br /&gt;
&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8211; &amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;- &amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 0 TEST_0000&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; D:\ORACLEASM\FILE01.ASM&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1 TEST_0001&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; D:\ORACLEASM\FILE02.ASM&lt;/p&gt;
&lt;p&gt;SQL&amp;gt; create table emp_asm tablespace asmdemo as&lt;br /&gt;
&amp;nbsp; 2&amp;nbsp; select * from emp_bak where rownum &amp;lt; 500000;
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; 第一次测试是在两个ASM盘都在的情况，应当可以恢复出49万条记录才是准确的，先从ASM中恢复出Oracle数据文件。&lt;/p&gt;
&lt;blockquote class=&quot;prefont&quot;&gt;&lt;p&gt;
ASM&amp;gt; disk disk.txt&lt;br /&gt;
&amp;nbsp;  2 ASM disks opened.&lt;br /&gt;
&amp;#8212;- &amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8211;&lt;br /&gt;
&amp;nbsp;  0 d:\oracleasm\file01.asm&lt;br /&gt;
&amp;nbsp;  1 d:\oracleasm\file02.asm&lt;br /&gt;
ASM&amp;gt; scan&lt;br /&gt;
 RFN File&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;  Size&amp;nbsp;  Blocks&lt;br /&gt;
&amp;#8212;- &amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212; &amp;#8212;&amp;#8211; &amp;#8212;&amp;#8212;&amp;#8211;&lt;br /&gt;
&amp;nbsp;  5 aulasm_0005.dbf&amp;nbsp; &amp;nbsp; 25&amp;nbsp; &amp;nbsp;  3079&lt;br /&gt;
ASM&amp;gt; create file aulasm_0005.dbf size 26&lt;br /&gt;
ASM&amp;gt; open rfn 5 file aulasm_0005.dbf&lt;br /&gt;
 RFN File&lt;br /&gt;
&amp;#8212;- &amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&lt;br /&gt;
&amp;nbsp;  5 aulasm_0005.dbf&lt;br /&gt;
ASM&amp;gt; restore&lt;br /&gt;
Restore by ASM extent map file.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; 然后在AUL中进行数据恢复，确认是不是恢复出全部49万条记录。&lt;/p&gt;
&lt;blockquote class=&quot;prefont&quot;&gt;&lt;p&gt;
AUL&amp;gt; unload object 13456 to 13456.txt;&lt;br /&gt;
2011-04-18 14:52:45&lt;br /&gt;
Sucessfully unload 499999 rows &amp;#8230;&lt;br /&gt;
2011-04-18 14:53:05
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; 第二次测试中丢失了第二块盘，应当可以恢复出大约一半的记录才是对的，先从ASM中恢复出Oracle数据文件。&lt;/p&gt;
&lt;blockquote class=&quot;prefont&quot;&gt;&lt;p&gt;
ASM&amp;gt; disk disk.txt&lt;br /&gt;
&amp;nbsp;  1 ASM disks opened.&lt;br /&gt;
&amp;#8212;- &amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8211;&lt;br /&gt;
&amp;nbsp;  0 d:\oracleasm\file01.asm&lt;br /&gt;
ASM&amp;gt; scan&lt;br /&gt;
 RFN File&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;  Size&amp;nbsp;  Blocks&lt;br /&gt;
&amp;#8212;- &amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212; &amp;#8212;&amp;#8211; &amp;#8212;&amp;#8212;&amp;#8211;&lt;br /&gt;
&amp;nbsp;  5 aulasm_0005.dbf&amp;nbsp; &amp;nbsp; 25&amp;nbsp; &amp;nbsp;  3079&lt;br /&gt;
ASM&amp;gt; create file aulasm_0005.dbf size 26&lt;br /&gt;
ASM&amp;gt; open rfn 5 file aulasm_0005.dbf&lt;br /&gt;
 RFN File&lt;br /&gt;
&amp;#8212;- &amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&lt;br /&gt;
&amp;nbsp;  5 aulasm_0005.dbf&lt;br /&gt;
ASM&amp;gt; restore&lt;br /&gt;
Restore by ASM extent map file.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; 然后在AUL中进行数据恢复，看看从AUL中恢复出来多少条记录，在这里刚好是将近一半，说明结果良好。&lt;/p&gt;
&lt;blockquote class=&quot;prefont&quot;&gt;&lt;p&gt;
AUL&amp;gt; unload object 13456 to 13456.txt;&lt;br /&gt;
2011-04-18 14:55:09&lt;br /&gt;
Sucessfully unload 257375 rows &amp;#8230;&lt;br /&gt;
2011-04-18 14:55:20
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; 第三次测试中丢失了第一块盘，应当可以恢复出另一半的记录才是对的，理论上第二次和第三次恢复记录数之和应当和第一次恢复的记录数相等。&lt;/p&gt;
&lt;blockquote class=&quot;prefont&quot;&gt;&lt;p&gt;
ASM&amp;gt; disk disk.txt&lt;br /&gt;
&amp;nbsp;  1 ASM disks opened.&lt;br /&gt;
&amp;#8212;- &amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8211;&lt;br /&gt;
&amp;nbsp;  0 d:\oracleasm\file02.asm&lt;br /&gt;
ASM&amp;gt; scan&lt;br /&gt;
 RFN File&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;  Size&amp;nbsp;  Blocks&lt;br /&gt;
&amp;#8212;- &amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212; &amp;#8212;&amp;#8211; &amp;#8212;&amp;#8212;&amp;#8211;&lt;br /&gt;
&amp;nbsp;  5 aulasm_0005.dbf&amp;nbsp; &amp;nbsp; 24&amp;nbsp; &amp;nbsp;  3071&lt;br /&gt;
ASM&amp;gt; create file aulasm_0005.dbf size 26&lt;br /&gt;
ASM&amp;gt; open rfn 5 file aulasm_0005.dbf&lt;br /&gt;
 RFN File&lt;br /&gt;
&amp;#8212;- &amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&lt;br /&gt;
&amp;nbsp;  5 aulasm_0005.dbf&lt;br /&gt;
ASM&amp;gt; restore&lt;br /&gt;
Restore by ASM extent map file.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; 然后在AUL中进行数据恢复，看看从AUL中恢复出来多少条记录。计算了一下第二次和第三次恢复出来的记录数之后刚好等于第一次恢复的记录数，证明ASM恢复软件可用。&lt;/p&gt;
&lt;blockquote class=&quot;prefont&quot;&gt;&lt;p&gt;
AUL&amp;gt; unload object 13456 to 13456.txt;&lt;br /&gt;
2011-04-18 14:57:30&lt;br /&gt;
Sucessfully unload 242624 rows &amp;#8230;&lt;br /&gt;
2011-04-18 14:57:40
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; 顺便透露一个Linux版AUL的改进消息，许可证不再动态了，只有服务器重起了才会改变，以方便大家进行数据恢复，毕竟Linux服务器很稳定，对大家来讲应当是更有利的许可证模式。&lt;/p&gt;
&lt;h3  class=&quot;related_post_title&quot;&gt;Relative Posts:&lt;/h3&gt;&lt;ul class=&quot;related_post&quot;&gt;&lt;li&gt;2011/04/15 -- &lt;a href=&quot;http://www.anysql.net/aulmydul/oracle-asm-recovery-aulasm.html&quot; title=&quot;Oracle ASM灾难恢复工具&amp;#8211;AULASM&quot;&gt;Oracle ASM灾难恢复工具&amp;#8211;AULASM&lt;/a&gt; (2)&lt;/li&gt;&lt;li&gt;2008/12/27 -- &lt;a href=&quot;http://www.anysql.net/aulmydul/aul_parallel_scan_extent.html&quot; title=&quot;AUL并行扫描Extent&quot;&gt;AUL并行扫描Extent&lt;/a&gt; (1)&lt;/li&gt;&lt;li&gt;2008/08/01 -- &lt;a href=&quot;http://www.anysql.net/aulmydul/to_date_from_quarter.html&quot; title=&quot;终极Oracle数据恢复工具 &amp;#8212; AUL&quot;&gt;终极Oracle数据恢复工具 &amp;#8212; AUL&lt;/a&gt; (8)&lt;/li&gt;&lt;li&gt;2008/05/12 -- &lt;a href=&quot;http://www.anysql.net/aulmydul/undo_and_index_bugs.html&quot; title=&quot;Oracle不行再用AUL&quot;&gt;Oracle不行再用AUL&lt;/a&gt; (7)&lt;/li&gt;&lt;li&gt;2008/04/17 -- &lt;a href=&quot;http://www.anysql.net/aulmydul/aul_for_sybase_ase.html&quot; title=&quot;Oracle DUL不行就用AUL&quot;&gt;Oracle DUL不行就用AUL&lt;/a&gt; (10)&lt;/li&gt;&lt;li&gt;2008/03/26 -- &lt;a href=&quot;http://www.anysql.net/aulmydul/try_make_good_suggestion.html&quot; title=&quot;不是好人, 这么无耻!&quot;&gt;不是好人, 这么无耻!&lt;/a&gt; (24)&lt;/li&gt;&lt;li&gt;2008/03/20 -- &lt;a href=&quot;http://www.anysql.net/aulmydul/aul_recover_sequences.html&quot; title=&quot;AUL恢复Oracle视图代码?&quot;&gt;AUL恢复Oracle视图代码?&lt;/a&gt; (0)&lt;/li&gt;&lt;li&gt;2008/03/20 -- &lt;a href=&quot;http://www.anysql.net/aulmydul/aul_recover_triggers.html&quot; title=&quot;AUL恢复Oracle Sequence?&quot;&gt;AUL恢复Oracle Sequence?&lt;/a&gt; (0)&lt;/li&gt;&lt;li&gt;2008/03/20 -- &lt;a href=&quot;http://www.anysql.net/aulmydul/aul_recover_table_indexes.html&quot; title=&quot;AUL恢复Oracle触发器?&quot;&gt;AUL恢复Oracle触发器?&lt;/a&gt; (0)&lt;/li&gt;&lt;li&gt;2008/03/20 -- &lt;a href=&quot;http://www.anysql.net/aulmydul/aul_recover_source_code.html&quot; title=&quot;AUL恢复Oracle索引结构?&quot;&gt;AUL恢复Oracle索引结构?&lt;/a&gt; (0)&lt;/li&gt;&lt;/ul&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/585617113/anysql/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/anysql/~7604541/585617113/1230545/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</content:encoded><wfw:commentRss>http://www.anysql.net/aulmydul/oracle-asm-data-recovery-testcase.html/feed</wfw:commentRss><slash:comments>4</slash:comments><description>&amp;#160; &amp;#160; 创建了一个跨越在两个盘中的Oracle ASM表空间，并在上面建了一个有49万条记录的表，用来进行ASM恢复测试。 SQL&amp;#62; select disk_number, name,path from v$asm_disk; DISK_NUMBER NAME&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; PATH &amp;#8212;&amp;#8212;&amp;#8212;&amp;#8211; &amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;- &amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; 0 TEST_0000&amp;#160; &amp;#160; &amp;#160; &amp;#160; D:\ORACLEASM\FILE01.ASM &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; 1 TEST_0001&amp;#160; &amp;#160; &amp;#160; &amp;#160; D:\ORACLEASM\FILE02.ASM SQL&amp;#62; create table emp_asm tablespace asmdemo as &amp;#160; 2&amp;#160; select * from [...]&lt;img src=&quot;http://www1.feedsky.com/t1/585617113/anysql/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/anysql/~7604541/585617113/1230545/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>ASM</category><category>Oracle</category><category>DUL</category><category>AUL/MyDUL</category><category>Recovery</category><category>MyDUL</category><pubDate>Mon, 18 Apr 2011 15:15:00 +0800</pubDate><author>anysql</author><comments>http://www.anysql.net/aulmydul/oracle-asm-data-recovery-testcase.html#comments</comments><guid isPermaLink="false">http://www.anysql.net/?p=795</guid><dc:creator>anysql</dc:creator><fs:srclink>http://www.anysql.net/aulmydul/oracle-asm-data-recovery-testcase.html</fs:srclink><fs:srcfeed>http://www.anysql.net/feed</fs:srcfeed><fs:itemid>feedsky/anysql/~7604541/585617113/1230545</fs:itemid></item><item><title>Oracle ASM灾难恢复工具–AULASM</title><link>http://item.feedsky.com/~feedsky/anysql/~7604541/585617114/1230545/1/item.html</link><content:encoded>&lt;p&gt;&amp;nbsp; &amp;nbsp; 昨天晚上花了几个小时时间，写了一个Oracle ASM的灾难恢复软件, 当Oracle ASM一个或多个盘损坏或丢失时, 可以最大化地将其余盘上的数据恢复出来. &lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; 程序还是采用不为大家所爱的命令行界面. &lt;/p&gt;
&lt;blockquote class=&quot;prefont&quot;&gt;&lt;p&gt;
AUL : AnySQL UnLoader(MyDUL) for Oracle ASM, release 1.0.0&lt;/p&gt;
&lt;p&gt;(C) Copyright Lou Fangxin 2011 (AnySQL.net), all rights reserved.&lt;/p&gt;
&lt;p&gt;ASM&amp;gt; help&lt;br /&gt;
&amp;nbsp; DISK&amp;nbsp; &amp;nbsp; &amp;nbsp;  &amp;#8212; open ASM disks.&lt;br /&gt;
&amp;nbsp; SCAN&amp;nbsp; &amp;nbsp; &amp;nbsp;  &amp;#8212; scan ASM disks&lt;br /&gt;
&amp;nbsp; RESTORE&amp;nbsp; &amp;nbsp; &amp;#8212; restore data file from ASM&lt;br /&gt;
&amp;nbsp; CREATE&amp;nbsp; &amp;nbsp;  &amp;#8212; create empty data file&lt;br /&gt;
&amp;nbsp; OPEN&amp;nbsp; &amp;nbsp; &amp;nbsp;  &amp;#8212; open data file&lt;br /&gt;
&amp;nbsp; QUIT/EXIT&amp;nbsp; &amp;#8212; exit the program.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; 打开磁盘组文件, 配置文件中列出各个盘的路径或镜象文件位置就行. &lt;/p&gt;
&lt;blockquote class=&quot;prefont&quot;&gt;&lt;p&gt;
ASM&amp;gt; disk disk.txt&lt;br /&gt;
&amp;nbsp;  2 ASM disks opened.&lt;br /&gt;
&amp;#8212;- &amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8211;&lt;br /&gt;
&amp;nbsp;  0 d:\oracleasm\file01.asm&lt;br /&gt;
&amp;nbsp;  1 d:\oracleasm\file02.asm
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; 扫描磁盘组，找出可能的数据文件. &lt;/p&gt;
&lt;blockquote class=&quot;prefont&quot;&gt;&lt;p&gt;
ASM&amp;gt; scan&lt;br /&gt;
&amp;nbsp;  5 aulasm_0005.dbf&amp;nbsp; &amp;nbsp; 1&amp;nbsp; &amp;nbsp; &amp;nbsp;  12
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; 创建空的数据文件, 并打开. &lt;/p&gt;
&lt;blockquote class=&quot;prefont&quot;&gt;&lt;p&gt;
ASM&amp;gt; create file aulasm_0005.dbf size 1&lt;br /&gt;
ASM&amp;gt; open rfn 5 file aulasm_0005.dbf&lt;br /&gt;
 RFN File&lt;br /&gt;
&amp;#8212;- &amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&lt;br /&gt;
&amp;nbsp;  5 aulasm_0005.dbf
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; 从ASM中读出数据块，写入对应的文件。&lt;/p&gt;
&lt;blockquote class=&quot;prefont&quot;&gt;&lt;p&gt;
ASM&amp;gt; restore
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; 然后用AUL去恢复，这里步骤就不详解了。&lt;/p&gt;
&lt;blockquote class=&quot;prefont&quot;&gt;&lt;p&gt;
D:\oracleasm&amp;gt;aul5b&lt;br /&gt;
Register Code: QYOW-EHSO-EIXO-MEKA-VQFG&lt;br /&gt;
AUL : AnySQL UnLoader(MyDUL) for Oracle 8/8i/9i/10g/11g, release 5.1.2&lt;/p&gt;
&lt;p&gt;(C) Copyright Lou Fangxin 2005-2010 (AnySQL.net), all rights reserved.&lt;/p&gt;
&lt;p&gt;AUL&amp;gt; open db.txt&lt;br /&gt;
*&amp;nbsp; ts#&amp;nbsp; fno&amp;nbsp; rfn ver bsize&amp;nbsp; &amp;nbsp;  blocks filename&lt;br /&gt;
- &amp;#8212;- &amp;#8212;- &amp;#8212;- &amp;#8212; &amp;#8212;&amp;#8211; &amp;#8212;&amp;#8212;&amp;#8212;- &amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8211;&lt;br /&gt;
Y&amp;nbsp; &amp;nbsp; 6&amp;nbsp; &amp;nbsp; 5&amp;nbsp; &amp;nbsp; 5 a2&amp;nbsp;  8192&amp;nbsp; &amp;nbsp; &amp;nbsp; 16384 aulasm_0005.dbf&lt;br /&gt;
AUL&amp;gt; scan data&lt;br /&gt;
2011-04-15 09:19:38&lt;br /&gt;
RDBA=0x0140000c(5/12),type=0&amp;#215;06,fmt=0xa2,seq=0&amp;#215;02,flag=0&amp;#215;04&lt;br /&gt;
seg/obj=0&amp;#215;00003486=13446,csc=0&amp;#215;0000.00412ee2,itc=3,typ=1 &amp;#8211; DATA&lt;br /&gt;
tab#=&amp;nbsp; 0&amp;nbsp; &amp;nbsp;  nrow=&amp;nbsp;  2&amp;nbsp; &amp;nbsp;  offs=&amp;nbsp;  0&lt;/p&gt;
&lt;p&gt;2011-04-15 09:19:38
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; 下载&lt;a href=&quot;http://www.anysql.net/software/aulasm.zip&quot;&gt;Windows版本&lt;/a&gt;玩玩吧。&lt;/p&gt;
&lt;h3  class=&quot;related_post_title&quot;&gt;Relative Posts:&lt;/h3&gt;&lt;ul class=&quot;related_post&quot;&gt;&lt;li&gt;2011/04/18 -- &lt;a href=&quot;http://www.anysql.net/aulmydul/oracle-asm-data-recovery-testcase.html&quot; title=&quot;AUL for Oracle ASM数据恢复测试&quot;&gt;AUL for Oracle ASM数据恢复测试&lt;/a&gt; (4)&lt;/li&gt;&lt;li&gt;2008/12/27 -- &lt;a href=&quot;http://www.anysql.net/aulmydul/aul_parallel_scan_extent.html&quot; title=&quot;AUL并行扫描Extent&quot;&gt;AUL并行扫描Extent&lt;/a&gt; (1)&lt;/li&gt;&lt;li&gt;2008/08/01 -- &lt;a href=&quot;http://www.anysql.net/aulmydul/to_date_from_quarter.html&quot; title=&quot;终极Oracle数据恢复工具 &amp;#8212; AUL&quot;&gt;终极Oracle数据恢复工具 &amp;#8212; AUL&lt;/a&gt; (8)&lt;/li&gt;&lt;li&gt;2008/05/12 -- &lt;a href=&quot;http://www.anysql.net/aulmydul/undo_and_index_bugs.html&quot; title=&quot;Oracle不行再用AUL&quot;&gt;Oracle不行再用AUL&lt;/a&gt; (7)&lt;/li&gt;&lt;li&gt;2008/04/17 -- &lt;a href=&quot;http://www.anysql.net/aulmydul/aul_for_sybase_ase.html&quot; title=&quot;Oracle DUL不行就用AUL&quot;&gt;Oracle DUL不行就用AUL&lt;/a&gt; (10)&lt;/li&gt;&lt;li&gt;2008/03/26 -- &lt;a href=&quot;http://www.anysql.net/aulmydul/try_make_good_suggestion.html&quot; title=&quot;不是好人, 这么无耻!&quot;&gt;不是好人, 这么无耻!&lt;/a&gt; (24)&lt;/li&gt;&lt;li&gt;2008/03/20 -- &lt;a href=&quot;http://www.anysql.net/aulmydul/aul_recover_sequences.html&quot; title=&quot;AUL恢复Oracle视图代码?&quot;&gt;AUL恢复Oracle视图代码?&lt;/a&gt; (0)&lt;/li&gt;&lt;li&gt;2008/03/20 -- &lt;a href=&quot;http://www.anysql.net/aulmydul/aul_recover_triggers.html&quot; title=&quot;AUL恢复Oracle Sequence?&quot;&gt;AUL恢复Oracle Sequence?&lt;/a&gt; (0)&lt;/li&gt;&lt;li&gt;2008/03/20 -- &lt;a href=&quot;http://www.anysql.net/aulmydul/aul_recover_table_indexes.html&quot; title=&quot;AUL恢复Oracle触发器?&quot;&gt;AUL恢复Oracle触发器?&lt;/a&gt; (0)&lt;/li&gt;&lt;li&gt;2008/03/20 -- &lt;a href=&quot;http://www.anysql.net/aulmydul/aul_recover_source_code.html&quot; title=&quot;AUL恢复Oracle索引结构?&quot;&gt;AUL恢复Oracle索引结构?&lt;/a&gt; (0)&lt;/li&gt;&lt;/ul&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/585617114/anysql/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/anysql/~7604541/585617114/1230545/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</content:encoded><wfw:commentRss>http://www.anysql.net/aulmydul/oracle-asm-recovery-aulasm.html/feed</wfw:commentRss><slash:comments>2</slash:comments><description>&amp;#160; &amp;#160; 昨天晚上花了几个小时时间，写了一个Oracle ASM的灾难恢复软件, 当Oracle ASM一个或多个盘损坏或丢失时, 可以最大化地将其余盘上的数据恢复出来. &amp;#160; &amp;#160; 程序还是采用不为大家所爱的命令行界面. AUL : AnySQL UnLoader(MyDUL) for Oracle ASM, release 1.0.0 (C) Copyright Lou Fangxin 2011 (AnySQL.net), all rights reserved. ASM&amp;#62; help &amp;#160; DISK&amp;#160; &amp;#160; &amp;#160; &amp;#8212; open ASM disks. &amp;#160; SCAN&amp;#160; &amp;#160; &amp;#160; &amp;#8212; scan ASM disks &amp;#160; RESTORE&amp;#160; &amp;#160; &amp;#8212; restore data file from ASM [...]&lt;img src=&quot;http://www1.feedsky.com/t1/585617114/anysql/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/anysql/~7604541/585617114/1230545/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>ASM</category><category>Oracle</category><category>DUL</category><category>AUL/MyDUL</category><category>Recovery</category><pubDate>Fri, 15 Apr 2011 09:30:38 +0800</pubDate><author>anysql</author><comments>http://www.anysql.net/aulmydul/oracle-asm-recovery-aulasm.html#comments</comments><guid isPermaLink="false">http://www.anysql.net/?p=793</guid><dc:creator>anysql</dc:creator><fs:srclink>http://www.anysql.net/aulmydul/oracle-asm-recovery-aulasm.html</fs:srclink><fs:srcfeed>http://www.anysql.net/feed</fs:srcfeed><fs:itemid>feedsky/anysql/~7604541/585617114/1230545</fs:itemid></item><item><title>Oracle到MySQL的数据迁移工具</title><link>http://item.feedsky.com/~feedsky/anysql/~7604541/585617115/1230545/1/item.html</link><content:encoded>&lt;p&gt;&amp;nbsp; &amp;nbsp; 前段时间使用SQLULDR2和MySQL的Load Data命令迁移了大量数据, 操作步骤复杂一些, 但性能高, 但对于记录数较少的大量小表, 还是比较麻烦的, 刚好前几天想学习一下MySQL的C客户端编程, 于是就想写一个简洁的从Oracle迁移数据到MySQL的小程序, 作为练习题, 一直相信学什么可以用什么! &lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; 可以下载新工具&lt;a href=&quot;http://www.anysql.net/software/ora2mysql.zip&quot;&gt;ora2mysql&lt;/a&gt;进行测试, 目前请不要用于做正式迁移. 使用方法如下: &lt;/p&gt;
&lt;blockquote class=&quot;prefont&quot;&gt;&lt;p&gt;
D:\&amp;gt;ora2mysql user1=scott/tiger user2=/@localhost:3306:test table=emp&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;  0 rows processed at 2011-04-02 15:03:08.&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;  2 rows processed at 2011-04-02 15:03:08.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; 在速度方面，由于不支持Array操作，因此速度比较慢，希望Oracle能让SQL * Plus也能连接MySQL库，或改造一下MySQL客户端，增加Array接口。&lt;/p&gt;
&lt;blockquote class=&quot;prefont&quot;&gt;&lt;p&gt;
D:\&amp;gt;ora2mysql user1=scott/tiger user2=/@::test table1=emp_bak table2=emp&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;  0 rows processed at 2011-04-02 19:48:51.&lt;br /&gt;
&amp;nbsp; &amp;nbsp; 100000 rows processed at 2011-04-02 19:49:17.&lt;br /&gt;
&amp;nbsp; &amp;nbsp; 200000 rows processed at 2011-04-02 19:49:42.&lt;br /&gt;
&amp;nbsp; &amp;nbsp; 300000 rows processed at 2011-04-02 19:50:07.&lt;br /&gt;
&amp;nbsp; &amp;nbsp; 400000 rows processed at 2011-04-02 19:50:32.&lt;br /&gt;
&amp;nbsp; &amp;nbsp; 500000 rows processed at 2011-04-02 19:50:57.&lt;br /&gt;
&amp;nbsp; &amp;nbsp; 600000 rows processed at 2011-04-02 19:51:23.&lt;br /&gt;
&amp;nbsp; &amp;nbsp; 700000 rows processed at 2011-04-02 19:51:48.&lt;br /&gt;
&amp;nbsp; &amp;nbsp; 800000 rows processed at 2011-04-02 19:52:14.&lt;br /&gt;
&amp;nbsp; &amp;nbsp; 900000 rows processed at 2011-04-02 19:52:39.&lt;br /&gt;
&amp;nbsp;  1000000 rows processed at 2011-04-02 19:53:03.&lt;br /&gt;
&amp;nbsp;  1100000 rows processed at 2011-04-02 19:53:29.&lt;br /&gt;
&amp;nbsp;  1200000 rows processed at 2011-04-02 19:53:56.&lt;br /&gt;
&amp;nbsp;  1300000 rows processed at 2011-04-02 19:54:24.&lt;br /&gt;
&amp;nbsp;  1400000 rows processed at 2011-04-02 19:54:53.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; 目前还不支持BLOB类型, 也不支持字符集的设置, 请大家理解与支持. &lt;/p&gt;
&lt;h3  class=&quot;related_post_title&quot;&gt;Relative Posts:&lt;/h3&gt;&lt;ul class=&quot;related_post&quot;&gt;&lt;li&gt;2010/03/15 -- &lt;a href=&quot;http://www.anysql.net/tools/datacopy-utility.html&quot; title=&quot;学习OCI之DataCopy程序&quot;&gt;学习OCI之DataCopy程序&lt;/a&gt; (8)&lt;/li&gt;&lt;li&gt;2011/03/28 -- &lt;a href=&quot;http://www.anysql.net/tools/datacopy-300gb-data-test.html&quot; title=&quot;DataCopy通过300GB的数据测试&quot;&gt;DataCopy通过300GB的数据测试&lt;/a&gt; (12)&lt;/li&gt;&lt;li&gt;2010/04/15 -- &lt;a href=&quot;http://www.anysql.net/tools/parallel-datacopy-datasync.html&quot; title=&quot;并行SQLULDR2和DataCopy操作&quot;&gt;并行SQLULDR2和DataCopy操作&lt;/a&gt; (4)&lt;/li&gt;&lt;li&gt;2009/11/07 -- &lt;a href=&quot;http://www.anysql.net/tools/sqluldr2-mysql-data-migration-test.html&quot; title=&quot;MySQL数据迁移测试&quot;&gt;MySQL数据迁移测试&lt;/a&gt; (8)&lt;/li&gt;&lt;li&gt;2009/06/09 -- &lt;a href=&quot;http://www.anysql.net/tools/copydata-perl-scripts.html&quot; title=&quot;copydata异构数据拷贝&quot;&gt;copydata异构数据拷贝&lt;/a&gt; (6)&lt;/li&gt;&lt;li&gt;2008/05/15 -- &lt;a href=&quot;http://www.anysql.net/dba/aul_better_for_nchar.html&quot; title=&quot;将dmp数据导入到另一个表&quot;&gt;将dmp数据导入到另一个表&lt;/a&gt; (3)&lt;/li&gt;&lt;li&gt;2008/02/20 -- &lt;a href=&quot;http://www.anysql.net/dba/export_charset_convert.html&quot; title=&quot;导出时的字符集转换&quot;&gt;导出时的字符集转换&lt;/a&gt; (1)&lt;/li&gt;&lt;li&gt;2007/11/28 -- &lt;a href=&quot;http://www.anysql.net/oracle/tune_oracle_exp_imp.html&quot; title=&quot;如何提高Oracle exp/imp的速度?&quot;&gt;如何提高Oracle exp/imp的速度?&lt;/a&gt; (7)&lt;/li&gt;&lt;li&gt;2007/07/10 -- &lt;a href=&quot;http://www.anysql.net/tools/dmp2utf8_download_increase.html&quot; title=&quot;dmp2utf8的下载量骤增, 不知什么原因?&quot;&gt;dmp2utf8的下载量骤增, 不知什么原因?&lt;/a&gt; (5)&lt;/li&gt;&lt;li&gt;2007/03/14 -- &lt;a href=&quot;http://www.anysql.net/tools/move_data_oracle_mysql.html&quot; title=&quot;如何在不同类型的数据库间迁移数据?&quot;&gt;如何在不同类型的数据库间迁移数据?&lt;/a&gt; (1)&lt;/li&gt;&lt;/ul&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/585617115/anysql/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/anysql/~7604541/585617115/1230545/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</content:encoded><wfw:commentRss>http://www.anysql.net/tools/oracle-mysql-data-migration-tool.html/feed</wfw:commentRss><slash:comments>6</slash:comments><description>&amp;#160; &amp;#160; 前段时间使用SQLULDR2和MySQL的Load Data命令迁移了大量数据, 操作步骤复杂一些, 但性能高, 但对于记录数较少的大量小表, 还是比较麻烦的, 刚好前几天想学习一下MySQL的C客户端编程, 于是就想写一个简洁的从Oracle迁移数据到MySQL的小程序, 作为练习题, 一直相信学什么可以用什么! &amp;#160; &amp;#160; 可以下载新工具ora2mysql进行测试, 目前请不要用于做正式迁移. 使用方法如下: D:\&amp;#62;ora2mysql user1=scott/tiger user2=/@localhost:3306:test table=emp &amp;#160; &amp;#160; &amp;#160; &amp;#160; 0 rows processed at 2011-04-02 15:03:08. &amp;#160; &amp;#160; &amp;#160; &amp;#160; 2 rows processed at 2011-04-02 15:03:08. &amp;#160; &amp;#160; 在速度方面，由于不支持Array操作，因此速度比较慢，希望Oracle能让SQL * Plus也能连接MySQL库，或改造一下MySQL客户端，增加Array接口。 D:\&amp;#62;ora2mysql user1=scott/tiger user2=/@::test table1=emp_bak table2=emp &amp;#160; &amp;#160; &amp;#160; &amp;#160; [...]&lt;img src=&quot;http://www1.feedsky.com/t1/585617115/anysql/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/anysql/~7604541/585617115/1230545/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>Import</category><category>Copy</category><category>Tools</category><category>Export</category><category>Data</category><category>Oracle</category><category>MySQL</category><pubDate>Sat, 02 Apr 2011 17:46:05 +0800</pubDate><author>anysql</author><comments>http://www.anysql.net/tools/oracle-mysql-data-migration-tool.html#comments</comments><guid isPermaLink="false">http://www.anysql.net/?p=790</guid><dc:creator>anysql</dc:creator><fs:srclink>http://www.anysql.net/tools/oracle-mysql-data-migration-tool.html</fs:srclink><fs:srcfeed>http://www.anysql.net/feed</fs:srcfeed><fs:itemid>feedsky/anysql/~7604541/585617115/1230545</fs:itemid></item><item><title>DataCopy通过300GB的数据测试</title><link>http://item.feedsky.com/~feedsky/anysql/~7604541/585617116/1230545/1/item.html</link><content:encoded>&lt;p&gt;&amp;nbsp; &amp;nbsp; 网友使用DataCopy进行了数据迁移测试, 数据量有300GB的样子, 表有几百个, DataCopy表现不错, 单进程时也和Exp/Imp不相上下, 因为DataCopy可以很方便地自动并行处理, 这是他选择DataCopy的重要理由, 只需要加一个并行度就行了. &lt;/p&gt;
&lt;blockquote class=&quot;prefont&quot;&gt;&lt;p&gt;
datacopy user1=&amp;#8230; user2=&amp;#8230; table=&amp;#8230; degree=4
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; Bug往往在大量测试或要正式使用时出现, 这次也不例外. 总共解决了两个程序缺限, 错误信息如下所示: &lt;/p&gt;
&lt;blockquote class=&quot;prefont&quot;&gt;&lt;p&gt;
ORA-01405: fetched column value is NULL &lt;br /&gt;
ORA-24816: Expanded non LONG bind data supplied after actual LONG or LOB column
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; 第一个错误是因为使用回调函数处理Long或LOB类型时, 没有使用标志变量(Indicator Variable), 第二个错误是因为传绑定变量时没有将Long或LOB列放在最后. 以前居然没有理解这一点, 汗颜啊! &lt;/p&gt;
&lt;blockquote class=&quot;prefont&quot;&gt;&lt;p&gt;
ORA-24345: A Truncation or null fetch error occurred
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; 另外还回答了两个问题, 第一个是上面的错误, 这是因为NLS_LANG中标明的字符集与数据库的字符集不一样, 发生了转换, 导致程序给的缓冲区不够用引起的. 另一个问题是, Direct Load方式迁移数据库出现乱码, 一般也是因为NLS_LANG中标明的字符集与数据库的字符集不一样. &lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; 经过这一次的改进, DataCopy和DataSync应当是相当稳定了, 已编译好AIX的版本让大家选择. &lt;strong&gt;如果觉得好, 可以赞助个10元/5元的, 让我们技术人员知道技术环境正在逐步改善.&lt;/strong&gt;&lt;/p&gt;
&lt;h3  class=&quot;related_post_title&quot;&gt;Relative Posts:&lt;/h3&gt;&lt;ul class=&quot;related_post&quot;&gt;&lt;li&gt;2011/04/02 -- &lt;a href=&quot;http://www.anysql.net/tools/oracle-mysql-data-migration-tool.html&quot; title=&quot;Oracle到MySQL的数据迁移工具&quot;&gt;Oracle到MySQL的数据迁移工具&lt;/a&gt; (6)&lt;/li&gt;&lt;li&gt;2010/04/18 -- &lt;a href=&quot;http://www.anysql.net/tools/parallel-inside-sqluldr2.html&quot; title=&quot;SQLULDR2 : Parallel Inside Now!&quot;&gt;SQLULDR2 : Parallel Inside Now!&lt;/a&gt; (12)&lt;/li&gt;&lt;li&gt;2010/04/15 -- &lt;a href=&quot;http://www.anysql.net/tools/parallel-datacopy-datasync.html&quot; title=&quot;并行SQLULDR2和DataCopy操作&quot;&gt;并行SQLULDR2和DataCopy操作&lt;/a&gt; (4)&lt;/li&gt;&lt;li&gt;2010/03/15 -- &lt;a href=&quot;http://www.anysql.net/tools/datacopy-utility.html&quot; title=&quot;学习OCI之DataCopy程序&quot;&gt;学习OCI之DataCopy程序&lt;/a&gt; (8)&lt;/li&gt;&lt;li&gt;2009/04/02 -- &lt;a href=&quot;http://www.anysql.net/tools/sqluldr2_license.html&quot; title=&quot;给SQLULDR2加上Key保护&quot;&gt;给SQLULDR2加上Key保护&lt;/a&gt; (6)&lt;/li&gt;&lt;li&gt;2009/03/31 -- &lt;a href=&quot;http://www.anysql.net/tools/sqluldr2_simple_query.html&quot; title=&quot;指定表名导出文本&quot;&gt;指定表名导出文本&lt;/a&gt; (0)&lt;/li&gt;&lt;li&gt;2011/03/23 -- &lt;a href=&quot;http://www.anysql.net/tools/oci-lob-ora-01405.html&quot; title=&quot;解决OCI LOB值的ORA-01405错误&quot;&gt;解决OCI LOB值的ORA-01405错误&lt;/a&gt; (4)&lt;/li&gt;&lt;li&gt;2010/06/24 -- &lt;a href=&quot;http://www.anysql.net/tools/sqluldr2-charset-option.html&quot; title=&quot;控制SQLULDR2的字符集&quot;&gt;控制SQLULDR2的字符集&lt;/a&gt; (6)&lt;/li&gt;&lt;li&gt;2010/06/19 -- &lt;a href=&quot;http://www.anysql.net/tools/sqluldr2-non-free-features.html&quot; title=&quot;2011年起SQLULDR2中的收费功能&quot;&gt;2011年起SQLULDR2中的收费功能&lt;/a&gt; (9)&lt;/li&gt;&lt;li&gt;2010/05/12 -- &lt;a href=&quot;http://www.anysql.net/tools/datacopy-gui-version.html&quot; title=&quot;图形版Oracle数据迁移工具&quot;&gt;图形版Oracle数据迁移工具&lt;/a&gt; (11)&lt;/li&gt;&lt;/ul&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/585617116/anysql/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/anysql/~7604541/585617116/1230545/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</content:encoded><wfw:commentRss>http://www.anysql.net/tools/datacopy-300gb-data-test.html/feed</wfw:commentRss><slash:comments>12</slash:comments><description>&amp;#160; &amp;#160; 网友使用DataCopy进行了数据迁移测试, 数据量有300GB的样子, 表有几百个, DataCopy表现不错, 单进程时也和Exp/Imp不相上下, 因为DataCopy可以很方便地自动并行处理, 这是他选择DataCopy的重要理由, 只需要加一个并行度就行了. datacopy user1=&amp;#8230; user2=&amp;#8230; table=&amp;#8230; degree=4 &amp;#160; &amp;#160; Bug往往在大量测试或要正式使用时出现, 这次也不例外. 总共解决了两个程序缺限, 错误信息如下所示: ORA-01405: fetched column value is NULL ORA-24816: Expanded non LONG bind data supplied after actual LONG or LOB column &amp;#160; &amp;#160; 第一个错误是因为使用回调函数处理Long或LOB类型时, 没有使用标志变量(Indicator Variable), 第二个错误是因为传绑定变量时没有将Long或LOB列放在最后. 以前居然没有理解这一点, 汗颜啊! ORA-24345: A Truncation or null fetch error [...]&lt;img src=&quot;http://www1.feedsky.com/t1/585617116/anysql/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/anysql/~7604541/585617116/1230545/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>Import</category><category>Tools</category><category>Export</category><category>Data</category><pubDate>Mon, 28 Mar 2011 19:50:24 +0800</pubDate><author>anysql</author><comments>http://www.anysql.net/tools/datacopy-300gb-data-test.html#comments</comments><guid isPermaLink="false">http://www.anysql.net/?p=789</guid><dc:creator>anysql</dc:creator><fs:srclink>http://www.anysql.net/tools/datacopy-300gb-data-test.html</fs:srclink><fs:srcfeed>http://www.anysql.net/feed</fs:srcfeed><fs:itemid>feedsky/anysql/~7604541/585617116/1230545</fs:itemid></item><item><title>编译Windows下的第一个MySQL程序</title><link>http://item.feedsky.com/~feedsky/anysql/~7604541/585617117/1230545/1/item.html</link><content:encoded>&lt;p&gt;&amp;nbsp; &amp;nbsp; 要编写高效的客户端软件就得用C语言, Oracle的OCI初级编程基本搞懂了, 现在学一点MySQL客户端的编程, 可以偿试去写一个Oracle与MySQL对拷数据的C程序, MySQL的源代码看不懂, 走走外围也不错. 下面是从网上找来的一段MySQL代码, 显示Global Status命令的结果, 源代码如下: &lt;/p&gt;
&lt;blockquote class=&quot;prefont&quot;&gt;&lt;p&gt;
#include &amp;lt;winsock2.h&amp;gt;&lt;br /&gt;
#include &amp;lt;mysql.h&amp;gt;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;/p&gt;
&lt;p&gt;int main() &lt;br /&gt;
{&lt;br /&gt;
&amp;nbsp;  MYSQL *conn;&lt;br /&gt;
&amp;nbsp;  MYSQL_STMT *stmt;&lt;br /&gt;
&amp;nbsp;  MYSQL_RES&amp;nbsp; *res;&lt;br /&gt;
&amp;nbsp;  MYSQL_ROW&amp;nbsp; row;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;  char *server = &amp;#8220;localhost&amp;#8221;;&lt;br /&gt;
&amp;nbsp;  char *user = &amp;#8220;root&amp;#8221;;&lt;br /&gt;
&amp;nbsp;  char *password = &amp;#8220;&amp;#8221;;&lt;br /&gt;
&amp;nbsp;  char *database = &amp;#8220;test&amp;#8221;;&lt;br /&gt;
&amp;nbsp;  &lt;br /&gt;
&amp;nbsp;  conn = mysql_init(NULL);&lt;br /&gt;
&amp;nbsp;  &lt;br /&gt;
&amp;nbsp;  /* Connect to database */&lt;br /&gt;
&amp;nbsp;  if (!mysql_real_connect(conn, server,&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp;  user, password, database, 0, NULL, CLIENT_MULTI_STATEMENTS)) &lt;br /&gt;
&amp;nbsp;  {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; fprintf(stderr, &amp;#8220;%s\n&amp;#8221;, mysql_error(conn));&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; return(0);&lt;br /&gt;
&amp;nbsp;  }&lt;/p&gt;
&lt;p&gt;&amp;nbsp;  /* send SQL query */&lt;br /&gt;
&amp;nbsp;  if (mysql_query(conn, &amp;#8220;show global status;&amp;#8221;)) &lt;br /&gt;
&amp;nbsp;  {&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; fprintf(stderr, &amp;#8220;%s\n&amp;#8221;, mysql_error(conn));&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; return(0);&lt;br /&gt;
&amp;nbsp;  }&lt;/p&gt;
&lt;p&gt;&amp;nbsp;  res = mysql_use_result(conn);&lt;br /&gt;
&amp;nbsp;  &lt;br /&gt;
&amp;nbsp;  /* output fields 1 and 2 of each row */&lt;br /&gt;
&amp;nbsp;  while ((row = mysql_fetch_row(res)) != NULL)&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; printf(&amp;#8220;%s %s\n&amp;#8221;, row[0], row[1]);&lt;/p&gt;
&lt;p&gt;&amp;nbsp;  /* Release memory used to store results and close connection */&lt;br /&gt;
&amp;nbsp;  mysql_free_result(res);&lt;br /&gt;
&amp;nbsp;  mysql_close(conn);&lt;br /&gt;
}
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; Windows下的编译很简单, 只要在编译时加上libmysql包就行了. &lt;/p&gt;
&lt;blockquote class=&quot;prefont&quot;&gt;&lt;p&gt;
cl my1.cpp libmysql.lib
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; 接下来看看MySQL的绑定变量使用, 及批量操作的接, 看看是否可以写出DataCopy Oracle-MySQL程序. &lt;/p&gt;
&lt;h3  class=&quot;related_post_title&quot;&gt;Relative Posts:&lt;/h3&gt;&lt;ul class=&quot;related_post&quot;&gt;&lt;li&gt;2010/11/17 -- &lt;a href=&quot;http://www.anysql.net/tools/webchart-array-setting.html&quot; title=&quot;满足同事的一个报表需求&quot;&gt;满足同事的一个报表需求&lt;/a&gt; (2)&lt;/li&gt;&lt;li&gt;2010/02/20 -- &lt;a href=&quot;http://www.anysql.net/tools/webchart-multidb-support.html&quot; title=&quot;定义不同数据源的SQL&quot;&gt;定义不同数据源的SQL&lt;/a&gt; (4)&lt;/li&gt;&lt;li&gt;2010/01/26 -- &lt;a href=&quot;http://www.anysql.net/tools/webchart-logical-dbaccess2.html&quot; title=&quot;逻辑连接层与物理连接层(2)&quot;&gt;逻辑连接层与物理连接层(2)&lt;/a&gt; (1)&lt;/li&gt;&lt;li&gt;2010/01/05 -- &lt;a href=&quot;http://www.anysql.net/tools/webchart-forall-loop.html&quot; title=&quot;DataReport中的FORALL循环&quot;&gt;DataReport中的FORALL循环&lt;/a&gt; (0)&lt;/li&gt;&lt;li&gt;2009/12/25 -- &lt;a href=&quot;http://www.anysql.net/tools/sqluldr2-customized-escape-chars.html&quot; title=&quot;SQLULDR2的自定义转义符处理&quot;&gt;SQLULDR2的自定义转义符处理&lt;/a&gt; (2)&lt;/li&gt;&lt;li&gt;2009/11/07 -- &lt;a href=&quot;http://www.anysql.net/tools/sqluldr2-mysql-data-migration-test.html&quot; title=&quot;MySQL数据迁移测试&quot;&gt;MySQL数据迁移测试&lt;/a&gt; (8)&lt;/li&gt;&lt;li&gt;2009/10/30 -- &lt;a href=&quot;http://www.anysql.net/tools/sqluldr2-high-perf-insert-unload.html&quot; title=&quot;SQLULDR2功能增加, 性能不减&quot;&gt;SQLULDR2功能增加, 性能不减&lt;/a&gt; (14)&lt;/li&gt;&lt;li&gt;2009/10/28 -- &lt;a href=&quot;http://www.anysql.net/tools/sqluldr2-mysql-insert-sqls.html&quot; title=&quot;SQLULDR2生成Insert SQL语句&quot;&gt;SQLULDR2生成Insert SQL语句&lt;/a&gt; (4)&lt;/li&gt;&lt;li&gt;2009/10/27 -- &lt;a href=&quot;http://www.anysql.net/tools/sqluldr2-more-escape-chars.html&quot; title=&quot;将SQLULDR2转义符进行到底&quot;&gt;将SQLULDR2转义符进行到底&lt;/a&gt; (3)&lt;/li&gt;&lt;li&gt;2009/10/26 -- &lt;a href=&quot;http://www.anysql.net/tools/sqluldr2-mysql-escape-char.html&quot; title=&quot;SQLULDR2处理MySQL转义符&quot;&gt;SQLULDR2处理MySQL转义符&lt;/a&gt; (1)&lt;/li&gt;&lt;/ul&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/585617117/anysql/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/anysql/~7604541/585617117/1230545/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</content:encoded><wfw:commentRss>http://www.anysql.net/developer/first-mysql-c-program.html/feed</wfw:commentRss><slash:comments>1</slash:comments><description>&amp;#160; &amp;#160; 要编写高效的客户端软件就得用C语言, Oracle的OCI初级编程基本搞懂了, 现在学一点MySQL客户端的编程, 可以偿试去写一个Oracle与MySQL对拷数据的C程序, MySQL的源代码看不懂, 走走外围也不错. 下面是从网上找来的一段MySQL代码, 显示Global Status命令的结果, 源代码如下: #include &amp;#60;winsock2.h&amp;#62; #include &amp;#60;mysql.h&amp;#62; #include &amp;#60;stdio.h&amp;#62; int main() { &amp;#160; MYSQL *conn; &amp;#160; MYSQL_STMT *stmt; &amp;#160; MYSQL_RES&amp;#160; *res; &amp;#160; MYSQL_ROW&amp;#160; row; &amp;#160; char *server = &amp;#8220;localhost&amp;#8221;; &amp;#160; char *user = &amp;#8220;root&amp;#8221;; &amp;#160; char *password = &amp;#8220;&amp;#8221;; &amp;#160; char *database = &amp;#8220;test&amp;#8221;; &amp;#160; &amp;#160; [...]&lt;img src=&quot;http://www1.feedsky.com/t1/585617117/anysql/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/anysql/~7604541/585617117/1230545/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>Tools</category><category>MySQL</category><category>Developer</category><pubDate>Sun, 27 Mar 2011 21:56:12 +0800</pubDate><author>anysql</author><comments>http://www.anysql.net/developer/first-mysql-c-program.html#comments</comments><guid isPermaLink="false">http://www.anysql.net/?p=788</guid><dc:creator>anysql</dc:creator><fs:srclink>http://www.anysql.net/developer/first-mysql-c-program.html</fs:srclink><fs:srcfeed>http://www.anysql.net/feed</fs:srcfeed><fs:itemid>feedsky/anysql/~7604541/585617117/1230545</fs:itemid></item><item><title>解决OCI LOB值的ORA-01405错误</title><link>http://item.feedsky.com/~feedsky/anysql/~7604541/585617118/1230545/1/item.html</link><content:encoded>&lt;p&gt;&amp;nbsp; &amp;nbsp; 基于OCI写的DataCopy(数据拷贝)与DataSync(数据同步)软件, 处理Lob类型的NULL值时一直都有问题, 会报ORA-01405错误, 导致去年丢失可以在正式场合(用于实时备份某地交通局的图片数据)使用的机会, 很是可惜. 最近关注这两个工具的人变多了, 再次向我报告了这个问题, 于是花了点时间去修改原来的代码, 终于搞定, 希望能找到一个正式使用的场景. &lt;/p&gt;
&lt;blockquote class=&quot;prefont&quot;&gt;
&lt;p&gt;&lt;strong&gt;ORA-01405&lt;/strong&gt;: fetched column value is NULL &lt;br /&gt;
&lt;strong&gt;Cause&lt;/strong&gt;:The INTO clause of a FETCH operation contained a NULL value, and no indicator was used. The column buffer in the program remained unchanged, and the cursor return code was +2. This is an error unless you are running Oracle with DBMS=6, emulating version 6, in which case it is only a warning.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; 另外还修改了连接数据库的方式, 在Instant Client和Full Client的情况下及任何数据库版下, 都可以用以下格式连接数据库, 尽量为大家提供方便. &lt;/p&gt;
&lt;blockquote class=&quot;prefont&quot;&gt;&lt;p&gt;
sqluldr2 scott/tiger@localhost:1521:db10g &amp;#8230;&lt;br /&gt;
datacopy user=scott/tiger@localhost:1521:db10g &amp;#8230;&lt;br /&gt;
datasync user=scott/tiger@localhost:1521:db10g &amp;#8230;
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; 再次简单地讲解一下这两个工具, DataCopy是一个不落地的Oracle之间数据对拷工具, 支持Long/Lob等数据类型(单值100MB以内), 并且速度上不比Exp/Imp工具差, 是一个很理想的Oracle数据迁移工具. DataSync是一个利用物化视图日志或触发器捕获增量变化数据, 进行准实时的数据同步/复制工具, 我们用这种机制在半小时内迁移过500GB的数据, 支持每秒钟上千次的变更压力, 并且同样支持Long/Lob等数据类型(单值100MB以内). 更重要的是, 这两个工具自2011年起, 完全免费使用. &lt;/p&gt;
&lt;h3  class=&quot;related_post_title&quot;&gt;Relative Posts:&lt;/h3&gt;&lt;ul class=&quot;related_post&quot;&gt;&lt;li&gt;2010/04/10 -- &lt;a href=&quot;http://www.anysql.net/tools/datacopy-datasync-nls-lang.html&quot; title=&quot;不同字符集的数据迁移&quot;&gt;不同字符集的数据迁移&lt;/a&gt; (6)&lt;/li&gt;&lt;li&gt;2010/04/10 -- &lt;a href=&quot;http://www.anysql.net/tools/datasync-mview-log-creation.html&quot; title=&quot;DataSync之物化视图日志助手&quot;&gt;DataSync之物化视图日志助手&lt;/a&gt; (0)&lt;/li&gt;&lt;li&gt;2010/03/27 -- &lt;a href=&quot;http://www.anysql.net/tools/datasync-data-replication.html&quot; title=&quot;Oracle中轻松复制SCOTT.EMP&quot;&gt;Oracle中轻松复制SCOTT.EMP&lt;/a&gt; (6)&lt;/li&gt;&lt;li&gt;2011/03/28 -- &lt;a href=&quot;http://www.anysql.net/tools/datacopy-300gb-data-test.html&quot; title=&quot;DataCopy通过300GB的数据测试&quot;&gt;DataCopy通过300GB的数据测试&lt;/a&gt; (12)&lt;/li&gt;&lt;li&gt;2010/05/12 -- &lt;a href=&quot;http://www.anysql.net/tools/datacopy-gui-version.html&quot; title=&quot;图形版Oracle数据迁移工具&quot;&gt;图形版Oracle数据迁移工具&lt;/a&gt; (11)&lt;/li&gt;&lt;li&gt;2010/04/18 -- &lt;a href=&quot;http://www.anysql.net/tools/parallel-inside-sqluldr2.html&quot; title=&quot;SQLULDR2 : Parallel Inside Now!&quot;&gt;SQLULDR2 : Parallel Inside Now!&lt;/a&gt; (12)&lt;/li&gt;&lt;li&gt;2010/04/16 -- &lt;a href=&quot;http://www.anysql.net/tools/parallel-inside-datacopy.html&quot; title=&quot;DataCopy : Parallel Inside Now!&quot;&gt;DataCopy : Parallel Inside Now!&lt;/a&gt; (2)&lt;/li&gt;&lt;li&gt;2010/04/15 -- &lt;a href=&quot;http://www.anysql.net/tools/parallel-datacopy-datasync.html&quot; title=&quot;并行SQLULDR2和DataCopy操作&quot;&gt;并行SQLULDR2和DataCopy操作&lt;/a&gt; (4)&lt;/li&gt;&lt;li&gt;2010/03/20 -- &lt;a href=&quot;http://www.anysql.net/tools/datacopy-conflict-filler-options.html&quot; title=&quot;DataCopy选项: conflict和filler&quot;&gt;DataCopy选项: conflict和filler&lt;/a&gt; (0)&lt;/li&gt;&lt;li&gt;2010/03/16 -- &lt;a href=&quot;http://www.anysql.net/tools/datacopy-data-sync-mode.html&quot; title=&quot;用DataCopy进行Oracle数据同步&quot;&gt;用DataCopy进行Oracle数据同步&lt;/a&gt; (6)&lt;/li&gt;&lt;/ul&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/585617118/anysql/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/anysql/~7604541/585617118/1230545/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</content:encoded><wfw:commentRss>http://www.anysql.net/tools/oci-lob-ora-01405.html/feed</wfw:commentRss><slash:comments>4</slash:comments><description>&amp;#160; &amp;#160; 基于OCI写的DataCopy(数据拷贝)与DataSync(数据同步)软件, 处理Lob类型的NULL值时一直都有问题, 会报ORA-01405错误, 导致去年丢失可以在正式场合(用于实时备份某地交通局的图片数据)使用的机会, 很是可惜. 最近关注这两个工具的人变多了, 再次向我报告了这个问题, 于是花了点时间去修改原来的代码, 终于搞定, 希望能找到一个正式使用的场景. ORA-01405: fetched column value is NULL Cause:The INTO clause of a FETCH operation contained a NULL value, and no indicator was used. The column buffer in the program remained unchanged, and the cursor return code was +2. This is an error unless you [...]&lt;img src=&quot;http://www1.feedsky.com/t1/585617118/anysql/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/anysql/~7604541/585617118/1230545/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>Tools</category><category>Data</category><category>LOB</category><category>Replication</category><pubDate>Wed, 23 Mar 2011 19:46:50 +0800</pubDate><author>anysql</author><comments>http://www.anysql.net/tools/oci-lob-ora-01405.html#comments</comments><guid isPermaLink="false">http://www.anysql.net/?p=786</guid><dc:creator>anysql</dc:creator><fs:srclink>http://www.anysql.net/tools/oci-lob-ora-01405.html</fs:srclink><fs:srcfeed>http://www.anysql.net/feed</fs:srcfeed><fs:itemid>feedsky/anysql/~7604541/585617118/1230545</fs:itemid></item><item><title>对Oracle的两个功能需求</title><link>http://item.feedsky.com/~feedsky/anysql/~7604541/585617119/1230545/1/item.html</link><content:encoded>&lt;p&gt;&amp;nbsp; &amp;nbsp; Hash算法在NoSQL、内存表、Cache中广泛使用，Oracle中也有基于Hash算法的Cluster对象，可以创建Hash表，但却没有Hash索引。在以前2000万记录的测试中，获取一条记录的逻辑读是1.06个，这个效率用普通的索引是很难完成的，换成索引的话，也就是一条记录2.06个逻辑读，同样十分高效。虽然可以用PL/SQL编写组件可以实现，但肯定不如在内核一级实现这个功能，保持表结构的灵活性，又保持主键访问的高效性。&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; 物化视图日志是一种很好的Change Data Capture的机制，可以满足大部份系统数据同步的需求，根本就不需要用到基于日志的复杂技术。但有一些批量处理的任务，不想Oracle捕捉变更，但采用物化视图时，没有办法跳过。为此曾经查阅了物化视图有关的所有内建存贮过程包，都没有找到解决方案，其实很容易实现这个功能，大家可以借用这个工能实现轻量级的数据复制方案。虽然说是轻量级的，但对于每秒上千次的一样也很容易复制。&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; 想起07年提过的两个需求，都已经实现，其中一个已经验证过了，就是11g的Active Standby；另一个是RAC节点的读写控制，以实现一个写多个读的机制，减少全局锁的冲突引起的性能停顿，还有待验证一下，只是验证的成本比较高，目前还没有时间去搞它。&lt;/p&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; 07年的两个想法太想要了，所以跑去发Tar，今天的这两个功能不是那么急，就只在博客中提一下算了。要是有淘宝在MySQL上的实力，就去自已实现算了。&lt;/p&gt;
&lt;h3  class=&quot;related_post_title&quot;&gt;Relative Posts:&lt;/h3&gt;&lt;ul class=&quot;related_post&quot;&gt;&lt;li&gt;2007/04/27 -- &lt;a href=&quot;http://www.anysql.net/oracle/oracle_hash_index_type.html&quot; title=&quot;Oracle应当增加一种基于Hash算法的索引&quot;&gt;Oracle应当增加一种基于Hash算法的索引&lt;/a&gt; (3)&lt;/li&gt;&lt;li&gt;2009/02/05 -- &lt;a href=&quot;http://www.anysql.net/dba/change_export_tablespace.html&quot; title=&quot;导出时如何统一表空间?&quot;&gt;导出时如何统一表空间?&lt;/a&gt; (2)&lt;/li&gt;&lt;li&gt;2008/06/23 -- &lt;a href=&quot;http://www.anysql.net/dba/apache_tomcat.html&quot; title=&quot;根据表名搜索SQL语句&quot;&gt;根据表名搜索SQL语句&lt;/a&gt; (0)&lt;/li&gt;&lt;li&gt;2008/05/11 -- &lt;a href=&quot;http://www.anysql.net/oracle/my_network_channels.html&quot; title=&quot;一周遇到两个Oracle Bug&quot;&gt;一周遇到两个Oracle Bug&lt;/a&gt; (5)&lt;/li&gt;&lt;li&gt;2008/03/20 -- &lt;a href=&quot;http://www.anysql.net/aulmydul/aul_recover_source_code.html&quot; title=&quot;AUL恢复Oracle索引结构?&quot;&gt;AUL恢复Oracle索引结构?&lt;/a&gt; (0)&lt;/li&gt;&lt;li&gt;2008/03/06 -- &lt;a href=&quot;http://www.anysql.net/dba/shareplex_from_europe.html&quot; title=&quot;HVR, 欧州的Shareplex?&quot;&gt;HVR, 欧州的Shareplex?&lt;/a&gt; (0)&lt;/li&gt;&lt;li&gt;2008/02/29 -- &lt;a href=&quot;http://www.anysql.net/developer/give_mylog_to_zizzy.html&quot; title=&quot;向Zizzy项目注入MyLOG&quot;&gt;向Zizzy项目注入MyLOG&lt;/a&gt; (8)&lt;/li&gt;&lt;li&gt;2008/02/28 -- &lt;a href=&quot;http://www.anysql.net/oracle/oracle_zero_cost_plan.html&quot; title=&quot;Oracle CBO认为Cost为0&quot;&gt;Oracle CBO认为Cost为0&lt;/a&gt; (2)&lt;/li&gt;&lt;li&gt;2007/12/04 -- &lt;a href=&quot;http://www.anysql.net/oracle/index_on_timestamp.html&quot; title=&quot;TIMESTAMP类型上的索引&quot;&gt;TIMESTAMP类型上的索引&lt;/a&gt; (0)&lt;/li&gt;&lt;li&gt;2007/09/06 -- &lt;a href=&quot;http://www.anysql.net/oracle/context_index_stoplist.html&quot; title=&quot;用Stop List来缩小Oracle全文索引的大小&quot;&gt;用Stop List来缩小Oracle全文索引的大小&lt;/a&gt; (4)&lt;/li&gt;&lt;/ul&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/585617119/anysql/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/anysql/~7604541/585617119/1230545/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</content:encoded><wfw:commentRss>http://www.anysql.net/oracle/oracle-skip-mview-log.html/feed</wfw:commentRss><slash:comments>0</slash:comments><description>&amp;#160; &amp;#160; Hash算法在NoSQL、内存表、Cache中广泛使用，Oracle中也有基于Hash算法的Cluster对象，可以创建Hash表，但却没有Hash索引。在以前2000万记录的测试中，获取一条记录的逻辑读是1.06个，这个效率用普通的索引是很难完成的，换成索引的话，也就是一条记录2.06个逻辑读，同样十分高效。虽然可以用PL/SQL编写组件可以实现，但肯定不如在内核一级实现这个功能，保持表结构的灵活性，又保持主键访问的高效性。 &amp;#160; &amp;#160; 物化视图日志是一种很好的Change Data Capture的机制，可以满足大部份系统数据同步的需求，根本就不需要用到基于日志的复杂技术。但有一些批量处理的任务，不想Oracle捕捉变更，但采用物化视图时，没有办法跳过。为此曾经查阅了物化视图有关的所有内建存贮过程包，都没有找到解决方案，其实很容易实现这个功能，大家可以借用这个工能实现轻量级的数据复制方案。虽然说是轻量级的，但对于每秒上千次的一样也很容易复制。 &amp;#160; &amp;#160; 想起07年提过的两个需求，都已经实现，其中一个已经验证过了，就是11g的Active Standby；另一个是RAC节点的读写控制，以实现一个写多个读的机制，减少全局锁的冲突引起的性能停顿，还有待验证一下，只是验证的成本比较高，目前还没有时间去搞它。 &amp;#160; &amp;#160; 07年的两个想法太想要了，所以跑去发Tar，今天的这两个功能不是那么急，就只在博客中提一下算了。要是有淘宝在MySQL上的实力，就去自已实现算了。 Relative Posts:2007/04/27 -- Oracle应当增加一种基于Hash算法的索引 (3)2009/02/05 -- 导出时如何统一表空间? (2)2008/06/23 -- 根据表名搜索SQL语句 (0)2008/05/11 -- 一周遇到两个Oracle Bug (5)2008/03/20 -- AUL恢复Oracle索引结构? (0)2008/03/06 -- HVR, 欧州的Shareplex? (0)2008/02/29 -- 向Zizzy项目注入MyLOG (8)2008/02/28 -- Oracle CBO认为Cost为0 (2)2007/12/04 -- TIMESTAMP类型上的索引 (0)2007/09/06 -- 用Stop List来缩小Oracle全文索引的大小 (4)&lt;img src=&quot;http://www1.feedsky.com/t1/585617119/anysql/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/anysql/~7604541/585617119/1230545/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>Index</category><category>Oracle</category><category>Replication</category><category>Hash</category><pubDate>Thu, 17 Mar 2011 22:01:38 +0800</pubDate><author>anysql</author><comments>http://www.anysql.net/oracle/oracle-skip-mview-log.html#comments</comments><guid isPermaLink="false">http://www.anysql.net/?p=784</guid><dc:creator>anysql</dc:creator><fs:srclink>http://www.anysql.net/oracle/oracle-skip-mview-log.html</fs:srclink><fs:srcfeed>http://www.anysql.net/feed</fs:srcfeed><fs:itemid>feedsky/anysql/~7604541/585617119/1230545</fs:itemid></item><item><title>控制DataReport的表格格式</title><link>http://item.feedsky.com/~feedsky/anysql/~7604541/585617120/1230545/1/item.html</link><content:encoded>&lt;p&gt;&amp;nbsp; &amp;nbsp; 中国式的报表一直是头疼的问题, 比如要出一份如下格式的报表, 一直都想实现的, 直到今天才想到如何嵌入这个功能. &lt;/p&gt;
&lt;blockquote&gt;
&lt;table border=&quot;1&quot; width=&quot;500&quot; cellspacing=&quot;0&quot; cellpadding=&quot;2&quot;&gt;
&lt;tr&gt;
&lt;th rowspan=&quot;2&quot; align=&quot;center&quot;&gt;Empno&lt;/th&gt;
&lt;th colspan=&quot;2&quot; align=&quot;center&quot;&gt;Salary&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;th align=&quot;center&quot;&gt;Sal&lt;/th&gt;
&lt;th align=&quot;center&quot;&gt;Comm&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;center&quot;&gt;7369&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;800.0&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;center&quot;&gt;7499&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1600.0&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;&amp;nbsp;300.0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;center&quot;&gt;7521&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1250.0&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;&amp;nbsp;500.0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;center&quot;&gt;7566&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;2975.0&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;center&quot;&gt;7654&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;1250.0&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;&amp;nbsp;1400.0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;center&quot;&gt;7698&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;2850.0&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td align=&quot;center&quot;&gt;7782&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;2450.0&lt;/td&gt;
&lt;td align=&quot;right&quot;&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; 实现这个功能是通过自定议表头, 及记录格式来完成的, 报表定义文件如下. &lt;/p&gt;
&lt;blockquote class=&quot;prefont&quot;&gt;&lt;p&gt;
webchart.query_1=select empno, sal, comm from emp&lt;/p&gt;
&lt;p&gt;webchart.headhtml_1=&lt;br /&gt;
&amp;nbsp;  &amp;lt;tr&amp;gt;&amp;lt;th rowspan=&amp;#8221;2&amp;#8243; align=&amp;#8221;center&amp;#8221;&amp;gt;Empno&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;th colspan=&amp;#8221;2&amp;#8243; align=&amp;#8221;center&amp;#8221;&amp;gt;Salary&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;nbsp;  &amp;lt;tr&amp;gt;&amp;lt;th align=&amp;#8221;center&amp;#8221;&amp;gt;Sal&amp;lt;/th&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;th align=&amp;#8221;center&amp;#8221;&amp;gt;Comm&amp;lt;/th&amp;gt;&amp;lt;/tr&amp;gt;&lt;/p&gt;
&lt;p&gt;webchart.datahtml_1=&lt;br /&gt;
&amp;nbsp;  &amp;lt;tr&amp;gt;&amp;lt;td align=&amp;#8221;center&amp;#8221;&amp;gt;$empno&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;td align=&amp;#8221;right&amp;#8221;&amp;gt;$sal&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;td align=&amp;#8221;right&amp;#8221;&amp;gt;&amp;amp;nbsp;$comm&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;&amp;nbsp; &amp;nbsp; 除了特殊处理外, 还想不到通用的方式实现, 需要用最新的&lt;a href=&quot;http://www.anysql.net/doc/default.xsl&quot; target=&quot;_blank&quot;&gt;xsl格式控制文件&lt;/a&gt;才行, Excel中还不支持这个格式.&lt;/p&gt;
&lt;h3  class=&quot;related_post_title&quot;&gt;Relative Posts:&lt;/h3&gt;&lt;ul class=&quot;related_post&quot;&gt;&lt;li&gt;2010/08/23 -- &lt;a href=&quot;http://www.anysql.net/tools/datareport-pagesize.html&quot; title=&quot;DataReport的多栏显示&quot;&gt;DataReport的多栏显示&lt;/a&gt; (2)&lt;/li&gt;&lt;li&gt;2010/05/07 -- &lt;a href=&quot;http://www.anysql.net/tools/webchart-batch-query.html&quot; title=&quot;批量数据查询需求&quot;&gt;批量数据查询需求&lt;/a&gt; (0)&lt;/li&gt;&lt;li&gt;2010/03/04 -- &lt;a href=&quot;http://www.anysql.net/tools/webchart-rows-filter.html&quot; title=&quot;为DataReport增加条件过滤功能&quot;&gt;为DataReport增加条件过滤功能&lt;/a&gt; (1)&lt;/li&gt;&lt;li&gt;2010/02/20 -- &lt;a href=&quot;http://www.anysql.net/tools/webchart-multidb-support.html&quot; title=&quot;定义不同数据源的SQL&quot;&gt;定义不同数据源的SQL&lt;/a&gt; (4)&lt;/li&gt;&lt;li&gt;2010/01/20 -- &lt;a href=&quot;http://www.anysql.net/tools/webchart-logical-dbaccess.html&quot; title=&quot;逻辑连接层与物理连接层&quot;&gt;逻辑连接层与物理连接层&lt;/a&gt; (4)&lt;/li&gt;&lt;li&gt;2010/01/08 -- &lt;a href=&quot;http://www.anysql.net/tools/webchart-super-expression.html&quot; title=&quot;DataReport中的超级表达式&quot;&gt;DataReport中的超级表达式&lt;/a&gt; (2)&lt;/li&gt;&lt;li&gt;2010/01/08 -- &lt;a href=&quot;http://www.anysql.net/tools/webchart-merge-dup-values.html&quot; title=&quot;DataReport的重复值合并&quot;&gt;DataReport的重复值合并&lt;/a&gt; (0)&lt;/li&gt;&lt;li&gt;2010/01/05 -- &lt;a href=&quot;http://www.anysql.net/tools/webchart-forall-loop.html&quot; title=&quot;DataReport中的FORALL循环&quot;&gt;DataReport中的FORALL循环&lt;/a&gt; (0)&lt;/li&gt;&lt;li&gt;2009/12/29 -- &lt;a href=&quot;http://www.anysql.net/tools/webchart-page-cache.html&quot; title=&quot;DataReport中的Cache为王&quot;&gt;DataReport中的Cache为王&lt;/a&gt; (4)&lt;/li&gt;&lt;li&gt;2009/12/28 -- &lt;a href=&quot;http://www.anysql.net/tools/webchart-one-java-servlet.html&quot; title=&quot;统一DataReport的Servlet&quot;&gt;统一DataReport的Servlet&lt;/a&gt; (2)&lt;/li&gt;&lt;/ul&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/585617120/anysql/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/anysql/~7604541/585617120/1230545/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</content:encoded><wfw:commentRss>http://www.anysql.net/tools/datareport-table-formater.html/feed</wfw:commentRss><slash:comments>4</slash:comments><description>&amp;#160; &amp;#160; 中国式的报表一直是头疼的问题, 比如要出一份如下格式的报表, 一直都想实现的, 直到今天才想到如何嵌入这个功能. Empno Salary Sal Comm 7369 800.0 &amp;#160; 7499 1600.0 &amp;#160;300.0 7521 1250.0 &amp;#160;500.0 7566 2975.0 &amp;#160; 7654 1250.0 &amp;#160;1400.0 7698 2850.0 &amp;#160; 7782 2450.0 &amp;#160; &amp;#160; &amp;#160; 实现这个功能是通过自定议表头, 及记录格式来完成的, 报表定义文件如下. webchart.query_1=select empno, sal, comm from emp webchart.headhtml_1= &amp;#160; &amp;#60;tr&amp;#62;&amp;#60;th rowspan=&amp;#8221;2&amp;#8243; align=&amp;#8221;center&amp;#8221;&amp;#62;Empno&amp;#60;/th&amp;#62; &amp;#160; &amp;#160; &amp;#160; &amp;#60;th colspan=&amp;#8221;2&amp;#8243; align=&amp;#8221;center&amp;#8221;&amp;#62;Salary&amp;#60;/th&amp;#62;&amp;#60;/tr&amp;#62; &amp;#160; &amp;#60;tr&amp;#62;&amp;#60;th [...]&lt;img src=&quot;http://www1.feedsky.com/t1/585617120/anysql/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/anysql/~7604541/585617120/1230545/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>Tools</category><category>Java</category><category>WebChart</category><category>Tomcat</category><pubDate>Sat, 18 Dec 2010 09:32:49 +0800</pubDate><author>anysql</author><comments>http://www.anysql.net/tools/datareport-table-formater.html#comments</comments><guid isPermaLink="false">http://www.anysql.net/?p=780</guid><dc:creator>anysql</dc:creator><fs:srclink>http://www.anysql.net/tools/datareport-table-formater.html</fs:srclink><fs:srcfeed>http://www.anysql.net/feed</fs:srcfeed><fs:itemid>feedsky/anysql/~7604541/585617120/1230545</fs:itemid></item></channel></rss>
