<?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; Data</title>
	<atom:link href="http://www.anysql.net/tag/data/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>图形版Oracle数据迁移工具</title>
		<link>http://www.anysql.net/tools/datacopy-gui-version.html</link>
		<comments>http://www.anysql.net/tools/datacopy-gui-version.html#comments</comments>
		<pubDate>Wed, 12 May 2010 15:06:58 +0000</pubDate>
		<dc:creator>anysql</dc:creator>
				<category><![CDATA[Tools]]></category>
		<category><![CDATA[Copy]]></category>
		<category><![CDATA[Data]]></category>
		<category><![CDATA[Direct]]></category>

		<guid isPermaLink="false">http://www.anysql.net/?p=761</guid>
		<description><![CDATA[&#160; &#160; 同样用Delphi为Oracle间的数据迁移工具(DataCopy)做了一个图形版, 这个工具允许将源库上一个SQL的查结果, 不生成中间文件, 直接导入到目标Oracle数据库中, 由于不生成中间文件, 并且用Oracle内部格式, 导入速度要比文本导入快, 也支持Direct模式, 可以和SQL*Loader, exp/imp, expdp/impdp等工具相比拼, 将来10GB的网络普及的话, 这样的工具迁移巨量数据就飞快了. &#160; &#160; 用这个工具还可以比较方便地进行US7ASCII库到ZHS16GBK库的数据迁移, 有此类需求的不妨试一下. (附: ITPub上的图形化教程) Relative Posts:2010/04/16 -- DataCopy : Parallel Inside Now! (2)2010/04/15 -- 并行SQLULDR2和DataCopy操作 (4)2010/04/10 -- 不同字符集的数据迁移 (6)2010/03/20 -- DataCopy选项: conflict和filler (0)2010/03/16 -- 用DataCopy进行Oracle数据同步 (6)2010/04/18 -- SQLULDR2 : Parallel Inside Now! (12)2010/04/10 -- DataSync之物化视图日志助手 (0)2010/03/27 -- Oracle中轻松复制SCOTT.EMP [...]]]></description>
			<content:encoded><![CDATA[<p>&nbsp; &nbsp; 同样用Delphi为Oracle间的数据迁移工具(DataCopy)做了一个<a href="http://www.anysql.net/software/datacopyw.zip">图形版</a>, 这个工具允许将源库上一个SQL的查结果, 不生成中间文件, 直接导入到目标Oracle数据库中, 由于不生成中间文件, 并且用Oracle内部格式, 导入速度要比文本导入快, 也支持Direct模式, 可以和SQL*Loader, exp/imp, expdp/impdp等工具相比拼, 将来10GB的网络普及的话, 这样的工具迁移巨量数据就飞快了. </p>
<blockquote><p>
<img src="http://www.anysql.net/images/datacopyui.png" border="0" />
</p></blockquote>
<p>&nbsp; &nbsp; 用这个工具还可以比较方便地进行US7ASCII库到ZHS16GBK库的数据迁移, 有此类需求的不妨试一下. (附: <a href="http://www.itpub.net/thread-1302255-1-1.html">ITPub上的图形化教程</a>)</p>
<h3  class="related_post_title">Relative Posts:</h3><ul class="related_post"><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/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><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/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/15 -- <a href="http://www.anysql.net/tools/datacopy-utility.html" title="学习OCI之DataCopy程序">学习OCI之DataCopy程序</a> (5)</li><li>2009/11/07 -- <a href="http://www.anysql.net/tools/sqluldr2-mysql-data-migration-test.html" title="MySQL数据迁移测试">MySQL数据迁移测试</a> (8)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.anysql.net/tools/datacopy-gui-version.html/feed</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>发布SQLULDR2 Windows SDK</title>
		<link>http://www.anysql.net/developer/sqluldr2-windows-sdk-released.html</link>
		<comments>http://www.anysql.net/developer/sqluldr2-windows-sdk-released.html#comments</comments>
		<pubDate>Mon, 19 Apr 2010 12:20:59 +0000</pubDate>
		<dc:creator>anysql</dc:creator>
				<category><![CDATA[Developer]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[Data]]></category>
		<category><![CDATA[Export]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://www.anysql.net/?p=757</guid>
		<description><![CDATA[&#160; &#160; 一直有人建议我开发图形界面的工具, 好象大部份人已经不太会用命令行了, 也不喜欢命令行了. 只是一个人的精力有限, 并且我也不热忠于图形界面的开发, 就萌发出让别人在我的基础上去开发图形界面的想法, 先将文本导出工具SQLULDR2中的核心逻辑封装成几个API调用, 并编译成DLL库, 提供下载(sqluldr2sdk.zip). &#160; &#160; 在下载的包中, 包含一个简单的Demo程序, 当然也是命令行的, 以说明一下如何调用SQLULDR2库. #include &#60;stdio.h&#62; #include &#8220;sqluldr2.h&#8221; void main() { &#160; void *h = NULL; &#160; SQLULDR2HandleAlloc(&#38;h); &#160; if (h != NULL) &#160; { &#160; &#160; &#160; SQLULDR2HandleSetAttr(h, &#8220;USER=SYS&#8221;); &#160; &#160; &#160; SQLULDR2HandleSetAttr(h, &#8220;QUERY=SELECT * FROM TAB&#8221;); &#160; &#160; &#160; SQLULDR2HandleExecute(h); [...]]]></description>
			<content:encoded><![CDATA[<p>&nbsp; &nbsp; 一直有人建议我开发图形界面的工具, 好象大部份人已经不太会用命令行了, 也不喜欢命令行了. 只是一个人的精力有限, 并且我也不热忠于图形界面的开发, 就萌发出让别人在我的基础上去开发图形界面的想法, 先将文本导出工具SQLULDR2中的核心逻辑封装成几个API调用, 并编译成DLL库, 提供下载(<a href="http://www.anysql.net/software/sqluldr2sdk.zip">sqluldr2sdk.zip</a>).</p>
<p>&nbsp; &nbsp; 在下载的包中, 包含一个简单的Demo程序, 当然也是命令行的, 以说明一下如何调用SQLULDR2库. </p>
<blockquote class="prefont"><p>
#include &lt;stdio.h&gt;<br />
#include &#8220;sqluldr2.h&#8221;</p>
<p>void main()<br />
{<br />
&nbsp;  void *h = NULL;<br />
&nbsp;  SQLULDR2HandleAlloc(&amp;h);<br />
&nbsp;  if (h != NULL)<br />
&nbsp;  {<br />
&nbsp; &nbsp; &nbsp;  SQLULDR2HandleSetAttr(h, &#8220;USER=SYS&#8221;);<br />
&nbsp; &nbsp; &nbsp;  SQLULDR2HandleSetAttr(h, &#8220;QUERY=SELECT * FROM TAB&#8221;);<br />
&nbsp; &nbsp; &nbsp;  SQLULDR2HandleExecute(h);<br />
&nbsp; &nbsp; &nbsp;  SQLULDR2HandleFree(h);<br />
&nbsp;  }<br />
}
</p></blockquote>
<p>&nbsp; &nbsp; 如果有人对Windows图形程序开发有兴趣, 或者正在学习Windows图形程序开发, 不如为SQLULDR2开发一个GUI版本吧. </p>
<p>&nbsp; &nbsp; 过几天将发布DataCopy程序的Windows SDK, 可以用来编写简单的ETL工具.</p>
<h3  class="related_post_title">Relative Posts:</h3><ul class="related_post"><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/15 -- <a href="http://www.anysql.net/tools/parallel-datacopy-datasync.html" title="并行SQLULDR2和DataCopy操作">并行SQLULDR2和DataCopy操作</a> (4)</li><li>2010/03/15 -- <a href="http://www.anysql.net/tools/datacopy-utility.html" title="学习OCI之DataCopy程序">学习OCI之DataCopy程序</a> (5)</li><li>2009/04/02 -- <a href="http://www.anysql.net/tools/sqluldr2_license.html" title="给SQLULDR2加上Key保护">给SQLULDR2加上Key保护</a> (6)</li><li>2008/10/04 -- <a href="http://www.anysql.net/tools/ociuldr2_source_code.html" title="ociuldr2源代码">ociuldr2源代码</a> (8)</li><li>2007/08/08 -- <a href="http://www.anysql.net/developer/windows_vc_multi_thread.html" title="Windows Visual C++多线程(Thread)编程示例">Windows Visual C++多线程(Thread)编程示例</a> (0)</li><li>2010/06/24 -- <a href="http://www.anysql.net/tools/sqluldr2-charset-option.html" title="控制SQLULDR2的字符集">控制SQLULDR2的字符集</a> (1)</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/05/28 -- <a href="http://www.anysql.net/dba/unsafe-exp-internet-backup.html" title="不可靠的EXP远程备份">不可靠的EXP远程备份</a> (2)</li><li>2010/05/12 -- <a href="http://www.anysql.net/tools/datacopy-gui-version.html" title="图形版Oracle数据迁移工具">图形版Oracle数据迁移工具</a> (11)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.anysql.net/developer/sqluldr2-windows-sdk-released.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>SQLULDR2 : Parallel Inside Now!</title>
		<link>http://www.anysql.net/tools/parallel-inside-sqluldr2.html</link>
		<comments>http://www.anysql.net/tools/parallel-inside-sqluldr2.html#comments</comments>
		<pubDate>Sat, 17 Apr 2010 23:30:10 +0000</pubDate>
		<dc:creator>anysql</dc:creator>
				<category><![CDATA[Tools]]></category>
		<category><![CDATA[Data]]></category>
		<category><![CDATA[Export]]></category>
		<category><![CDATA[Text]]></category>

		<guid isPermaLink="false">http://www.anysql.net/?p=756</guid>
		<description><![CDATA[&#160; &#160; 通过的TabSplit程序的测试, 及完成并行版DataCopy工具后, 认为可以将TabSplit和SQLULDR2的源代码进行整合, 推出Parallel Inside的SQLULDR2程序, 使之成为导出海量Oracle数据到文本的利器. &#160; &#160; 通过指定并行度(DEGREE)参数即可进行并行数据拷贝, 在文件名中用%p来表示进程序号, 以获得动态文件名. sqluldr2 scott/tiger query=emp_his file=emp_his_%p.txt degree=2 &#160; &#160; 用700万数据的一个表进行测试, 并行方式执行时屏幕输出如下. &#160; &#160; &#160; 0 rows exported at 2010-04-18 07:16:49, size 0 MB. &#160; &#160; &#160; 0 rows exported at 2010-04-18 07:16:49, size 0 MB. 1000000 rows exported at 2010-04-18 07:17:00, size 52 MB. [...]]]></description>
			<content:encoded><![CDATA[<p>&nbsp; &nbsp; 通过的<a href="http://www.anysql.net/tools/parallel-datacopy-datasync.html">TabSplit</a>程序的测试, 及完成<a href="http://www.anysql.net/tools/parallel-inside-datacopy.html">并行版DataCopy</a>工具后, 认为可以将TabSplit和SQLULDR2的源代码进行整合, 推出Parallel Inside的SQLULDR2程序, 使之成为导出海量Oracle数据到文本的利器. </p>
<p>&nbsp; &nbsp; 通过指定并行度(DEGREE)参数即可进行并行数据拷贝, 在文件名中用%p来表示进程序号, 以获得动态文件名. </p>
<blockquote class="prefont"><p>
sqluldr2 scott/tiger query=emp_his file=emp_his_%p.txt degree=2
</p></blockquote>
<p>&nbsp; &nbsp; 用700万数据的一个表进行测试, 并行方式执行时屏幕输出如下. </p>
<blockquote class="prefont"><p>
&nbsp; &nbsp; &nbsp;  0 rows exported at 2010-04-18 07:16:49, size 0 MB.<br />
&nbsp; &nbsp; &nbsp;  0 rows exported at 2010-04-18 07:16:49, size 0 MB.<br />
 1000000 rows exported at 2010-04-18 07:17:00, size 52 MB.<br />
 1000000 rows exported at 2010-04-18 07:17:01, size 52 MB.<br />
 2000000 rows exported at 2010-04-18 07:17:11, size 104 MB.<br />
 2000000 rows exported at 2010-04-18 07:17:13, size 104 MB.<br />
 3000000 rows exported at 2010-04-18 07:17:22, size 156 MB.<br />
 3000000 rows exported at 2010-04-18 07:17:25, size 160 MB.<br />
 3570892 rows exported at 2010-04-18 07:17:28, size 189 MB.<br />
&nbsp; &nbsp; &nbsp; &nbsp;  output file emp_his_2.txt closed at 3570892 rows, size 189 MB.<br />
 3769140 rows exported at 2010-04-18 07:17:31, size 201 MB.<br />
&nbsp; &nbsp; &nbsp; &nbsp;  output file emp_his_1.txt closed at 3769140 rows, size 201 MB.
</p></blockquote>
<p>&nbsp; &nbsp; 由于需要查询一些系统视图来自动对大表进行切分, 需要授于源端用户查询系统视图的权限(SELECT CATALOG ROLE角色)即可, 下周一上传后就可以<a href="http://www.anysql.net/software/sqluldr.zip">下载</a>进行性能测试了. </p>
<h3  class="related_post_title">Relative Posts:</h3><ul class="related_post"><li>2010/06/24 -- <a href="http://www.anysql.net/tools/sqluldr2-charset-option.html" title="控制SQLULDR2的字符集">控制SQLULDR2的字符集</a> (1)</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/05/11 -- <a href="http://www.anysql.net/tools/sqluldr2-gui-version.html" title="图形版Oracle文本导出工具">图形版Oracle文本导出工具</a> (10)</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/02/08 -- <a href="http://www.anysql.net/tools/sqluldr2-form-display.html" title="SQLULDR2也可改善用户体验">SQLULDR2也可改善用户体验</a> (4)</li><li>2009/04/02 -- <a href="http://www.anysql.net/tools/sqluldr2_license.html" title="给SQLULDR2加上Key保护">给SQLULDR2加上Key保护</a> (6)</li><li>2010/05/12 -- <a href="http://www.anysql.net/tools/datacopy-gui-version.html" title="图形版Oracle数据迁移工具">图形版Oracle数据迁移工具</a> (11)</li><li>2010/04/19 -- <a href="http://www.anysql.net/developer/sqluldr2-windows-sdk-released.html" title="发布SQLULDR2 Windows SDK">发布SQLULDR2 Windows SDK</a> (2)</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/10 -- <a href="http://www.anysql.net/tools/datacopy-datasync-nls-lang.html" title="不同字符集的数据迁移">不同字符集的数据迁移</a> (6)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.anysql.net/tools/parallel-inside-sqluldr2.html/feed</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>DataCopy : Parallel Inside Now!</title>
		<link>http://www.anysql.net/tools/parallel-inside-datacopy.html</link>
		<comments>http://www.anysql.net/tools/parallel-inside-datacopy.html#comments</comments>
		<pubDate>Fri, 16 Apr 2010 05:50:46 +0000</pubDate>
		<dc:creator>anysql</dc:creator>
				<category><![CDATA[Tools]]></category>
		<category><![CDATA[Copy]]></category>
		<category><![CDATA[Data]]></category>

		<guid isPermaLink="false">http://www.anysql.net/?p=755</guid>
		<description><![CDATA[&#160; &#160; 通过的TabSplit程序的测试, 认为可以将TabSplit和DataCopy的源代码进行整合, 推出Parallel Inside的DataCopy程序, 使之成为Oracle数据库之间数据迁移的利器. &#160; &#160; 通过指定并行度(DEGREE)参数即可进行并行数据拷贝. datacopy user=&#8230;.. table1=sql_summary table2=sql_summary2 degree=2 &#160; &#160; 用1000万数据的一个表进行测试, 并行方式执行时屏幕输出如下. &#160; &#160; &#160; &#160; 0 rows processed at 2010-04-16 13:35:55. &#160; &#160; &#160; &#160; 0 rows processed at 2010-04-16 13:35:55. &#160; 1000000 rows processed at 2010-04-16 13:36:04. &#160; 1000000 rows processed at 2010-04-16 13:36:04. &#160; 2000000 [...]]]></description>
			<content:encoded><![CDATA[<p>&nbsp; &nbsp; 通过的<a href="http://www.anysql.net/tools/parallel-datacopy-datasync.html">TabSplit</a>程序的测试, 认为可以将TabSplit和DataCopy的源代码进行整合, 推出Parallel Inside的DataCopy程序, 使之成为Oracle数据库之间数据迁移的利器. </p>
<p>&nbsp; &nbsp; 通过指定并行度(DEGREE)参数即可进行并行数据拷贝. </p>
<blockquote class="prefont"><p>
datacopy user=&#8230;.. table1=sql_summary table2=sql_summary2 degree=2
</p></blockquote>
<p>&nbsp; &nbsp; 用1000万数据的一个表进行测试, 并行方式执行时屏幕输出如下. </p>
<blockquote class="prefont"><p>
&nbsp; &nbsp; &nbsp; &nbsp;  0 rows processed at 2010-04-16 13:35:55.<br />
&nbsp; &nbsp; &nbsp; &nbsp;  0 rows processed at 2010-04-16 13:35:55.<br />
&nbsp;  1000000 rows processed at 2010-04-16 13:36:04.<br />
&nbsp;  1000000 rows processed at 2010-04-16 13:36:04.<br />
&nbsp;  2000000 rows processed at 2010-04-16 13:36:14.<br />
&nbsp;  2000000 rows processed at 2010-04-16 13:36:14.<br />
&nbsp;  3000000 rows processed at 2010-04-16 13:36:24.<br />
&nbsp;  3000000 rows processed at 2010-04-16 13:36:24.<br />
&nbsp;  4000000 rows processed at 2010-04-16 13:36:34.<br />
&nbsp;  4000000 rows processed at 2010-04-16 13:36:34.<br />
&nbsp;  5000000 rows processed at 2010-04-16 13:36:43.<br />
&nbsp;  5000000 rows processed at 2010-04-16 13:36:43.<br />
&nbsp;  5207041 rows processed at 2010-04-16 13:36:45.<br />
&nbsp;  5378556 rows processed at 2010-04-16 13:36:47.
</p></blockquote>
<p>&nbsp; &nbsp; 由于需要查询一些系统视图来自动对大表进行切分, 需要授于源端用户查询系统视图的权限(SELECT CATALOG ROLE角色)即可, 欢迎<a href="http://www.anysql.net/software/datacopy.zip">下载</a>进行性能测试. </p>
<h3  class="related_post_title">Relative Posts:</h3><ul class="related_post"><li>2010/05/12 -- <a href="http://www.anysql.net/tools/datacopy-gui-version.html" title="图形版Oracle数据迁移工具">图形版Oracle数据迁移工具</a> (11)</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/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><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/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/15 -- <a href="http://www.anysql.net/tools/datacopy-utility.html" title="学习OCI之DataCopy程序">学习OCI之DataCopy程序</a> (5)</li><li>2009/11/07 -- <a href="http://www.anysql.net/tools/sqluldr2-mysql-data-migration-test.html" title="MySQL数据迁移测试">MySQL数据迁移测试</a> (8)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.anysql.net/tools/parallel-inside-datacopy.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>并行SQLULDR2和DataCopy操作</title>
		<link>http://www.anysql.net/tools/parallel-datacopy-datasync.html</link>
		<comments>http://www.anysql.net/tools/parallel-datacopy-datasync.html#comments</comments>
		<pubDate>Thu, 15 Apr 2010 03:05:39 +0000</pubDate>
		<dc:creator>anysql</dc:creator>
				<category><![CDATA[Tools]]></category>
		<category><![CDATA[Copy]]></category>
		<category><![CDATA[Data]]></category>
		<category><![CDATA[Export]]></category>

		<guid isPermaLink="false">http://www.anysql.net/?p=754</guid>
		<description><![CDATA[&#160; &#160; 在使用SQLULDR2或DataCopy处理几百GB的大表时, 会发现还是需要很长的时间, SQLUDLR2或DataCopy进程很容易将一个CPU跑满, 这时就会想到Oracle中的并行处理机制, 能不能用到这些工具中来. 在这之前, 我一直建议用人工并行, 指手工区分数据, 然后启动多个SQLULDR2或DataCopy进程, 以利用多CPU的资源, 人工并行使用起来的确不方便. &#160; &#160; 并行最关键的因素是如何对表进行切片, 人工切片就是人工并行, 自动切片就是自动并行. 如何自动切片呢? 为此设计了一个用ROWID来对表进行切片的程序(TabSplit), 使用方法如下. Usage: tabsplit user=&#8230; owner=&#8230; table=&#8230; [part=...] [degree=...] &#160; &#160; 在测试机上有一个EMP_HIS表, 比较大, 需要用并行度4来进行导出, 用TabSplit来切分一下看看吧. D:\&#62;tabsplit owner=scott table=emp_his degree=4 ROWID&#62;=&#8217;AAADAUAAEAAAE0xAAA&#8217; AND ROWID &#60; &#8216;AAADAUAAEAAAFUIEAA&#8217; ROWID&#62;=&#8217;AAADAUAAEAAAFUJAAA&#8217; AND ROWID &#60; &#8216;AAADAUAAEAAAHEIEAA&#8217; ROWID&#62;=&#8217;AAADAUAAEAAAHEJAAA&#8217; AND ROWID &#60; &#8216;AAADAUAAEAAAHiIEAA&#8217; ROWID&#62;=&#8217;AAADAUAAEAAAHiJAAA&#8217; AND [...]]]></description>
			<content:encoded><![CDATA[<p>&nbsp; &nbsp; 在使用SQLULDR2或DataCopy处理几百GB的大表时, 会发现还是需要很长的时间, SQLUDLR2或DataCopy进程很容易将一个CPU跑满, 这时就会想到Oracle中的并行处理机制, 能不能用到这些工具中来. 在这之前, 我一直建议用人工并行, 指手工区分数据, 然后启动多个SQLULDR2或DataCopy进程, 以利用多CPU的资源, 人工并行使用起来的确不方便. </p>
<p>&nbsp; &nbsp; 并行最关键的因素是如何对表进行切片, 人工切片就是人工并行, 自动切片就是自动并行. 如何自动切片呢? 为此设计了一个用ROWID来对表进行切片的程序(<a href="http://www.anysql.net/software/tabsplit.zip">TabSplit</a>), 使用方法如下. </p>
<blockquote class="prefont"><p>
Usage: tabsplit user=&#8230; owner=&#8230; table=&#8230; [part=...] [degree=...]
</p></blockquote>
<p>&nbsp; &nbsp; 在测试机上有一个EMP_HIS表, 比较大, 需要用并行度4来进行导出, 用TabSplit来切分一下看看吧. </p>
<blockquote class="prefont"><p>
D:\&gt;tabsplit owner=scott table=emp_his degree=4<br />
ROWID&gt;=&#8217;AAADAUAAEAAAE0xAAA&#8217; AND ROWID &lt; &#8216;AAADAUAAEAAAFUIEAA&#8217;<br />
ROWID&gt;=&#8217;AAADAUAAEAAAFUJAAA&#8217; AND ROWID &lt; &#8216;AAADAUAAEAAAHEIEAA&#8217;<br />
ROWID&gt;=&#8217;AAADAUAAEAAAHEJAAA&#8217; AND ROWID &lt; &#8216;AAADAUAAEAAAHiIEAA&#8217;<br />
ROWID&gt;=&#8217;AAADAUAAEAAAHiJAAA&#8217; AND ROWID &lt; &#8216;AAADAUAAEAAAH8IEAA&#8217;
</p></blockquote>
<p>&nbsp; &nbsp; 分别来查一下各片的记录数, 并作累计, 看看是不是与表的总记录数相等. </p>
<blockquote class="prefont"><p>
SQL&gt; select count(*) from scott.emp_his where<br />
&nbsp; 2&nbsp; ROWID&gt;=&#8217;AAADAUAAEAAAE0xAAA&#8217; AND ROWID &lt; &#8216;AAADAUAAEAAAFUIEAA&#8217;;</p>
<p>&nbsp; &nbsp; 307200</p>
<p>SQL&gt; select count(*) from scott.emp_his where<br />
&nbsp; 2&nbsp; ROWID&gt;=&#8217;AAADAUAAEAAAFUJAAA&#8217; AND ROWID &lt; &#8216;AAADAUAAEAAAHEIEAA&#8217;;</p>
<p>&nbsp; &nbsp; 309421</p>
<p>SQL&gt; select count(*) from scott.emp_his where<br />
&nbsp; 2&nbsp; ROWID&gt;=&#8217;AAADAUAAEAAAHEJAAA&#8217; AND ROWID &lt; &#8216;AAADAUAAEAAAHiIEAA&#8217;;</p>
<p>&nbsp; &nbsp; 309606</p>
<p>SQL&gt; select count(*) from scott.emp_his where<br />
&nbsp; 2&nbsp; ROWID&gt;=&#8217;AAADAUAAEAAAHiJAAA&#8217; AND ROWID &lt; &#8216;AAADAUAAEAAAH8IEAA&#8217;;</p>
<p>&nbsp; &nbsp; 253469</p>
<p>SQL&gt; select 307200+309421+309606+253469 from DUAL;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 1179696
</p></blockquote>
<p>&nbsp; &nbsp; 再查一下总的记录数, 看看是否相等. </p>
<blockquote class="prefont"><p>
SQL&gt; select count(*) from scott.emp_his;</p>
<p>&nbsp;  1179696
</p></blockquote>
<p>&nbsp; &nbsp; 可以看到结果是相等的, 这是第一步. 如果这个自动分片结果准确, 那么在Linux或Unix下, 启动并行SQLULDR2和DataCopy来处理数据也不是难事了. </p>
<h3  class="related_post_title">Relative Posts:</h3><ul class="related_post"><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/10 -- <a href="http://www.anysql.net/tools/datacopy-datasync-nls-lang.html" title="不同字符集的数据迁移">不同字符集的数据迁移</a> (6)</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><li>2010/03/15 -- <a href="http://www.anysql.net/tools/datacopy-utility.html" title="学习OCI之DataCopy程序">学习OCI之DataCopy程序</a> (5)</li><li>2009/04/02 -- <a href="http://www.anysql.net/tools/sqluldr2_license.html" title="给SQLULDR2加上Key保护">给SQLULDR2加上Key保护</a> (6)</li><li>2010/06/24 -- <a href="http://www.anysql.net/tools/sqluldr2-charset-option.html" title="控制SQLULDR2的字符集">控制SQLULDR2的字符集</a> (1)</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></ul>]]></content:encoded>
			<wfw:commentRss>http://www.anysql.net/tools/parallel-datacopy-datasync.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>不同字符集的数据迁移</title>
		<link>http://www.anysql.net/tools/datacopy-datasync-nls-lang.html</link>
		<comments>http://www.anysql.net/tools/datacopy-datasync-nls-lang.html#comments</comments>
		<pubDate>Sat, 10 Apr 2010 15:03:18 +0000</pubDate>
		<dc:creator>anysql</dc:creator>
				<category><![CDATA[Tools]]></category>
		<category><![CDATA[Charset]]></category>
		<category><![CDATA[Copy]]></category>
		<category><![CDATA[Data]]></category>
		<category><![CDATA[Replication]]></category>
		<category><![CDATA[Shareplex]]></category>

		<guid isPermaLink="false">http://www.anysql.net/?p=753</guid>
		<description><![CDATA[&#160; &#160; 受公司一同事的问题启发, 源库是US7ASCII, 目标库是UTF8, 如何将数据从源库拷贝到目标库. 这个问题其实是一个比较复杂的问题, 当源库客户端的字符集同为US7ASCII, 如果输入中文, 则数据保存的是ZHS16GBK字符集, 如果输入日文, 则为日文字符集, 同理, 如果输入的是韩文, 则是韩文字符集, 也就是同一个表中存放的文本, 可能有三种不同的字符集. 如果我们在记录层面无法确定是哪个国家的文字, 要导入到UTF8的目标库, 还是一件很复杂的事情. &#160; &#160; 如果US7ASCII数据库中的数据全部都是中文, 还是可以实现这一转换的, 转换的方法为, 用US7ASCII的客户端字符集取出数据, 然后以ZHS16GBK的客户端设置去导入到UTF8的目标库, 就可以完成从US7ASCII到UTF8的转换. &#160; &#160; 一般情况下只有一种字符集, 为了解决这个类型的数据迁移问题, 可以给DataCopy或DataSync的源库和目标库设定不同的客户端字符集. 其中, 连接源库的客户端字符集由NLS_LANG决定, 而连接目标库的客户端字符集可以由以下两个参数来控制. * charset = character set name of the target database. * ncharset= national character set name of the target [...]]]></description>
			<content:encoded><![CDATA[<p>&nbsp; &nbsp; 受公司一同事的问题启发, 源库是US7ASCII, 目标库是UTF8, 如何将数据从源库拷贝到目标库. 这个问题其实是一个比较复杂的问题, 当源库客户端的字符集同为US7ASCII, 如果输入中文, 则数据保存的是ZHS16GBK字符集, 如果输入日文, 则为日文字符集, 同理, 如果输入的是韩文, 则是韩文字符集, 也就是同一个表中存放的文本, 可能有三种不同的字符集. 如果我们在记录层面无法确定是哪个国家的文字, 要导入到UTF8的目标库, 还是一件很复杂的事情. </p>
<p>&nbsp; &nbsp; 如果US7ASCII数据库中的数据全部都是中文, 还是可以实现这一转换的, 转换的方法为, 用US7ASCII的客户端字符集取出数据, 然后以ZHS16GBK的客户端设置去导入到UTF8的目标库, 就可以完成从US7ASCII到UTF8的转换. </p>
<p>&nbsp; &nbsp; 一般情况下只有一种字符集, 为了解决这个类型的数据迁移问题, 可以给DataCopy或DataSync的源库和目标库设定不同的客户端字符集. 其中, 连接源库的客户端字符集由NLS_LANG决定, 而连接目标库的客户端字符集可以由以下两个参数来控制. </p>
<blockquote class="prefont"><p>
 * charset = character set name of the target database.<br />
 * ncharset= national character set name of the target database.
</p></blockquote>
<p>&nbsp; &nbsp; 如果没有设置这两个参数, 则源库和目标库的连接都使用NLS_LANG中的设置, 使用同一种字符集. 现在如果我们要将US7ASCII数据库中的中文数据导入到UTF8的目标库中, 可以使用以下命令. </p>
<blockquote class="prefont"><p>
datacopy user1=&#8230; user2=&#8230; table=&#8230; charset=ZHS16GBK ncharset=AL32UTF8
</p></blockquote>
<p>&nbsp; &nbsp; 如果那位朋友有这个需求, 可以测试一下, 这样的转换能不能准确无误地工作, 希望这个功能, 可以为不同字符集的数据迁移带来方便. </p>
<h3  class="related_post_title">Relative Posts:</h3><ul class="related_post"><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/05/12 -- <a href="http://www.anysql.net/tools/datacopy-gui-version.html" title="图形版Oracle数据迁移工具">图形版Oracle数据迁移工具</a> (11)</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/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><li>2009/06/09 -- <a href="http://www.anysql.net/tools/copydata-perl-scripts.html" title="copydata异构数据拷贝">copydata异构数据拷贝</a> (6)</li><li>2010/06/24 -- <a href="http://www.anysql.net/tools/sqluldr2-charset-option.html" title="控制SQLULDR2的字符集">控制SQLULDR2的字符集</a> (1)</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></ul>]]></content:encoded>
			<wfw:commentRss>http://www.anysql.net/tools/datacopy-datasync-nls-lang.html/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>DataSync之物化视图日志助手</title>
		<link>http://www.anysql.net/tools/datasync-mview-log-creation.html</link>
		<comments>http://www.anysql.net/tools/datasync-mview-log-creation.html#comments</comments>
		<pubDate>Fri, 09 Apr 2010 16:27:56 +0000</pubDate>
		<dc:creator>anysql</dc:creator>
				<category><![CDATA[Tools]]></category>
		<category><![CDATA[Data]]></category>
		<category><![CDATA[Replication]]></category>
		<category><![CDATA[Shareplex]]></category>

		<guid isPermaLink="false">http://www.anysql.net/?p=752</guid>
		<description><![CDATA[&#160; &#160; 已有网友开始测试DataSync了, 先期在20张表上做测试, 这个测试是在正合场合使用的, 将运行在小型机上的数据准实时地拷到报表数据库中, 以分担小型机上的查询压力, 目前运行良好. 客户在享受到体验后, 要求另一个用户的几百张表, 也这样处理, 比较忙的表并不多, DataSync应当可以完成同步的任务, 但准备工作却不轻, 目前的源库的数据量有30GB. &#160; &#160; 为了解决这个问题, 推出了物化视图助手程序(mviewlog), 可以生成准备工作中所需的脚本. 使用方法如下: D:\&#62;mviewlog DataSync: Oracle Data Replication Utility, Release 3.0.1 (c) Copyright Lou Fangxin (AnySQL.net) 2010, all rights reserved. Usage: mviewlog user/pass@tns &#160; &#160; 以Oracle的SCOTT用户为例, 第一次运行时, 给出了生成物化视图日志的语句, 主要针对还没有建物化视图的并且有主键定义的表. # Tables can be replicated by datasync: &#160; [...]]]></description>
			<content:encoded><![CDATA[<p>&nbsp; &nbsp; 已有网友开始测试DataSync了, 先期在20张表上做测试, 这个测试是在正合场合使用的, 将运行在小型机上的数据准实时地拷到报表数据库中, 以分担小型机上的查询压力, 目前运行良好. 客户在享受到体验后, 要求另一个用户的几百张表, 也这样处理, 比较忙的表并不多, DataSync应当可以完成同步的任务, 但准备工作却不轻, 目前的源库的数据量有30GB. </p>
<p>&nbsp; &nbsp; 为了解决这个问题, 推出了物化视图助手程序(<a href="http://www.anysql.net/software/mviewlog.zip">mviewlog</a>), 可以生成准备工作中所需的脚本. 使用方法如下:</p>
<blockquote class="prefont"><p>
D:\&gt;mviewlog<br />
DataSync: Oracle Data Replication Utility, Release 3.0.1<br />
(c) Copyright Lou Fangxin (AnySQL.net) 2010, all rights reserved.</p>
<p>Usage: mviewlog user/pass@tns
</p></blockquote>
<p>&nbsp; &nbsp; 以Oracle的SCOTT用户为例, 第一次运行时, 给出了生成物化视图日志的语句, 主要针对还没有建物化视图的并且有主键定义的表. </p>
<blockquote class="prefont"><p>
# Tables can be replicated by datasync:<br />
&nbsp; CREATE MATERIALIZED VIEW LOG ON EMP WITH SEQUENCE, PRIMARY KEY;<br />
&nbsp; CREATE MATERIALIZED VIEW LOG ON DEPT WITH SEQUENCE, PRIMARY KEY;
</p></blockquote>
<p>&nbsp; &nbsp; 建好物化视图日志后, 再运行一次, 就得到了其他所有的准备脚本. </p>
<blockquote class="prefont"><p>
# Log tables without proper index:<br />
&nbsp; CREATE INDEX I_OG$_DEPT_IND ON MLOG$_DEPT (SEQUENCE$$) ONLINE;<br />
&nbsp; CREATE INDEX I_OG$_EMP_IND ON MLOG$_EMP (SEQUENCE$$) ONLINE;</p>
<p># Configuration file example of datasync utility:<br />
&nbsp; DEPT&nbsp;  # DEPTNO&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; # MLOG$_DEPT # DEPT<br />
&nbsp; EMP&nbsp; &nbsp; # EMPNO&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  # MLOG$_EMP&nbsp; # EMP</p>
<p># Command for datacopy utility:<br />
&nbsp; datacopy user1=scott/tiger user2=&lt;user2&gt; table=DEPT<br />
&nbsp; datacopy user1=scott/tiger user2=&lt;user2&gt; table=EMP
</p></blockquote>
<p>&nbsp; &nbsp; 这三部份内容分别为: 为日志表建立索引的SQL语句, DataSync的配置文件内容, 及DataCopy初始化数据的命令. 使用DataSync同步数据的步骤为, 首先在源库上建立物化视图日志, 其次为建立特化日志表的索引, 第三步使用DataCopy从源库初始化数据到目标库(表结构需要自行建立), 最后一步是使用DataSync进行增量同步. </p>
<p>&nbsp; &nbsp; 虽然有Shareplex及Golden Gate可以选择, 并且它们很先进, 但如果源库的写压力不是很高, 并且不想用牛刀来搞复制, 可以试试DataSync, AnySQL一直努力为DBA创造使用方便的工具及脚本. </p>
<h3  class="related_post_title">Relative Posts:</h3><ul class="related_post"><li>2010/04/10 -- <a href="http://www.anysql.net/tools/datacopy-datasync-nls-lang.html" title="不同字符集的数据迁移">不同字符集的数据迁移</a> (6)</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/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/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><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/09 -- <a href="http://www.anysql.net/tools/copydata-perl-scripts.html" title="copydata异构数据拷贝">copydata异构数据拷贝</a> (6)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.anysql.net/tools/datasync-mview-log-creation.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Oracle中轻松复制SCOTT.EMP</title>
		<link>http://www.anysql.net/tools/datasync-data-replication.html</link>
		<comments>http://www.anysql.net/tools/datasync-data-replication.html#comments</comments>
		<pubDate>Fri, 26 Mar 2010 16:03:36 +0000</pubDate>
		<dc:creator>anysql</dc:creator>
				<category><![CDATA[Tools]]></category>
		<category><![CDATA[Data]]></category>
		<category><![CDATA[Replication]]></category>
		<category><![CDATA[Shareplex]]></category>

		<guid isPermaLink="false">http://www.anysql.net/?p=749</guid>
		<description><![CDATA[&#160; &#160; 这里要介绍一个在DataCopy基础上开发出来的OCI程序, 可以基于物化视图日志或触发器抓捉的变化数据进行数据同步, 先暂时称这个OCI程序为DataSync, 使用它可以实现简单的一对一复制, 或一对多, 甚至于多对多的数据复制. 虽然不能想Shareplex之类的基于日志, 并保证事务顺序, 但在数据迁移, 历史数据归档中, 还是可以发挥很大的作用. 先来看一下命令行帮助吧. DataSync: Oracle Data Replication Utility, Release 3.0.1 (c) Copyright Lou Fangxin (AnySQL.net) 2010, all rights reserved. Usage: datasync keyword=value [,keyword=value,...] Valid Keywords: &#160; user&#160; &#160; = username/password@tnsname for source and target. &#160; user1&#160; = username/password@tnsname for source database. &#160; user2&#160; = [...]]]></description>
			<content:encoded><![CDATA[<p>&nbsp; &nbsp; 这里要介绍一个在DataCopy基础上开发出来的OCI程序, 可以基于物化视图日志或触发器抓捉的变化数据进行数据同步, 先暂时称这个OCI程序为<a href="http://www.anysql.net/software/datasync.zip">DataSync</a>, 使用它可以实现简单的一对一复制, 或一对多, 甚至于多对多的数据复制. 虽然不能想Shareplex之类的基于日志, 并保证事务顺序, 但在数据迁移, 历史数据归档中, 还是可以发挥很大的作用. 先来看一下命令行帮助吧.</p>
<blockquote class="prefont"><p>
DataSync: Oracle Data Replication Utility, Release 3.0.1<br />
(c) Copyright Lou Fangxin (AnySQL.net) 2010, all rights reserved.</p>
<p>Usage: datasync keyword=value [,keyword=value,...]</p>
<p>Valid Keywords:<br />
&nbsp;  user&nbsp; &nbsp; = username/password@tnsname for source and target.<br />
&nbsp;  user1&nbsp;  = username/password@tnsname for source database.<br />
&nbsp;  user2&nbsp;  = username/password@tnsname for target database.<br />
 * wait&nbsp; &nbsp; = wait time in microsecond after each array.<br />
&nbsp;  array&nbsp;  = array fetch size<br />
&nbsp;  long&nbsp; &nbsp; = maximum size for long, long raw, CLOB, BLOB columns.<br />
 * crypt&nbsp;  = encrypt the connection info only, no data copy (YES/NO).<br />
&nbsp;  parfile = read command option from parameter file<br />
&nbsp;  config&nbsp; = config files.<br />
 * dbid&nbsp; &nbsp; = target database flag column of log table.<br />
 * dblist&nbsp; = all target database flag columns of log table.<br />
 * init&nbsp; &nbsp; = fix message out of sync before replication(YES).<br />
&nbsp;  log&nbsp; &nbsp;  = log file name for screen messages.</p>
<p>Notes:<br />
&nbsp;  datasync user1=scott/tiger user2=scott/tiger config=scott.cfg init=yes</p>
<p>Config:<br />
&nbsp;  Source # Primary Key # Log Table # Target # Conflict # Filler # Where
</p></blockquote>
<p>&nbsp; &nbsp; 接下来我们来实现两个数据库(DB1,DB2)之间一个表(SCOTT.EMP)的同步, 要求将DB1的变更复制到DB2上, 使用DataSync来实现其实是非常简单的. </p>
<p>&nbsp; &nbsp; 1, 在DB1的表(SCOTT.EMP)上创建物化视图, 并为物化视图的表创建一个索引, 以优化数据访问.</p>
<blockquote class="prefont"><p>
CREATE MATERILIZED VIEW LOG ON EMP WITH SEQUENCE, PRIMARY KEY;<br />
CREATE INDEX MLOG$_EMP_IX1 ON MLOG$_EMP (SEQUENCE$$);
</p></blockquote>
<p>&nbsp; &nbsp; 2, 准备一个配置文件(scott.cfg), 如下所示.</p>
<blockquote class="prefont"><p>
D:\&gt;type scott.cfg<br />
EMP&nbsp; #EMPNO&nbsp;  #MLOG$_EMP&nbsp; #EMP
</p></blockquote>
<p>&nbsp; &nbsp; 3, 使用<a href="http://www.anysql.net/software/datacopy.zip">DataCopy</a>进行数据初始化, DB2上的表结构需要自行创建, DataCopy并不拷贝表结构信息.</p>
<blockquote class="prefont"><p>
datacopy user1=scott/tiger@db1 user2=scott/tiger@db2 table=emp
</p></blockquote>
<p>&nbsp; &nbsp; 4, 启动DataSync数据复制后台进程.</p>
<blockquote class="prefont"><p>
datasync user1=scott/tiger@db1 user2=scott/tiger@db2 config=scott.cfg
</p></blockquote>
<p>&nbsp; &nbsp; 5, 在源端做一些数据操作, 看看操作是不是被比较实时(2秒左右)地复制到DB2数据库中?</p>
<blockquote class="prefont"><p>
update emp set comm = nvl(comm,0) + 200;
</p></blockquote>
<p>&nbsp; &nbsp; 如果你的数据库不是很忙, 又不想花大钱去引入Shareplex之类的高价软件, 并用对事务没有要求, 是可以用用DataSync的. 备注: 非注册版复制的频率为5分钟, 支持大约一秒7次变更以内的操作. </p>
<h3  class="related_post_title">Relative Posts:</h3><ul class="related_post"><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/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/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><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/09 -- <a href="http://www.anysql.net/tools/copydata-perl-scripts.html" title="copydata异构数据拷贝">copydata异构数据拷贝</a> (6)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.anysql.net/tools/datasync-data-replication.html/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>DataCopy选项: conflict和filler</title>
		<link>http://www.anysql.net/tools/datacopy-conflict-filler-options.html</link>
		<comments>http://www.anysql.net/tools/datacopy-conflict-filler-options.html#comments</comments>
		<pubDate>Sat, 20 Mar 2010 07:23:31 +0000</pubDate>
		<dc:creator>anysql</dc:creator>
				<category><![CDATA[Tools]]></category>
		<category><![CDATA[Copy]]></category>
		<category><![CDATA[Data]]></category>

		<guid isPermaLink="false">http://www.anysql.net/?p=748</guid>
		<description><![CDATA[&#160; &#160; 现在下载的DataCopy版本中多出了两个选项, 他们是: conflict(冲突解决)和filler(过滤列). 命令行中的简单解释如下所示, 不能使人很清楚了解其函义, 需要再特别说明一下. * conflict= conflict columns for update on target table. * filler&#160; = filler columns (exclude columns) for target table. &#160; &#160; conflict用于简单解决双向同步时的冲突, 我们可以在被复制的表上加上冲突解决列, 通常是时间或单向增长的列, 在同步时, 更新时要求源端的值一定要大于目标端的值, 以便在双向同步时保留最新的列. 比如在员工表(SCOTT.EMP)中增加一列最后修改时间(LAST_MODIFY), 则可以在DataCopy同步时, 加入conflict参数, 如下所示. datacopy &#8230; table=emp sync=update conflict=last_modify unique=empno &#160; &#160; 在这个设置下, 在目标端同步时用的更新SQL中就会加入如下WHERE条件, 对于DELETE操作也一样会加入同样的WHERE条件. 当端源的最后修改时间比目标端小时, 记录才会被更新掉. UPDATE EMP SET [...]]]></description>
			<content:encoded><![CDATA[<p>&nbsp; &nbsp; 现在下载的<a href="http://www.anysql.net/software/datacopy.zip">DataCopy</a>版本中多出了两个选项, 他们是: conflict(冲突解决)和filler(过滤列). 命令行中的简单解释如下所示, 不能使人很清楚了解其函义, 需要再特别说明一下. </p>
<blockquote class="prefont"><p>
 * conflict= conflict columns for update on target table.<br />
 * filler&nbsp; = filler columns (exclude columns) for target table.
</p></blockquote>
<p>&nbsp; &nbsp; conflict用于简单解决双向同步时的冲突, 我们可以在被复制的表上加上冲突解决列, 通常是时间或单向增长的列, 在同步时, 更新时要求源端的值一定要大于目标端的值, 以便在双向同步时保留最新的列. 比如在员工表(SCOTT.EMP)中增加一列最后修改时间(LAST_MODIFY), 则可以在DataCopy同步时, 加入conflict参数, 如下所示. </p>
<blockquote class="prefont"><p>
datacopy &#8230; table=emp sync=update conflict=last_modify unique=empno
</p></blockquote>
<p>&nbsp; &nbsp; 在这个设置下, 在目标端同步时用的更新SQL中就会加入如下WHERE条件, 对于DELETE操作也一样会加入同样的WHERE条件. 当端源的最后修改时间比目标端小时, 记录才会被更新掉. </p>
<blockquote class="prefont"><p>
UPDATE EMP SET ENAME=:ENAME, &#8230;&#8230;<br />
WHERE EMPNO=:EMPNO AND LAST_MODIFY &lt;= :LAST_MODIFY
</p></blockquote>
<p>&nbsp; &nbsp; filler用于快速去掉一些不想同步的列, 选项名称取自sqlldr工具, 这个选项只影响INSERT(包括Direct Path Load)及UPDATE语句. 假如我们不想同步员工表(SCOTT.EMP)的SAL和COMM字段, 则可以用FILLER来去掉这两个字段, 否则需改写源端SQL语句才能实现. </p>
<blockquote class="prefont"><p>
datacopy &#8230; table=emp sync=update unique=empno filler=sal,comm
</p></blockquote>
<p>&nbsp; &nbsp; 正在思考如何加入一些公共性的需求到这个小工具里, 如果你有什么想法, 可以告诉我. 另外进行了详细的测试, 目前的程序在Direct Path Load时不能处理ROWID/UROWID类型和TIMESTAMP WITH LOCAL TIME ZONE类型, 后者还会使程序中途退出运行.</p>
<h3  class="related_post_title">Relative Posts:</h3><ul class="related_post"><li>2010/05/12 -- <a href="http://www.anysql.net/tools/datacopy-gui-version.html" title="图形版Oracle数据迁移工具">图形版Oracle数据迁移工具</a> (11)</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/03/16 -- <a href="http://www.anysql.net/tools/datacopy-data-sync-mode.html" title="用DataCopy进行Oracle数据同步">用DataCopy进行Oracle数据同步</a> (6)</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/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/15 -- <a href="http://www.anysql.net/tools/datacopy-utility.html" title="学习OCI之DataCopy程序">学习OCI之DataCopy程序</a> (5)</li><li>2009/11/07 -- <a href="http://www.anysql.net/tools/sqluldr2-mysql-data-migration-test.html" title="MySQL数据迁移测试">MySQL数据迁移测试</a> (8)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.anysql.net/tools/datacopy-conflict-filler-options.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>用DataCopy进行Oracle数据同步</title>
		<link>http://www.anysql.net/tools/datacopy-data-sync-mode.html</link>
		<comments>http://www.anysql.net/tools/datacopy-data-sync-mode.html#comments</comments>
		<pubDate>Tue, 16 Mar 2010 11:59:54 +0000</pubDate>
		<dc:creator>anysql</dc:creator>
				<category><![CDATA[Tools]]></category>
		<category><![CDATA[Copy]]></category>
		<category><![CDATA[Data]]></category>

		<guid isPermaLink="false">http://www.anysql.net/?p=747</guid>
		<description><![CDATA[&#160; &#160; DataCopy(下载)并不一定是指从源端取得数据, 然后INSERT到目标端, 插入只是一个默认操作而已, 其实在目标端还可以做UPDATE或DELETE操作. 对于INSERT可以使用Direct Path Load的方式, 速度可以比得上CTAS, 其他的操作方式, 则只能实现Array DML了. 在日常的DBA工作中, 还是会有一些数据同步的需求的, 这时DataCopy应当可以减轻你的工作量. &#160; &#160; 在DataCopy中增加了两个命令行选项, 以支持不同的操作方式. * sync&#160; &#160; = sync mode (INSERT,UPDATE,DELETE,UPDINS,INSUPD,DELINS). * unique&#160; = primary key or unique key columns of target table. &#160; &#160; 除INSERT操作外(SYNC选项的默认值), UPDATE/DELETE操作都需要指定目标端表的主键列, 以用在WHERE条件中. UPDATE操作会根据指定的主键列去更新非主键列的值(SYNC=UPDATE), 而DELETE操作则直接在目标端根据主键列删除记录(SYNC=DELETE). datacopy user1=&#8230; user2=&#8230; table1=emp table2=emp_sync sync=delete unique=empno datacopy user1=&#8230; [...]]]></description>
			<content:encoded><![CDATA[<p>&nbsp; &nbsp; DataCopy(<a href="http://www.anysql.net/software/datacopy.zip">下载</a>)并不一定是指从源端取得数据, 然后INSERT到目标端, 插入只是一个默认操作而已, 其实在目标端还可以做UPDATE或DELETE操作. 对于INSERT可以使用Direct Path Load的方式, 速度可以比得上CTAS, 其他的操作方式, 则只能实现Array DML了. 在日常的DBA工作中, 还是会有一些数据同步的需求的, 这时DataCopy应当可以减轻你的工作量.</p>
<p>&nbsp; &nbsp; 在DataCopy中增加了两个命令行选项, 以支持不同的操作方式. </p>
<blockquote class="prefont"><p>
 * sync&nbsp; &nbsp; = sync mode (INSERT,UPDATE,DELETE,UPDINS,INSUPD,DELINS).<br />
 * unique&nbsp; = primary key or unique key columns of target table.
</p></blockquote>
<p>&nbsp; &nbsp; 除INSERT操作外(SYNC选项的默认值), UPDATE/DELETE操作都需要指定目标端表的主键列, 以用在WHERE条件中. UPDATE操作会根据指定的主键列去更新非主键列的值(SYNC=UPDATE), 而DELETE操作则直接在目标端根据主键列删除记录(SYNC=DELETE). </p>
<blockquote class="prefont"><p>
datacopy user1=&#8230; user2=&#8230; table1=emp table2=emp_sync sync=delete unique=empno<br />
datacopy user1=&#8230; user2=&#8230; table1=emp table2=emp_sync sync=update unique=empno
</p></blockquote>
<p>&nbsp; &nbsp; 根据前面的三种基本操作还可以延伸出来额外的三种操作, 在目标端用PL/SQL代码来实现, 第一种是UPDATE-INSERT方式, 在目标端先进行UPDATE, 如果更新0条记录, 则进行INSERT. 这种方式适合于以UPDATE为主的数据同步.</p>
<blockquote class="prefont"><p>
datacopy user1=&#8230; user2=&#8230; table1=emp table2=emp_sync sync=updins unique=empno
</p></blockquote>
<p>&nbsp; &nbsp; 第二种是INSERT-UPDATE方式, 在目标端先进行INSERT, 如果主键冲突, 则进行UPDATE. 这种方式适合于以INSERT为主的数据同步.</p>
<blockquote class="prefont"><p>
datacopy user1=&#8230; user2=&#8230; table1=emp table2=emp_sync sync=insupd unique=empno
</p></blockquote>
<p>&nbsp; &nbsp; 第三种是DELETE-INSERT方式, 在目标端先进行DELETE, 再进行INSERT操作. 这种方式的执行成本会比较高, 但逻辑简单.</p>
<blockquote class="prefont"><p>
datacopy user1=&#8230; user2=&#8230; table1=emp table2=emp_sync sync=delins unique=empno
</p></blockquote>
<p>&nbsp; &nbsp; 后面的三种方式, 如果要用PL/SQL来实现Array接口, 代码还是有一点复杂的, 如果要实现动态SQL的处理, 估计更复杂. 并且大量的循环, 用外部C写的程会更有效率. </p>
<h3  class="related_post_title">Relative Posts:</h3><ul class="related_post"><li>2010/05/12 -- <a href="http://www.anysql.net/tools/datacopy-gui-version.html" title="图形版Oracle数据迁移工具">图形版Oracle数据迁移工具</a> (11)</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/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/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/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/15 -- <a href="http://www.anysql.net/tools/datacopy-utility.html" title="学习OCI之DataCopy程序">学习OCI之DataCopy程序</a> (5)</li><li>2009/11/07 -- <a href="http://www.anysql.net/tools/sqluldr2-mysql-data-migration-test.html" title="MySQL数据迁移测试">MySQL数据迁移测试</a> (8)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.anysql.net/tools/datacopy-data-sync-mode.html/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>学习OCI之DataCopy程序</title>
		<link>http://www.anysql.net/tools/datacopy-utility.html</link>
		<comments>http://www.anysql.net/tools/datacopy-utility.html#comments</comments>
		<pubDate>Mon, 15 Mar 2010 04:44:17 +0000</pubDate>
		<dc:creator>anysql</dc:creator>
				<category><![CDATA[Tools]]></category>
		<category><![CDATA[Copy]]></category>
		<category><![CDATA[Data]]></category>
		<category><![CDATA[Export]]></category>
		<category><![CDATA[Import]]></category>
		<category><![CDATA[Tool]]></category>

		<guid isPermaLink="false">http://www.anysql.net/?p=746</guid>
		<description><![CDATA[&#160; &#160; 周末继续看了看OCI接口的资料, 着重于以前没有搞懂的LONG/LOB类型处理接口, 写了一个DataCopy程序来作为学习的结果. DataCopy可以在两个Oracle库之间以比较快的速度拷贝数据, 这个速度至少要比EXP/IMP来迁移数据来得快, 并且支持最大100MB的LONG/LONG RAW/CLOB/BLOB值, 一般情况下够用了吧. &#160; &#160; 没有说明文档, 只有命令行帮助. DataCopy: Fast Oracle Data Copy (Demo Version), Release 2.0.1 (c) Copyright Lou Fangxin (AnySQL.net) 2010, all rights reserved. Usage: datacopy keyword=value [,keyword=value,...] Valid Keywords: &#160; user1&#160; = username/password@tnsname for source database. &#160; user2&#160; = username/password@tnsname for target database. &#160; table&#160; = [...]]]></description>
			<content:encoded><![CDATA[<p>&nbsp; &nbsp; 周末继续看了看OCI接口的资料, 着重于以前没有搞懂的LONG/LOB类型处理接口, 写了一个<a href="http://www.anysql.net/software/datacopy.zip">DataCopy</a>程序来作为学习的结果. DataCopy可以在两个Oracle库之间以比较快的速度拷贝数据, 这个速度至少要比EXP/IMP来迁移数据来得快, 并且支持最大100MB的LONG/LONG RAW/CLOB/BLOB值, 一般情况下够用了吧.</p>
<p>&nbsp; &nbsp;  没有说明文档, 只有命令行帮助. </p>
<blockquote class="prefont"><p>
DataCopy: Fast Oracle Data Copy (Demo Version), Release 2.0.1<br />
(c) Copyright Lou Fangxin (AnySQL.net) 2010, all rights reserved.</p>
<p>Usage: datacopy keyword=value [,keyword=value,...]</p>
<p>Valid Keywords:<br />
&nbsp;  user1&nbsp;  = username/password@tnsname for source database.<br />
&nbsp;  user2&nbsp;  = username/password@tnsname for target database.<br />
&nbsp;  table&nbsp;  = table name for both source and target.<br />
&nbsp;  tables&nbsp; = table name list for both source and target.<br />
&nbsp;  table1&nbsp; = source table name to query data from.<br />
&nbsp;  table2&nbsp; = target table name to insert data into.<br />
&nbsp;  query1&nbsp; = select SQL for source database.<br />
&nbsp;  query2&nbsp; = insert SQL for target database.<br />
 * wait&nbsp; &nbsp; = wait time in microsecond after each array.<br />
&nbsp;  read&nbsp; &nbsp; = set DB_FILE_MULTIBLOCK_READ_COUNT at session level<br />
&nbsp;  sort&nbsp; &nbsp; = set SORT_AREA_SIZE at session level (UNIT:MB)<br />
&nbsp;  hash&nbsp; &nbsp; = set HASH_AREA_SIZE at session level (UNIT:MB)<br />
&nbsp;  serial&nbsp; = set _serial_direct_read to TRUE at session level<br />
&nbsp;  array&nbsp;  = array fetch size<br />
&nbsp;  rows&nbsp; &nbsp; = print log information for every given rows.<br />
&nbsp;  long&nbsp; &nbsp; = maximum size for long, long raw, CLOB, BLOB columns.<br />
 * crypt&nbsp;  = encrypt the connection info only, no data copy (YES/NO).<br />
&nbsp;  parfile = read command option from parameter file<br />
 * direct&nbsp; = direct mode (YES/NO).<br />
 * nolog&nbsp;  = no archive log for direct mode (YES/NO).<br />
 * parallel= allow parallel load for direct mode (YES/NO).<br />
 * sync&nbsp; &nbsp; = sync mode (INSERT,UPDATE,DELETE,UPDINS,INSUPD,DELINS).<br />
 * unique&nbsp; = primary key or unique key columns of target table.<br />
&nbsp;  log&nbsp; &nbsp;  = log file name for screen messages.</p>
<p>Notes:<br />
&nbsp;  datacopy user1=scott/tiger user2=scott/tiger table=emp<br />
&nbsp;  datacopy user1=scott/tiger user2=scott/tiger table=emp direct=yes<br />
&nbsp;  datacopy user1=scott/tiger user2=scott/tiger table1=emp table2=emp_his
</p></blockquote>
<p>&nbsp; &nbsp;  数据拷贝中, 目标端数据库并不一定是INSERT操作, 也可以是UPDATE或DELETE, 或一段PL/SQL代码, 默认情况下是INSERT而已. 并且也只是实现了OCI的Array操作接口, 在真实情况下有什么实用价值, 就让各自去延伸了. </p>
<h3  class="related_post_title">Relative Posts:</h3><ul class="related_post"><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/05/12 -- <a href="http://www.anysql.net/tools/datacopy-gui-version.html" title="图形版Oracle数据迁移工具">图形版Oracle数据迁移工具</a> (11)</li><li>2010/04/19 -- <a href="http://www.anysql.net/developer/sqluldr2-windows-sdk-released.html" title="发布SQLULDR2 Windows SDK">发布SQLULDR2 Windows SDK</a> (2)</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/10 -- <a href="http://www.anysql.net/tools/datacopy-datasync-nls-lang.html" title="不同字符集的数据迁移">不同字符集的数据迁移</a> (6)</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><li>2009/06/09 -- <a href="http://www.anysql.net/tools/copydata-perl-scripts.html" title="copydata异构数据拷贝">copydata异构数据拷贝</a> (6)</li><li>2009/04/02 -- <a href="http://www.anysql.net/tools/sqluldr2_license.html" title="给SQLULDR2加上Key保护">给SQLULDR2加上Key保护</a> (6)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.anysql.net/tools/datacopy-utility.html/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>出售AUL固定许可证</title>
		<link>http://www.anysql.net/aulmydul/aul-fixed-license-mode.html</link>
		<comments>http://www.anysql.net/aulmydul/aul-fixed-license-mode.html#comments</comments>
		<pubDate>Sun, 10 Jan 2010 11:58:43 +0000</pubDate>
		<dc:creator>anysql</dc:creator>
				<category><![CDATA[AUL/MyDUL]]></category>
		<category><![CDATA[Data]]></category>
		<category><![CDATA[Recovery]]></category>

		<guid isPermaLink="false">http://www.anysql.net/?p=731</guid>
		<description><![CDATA[&#160; &#160; 每次启动AUL都需要不同的许可证, 这种方式已经持续了好几年了, 不用说别人早已觉得烦了, 连我自已也觉得有点烦, 既然这样, 就将它改掉吧. 从Windows版本开始, 最新的AUL在同一台机器上, 注册码将不会再改变, 保持固定, 称之为固定许可证. &#160; &#160; 例如, 在我的笔记本上, 每次启动AUL都得到如下输出. Register Code: DETO-NODT-JETT-DNMX-DDCN AUL : AnySQL UnLoader(MyDUL) for Oracle 8/8i/9i/10g/11g, release 5.1.1 (C) Copyright Lou Fangxin 2005-2010 (AnySQL.net), all rights reserved. AUL&#62; &#160; &#160; 这里所说的同一台机器, 并不是指物理的机器, 即使只是操作系统的重装, 也有可能让注册码发生更改, 从而需要新的许可证, 固定许可证方式将对AUL的用户更加有利, 其他平台的AUL也将一步一步进行许可证改造. &#160; &#160; 在固定许可证模式下, 你购买AUL时, 不只是得到了一次服务, 更重要的是你真正得到达了一个长期可用的许可证. [...]]]></description>
			<content:encoded><![CDATA[<p>&nbsp; &nbsp; 每次启动AUL都需要不同的许可证, 这种方式已经持续了好几年了, 不用说别人早已觉得烦了, 连我自已也觉得有点烦, 既然这样, 就将它改掉吧. 从Windows版本开始, 最新的AUL在同一台机器上, 注册码将不会再改变, 保持固定, 称之为固定许可证. </p>
<p>&nbsp; &nbsp; 例如, 在我的笔记本上, 每次启动AUL都得到如下输出. </p>
<blockquote class="prefont"><p>
Register Code: DETO-NODT-JETT-DNMX-DDCN<br />
AUL : AnySQL UnLoader(MyDUL) for Oracle 8/8i/9i/10g/11g, release 5.1.1</p>
<p>(C) Copyright Lou Fangxin 2005-2010 (AnySQL.net), all rights reserved.</p>
<p>AUL&gt;
</p></blockquote>
<p>&nbsp; &nbsp; 这里所说的同一台机器, 并不是指物理的机器, 即使只是操作系统的重装, 也有可能让注册码发生更改, 从而需要新的许可证, 固定许可证方式将对AUL的用户更加有利, 其他平台的AUL也将一步一步进行许可证改造. </p>
<p>&nbsp; &nbsp; 在固定许可证模式下, 你购买AUL时, 不只是得到了一次服务, 更重要的是你真正得到达了一个长期可用的许可证. </p>
<h3  class="related_post_title">Relative Posts:</h3><ul class="related_post"><li>2009/06/09 -- <a href="http://www.anysql.net/aulmydul/aul-bugs-found-200906.html" title="AUL程序上的两处缺陷">AUL程序上的两处缺陷</a> (1)</li><li>2009/04/26 -- <a href="http://www.anysql.net/aulmydul/aul_customer_world_map.html" title="拯救数据, 拯救地球?">拯救数据, 拯救地球?</a> (9)</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/07/06 -- <a href="http://www.anysql.net/aulmydul/tuning_update_sql_01.html" title="连错库误删100多张表">连错库误删100多张表</a> (9)</li><li>2008/04/16 -- <a href="http://www.anysql.net/aulmydul/qq_by_mobile_phone.html" title="AUL Sybase数据恢复工具">AUL Sybase数据恢复工具</a> (4)</li><li>2008/03/30 -- <a href="http://www.anysql.net/tools/buy_lenovo_ibm_thinkpad.html" title="AUL也走品牌路线?">AUL也走品牌路线?</a> (2)</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>2009/11/20 -- <a href="http://www.anysql.net/aulmydul/aul-fail-oracle-bug-7705591.html" title="首次AUL恢复失败案例">首次AUL恢复失败案例</a> (1)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.anysql.net/aulmydul/aul-fixed-license-mode.html/feed</wfw:commentRss>
		<slash:comments>4</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>copydata异构数据拷贝</title>
		<link>http://www.anysql.net/tools/copydata-perl-scripts.html</link>
		<comments>http://www.anysql.net/tools/copydata-perl-scripts.html#comments</comments>
		<pubDate>Wed, 10 Jun 2009 06:41:25 +0000</pubDate>
		<dc:creator>anysql</dc:creator>
				<category><![CDATA[Tools]]></category>
		<category><![CDATA[Copy]]></category>
		<category><![CDATA[Data]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[Replication]]></category>

		<guid isPermaLink="false">http://www.anysql.net/wordpress/uncategorized/copydata%e5%bc%82%e6%9e%84%e6%95%b0%e6%8d%ae%e6%8b%b7%e8%b4%9d.html</guid>
		<description><![CDATA[&#160; &#160; 准备将所有Oracle数据库的管理(如空间, 会话)及运行(Statspack或AWR)信息, 或业务统计数据, 集中收集到MySQL数据库(称为管理库或ToolDB)上去进行管理, 预测和分析, 就需要写很多的数据收集程序, 在Oracle数据库主机上用SQL查询各种数据, 然后插入到管理库中. 用Shell和SQLULDR2来写已经够简单了, 但是随着数据库的增多, 收集信息的增加, 就感觉到了脚本维护上不够方便了, 在任务调度器(crontab)中, 不同版本的数据库, 会出现不同的定时任务设置, 在做切换或维护操作时, 就会容易出现遗漏情况. &#160; &#160; 要用一个脚本来实现这些数据信息任务, 最基础的是需要一个能在不同结构的数据库之间拷贝数据, 一个源数据库, 一个目标数据库, 指定源数据库上的一个查询, 可以执行并将将查询出来的数据插入到目标数据库中. Perl语言很适合用来完成这个任务, 因此就用它写了一个copydata脚本, 可以允许我们在异构数据库之间拷贝数据. SQL&#62; select count(*) from database_perf_statistics; &#160; COUNT(*) &#8212;&#8212;&#8212;- &#160; &#160; &#160; 7596 &#160; &#160; Perl性能并不差, 用它来复制七八千条记录的一个有32个列的表, 1秒钟内也就完成了, 迁移大数据量或许不行, 但用来迁移少量数据绝对足够用了. 05/09 22:19:08 &#8211; Copy data started, [...]]]></description>
			<content:encoded><![CDATA[<p>&nbsp; &nbsp; 准备将所有Oracle数据库的管理(如空间, 会话)及运行(Statspack或AWR)信息, 或业务统计数据, 集中收集到MySQL数据库(称为管理库或ToolDB)上去进行管理, 预测和分析, 就需要写很多的数据收集程序, 在Oracle数据库主机上用SQL查询各种数据, 然后插入到管理库中. 用Shell和SQLULDR2来写已经够简单了, 但是随着数据库的增多, 收集信息的增加, 就感觉到了脚本维护上不够方便了, 在任务调度器(crontab)中, 不同版本的数据库, 会出现不同的定时任务设置, 在做切换或维护操作时, 就会容易出现遗漏情况. </p>
<p>&nbsp; &nbsp; 要用一个脚本来实现这些数据信息任务, 最基础的是需要一个能在不同结构的数据库之间拷贝数据, 一个源数据库, 一个目标数据库, 指定源数据库上的一个查询, 可以执行并将将查询出来的数据插入到目标数据库中. Perl语言很适合用来完成这个任务, 因此就用它写了一个copydata脚本, 可以允许我们在异构数据库之间拷贝数据. </p>
<blockquote class="prefont"><p>
SQL&gt; select count(*) from database_perf_statistics;</p>
<p>&nbsp; COUNT(*)<br />
&#8212;&#8212;&#8212;-<br />
&nbsp; &nbsp; &nbsp; 7596
</p></blockquote>
<p>&nbsp; &nbsp; Perl性能并不差, 用它来复制七八千条记录的一个有32个列的表, 1秒钟内也就完成了, 迁移大数据量或许不行, 但用来迁移少量数据绝对足够用了. </p>
<blockquote class="prefont"><p>
05/09 22:19:08 &#8211; Copy data started, 1 tables in configuration file.<br />
05/09 22:19:08 &#8211; Start copy table DATABASE_PERF_STATISTICS to AAA &#8230;<br />
05/09 22:19:09 &#8211; End copy table DATABASE_PERF_STATISTICS to AAA
</p></blockquote>
<p>&nbsp; &nbsp; 回过头来看看, copydata + oramon + WebChart就可以打造一个良好的DBA基础工作平台. </p>
<h3  class="related_post_title">Relative Posts:</h3><ul class="related_post"><li>2010/04/10 -- <a href="http://www.anysql.net/tools/datacopy-datasync-nls-lang.html" title="不同字符集的数据迁移">不同字符集的数据迁移</a> (6)</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/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/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><li>2010/03/15 -- <a href="http://www.anysql.net/tools/datacopy-utility.html" title="学习OCI之DataCopy程序">学习OCI之DataCopy程序</a> (5)</li><li>2009/11/07 -- <a href="http://www.anysql.net/tools/sqluldr2-mysql-data-migration-test.html" title="MySQL数据迁移测试">MySQL数据迁移测试</a> (8)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.anysql.net/tools/copydata-perl-scripts.html/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>AUL程序上的两处缺陷</title>
		<link>http://www.anysql.net/aulmydul/aul-bugs-found-200906.html</link>
		<comments>http://www.anysql.net/aulmydul/aul-bugs-found-200906.html#comments</comments>
		<pubDate>Tue, 09 Jun 2009 15:20:12 +0000</pubDate>
		<dc:creator>anysql</dc:creator>
				<category><![CDATA[AUL/MyDUL]]></category>
		<category><![CDATA[Bug]]></category>
		<category><![CDATA[Data]]></category>
		<category><![CDATA[DUL]]></category>
		<category><![CDATA[Recovery]]></category>

		<guid isPermaLink="false">http://www.anysql.net/wordpress/uncategorized/aul%e7%a8%8b%e5%ba%8f%e4%b8%8a%e7%9a%84%e4%b8%a4%e5%a4%84%e7%bc%ba%e9%99%b7.html</guid>
		<description><![CDATA[&#160; &#160; AUL除两个月之前增加并行扫描数据文件功能, 以节约大型数据库的恢复时间外, 最近一年内没有做过什么其他源代码修改, 不过这也并不表示AUL是十全十美的, 连十全九美都达不到. 在最近的一次恢复中就一下遇到了两处缺陷, 虽然可以绕过去, 最后成功恢复, 但缺陷还是存在的. &#160; &#160; 当表和索引同名时, 在执行UNLOAD TABLE命令, 是根据对象名及子对象名去定位对象信息的, 因为表和索引同名, 因此要恢复表时, 会错误地取得索引的段信息, 取决于AUL读取字典生成文件时是表信息在前还是索引信息在前. 虽然早就知道表和索引可以同名, 但在自已的经历中, 创建的所有表和索引都是不重名的, 一开始也没有想到这一点. 另外在早期的版本中是不支持IOT的, UNLOAD命令只读取表, 表分区, 表子分区类型的段对象. 后来支持了IOT, 就要多读取索引, 索引分区, 索引子分区类型的段对象, 由于数据重复而引起了这个问题. 这个问题现在已经在程序上做了改进了, 当时的解决方案是生成一个只包表分区, 表子分区类型段信息的AULOBJ字典文件. &#160; &#160; AUL在设计初期, 还曾查阅比较多的数据库, 发现当数据库的数据文件个数小于1000个时, 数据库文件的相对文件号(RFILE)基本上是不会重复出现的, 因此就只根据相对文件号来定位, 可惜我的发现不是真理, 在一个只有几十个文件的数据库中, 居然发现相对文件号重复的情况. 实际上要根据, 表空间号和相对文件号一起来定位, 要在AUL中修复这一点则相当困难. 解决方法是一个表空间一个表空间地恢复, 不过目前为止只遇到最近的这一次, AUL还没有参与过大于1000个数据文件的恢复, 由于这个缺陷会, 当数据分成两个表空间存放, [...]]]></description>
			<content:encoded><![CDATA[<p>&nbsp; &nbsp; AUL除两个月之前增加并行扫描数据文件功能, 以节约大型数据库的恢复时间外, 最近一年内没有做过什么其他源代码修改, 不过这也并不表示AUL是十全十美的, 连十全九美都达不到. 在最近的一次恢复中就一下遇到了两处缺陷, 虽然可以绕过去, 最后成功恢复, 但缺陷还是存在的. </p>
<p>&nbsp; &nbsp; 当表和索引同名时, 在执行UNLOAD TABLE命令, 是根据对象名及子对象名去定位对象信息的, 因为表和索引同名, 因此要恢复表时, 会错误地取得索引的段信息, 取决于AUL读取字典生成文件时是表信息在前还是索引信息在前. 虽然早就知道表和索引可以同名, 但在自已的经历中, 创建的所有表和索引都是不重名的, 一开始也没有想到这一点. 另外在早期的版本中是不支持IOT的, UNLOAD命令只读取表, 表分区, 表子分区类型的段对象. 后来支持了IOT, 就要多读取索引, 索引分区, 索引子分区类型的段对象, 由于数据重复而引起了这个问题. 这个问题现在已经在程序上做了改进了,  当时的解决方案是生成一个只包表分区, 表子分区类型段信息的AULOBJ字典文件. </p>
<p>&nbsp; &nbsp; AUL在设计初期, 还曾查阅比较多的数据库, 发现当数据库的数据文件个数小于1000个时, 数据库文件的相对文件号(RFILE)基本上是不会重复出现的, 因此就只根据相对文件号来定位, 可惜我的发现不是真理, 在一个只有几十个文件的数据库中, 居然发现相对文件号重复的情况. 实际上要根据, 表空间号和相对文件号一起来定位, 要在AUL中修复这一点则相当困难. 解决方法是一个表空间一个表空间地恢复, 不过目前为止只遇到最近的这一次, AUL还没有参与过大于1000个数据文件的恢复, 由于这个缺陷会, 当数据分成两个表空间存放, 象IOT与IOT Overflow, 象表与LOB等, 并且这两个表空间中的文件有重复的相对文件号时, AUL将无法恢复数据. </p>
<p>&nbsp; &nbsp; 最近这次恢复了150GB的数据, 以Dmp格式恢复, 都能正常导入, AUL5的改进相当成功. </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/03/19 -- <a href="http://www.anysql.net/aulmydul/oracle_final_data_recovery.html" title="Oracle数据恢复服务模式">Oracle数据恢复服务模式</a> (0)</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/11/20 -- <a href="http://www.anysql.net/aulmydul/aul-fail-oracle-bug-7705591.html" title="首次AUL恢复失败案例">首次AUL恢复失败案例</a> (1)</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/07/06 -- <a href="http://www.anysql.net/aulmydul/tuning_update_sql_01.html" title="连错库误删100多张表">连错库误删100多张表</a> (9)</li><li>2008/05/12 -- <a href="http://www.anysql.net/aulmydul/undo_and_index_bugs.html" title="Oracle不行再用AUL">Oracle不行再用AUL</a> (7)</li><li>2008/04/17 -- <a href="http://www.anysql.net/aulmydul/aul_for_sybase_ase.html" title="Oracle DUL不行就用AUL">Oracle DUL不行就用AUL</a> (10)</li><li>2008/04/16 -- <a href="http://www.anysql.net/aulmydul/qq_by_mobile_phone.html" title="AUL Sybase数据恢复工具">AUL Sybase数据恢复工具</a> (4)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://www.anysql.net/aulmydul/aul-bugs-found-200906.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
