<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:content="http://purl.org/rss/1.0/modules/content/" version="2.0"> 
<channel>
  <title>DBA Tools</title>
  <link>http://www.dbatools.net/</link>
  <description>Writing professional DBA tools and scripts for better DBA life</description>
  <dc:language>en-us</dc:language>
  <dc:creator>anysql@live.com</dc:creator>
  <dc:rights>Copyright 2010</dc:rights>
  <dc:date>2010-05-13T09:50:16+08:00</dc:date>
  <admin:generatorAgent rdf:resource="http://www.movabletype.org/?v=5.01" />
  <admin:errorReportsTo rdf:resource="mailto:anysql@live.com" />
  <sy:updatePeriod>hourly</sy:updatePeriod>
  <sy:updateFrequency>1</sy:updateFrequency>
  <sy:updateBase>2000-01-01T12:00+00:00</sy:updateBase>

  
  <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/dbatools" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="dbatools" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
  <title>Windows GUI version of SQLULDR2 and DataCopy released.</title>
  <link>http://www.dbatools.net/mytools/sqluldr2-datacopy-gui-version.html</link>
  <description><![CDATA[&nbsp; &nbsp; SQLULDR2 is a DBA utility to extract Oracle table's data to flat text file, it's based on OCI with excellent performance. Since most of uses like GUI interface, so I released a GUI version of SQLULDR2, let's call...]]></description>
  <guid isPermaLink="false">2392@http://www.dbatools.net/</guid>
  <content:encoded><![CDATA[
      <p>Author: <a href="http://www.dbatools.net">AnySQL</a>, published on <a href="http://www.dbatools.net">dbatools.net</a>, Oracle Data Recovery, Tools, WebChart Report, etc. </p><P>&nbsp; &nbsp; SQLULDR2 is a DBA utility to extract Oracle table's data to flat text file, it's based on <A class=zem_slink title="Oracle Call Interface" href="http://en.wikipedia.org/wiki/Oracle_Call_Interface" rel=wikipedia>OCI</A> with excellent performance. Since most of uses like GUI interface, so I released a GUI version of SQLULDR2, let's call it <A href="http://www.dbatools.net/software/sqluldr2w.zip">SQLULDR2 for Windows</A>. With the following user interface.</P>

<BLOCKQUOTE>
<IMG border=0 src="http://www.dbatools.net/images/sqluldr2ui.png">
</BLOCKQUOTE>

<P>&nbsp; &nbsp; DataCopy is a DBA utility to move data between different Oracle databases with middle file generation, it's based on OCI with excellent performance. Since most of uses like GUI interface, so I released a GUI version of DataCopy too, let's call it <A href="http://www.dbatools.net/software/datacopyw.zip">DataCopy for Windows</A>. With the following user interface.</P>

<BLOCKQUOTE>
<IMG border=0 src="http://www.dbatools.net/images/datacopyui.png">
</BLOCKQUOTE>

<P>&nbsp; &nbsp; Any questions or suggestions, please info me, thanks. </P>


</p>
      <p><b>Related Posts</b></p>
	
            <div><a href="http://www.dbatools.net/mytools/parallel-sqluldr2-datacopy.html">Parallel execution of SQLULDR2 or DataCopy for huge tables</a> (0)</div>
        
            <div><a href="http://www.dbatools.net/mytools/parallel-inside-sqluldr2.html">SQLULDR2 : Native Parallel Support! Parallel Inside!</a> (4)</div>
        
            <div><a href="http://www.dbatools.net/mytools/sqluldr2-windows-sdk-released.html">SQLULDR2 Windows Developer SDK Released.</a> (0)</div>
        
            <div><a href="http://www.dbatools.net/mytools/parallel-datacopy-version.html">DataCopy : Native Parallel Support Now ! Parallel Inside !</a> (0)</div>
        
            <div><a href="http://www.dbatools.net/mytools/datacopy-utility.html">DataCopy : Oracle data migration utility, faster than exp/imp</a> (0)</div>
        
      </p>
      <p><b><a href="http://twitter.com/dbatools" target="_blank">Twitter Me?</a> | <a href="http://www.dbatools.net/mytools/sqluldr2-datacopy-gui-version.html#comments" title="Comment on: Windows GUI version of SQLULDR2 and DataCopy released.">Leave New Comment</a></b>(Current: 3)</p> 
      <p>Link: <a href="http://www.dbatools.net/mytools/sqluldr2-datacopy-gui-version.html">http://www.dbatools.net/mytools/sqluldr2-datacopy-gui-version.html</a> </p>
      </description>
      
  <div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/dbatools?a=BD-Fap_k_5U:UhzWLYNVO80:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/dbatools?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dbatools?a=BD-Fap_k_5U:UhzWLYNVO80:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/dbatools?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dbatools?a=BD-Fap_k_5U:UhzWLYNVO80:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/dbatools?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dbatools?a=BD-Fap_k_5U:UhzWLYNVO80:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/dbatools?i=BD-Fap_k_5U:UhzWLYNVO80:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dbatools?a=BD-Fap_k_5U:UhzWLYNVO80:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/dbatools?d=qj6IDK7rITs" border="0"></img></a>
</div>]]></content:encoded>
  <dc:subject>MyTools</dc:subject>
  <dc:date>2010-05-13T09:50:16+08:00</dc:date>
  <pubDate>Thu, 13 May 2010 09:50:16 +0800</pubDate>
  
     <category domain="http://www.sixapart.com/ns/types#tag">Copy</category>
  
     <category domain="http://www.sixapart.com/ns/types#tag">Data</category>
  
     <category domain="http://www.sixapart.com/ns/types#tag">Export</category>
  
     <category domain="http://www.sixapart.com/ns/types#tag">Text</category>
  
     <category domain="http://www.sixapart.com/ns/types#tag">Tools</category>
  
  </item>
  
  <item>
  <title>SQLULDR2 : Native Parallel Support! Parallel Inside!</title>
  <link>http://www.dbatools.net/mytools/parallel-inside-sqluldr2.html</link>
  <description><![CDATA[&nbsp; &nbsp; Supposed that we want to unload a huge table (100gb+) to text file, how to do it quickly? The answer is parallel unloading. I will suggest you perform a manual parallel by split the big table into multiple...]]></description>
  <guid isPermaLink="false">2391@http://www.dbatools.net/</guid>
  <content:encoded><![CDATA[
      <p>Author: <a href="http://www.dbatools.net">AnySQL</a>, published on <a href="http://www.dbatools.net">dbatools.net</a>, Oracle Data Recovery, Tools, WebChart Report, etc. </p><P>&nbsp; &nbsp; Supposed that we want to unload a huge table (100gb+) to text file, how to do it quickly? The answer is parallel unloading. I will suggest you perform a manual parallel by split the big table into multiple pieces with different where clause. But now I think the manual parallel is too complex, and it may perform multiple times full table scan, which brings extra IO overhead to the storage system, so I add the native parallel feature. </P>

<P>&nbsp; &nbsp; In parallel SQLULDR2, we can split huge table into multiple piece by rowid range, each parallel slave just take piece of the data with extra IO overhead to the storage system. You just need to tell the parallel degree and the big table name in the SQL to do the parallel. Supposed that we have the following SQL query.</P>

<BLOCKQUOTE class=prefont>
SELECT E.EMPNO, E.ENAME, D.DNAME<BR>
&nbsp; FROM EMP E, DEPT D<BR>
WHERE E.DEPTNO = D.DEPTNO
</BLOCKQUOTE>

<P>&nbsp; &nbsp; Supposed that the EMP is a huge table, we want to parallize the unload process. I will introduce two new options for parallel unloading. </P>

<BLOCKQUOTE class=prefont>
&nbsp; split&nbsp; = table name for automatically parallelization.<BR>
&nbsp; degree&nbsp; = parallelize data copy degree (2-128).<BR>
</BLOCKQUOTE>

<P>&nbsp; &nbsp; We also need to change the SQL query for parallel unloading, you can use two bind variables in the SQL, "MINRID" for the lower rowid range and "MAXRID" for the upper rowid range. So I rewrite the SQL as following. </P>

<BLOCKQUOTE class=prefont>
SELECT E.EMPNO, E.ENAME, D.DNAME<BR>
&nbsp; FROM EMP E, DEPT D<BR>
WHERE E.DEPTNO = D.DEPTNO AND <BR>
&nbsp; E.ROWID &gt;= :MINRID AND E.ROWID &lt; :MAXRID
</BLOCKQUOTE>

<P>&nbsp; &nbsp; If we want to unload the EMP table only, we just need pass the following options to SQLULDR2 for parallel unloading. </P>

<BLOCKQUOTE class=prefont>
user=scott/tiger<BR>
query=select * from emp where rowid &gt;= :minrid and rowid &lt; :maxrid<BR>
split=emp<BR>
degree=4<BR>
file=uldrdata.%p.txt<BR>
log=log.%p.log<BR>
</BLOCKQUOTE>

<P>&nbsp; &nbsp; The "%p" will be replaced by the parallel slave id (start from 1). With the parallel unloading feature, We can unload data very quickly. In a PC server with local disk only, I can unload data to text file with 32MB per second. </P>
</p>
      <p><b>Related Posts</b></p>
	
            <div><a href="http://www.dbatools.net/mytools/sqluldr2-datacopy-gui-version.html">Windows GUI version of SQLULDR2 and DataCopy released.</a> (3)</div>
        
            <div><a href="http://www.dbatools.net/mytools/sqluldr2-windows-sdk-released.html">SQLULDR2 Windows Developer SDK Released.</a> (0)</div>
        
            <div><a href="http://www.dbatools.net/mytools/datacopy-utility.html">DataCopy : Oracle data migration utility, faster than exp/imp</a> (0)</div>
        
            <div><a href="http://www.dbatools.net/mytools/sqluldr2-oracle-migrate-data-to-mysql.html">Migrate data from Oracle to MySQL with SQLULDR2</a> (0)</div>
        
            <div><a href="http://www.dbatools.net/mytools/sqluldr2-license.html">License required for full SQLULDR2 (Oracle Text Unload) version.</a> (0)</div>
        
      </p>
      <p><b><a href="http://twitter.com/dbatools" target="_blank">Twitter Me?</a> | <a href="http://www.dbatools.net/mytools/parallel-inside-sqluldr2.html#comments" title="Comment on: SQLULDR2 : Native Parallel Support! Parallel Inside!">Leave New Comment</a></b>(Current: 4)</p> 
      <p>Link: <a href="http://www.dbatools.net/mytools/parallel-inside-sqluldr2.html">http://www.dbatools.net/mytools/parallel-inside-sqluldr2.html</a> </p>
      </description>
      
  <div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/dbatools?a=13qYXZrFrhU:2sq2Ohu9pgA:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/dbatools?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dbatools?a=13qYXZrFrhU:2sq2Ohu9pgA:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/dbatools?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dbatools?a=13qYXZrFrhU:2sq2Ohu9pgA:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/dbatools?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dbatools?a=13qYXZrFrhU:2sq2Ohu9pgA:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/dbatools?i=13qYXZrFrhU:2sq2Ohu9pgA:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dbatools?a=13qYXZrFrhU:2sq2Ohu9pgA:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/dbatools?d=qj6IDK7rITs" border="0"></img></a>
</div>]]></content:encoded>
  <dc:subject>MyTools</dc:subject>
  <dc:date>2010-04-30T11:43:41+08:00</dc:date>
  <pubDate>Fri, 30 Apr 2010 11:43:41 +0800</pubDate>
  
     <category domain="http://www.sixapart.com/ns/types#tag">Export</category>
  
     <category domain="http://www.sixapart.com/ns/types#tag">Migration</category>
  
     <category domain="http://www.sixapart.com/ns/types#tag">Text</category>
  
     <category domain="http://www.sixapart.com/ns/types#tag">Tools</category>
  
  </item>
  
  <item>
  <title>SQLULDR2 Windows Developer SDK Released.</title>
  <link>http://www.dbatools.net/mytools/sqluldr2-windows-sdk-released.html</link>
  <description><![CDATA[&nbsp; &nbsp; SQLULDR2 is a fast and flexible Oracle text unload utility, but it did not have a good GUI interface, that's because I am not good at writing Microsoft MFC program to create GUI interface. But many and many...]]></description>
  <guid isPermaLink="false">2390@http://www.dbatools.net/</guid>
  <content:encoded><![CDATA[
      <p>Author: <a href="http://www.dbatools.net">AnySQL</a>, published on <a href="http://www.dbatools.net">dbatools.net</a>, Oracle Data Recovery, Tools, WebChart Report, etc. </p><p>&nbsp; &nbsp; SQLULDR2 is a fast and flexible Oracle text unload utility, but it did not have a good GUI interface, that's because I am not good at writing Microsoft MFC program to create GUI interface. But many and many users like GUI based utility, so I released the SQLULDR2 Windows developer SDK (<a href="http://www.dbatools.net/software/sqluldr2sdk.zip">sqluldr2sdk.zip</a>), with the core SQLULDR2 API function, you can develop your own Oracle text unload utility. </p>

<p>&nbsp; &nbsp; There is a demo program in the download package, it's a small C program to login to Oracle as SYS schema and unload some rows to text file. </p>

<blockquote class="prefont">
#include &lt;stdio.h&gt;<br />
#include "sqluldr2.h"<br />
<br />
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, "USER=SYS");<br />
&nbsp; &nbsp; &nbsp;  SQLULDR2HandleSetAttr(h, "QUERY=SELECT * FROM TAB");<br />
&nbsp; &nbsp; &nbsp;  SQLULDR2HandleExecute(h);<br />
&nbsp; &nbsp; &nbsp;  SQLULDR2HandleFree(h);<br />
&nbsp;  }<br />
}
</blockquote>

<p>&nbsp; &nbsp; If you are good at GUI programing, or you are interesting in GUI programing, please take the lessio to write a GUI interface for SQLULDR2. All the <a href="http://www.dbatools.net/software/sqluldr.zip">SQLULDR2</a> attributes can be list by the following command. </p>

<blockquote class="prefont">
sqluldr2 help=yes
</blockquote>

<p>&nbsp; &nbsp; For the DataCopy utility, I will release the Windows deveoper SDK soon.</p> 
</p>
      <p><b>Related Posts</b></p>
	
            <div><a href="http://www.dbatools.net/mytools/sqluldr2-license.html">License required for full SQLULDR2 (Oracle Text Unload) version.</a> (0)</div>
        
            <div><a href="http://www.dbatools.net/mytools/sqluldr2-oracle-migrate-data-to-mysql.html">Migrate data from Oracle to MySQL with SQLULDR2</a> (0)</div>
        
            <div><a href="http://www.dbatools.net/mytools/sqluldr2-datacopy-gui-version.html">Windows GUI version of SQLULDR2 and DataCopy released.</a> (3)</div>
        
            <div><a href="http://www.dbatools.net/mytools/parallel-inside-sqluldr2.html">SQLULDR2 : Native Parallel Support! Parallel Inside!</a> (4)</div>
        
            <div><a href="http://www.dbatools.net/mytools/parallel-sqluldr2-datacopy.html">Parallel execution of SQLULDR2 or DataCopy for huge tables</a> (0)</div>
        
      </p>
      <p><b><a href="http://twitter.com/dbatools" target="_blank">Twitter Me?</a> | <a href="http://www.dbatools.net/mytools/sqluldr2-windows-sdk-released.html#comments" title="Comment on: SQLULDR2 Windows Developer SDK Released.">Leave New Comment</a></b>(Current: 0)</p> 
      <p>Link: <a href="http://www.dbatools.net/mytools/sqluldr2-windows-sdk-released.html">http://www.dbatools.net/mytools/sqluldr2-windows-sdk-released.html</a> </p>
      </description>
      
  <div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/dbatools?a=Del9-T_2loU:ne3e3UUFV3s:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/dbatools?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dbatools?a=Del9-T_2loU:ne3e3UUFV3s:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/dbatools?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dbatools?a=Del9-T_2loU:ne3e3UUFV3s:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/dbatools?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dbatools?a=Del9-T_2loU:ne3e3UUFV3s:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/dbatools?i=Del9-T_2loU:ne3e3UUFV3s:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dbatools?a=Del9-T_2loU:ne3e3UUFV3s:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/dbatools?d=qj6IDK7rITs" border="0"></img></a>
</div>]]></content:encoded>
  <dc:subject>MyTools</dc:subject>
  <dc:date>2010-04-19T23:55:38+08:00</dc:date>
  <pubDate>Mon, 19 Apr 2010 23:55:38 +0800</pubDate>
  
     <category domain="http://www.sixapart.com/ns/types#tag">Data</category>
  
     <category domain="http://www.sixapart.com/ns/types#tag">Export</category>
  
     <category domain="http://www.sixapart.com/ns/types#tag">Migration</category>
  
     <category domain="http://www.sixapart.com/ns/types#tag">sqlldr</category>
  
     <category domain="http://www.sixapart.com/ns/types#tag">Text</category>
  
  </item>
  
  <item>
  <title>DataCopy : Native Parallel Support Now ! Parallel Inside !</title>
  <link>http://www.dbatools.net/mytools/parallel-datacopy-version.html</link>
  <description><![CDATA[&nbsp; &nbsp; We can write a Perl or shell script to start multiple datacopy process with TabSplit utility, now you don't need to write such a Perl or shell script, I have combined the code of TabSplit and DataCopy, we...]]></description>
  <guid isPermaLink="false">2389@http://www.dbatools.net/</guid>
  <content:encoded><![CDATA[
      <p>Author: <a href="http://www.dbatools.net">AnySQL</a>, published on <a href="http://www.dbatools.net">dbatools.net</a>, Oracle Data Recovery, Tools, WebChart Report, etc. </p><p>&nbsp; &nbsp; We can write a Perl or shell script to start multiple datacopy process with <a href="http://www.anysql.net/tools/parallel-datacopy-datasync.html">TabSplit</a> utility, now you don't need to write such a Perl or shell script, I have combined the code of TabSplit and DataCopy, we can start multiple datacopy thread on Windows or multiple process on Linux/Unix to parallel data copy between different Oracle databases quickly. It's native parallel support now!</p>

<p>&nbsp; &nbsp; Just need to specify the parallel degree with "DEGREE" command line option.</p>

<blockquote class="prefont">
datacopy user=..... table1=sql_summary table2=sql_summary2 <strong>degree=2</strong>
</blockquote>

<p>&nbsp; &nbsp; Table SQL_SUMMARY has ten million rows, let's check out the log output. </p>

<blockquote class="prefont">
&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.
</blockquote>

<p>&nbsp; &nbsp; DataCopy now need to access some dictionary views, we should grant select catalog role to the source user. You can download the <a href="http://www.anysql.net/software/datacopy.zip">new version</a> for performance testing, I hope DataCopy to be a very useful data migration utility for Oracle. </p>


</p>
      <p><b>Related Posts</b></p>
	
            <div><a href="http://www.dbatools.net/mytools/sqluldr2-datacopy-gui-version.html">Windows GUI version of SQLULDR2 and DataCopy released.</a> (3)</div>
        
            <div><a href="http://www.dbatools.net/mytools/datacopy-utility.html">DataCopy : Oracle data migration utility, faster than exp/imp</a> (0)</div>
        
            <div><a href="http://www.dbatools.net/mytools/parallel-inside-sqluldr2.html">SQLULDR2 : Native Parallel Support! Parallel Inside!</a> (4)</div>
        
            <div><a href="http://www.dbatools.net/mytools/sqluldr2-windows-sdk-released.html">SQLULDR2 Windows Developer SDK Released.</a> (0)</div>
        
            <div><a href="http://www.dbatools.net/mytools/parallel-sqluldr2-datacopy.html">Parallel execution of SQLULDR2 or DataCopy for huge tables</a> (0)</div>
        
      </p>
      <p><b><a href="http://twitter.com/dbatools" target="_blank">Twitter Me?</a> | <a href="http://www.dbatools.net/mytools/parallel-datacopy-version.html#comments" title="Comment on: DataCopy : Native Parallel Support Now ! Parallel Inside !">Leave New Comment</a></b>(Current: 0)</p> 
      <p>Link: <a href="http://www.dbatools.net/mytools/parallel-datacopy-version.html">http://www.dbatools.net/mytools/parallel-datacopy-version.html</a> </p>
      </description>
      
  <div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/dbatools?a=JjpmkZC2nx8:PpeutkJc6sQ:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/dbatools?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dbatools?a=JjpmkZC2nx8:PpeutkJc6sQ:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/dbatools?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dbatools?a=JjpmkZC2nx8:PpeutkJc6sQ:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/dbatools?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dbatools?a=JjpmkZC2nx8:PpeutkJc6sQ:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/dbatools?i=JjpmkZC2nx8:PpeutkJc6sQ:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dbatools?a=JjpmkZC2nx8:PpeutkJc6sQ:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/dbatools?d=qj6IDK7rITs" border="0"></img></a>
</div>]]></content:encoded>
  <dc:subject>MyTools</dc:subject>
  <dc:date>2010-04-17T00:21:33+08:00</dc:date>
  <pubDate>Sat, 17 Apr 2010 00:21:33 +0800</pubDate>
  
     <category domain="http://www.sixapart.com/ns/types#tag">Copy</category>
  
     <category domain="http://www.sixapart.com/ns/types#tag">Data</category>
  
     <category domain="http://www.sixapart.com/ns/types#tag">Migration</category>
  
     <category domain="http://www.sixapart.com/ns/types#tag">Tools</category>
  
  </item>
  
  <item>
  <title>Parallel execution of SQLULDR2 or DataCopy for huge tables</title>
  <link>http://www.dbatools.net/mytools/parallel-sqluldr2-datacopy.html</link>
  <description><![CDATA[&nbsp; &nbsp; If we want to process huge tables (few hunderds of gigabytes), it will take long time for a single SQLULDR2 or DataCopy process, single process can makde single CPU exhausted. To speedup the process, we need maually partitioned...]]></description>
  <guid isPermaLink="false">2388@http://www.dbatools.net/</guid>
  <content:encoded><![CDATA[
      <p>Author: <a href="http://www.dbatools.net">AnySQL</a>, published on <a href="http://www.dbatools.net">dbatools.net</a>, Oracle Data Recovery, Tools, WebChart Report, etc. </p><p>&nbsp; &nbsp; If we want to process huge tables (few hunderds of gigabytes), it will take long time for a single SQLULDR2 or DataCopy process, single process can makde single CPU exhausted. To speedup the process, we need maually partitioned the huge tables, and start multiple SQLULDR2 or DataCopy processes. But manuall partition is too complex for us, we need automate the partition method. </p>
 
<p>&nbsp; &nbsp; The key is how to split huge tables into multiple pieces, if we split it manually, then we can only perform manually parallel process, if we can split it automatically, then we can perform automatically parallel process. I wrote a program (<a href="http://www.dbatools.net/software/tabsplit.zip">TabSplit</a>) to handle the split work by rowid range. </p>

<blockquote class="prefont">
Usage: tabsplit user=... owner=... table=... [part=...] [degree=...]
</blockquote>
 
<p>&nbsp; &nbsp; There is a big table (EMP_HIS) on my local database, I need to unload it text file with parallel degree 4 to save time. Let's split it with TabSplit utility. </p>

<blockquote class="prefont">
D:\&gt;tabsplit owner=scott table=emp_his degree=4<br />
ROWID&gt;='AAADAUAAEAAAE0xAAA' AND ROWID &lt; 'AAADAUAAEAAAFUIEAA'<br />
ROWID&gt;='AAADAUAAEAAAFUJAAA' AND ROWID &lt; 'AAADAUAAEAAAHEIEAA'<br />
ROWID&gt;='AAADAUAAEAAAHEJAAA' AND ROWID &lt; 'AAADAUAAEAAAHiIEAA'<br />
ROWID&gt;='AAADAUAAEAAAHiJAAA' AND ROWID &lt; 'AAADAUAAEAAAH8IEAA'
</blockquote>
 
<p>&nbsp; &nbsp; Now we will check the record count of each piece, and then summarize the total record count. </p>
 
<blockquote class="prefont">
SQL&gt; select count(*) from scott.emp_his where<br />
&nbsp; 2&nbsp; ROWID&gt;='AAADAUAAEAAAE0xAAA' AND ROWID &lt; 'AAADAUAAEAAAFUIEAA';<br />
<br />
&nbsp; &nbsp; 307200<br />
<br />
SQL&gt; select count(*) from scott.emp_his where<br />
&nbsp; 2&nbsp; ROWID&gt;='AAADAUAAEAAAFUJAAA' AND ROWID &lt; 'AAADAUAAEAAAHEIEAA';<br />
<br />
&nbsp; &nbsp; 309421<br />
<br />
SQL&gt; select count(*) from scott.emp_his where<br />
&nbsp; 2&nbsp; ROWID&gt;='AAADAUAAEAAAHEJAAA' AND ROWID &lt; 'AAADAUAAEAAAHiIEAA';<br />
<br />
&nbsp; &nbsp; 309606<br />
<br />
SQL&gt; select count(*) from scott.emp_his where<br />
&nbsp; 2&nbsp; ROWID&gt;='AAADAUAAEAAAHiJAAA' AND ROWID &lt; 'AAADAUAAEAAAH8IEAA';<br />
<br />
&nbsp; &nbsp; 253469<br />
<br />
SQL&gt; select 307200+309421+309606+253469 from DUAL;<br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 1179696
</blockquote>
 
<p>&nbsp; &nbsp; And we query the record count by a full table scan in Oracle. </p>
 
<blockquote class="prefont">
SQL&gt; select count(*) from scott.emp_his;<br />
<br />
&nbsp;  1179696
</blockquote>
 
<p>&nbsp; &nbsp; We found that the record count matched, it's good news for us. Now we can write packer scripts to start multiple SQLULDR2 or DataCopy processes quickly for huge tables. </p>

 
</p>
      <p><b>Related Posts</b></p>
	
            <div><a href="http://www.dbatools.net/mytools/sqluldr2-datacopy-gui-version.html">Windows GUI version of SQLULDR2 and DataCopy released.</a> (3)</div>
        
            <div><a href="http://www.dbatools.net/mytools/sqluldr2-windows-sdk-released.html">SQLULDR2 Windows Developer SDK Released.</a> (0)</div>
        
            <div><a href="http://www.dbatools.net/mytools/sqluldr2-license.html">License required for full SQLULDR2 (Oracle Text Unload) version.</a> (0)</div>
        
            <div><a href="http://www.dbatools.net/mytools/parallel-inside-sqluldr2.html">SQLULDR2 : Native Parallel Support! Parallel Inside!</a> (4)</div>
        
            <div><a href="http://www.dbatools.net/mytools/parallel-datacopy-version.html">DataCopy : Native Parallel Support Now ! Parallel Inside !</a> (0)</div>
        
      </p>
      <p><b><a href="http://twitter.com/dbatools" target="_blank">Twitter Me?</a> | <a href="http://www.dbatools.net/mytools/parallel-sqluldr2-datacopy.html#comments" title="Comment on: Parallel execution of SQLULDR2 or DataCopy for huge tables">Leave New Comment</a></b>(Current: 0)</p> 
      <p>Link: <a href="http://www.dbatools.net/mytools/parallel-sqluldr2-datacopy.html">http://www.dbatools.net/mytools/parallel-sqluldr2-datacopy.html</a> </p>
      </description>
      
  <div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/dbatools?a=I-_qu6Umq3Y:4A89EPs-HlY:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/dbatools?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dbatools?a=I-_qu6Umq3Y:4A89EPs-HlY:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/dbatools?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dbatools?a=I-_qu6Umq3Y:4A89EPs-HlY:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/dbatools?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dbatools?a=I-_qu6Umq3Y:4A89EPs-HlY:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/dbatools?i=I-_qu6Umq3Y:4A89EPs-HlY:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dbatools?a=I-_qu6Umq3Y:4A89EPs-HlY:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/dbatools?d=qj6IDK7rITs" border="0"></img></a>
</div>]]></content:encoded>
  <dc:subject>MyTools</dc:subject>
  <dc:date>2010-04-15T16:06:06+08:00</dc:date>
  <pubDate>Thu, 15 Apr 2010 16:06:06 +0800</pubDate>
  
     <category domain="http://www.sixapart.com/ns/types#tag">Copy</category>
  
     <category domain="http://www.sixapart.com/ns/types#tag">Data</category>
  
     <category domain="http://www.sixapart.com/ns/types#tag">Export</category>
  
     <category domain="http://www.sixapart.com/ns/types#tag">Parallel</category>
  
     <category domain="http://www.sixapart.com/ns/types#tag">Text</category>
  
  </item>
  
  <item>
  <title>Data Migration between different Oracle character set</title>
  <link>http://www.dbatools.net/mytools/us7ascii-utf8-data-migration.html</link>
  <description><![CDATA[&nbsp; &nbsp; Supposed that we have few handerds of data stored in US7ASCII database, and we need to switch the system to an UTF8 database, how could we get the system switched in just few minutes without long period outage...]]></description>
  <guid isPermaLink="false">2387@http://www.dbatools.net/</guid>
  <content:encoded><![CDATA[
      <p>Author: <a href="http://www.dbatools.net">AnySQL</a>, published on <a href="http://www.dbatools.net">dbatools.net</a>, Oracle Data Recovery, Tools, WebChart Report, etc. </p><p>&nbsp; &nbsp; Supposed that we have few handerds of data stored in US7ASCII database, and we need to switch the system to an UTF8 database, how could we get the system switched in just few minutes without long period outage window? </p>

<p>&nbsp; &nbsp; Usually we need to unload the data into flat file form US7ASCII database (with NLS_LANG = .US7ASCII), and then change the NLS_LANG to local language character set, for example ZHS16GBK, and load the text file into UTF8 database. </p> 

<p>&nbsp; &nbsp; It seems hard in the past, but now have can use DataCopy &amp; DataSync to get it done. I added two new command line options into them to support character set conversion. </p>

<blockquote class="prefont">
 * charset = character set name of the target database.<br />
 * ncharset= national character set name of the target database.
</blockquote>

<p>&nbsp; &nbsp; Both DataCopy &amp; DataSync have two database connections, source connection and target connection. The character set of source connection is controled by the NLS_LANG variable, and the character set of target connection can be controled by the two new command line options now. So we can do the character set conversion without flat file generation, we can do it in one command.</p>

<blockquote class="prefont">
datacopy user1=... user2=... table=... charset=ZHS16GBK ncharset=AL32UTF8
</blockquote>

<p>&nbsp; &nbsp; We can use DataSync to do incremental conversion, and then just take few minutes to swithover the system to new database. If you have these kind of data migration jobs, you should use them to relax your works.</p>

</p>
      <p><b>Related Posts</b></p>
	
            <div><a href="http://www.dbatools.net/mytools/sqluldr2-datacopy-gui-version.html">Windows GUI version of SQLULDR2 and DataCopy released.</a> (3)</div>
        
            <div><a href="http://www.dbatools.net/mytools/parallel-datacopy-version.html">DataCopy : Native Parallel Support Now ! Parallel Inside !</a> (0)</div>
        
            <div><a href="http://www.dbatools.net/mytools/parallel-sqluldr2-datacopy.html">Parallel execution of SQLULDR2 or DataCopy for huge tables</a> (0)</div>
        
            <div><a href="http://www.dbatools.net/mytools/datasync-data-replication.html">DataSync: Data Replication (SCOTT.EMP) between Oracle databases</a> (0)</div>
        
            <div><a href="http://www.dbatools.net/experience/us7ascii-to-utf8-migration.html">Migrate data from US7ASCII database to UTF8 database</a> (0)</div>
        
      </p>
      <p><b><a href="http://twitter.com/dbatools" target="_blank">Twitter Me?</a> | <a href="http://www.dbatools.net/mytools/us7ascii-utf8-data-migration.html#comments" title="Comment on: Data Migration between different Oracle character set">Leave New Comment</a></b>(Current: 0)</p> 
      <p>Link: <a href="http://www.dbatools.net/mytools/us7ascii-utf8-data-migration.html">http://www.dbatools.net/mytools/us7ascii-utf8-data-migration.html</a> </p>
      </description>
      
  <div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/dbatools?a=j35w2cbJNrw:zjKqJDIgPY8:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/dbatools?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dbatools?a=j35w2cbJNrw:zjKqJDIgPY8:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/dbatools?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dbatools?a=j35w2cbJNrw:zjKqJDIgPY8:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/dbatools?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dbatools?a=j35w2cbJNrw:zjKqJDIgPY8:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/dbatools?i=j35w2cbJNrw:zjKqJDIgPY8:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dbatools?a=j35w2cbJNrw:zjKqJDIgPY8:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/dbatools?d=qj6IDK7rITs" border="0"></img></a>
</div>]]></content:encoded>
  <dc:subject>MyTools</dc:subject>
  <dc:date>2010-04-14T12:35:25+08:00</dc:date>
  <pubDate>Wed, 14 Apr 2010 12:35:25 +0800</pubDate>
  
     <category domain="http://www.sixapart.com/ns/types#tag">Copy</category>
  
     <category domain="http://www.sixapart.com/ns/types#tag">Data</category>
  
     <category domain="http://www.sixapart.com/ns/types#tag">Replication</category>
  
     <category domain="http://www.sixapart.com/ns/types#tag">US7ASCII</category>
  
     <category domain="http://www.sixapart.com/ns/types#tag">UTF8</category>
  
  </item>
  
  <item>
  <title>DataSync: Data Replication (SCOTT.EMP) between Oracle databases</title>
  <link>http://www.dbatools.net/mytools/datasync-data-replication.html</link>
  <description><![CDATA[&nbsp; &nbsp; I want to introduce a new utility for data replication solution based on materialized view log or user defined triggers, I named it as DataSync, suppose that we want to replicate table (SCOTT.EMP)'s data from DB1 to DB2...]]></description>
  <guid isPermaLink="false">2386@http://www.dbatools.net/</guid>
  <content:encoded><![CDATA[
      <p>Author: <a href="http://www.dbatools.net">AnySQL</a>, published on <a href="http://www.dbatools.net">dbatools.net</a>, Oracle Data Recovery, Tools, WebChart Report, etc. </p><p>&nbsp; &nbsp; I want to introduce a new utility for data replication solution based on materialized view log or user defined triggers, I named it as <a href="http://www.dbatools.net/software/datasync.zip">DataSync</a>, suppose that we want to replicate table (SCOTT.EMP)'s data from DB1 to DB2 with low latency (less than 5s). Take a look at the command line help first.</p>

<blockquote class="prefont">
DataSync: Oracle Data Replication Utility, Release 2.0.1<br />
(c) Copyright Lou Fangxin (AnySQL.net) 2010, all rights reserved.<br />
<br />
Usage: datasync keyword=value [,keyword=value,...]<br />
<br />
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.<br />
<br />
Notes:<br />
&nbsp;  datasync user1=scott/tiger user2=scott/tiger config=scott.cfg init=yes<br />
<br />
Config:<br />
&nbsp;  Source # Primary Key # Log Table # Target # Conflict # Filler # Where
</blockquote>

<p>&nbsp; &nbsp; Then we will start to do the replication of table (SCOTT.EMP), it's very simple. </p>

<p>&nbsp; &nbsp; 1, Create Materilaized View Log on SCOTT.EMP</p>

<blockquote class="prefont">
CREATE MATERILIZED VIEW LOG ON EMP WITH SEQUENCE, PRIMARY KEY;<br />
CREATE INDEX MLOG$_EMP_IX1 ON MLOG$_EMP (SEQUENCE$$);
</blockquote>

<p>&nbsp; &nbsp; 2, Prepare a configuration file for replication, one table per line.</p>

<blockquote class="prefont">
D:\&gt;type scott.cfg<br />
EMP&nbsp; #EMPNO&nbsp;  #MLOG$_EMP&nbsp; #EMP
</blockquote>

<p>&nbsp; &nbsp; 3, Data initialize between tow databases with <a href="http://www.dbatools.net/software/datacopy.zip">DataCopy</a></p>

<blockquote class="prefont">
datacopy user1=scott/tiger@db1 user2=scott/tiger@db2 table=emp
</blockquote>

<p>&nbsp; &nbsp; 4, start data replication daemon with init mode</p>

<blockquote class="prefont">
datasync user1=scott/tiger@db1 user2=scott/tiger@db2 config=scott.cfg
</blockquote>

<p>&nbsp; &nbsp; 5, Make DML changes on source database, changes will be replicated.</p>

<blockquote class="prefont">
update emp set comm = nvl(comm,0) + 200;
</blockquote>

<p>&nbsp; &nbsp; Now you have a very light replication tools, you can use it to make read database for you application. </p>


</p>
      <p><b>Related Posts</b></p>
	
            <div><a href="http://www.dbatools.net/mytools/us7ascii-utf8-data-migration.html">Data Migration between different Oracle character set</a> (0)</div>
        
            <div><a href="http://www.dbatools.net/mytools/sqluldr2-datacopy-gui-version.html">Windows GUI version of SQLULDR2 and DataCopy released.</a> (3)</div>
        
            <div><a href="http://www.dbatools.net/mytools/sqluldr2-windows-sdk-released.html">SQLULDR2 Windows Developer SDK Released.</a> (0)</div>
        
            <div><a href="http://www.dbatools.net/mytools/parallel-datacopy-version.html">DataCopy : Native Parallel Support Now ! Parallel Inside !</a> (0)</div>
        
            <div><a href="http://www.dbatools.net/mytools/parallel-sqluldr2-datacopy.html">Parallel execution of SQLULDR2 or DataCopy for huge tables</a> (0)</div>
        
      </p>
      <p><b><a href="http://twitter.com/dbatools" target="_blank">Twitter Me?</a> | <a href="http://www.dbatools.net/mytools/datasync-data-replication.html#comments" title="Comment on: DataSync: Data Replication (SCOTT.EMP) between Oracle databases">Leave New Comment</a></b>(Current: 0)</p> 
      <p>Link: <a href="http://www.dbatools.net/mytools/datasync-data-replication.html">http://www.dbatools.net/mytools/datasync-data-replication.html</a> </p>
      </description>
      
  <div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/dbatools?a=inp9519of_g:AkDlrCdZehU:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/dbatools?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dbatools?a=inp9519of_g:AkDlrCdZehU:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/dbatools?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dbatools?a=inp9519of_g:AkDlrCdZehU:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/dbatools?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dbatools?a=inp9519of_g:AkDlrCdZehU:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/dbatools?i=inp9519of_g:AkDlrCdZehU:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dbatools?a=inp9519of_g:AkDlrCdZehU:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/dbatools?d=qj6IDK7rITs" border="0"></img></a>
</div>]]></content:encoded>
  <dc:subject>MyTools</dc:subject>
  <dc:date>2010-03-25T15:52:42+08:00</dc:date>
  <pubDate>Thu, 25 Mar 2010 15:52:42 +0800</pubDate>
  
     <category domain="http://www.sixapart.com/ns/types#tag">Data</category>
  
     <category domain="http://www.sixapart.com/ns/types#tag">Replication</category>
  
     <category domain="http://www.sixapart.com/ns/types#tag">Shareplex</category>
  
  </item>
  
  <item>
  <title>DataCopy : Oracle data migration utility, faster than exp/imp</title>
  <link>http://www.dbatools.net/mytools/datacopy-utility.html</link>
  <description><![CDATA[&nbsp; &nbsp; We always use Oracle exp and imp utilities to move data from one oracle database to another, but the Oracle imp utility is really slow, because it does not support direct path load, and we must prepare lot's...]]></description>
  <guid isPermaLink="false">2385@http://www.dbatools.net/</guid>
  <content:encoded><![CDATA[
      <p>Author: <a href="http://www.dbatools.net">AnySQL</a>, published on <a href="http://www.dbatools.net">dbatools.net</a>, Oracle Data Recovery, Tools, WebChart Report, etc. </p><p>&nbsp; &nbsp; We always use Oracle exp and imp utilities to move data from one oracle database to another, but the Oracle imp utility is really slow, because it does not support direct path load, and we must prepare lot's of storage to store the dmp file. Another way is to use database link and CTAS command, but the database server must be accessable in network. Is there a tool to copy data between Oracle databases without file genration and no database link required? Yes, we now have the <a href="http://www.dbatools.net/software/datacopy.zip">DataCopy</a> utility. </p>

<p>&nbsp; &nbsp; It's very easy to use, I don't think we need read a detailed document before we start to use it. Just read the command line help and enjoy it. </p>

<blockquote class="prefont">
DataCopy: Fast Oracle Data Copy (Demo Version), Release 2.0.1<br />
(c) Copyright Lou Fangxin (AnySQL.net) 2010, all rights reserved.<br />
<br />
Usage: datacopy keyword=value [,keyword=value,...]<br />
<br />
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 />
&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 />
 * conflict= conflict columns for update on target table.<br />
&nbsp;  log&nbsp; &nbsp;  = log file name for screen messages.<br />
<br />
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
</blockquote>

<p>&nbsp; &nbsp; For any question of this utility, add my MSN for online communication. </p>

</p>
      <p><b>Related Posts</b></p>
	
            <div><a href="http://www.dbatools.net/mytools/sqluldr2-datacopy-gui-version.html">Windows GUI version of SQLULDR2 and DataCopy released.</a> (3)</div>
        
            <div><a href="http://www.dbatools.net/mytools/parallel-inside-sqluldr2.html">SQLULDR2 : Native Parallel Support! Parallel Inside!</a> (4)</div>
        
            <div><a href="http://www.dbatools.net/mytools/sqluldr2-windows-sdk-released.html">SQLULDR2 Windows Developer SDK Released.</a> (0)</div>
        
            <div><a href="http://www.dbatools.net/mytools/parallel-datacopy-version.html">DataCopy : Native Parallel Support Now ! Parallel Inside !</a> (0)</div>
        
            <div><a href="http://www.dbatools.net/mytools/sqluldr2-license.html">License required for full SQLULDR2 (Oracle Text Unload) version.</a> (0)</div>
        
      </p>
      <p><b><a href="http://twitter.com/dbatools" target="_blank">Twitter Me?</a> | <a href="http://www.dbatools.net/mytools/datacopy-utility.html#comments" title="Comment on: DataCopy : Oracle data migration utility, faster than exp/imp">Leave New Comment</a></b>(Current: 0)</p> 
      <p>Link: <a href="http://www.dbatools.net/mytools/datacopy-utility.html">http://www.dbatools.net/mytools/datacopy-utility.html</a> </p>
      </description>
      
  <div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/dbatools?a=gl2HhydJAq0:0s-iT9W0Upg:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/dbatools?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dbatools?a=gl2HhydJAq0:0s-iT9W0Upg:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/dbatools?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dbatools?a=gl2HhydJAq0:0s-iT9W0Upg:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/dbatools?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dbatools?a=gl2HhydJAq0:0s-iT9W0Upg:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/dbatools?i=gl2HhydJAq0:0s-iT9W0Upg:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dbatools?a=gl2HhydJAq0:0s-iT9W0Upg:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/dbatools?d=qj6IDK7rITs" border="0"></img></a>
</div>]]></content:encoded>
  <dc:subject>MyTools</dc:subject>
  <dc:date>2010-03-17T17:45:34+08:00</dc:date>
  <pubDate>Wed, 17 Mar 2010 17:45:34 +0800</pubDate>
  
     <category domain="http://www.sixapart.com/ns/types#tag">Data</category>
  
     <category domain="http://www.sixapart.com/ns/types#tag">Export</category>
  
     <category domain="http://www.sixapart.com/ns/types#tag">Import</category>
  
     <category domain="http://www.sixapart.com/ns/types#tag">Migration</category>
  
     <category domain="http://www.sixapart.com/ns/types#tag">Tools</category>
  
  </item>
  
  <item>
  <title>Define the row filters for reports in WebChart</title>
  <link>http://www.dbatools.net/mytools/webchart-rows-filter.html</link>
  <description><![CDATA[&nbsp; &nbsp; Supposed that we are creating a report of the top 3 highest salary employees for every department (check the Oracle demo table : SCOTT.EMP). If the table is stored in Oracle database, we could generate the report with...]]></description>
  <guid isPermaLink="false">2384@http://www.dbatools.net/</guid>
  <content:encoded><![CDATA[
      <p>Author: <a href="http://www.dbatools.net">AnySQL</a>, published on <a href="http://www.dbatools.net">dbatools.net</a>, Oracle Data Recovery, Tools, WebChart Report, etc. </p><p>&nbsp; &nbsp; Supposed that we are creating a report of the top 3 highest salary employees for every department (check the Oracle demo table : SCOTT.EMP). If the table is stored in Oracle database, we could generate the report with one Oracle SQL query as following. </p>

<blockquote class="prefont">
SELECT * FROM (<br />
SELECT DEPTNO, EMPNO, ENAME, SAL,<br />
&nbsp;  RANK() OVER (PARTITION BY DEPTNO ORDER BY SAL DESC) RNK<br />
FROM EMP ) WHERE RNK &lt;= 3
</blockquote>

<p>&nbsp; &nbsp; But if we store this employee table in MySQL or SQLLite database, generating the top n salary employee report will be very complex or difficult. It's hard for us to know different SQL syntax on different database systems. With the feature of the WebChart, you can generate the report with very simple SQL query. </p> 

<blockquote class="prefont">
webchart.query_1=select deptno, empno, ename, sal from emp<br />
webchart.express_1=rank|x|rnk::sal|deptno<br />
<strong>webchart.filter_1=3.5-x|rank</strong><br />
webchart.sort_1=deptno,rank<br />
webchart.group_1=1
</blockquote>

<p>&nbsp; &nbsp; If the result of filter express for specific row is negative, the specific row is removed from the result set. For example, if the salary rank is large than 3, the result will be negative number, and the employee record is removed by the program, and just keep the top 3 employees for every department as we required, and we will get a result page as following. </p>

<blockquote class="prefont">
<table border="1" width="550" cellspacing="0" cellpadding="2">
<caption align="center">
<font size="5"></font>
</caption>
<tr>
<th width="16%">deptno</th><th width="16%">empno</th><th width="25%">ename</th><th width="25%">sal</th><th width="16%">rank</th>
</tr>
<tr>
<td rowspan="3" align="right">10</td><td bgcolor="#eeeeee" align="right">7839</td><td bgcolor="#eeeeee" align="center">KING</td><td bgcolor="#eeeeee" align="right">5000.0</td><td bgcolor="#eeeeee" align="right">1</td>
</tr>
<tr>
<td align="right">7782</td><td align="center">CLARK</td><td align="right">2450.0</td><td align="right">2</td>
</tr>
<tr>
<td bgcolor="#eeeeee" align="right">7934</td><td bgcolor="#eeeeee" align="center">MILLER</td><td bgcolor="#eeeeee" align="right">1300.0</td><td bgcolor="#eeeeee" align="right">3</td>
</tr>
<tr>
<td rowspan="3" align="right">20</td><td align="right">7788</td><td align="center">SSCOTT</td><td align="right">3000.0</td><td align="right">1</td>
</tr>
<tr>
<td bgcolor="#eeeeee" align="right">7902</td><td bgcolor="#eeeeee" align="center">FORD</td><td bgcolor="#eeeeee" align="right">3000.0</td><td bgcolor="#eeeeee" align="right">2</td>
</tr>
<tr>
<td align="right">7566</td><td align="center">JONESS</td><td align="right">2975.0</td><td align="right">3</td>
</tr>
<tr>
<td rowspan="3" align="right">30</td><td bgcolor="#eeeeee" align="right">7698</td><td bgcolor="#eeeeee" align="center">BLAKE</td><td bgcolor="#eeeeee" align="right">2850.0</td><td bgcolor="#eeeeee" align="right">1</td>
</tr>
<tr>
<td align="right">7499</td><td align="center">ALLEN</td><td align="right">1600.0</td><td align="right">2</td>
</tr>
<tr>
<td bgcolor="#eeeeee" align="right">7844</td><td bgcolor="#eeeeee" align="center">TURNER</td><td bgcolor="#eeeeee" align="right">1500.0</td><td bgcolor="#eeeeee" align="right">3</td>
</tr>
</table>
</blockquote>

<p>&nbsp; &nbsp; By doing the computation at application side, we make the SQL very simple. If the report is accessed very frequently, we also reduce the load of database server. </p>
</p>
      <p><b>Related Posts</b></p>
	
            <div><a href="http://www.dbatools.net/mytools/webchart-multidb-support.html">Define different SQLs for different databases in WebChart</a> (0)</div>
        
            <div><a href="http://www.dbatools.net/mytools/webchart-mysql-examples.html">WebChart Sample Pages on MySQL Database</a> (0)</div>
        
            <div><a href="http://www.dbatools.net/experience/logical-database-access-layer.html">The logical database layer and physical database layer</a> (2)</div>
        
            <div><a href="http://www.dbatools.net/mytools/webchart-new-xsl-template.html">Change the WebChart XSL template to show nagivation links</a> (0)</div>
        
            <div><a href="http://www.dbatools.net/mytools/webchart-href-links.html">Create the HREF links in WebChart Pages</a> (9)</div>
        
      </p>
      <p><b><a href="http://twitter.com/dbatools" target="_blank">Twitter Me?</a> | <a href="http://www.dbatools.net/mytools/webchart-rows-filter.html#comments" title="Comment on: Define the row filters for reports in WebChart">Leave New Comment</a></b>(Current: 0)</p> 
      <p>Link: <a href="http://www.dbatools.net/mytools/webchart-rows-filter.html">http://www.dbatools.net/mytools/webchart-rows-filter.html</a> </p>
      </description>
      
  <div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/dbatools?a=DwxwXYvEff8:hA2d0LYujZY:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/dbatools?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dbatools?a=DwxwXYvEff8:hA2d0LYujZY:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/dbatools?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dbatools?a=DwxwXYvEff8:hA2d0LYujZY:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/dbatools?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dbatools?a=DwxwXYvEff8:hA2d0LYujZY:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/dbatools?i=DwxwXYvEff8:hA2d0LYujZY:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dbatools?a=DwxwXYvEff8:hA2d0LYujZY:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/dbatools?d=qj6IDK7rITs" border="0"></img></a>
</div>]]></content:encoded>
  <dc:subject>MyTools</dc:subject>
  <dc:date>2010-03-04T22:42:16+08:00</dc:date>
  <pubDate>Thu, 04 Mar 2010 22:42:16 +0800</pubDate>
  
     <category domain="http://www.sixapart.com/ns/types#tag">Java</category>
  
     <category domain="http://www.sixapart.com/ns/types#tag">MySQL</category>
  
     <category domain="http://www.sixapart.com/ns/types#tag">Tomcat</category>
  
     <category domain="http://www.sixapart.com/ns/types#tag">WebChart</category>
  
  </item>
  
  <item>
  <title>Define different SQLs for different databases in WebChart</title>
  <link>http://www.dbatools.net/mytools/webchart-multidb-support.html</link>
  <description><![CDATA[&nbsp; &nbsp; Some people like to run WebChart demo application on Oracle database, while some other people may like to run WebChart demo application on MySQL database. Seems I have to write two WebChart demo applications, one for Oracle, another...]]></description>
  <guid isPermaLink="false">2383@http://www.dbatools.net/</guid>
  <content:encoded><![CDATA[
      <p>Author: <a href="http://www.dbatools.net">AnySQL</a>, published on <a href="http://www.dbatools.net">dbatools.net</a>, Oracle Data Recovery, Tools, WebChart Report, etc. </p><p>&nbsp; &nbsp; Some people like to run WebChart demo application on Oracle database, while some other people may like to run WebChart demo application on MySQL database. Seems I have to write two WebChart demo applications, one for Oracle, another one for MySQL database. </p>

<p>&nbsp; &nbsp; I think I should not ask customer to use Oracle or MySQL, WebChart should support almost all major different database systems. It's possible now to define different SQLs for different databases, for example, we define the following SQLs as the data source of one WebChart page. </p>

<blockquote class="prefont">
WEBCHART.QUERY_1=*<br />
<br />
WEBCHART.QUERY_ORACLE_1=select <br />
&nbsp; &nbsp; &nbsp; to_char(trade_month,'yyyy/mm') month , <br />
&nbsp; &nbsp; &nbsp; trade_count count <br />
&nbsp; from trade_monthly_summary <br />
&nbsp; where to_char(trade_month,'yyyy')='2008'<br />
&nbsp; <br />
WEBCHART.QUERY_MYSQL_1=select <br />
&nbsp; &nbsp; &nbsp; trade_month,<br />
&nbsp; &nbsp; &nbsp; trade_count+0 as count <br />
&nbsp; from trade_summary_monthly <br />
&nbsp; where year(trade_month) = 2008<br />
</blockquote>

<p>&nbsp; &nbsp; When connect to Oracle, it will run the SQL defined for the Oracle database, when connect to MySQL, it will run the SQL defined for the MySQL database. It's possible to create one demo application to work fine for both Oracle and MySQL, and other different types of databases. </p>

</p>
      <p><b>Related Posts</b></p>
	
            <div><a href="http://www.dbatools.net/mytools/webchart-rows-filter.html">Define the row filters for reports in WebChart</a> (0)</div>
        
            <div><a href="http://www.dbatools.net/mytools/webchart-mysql-examples.html">WebChart Sample Pages on MySQL Database</a> (0)</div>
        
            <div><a href="http://www.dbatools.net/experience/logical-database-access-layer.html">The logical database layer and physical database layer</a> (2)</div>
        
            <div><a href="http://www.dbatools.net/mytools/webchart-new-xsl-template.html">Change the WebChart XSL template to show nagivation links</a> (0)</div>
        
            <div><a href="http://www.dbatools.net/mytools/webchart-href-links.html">Create the HREF links in WebChart Pages</a> (9)</div>
        
      </p>
      <p><b><a href="http://twitter.com/dbatools" target="_blank">Twitter Me?</a> | <a href="http://www.dbatools.net/mytools/webchart-multidb-support.html#comments" title="Comment on: Define different SQLs for different databases in WebChart">Leave New Comment</a></b>(Current: 0)</p> 
      <p>Link: <a href="http://www.dbatools.net/mytools/webchart-multidb-support.html">http://www.dbatools.net/mytools/webchart-multidb-support.html</a> </p>
      </description>
      
  <div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/dbatools?a=PDHC_GIR5KM:FP4KBdnPNLg:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/dbatools?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dbatools?a=PDHC_GIR5KM:FP4KBdnPNLg:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/dbatools?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dbatools?a=PDHC_GIR5KM:FP4KBdnPNLg:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/dbatools?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dbatools?a=PDHC_GIR5KM:FP4KBdnPNLg:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/dbatools?i=PDHC_GIR5KM:FP4KBdnPNLg:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dbatools?a=PDHC_GIR5KM:FP4KBdnPNLg:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/dbatools?d=qj6IDK7rITs" border="0"></img></a>
</div>]]></content:encoded>
  <dc:subject>MyTools</dc:subject>
  <dc:date>2010-03-03T17:01:11+08:00</dc:date>
  <pubDate>Wed, 03 Mar 2010 17:01:11 +0800</pubDate>
  
     <category domain="http://www.sixapart.com/ns/types#tag">Java</category>
  
     <category domain="http://www.sixapart.com/ns/types#tag">MySQL</category>
  
     <category domain="http://www.sixapart.com/ns/types#tag">Tomcat</category>
  
     <category domain="http://www.sixapart.com/ns/types#tag">WebChart</category>
  
  </item>
  
  <item>
  <title>The logical database layer and physical database layer</title>
  <link>http://www.dbatools.net/experience/logical-database-access-layer.html</link>
  <description><![CDATA[&nbsp; &nbsp; Usually our application are bound to one physical database, for example, we always read our data from specific Oracle database or MySQL database, or write business data to specific Oracle database or MySQL database. The physical database is...]]></description>
  <guid isPermaLink="false">2382@http://www.dbatools.net/</guid>
  <content:encoded><![CDATA[
      <p>Author: <a href="http://www.dbatools.net">AnySQL</a>, published on <a href="http://www.dbatools.net">dbatools.net</a>, Oracle Data Recovery, Tools, WebChart Report, etc. </p><p>&nbsp; &nbsp; Usually our application are bound to one physical database, for example, we always read our data from specific Oracle database or MySQL database, or write business data to specific Oracle database or MySQL database. The physical database is not transparent to the application, many application developers know which physical database the data stores. But that's not so good, we'd better introduce a logical database layer between application and the pnysical database. </p>

<p>&nbsp; &nbsp; We create some logical database name, and in the application code, we just use the logical database name, then we can intoduce a relation map between the logical database name and physical database, while the appliction doesn't care about the physical database location. </p>

<blockquote class="prefont">
LOGICAL.logical database name=relation type|data source list
</blockquote>

<p>&nbsp; &nbsp; In the WebChart utility, I intorudced 5 types of logical relation between the application and physical database, we may call it logical relation. The first type is equal (FIRST), always choose the first data source. </p>

<blockquote class="prefont">
LOGICAL.WRITEDB=FIRST|masterdb
</blockquote>

<p>&nbsp; &nbsp; The second type is random (RANDOM), choose one data source from the data source list randomly. </p>

<blockquote class="prefont">
LOGICAL.SLAVEDB=RANDOM|slavedb1, slavedb2, slavedb3
</blockquote>

<p>&nbsp; &nbsp; The third type is sequential (FAILOVER), if the first is unavailable (markdown), then get the next data source. We want our application read data from slave first, if no slave available then read data from master database. </p>

<blockquote class="prefont">
LOGICAL.READDB=FAILOVER|slavedb, writedb
</blockquote>

<p>&nbsp; &nbsp; The forth type is get data source by position value, the application will get the data source by a specific hash value, and we get the data source by mod it with available data source count. If we provide a hash value 5, then we will get the get the slavedfb3 connection (5%3=2). </p>

<blockquote class="prefont">
LOGICAL.SLAVEDB=POSITION|slavedb1, slavedb2, slavedb3
</blockquote>

<p>&nbsp; &nbsp; The last type is get data source by a range value, the application will get the data source by a value range. If we provide a range value 150, we will get slavedb2 connection.</p>

<blockquote class="prefont">
LOGICAL.SLAVEDB=RANGE|slavedb1, slavedb2, slavedb3<br />
LOGICAL.SLAVEDB.VALUES=100,200,300
</blockquote>

<p>&nbsp; &nbsp; I found it may be valuable to make the application transparent to the physical databases. How do you think about it?</p> 
</p>
      <p><b>Related Posts</b></p>
	
            <div><a href="http://www.dbatools.net/mytools/webchart-mysql-examples.html">WebChart Sample Pages on MySQL Database</a> (0)</div>
        
            <div><a href="http://www.dbatools.net/mytools/webchart-rows-filter.html">Define the row filters for reports in WebChart</a> (0)</div>
        
            <div><a href="http://www.dbatools.net/mytools/webchart-multidb-support.html">Define different SQLs for different databases in WebChart</a> (0)</div>
        
            <div><a href="http://www.dbatools.net/mytools/webchart-multi-lines-value.html">Specify multiple lines value in WebChart defination</a> (0)</div>
        
            <div><a href="http://www.dbatools.net/mytools/webchart-custom-colors.html">Customize all the chart colors of WebChart utility</a> (0)</div>
        
      </p>
      <p><b><a href="http://twitter.com/dbatools" target="_blank">Twitter Me?</a> | <a href="http://www.dbatools.net/experience/logical-database-access-layer.html#comments" title="Comment on: The logical database layer and physical database layer">Leave New Comment</a></b>(Current: 2)</p> 
      <p>Link: <a href="http://www.dbatools.net/experience/logical-database-access-layer.html">http://www.dbatools.net/experience/logical-database-access-layer.html</a> </p>
      </description>
      
  <div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/dbatools?a=-INDe__KonA:Vu6E6Y6HPwg:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/dbatools?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dbatools?a=-INDe__KonA:Vu6E6Y6HPwg:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/dbatools?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dbatools?a=-INDe__KonA:Vu6E6Y6HPwg:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/dbatools?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dbatools?a=-INDe__KonA:Vu6E6Y6HPwg:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/dbatools?i=-INDe__KonA:Vu6E6Y6HPwg:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dbatools?a=-INDe__KonA:Vu6E6Y6HPwg:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/dbatools?d=qj6IDK7rITs" border="0"></img></a>
</div>]]></content:encoded>
  <dc:subject>Experience</dc:subject>
  <dc:date>2010-01-27T18:14:39+08:00</dc:date>
  <pubDate>Wed, 27 Jan 2010 18:14:39 +0800</pubDate>
  
     <category domain="http://www.sixapart.com/ns/types#tag">Java</category>
  
     <category domain="http://www.sixapart.com/ns/types#tag">JDBC</category>
  
     <category domain="http://www.sixapart.com/ns/types#tag">MySQL</category>
  
     <category domain="http://www.sixapart.com/ns/types#tag">WebChart</category>
  
  </item>
  
  <item>
  <title>Fixed AUL license is available now for you</title>
  <link>http://www.dbatools.net/mydul/fixed-aul-license-is-available.html</link>
  <description><![CDATA[&nbsp; &nbsp; It has been 5 years since I released the first version of AUL utility, and I have helped lots of customers to get their data back from corrupted database, such as lost system tablespace, table dropped or truncated....]]></description>
  <guid isPermaLink="false">2381@http://www.dbatools.net/</guid>
  <content:encoded><![CDATA[
      <p>Author: <a href="http://www.dbatools.net">AnySQL</a>, published on <a href="http://www.dbatools.net">dbatools.net</a>, Oracle Data Recovery, Tools, WebChart Report, etc. </p><p>&nbsp; &nbsp; It has been 5 years since I released the first version of AUL utility, and I have helped lots of customers to get their data back from corrupted database, such as lost system tablespace, table dropped or truncated. But every time AUL started, you were required to input a new license code, which I called it "dynamic license model", it becomes obsolete now. </p>

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

<p>&nbsp; &nbsp; On windows platform, AUL will not change the register code unless you restall the windows, or move it to another host. So you can buy one real AUL license to recover your data at any time, for any Oracle databased. The fixed license model is comming for you. </p>

<p>&nbsp; &nbsp; For example, every time I start the AUL utility, it will generate the same register code. </p>

<blockquote class="prefont">
Register Code: <strong>DETO-NODT-JETT-DNMX-DDCN</strong><br />
AUL : AnySQL UnLoader(MyDUL) for Oracle 8/8i/9i/10g/11g, release 5.1.1<br />
<br />
(C) Copyright Lou Fangxin 2005-2010 (AnySQL.net), all rights reserved.<br />
<br />
AUL&gt;
</blockquote>

<p>&nbsp; &nbsp; AUL does not bind it to a physical host, it may change the register code after you reinstall or upgrade the windows version, or replace the disks etc. The newer fixed license mode will give more benifit to AUL customers. </p>

<p>&nbsp; &nbsp; After all, now you can get a real AUL license, not just a service. </p>



</p>
      <p><b>Related Posts</b></p>
	
            <div><a href="http://www.dbatools.net/mydul/aul-payment.html">The payment of AUL Oracle data recovery service.</a> (4)</div>
        
            <div><a href="http://www.dbatools.net/mydul/aul-license.html">The steps of register and apply AUL(MyDUL) license</a> (0)</div>
        
            <div><a href="http://www.dbatools.net/mydul/aul-customer-wold-map.html">Save the customer's data, resue the world.</a> (0)</div>
        
            <div><a href="http://www.dbatools.net/mydul/aul-better-than-dul.html">AUL/MyDUL vs. Oracle DUL, which is better?</a> (0)</div>
        
            <div><a href="http://www.dbatools.net/mydul/aul-indexes.html">Recover the table's index structure information.</a> (0)</div>
        
      </p>
      <p><b><a href="http://twitter.com/dbatools" target="_blank">Twitter Me?</a> | <a href="http://www.dbatools.net/mydul/fixed-aul-license-is-available.html#comments" title="Comment on: Fixed AUL license is available now for you">Leave New Comment</a></b>(Current: 0)</p> 
      <p>Link: <a href="http://www.dbatools.net/mydul/fixed-aul-license-is-available.html">http://www.dbatools.net/mydul/fixed-aul-license-is-available.html</a> </p>
      </description>
      
  <div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/dbatools?a=X_laKfmrp2U:GVkTg8WpIus:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/dbatools?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dbatools?a=X_laKfmrp2U:GVkTg8WpIus:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/dbatools?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dbatools?a=X_laKfmrp2U:GVkTg8WpIus:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/dbatools?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dbatools?a=X_laKfmrp2U:GVkTg8WpIus:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/dbatools?i=X_laKfmrp2U:GVkTg8WpIus:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dbatools?a=X_laKfmrp2U:GVkTg8WpIus:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/dbatools?d=qj6IDK7rITs" border="0"></img></a>
</div>]]></content:encoded>
  <dc:subject>MyDUL</dc:subject>
  <dc:date>2010-01-27T13:21:55+08:00</dc:date>
  <pubDate>Wed, 27 Jan 2010 13:21:55 +0800</pubDate>
  
     <category domain="http://www.sixapart.com/ns/types#tag">AUL</category>
  
     <category domain="http://www.sixapart.com/ns/types#tag">License</category>
  
     <category domain="http://www.sixapart.com/ns/types#tag">MyDUL</category>
  
     <category domain="http://www.sixapart.com/ns/types#tag">Recovery</category>
  
  </item>
  
  <item>
  <title>Migrate data from Oracle to MySQL with SQLULDR2</title>
  <link>http://www.dbatools.net/mytools/sqluldr2-oracle-migrate-data-to-mysql.html</link>
  <description><![CDATA[&nbsp; &nbsp; More and more people are moving non-important data out of Oracle to MySQL for lower Oracle license fee. For DBAs, we need to know how to migrate data from Oracle to MySQL quickly. I will introduce you how...]]></description>
  <guid isPermaLink="false">2377@http://www.dbatools.net/</guid>
  <content:encoded><![CDATA[
      <p>Author: <a href="http://www.dbatools.net">AnySQL</a>, published on <a href="http://www.dbatools.net">dbatools.net</a>, Oracle Data Recovery, Tools, WebChart Report, etc. </p><p>&nbsp; &nbsp; More and more people are moving non-important data out of Oracle to MySQL for lower Oracle license fee. For DBAs, we need to know how to migrate data from Oracle to MySQL quickly. I will introduce you how to migrate data with free SQLULDR2 utility. </p>

<p>&nbsp; &nbsp; We can export Oracle data to text file, then load it with MySQL "LOAD DATA" command, SQLULDR2 can escape the special character in the column value for MySQL data load. Just run the following SQLULDR2 comman.</p>

<blockquote class="prefont">
sqluldr2 ... <strong>escape=0x5c quote=0x22 null=0x5cN field=0x2c record=0x0a</strong>
</blockquote>

<p>&nbsp; &nbsp; Then you can load the data in MySQL with following SQL command.</p>

<blockquote class="prefont">
LOAD DATA LOCAL INFILE '...'&nbsp; INTO TABLE ...<br />
&nbsp;  <strong>FIELDS TERMINATED BY ','&nbsp; OPTIONALLY ENCLOSED BY '\"' </strong><br />
&nbsp;  <strong>ESCAPED BY '\\' LINES TERMINATED BY '\n'</strong>;
</blockquote>

<p>&nbsp; &nbsp; We can also export Oracle data to insert SQLs files, and then run it in MySQL. SQLULDR2 can escape the special character in the column value for MySQL SQL syntax. Just run the following SQLULDR2 comman.</p>

<blockquote class="prefont">
sqluldr2 ... <strong>escape=0x5c quote=0x27 null=null field=0x2c format=mysql table=table_name</strong>
</blockquote>

<p>&nbsp; &nbsp; Then you can run insert SQLs in MySQL as following.</p>

<blockquote class="prefont">
mysql&gt source insert_sql_files<br />
$ sqluldr2 ... | mysql database_name
</blockquote>

<p>&nbsp; &nbsp; We are planing to migrate one billion rows from Oracle to MySQL with SQLULDR2. If you have data migration jobs to do, try SQLULDR2, it will save you!</p>

</p>
      <p><b>Related Posts</b></p>
	
            <div><a href="http://www.dbatools.net/mytools/sqluldr2-windows-sdk-released.html">SQLULDR2 Windows Developer SDK Released.</a> (0)</div>
        
            <div><a href="http://www.dbatools.net/mytools/sqluldr2-license.html">License required for full SQLULDR2 (Oracle Text Unload) version.</a> (0)</div>
        
            <div><a href="http://www.dbatools.net/mytools/parallel-inside-sqluldr2.html">SQLULDR2 : Native Parallel Support! Parallel Inside!</a> (4)</div>
        
            <div><a href="http://www.dbatools.net/mytools/sqluldr2-password-protection.html">Protect the database connection information in SQLULDR2</a> (1)</div>
        
            <div><a href="http://www.dbatools.net/mytools/sqluldr2-bug-ora-24345.html">SQLULDR2 Bug: ORA-24345 error possible</a> (0)</div>
        
      </p>
      <p><b><a href="http://twitter.com/dbatools" target="_blank">Twitter Me?</a> | <a href="http://www.dbatools.net/mytools/sqluldr2-oracle-migrate-data-to-mysql.html#comments" title="Comment on: Migrate data from Oracle to MySQL with SQLULDR2">Leave New Comment</a></b>(Current: 0)</p> 
      <p>Link: <a href="http://www.dbatools.net/mytools/sqluldr2-oracle-migrate-data-to-mysql.html">http://www.dbatools.net/mytools/sqluldr2-oracle-migrate-data-to-mysql.html</a> </p>
      </description>
      
  <div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/dbatools?a=RnHbORA-P2I:ILYO8u5tBrk:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/dbatools?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dbatools?a=RnHbORA-P2I:ILYO8u5tBrk:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/dbatools?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dbatools?a=RnHbORA-P2I:ILYO8u5tBrk:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/dbatools?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dbatools?a=RnHbORA-P2I:ILYO8u5tBrk:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/dbatools?i=RnHbORA-P2I:ILYO8u5tBrk:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dbatools?a=RnHbORA-P2I:ILYO8u5tBrk:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/dbatools?d=qj6IDK7rITs" border="0"></img></a>
</div>]]></content:encoded>
  <dc:subject>MyTools</dc:subject>
  <dc:date>2009-10-29T23:55:43+08:00</dc:date>
  <pubDate>Thu, 29 Oct 2009 23:55:43 +0800</pubDate>
  
     <category domain="http://www.sixapart.com/ns/types#tag">Export</category>
  
     <category domain="http://www.sixapart.com/ns/types#tag">Migration</category>
  
     <category domain="http://www.sixapart.com/ns/types#tag">MySQL</category>
  
     <category domain="http://www.sixapart.com/ns/types#tag">sqlldr</category>
  
     <category domain="http://www.sixapart.com/ns/types#tag">Text</category>
  
  </item>
  
  <item>
  <title>Protect the database connection information in SQLULDR2</title>
  <link>http://www.dbatools.net/mytools/sqluldr2-password-protection.html</link>
  <description><![CDATA[&nbsp; &nbsp; Some departments need to extract rows from the production daily for busines analyze, so we decide to open the standby in read only mode for data extracting with database link. The database link can protect the database user...]]></description>
  <guid isPermaLink="false">1102@http://www.dbatools.net/</guid>
  <content:encoded><![CDATA[
      <p>Author: <a href="http://www.dbatools.net">AnySQL</a>, published on <a href="http://www.dbatools.net">dbatools.net</a>, Oracle Data Recovery, Tools, WebChart Report, etc. </p><p>&nbsp; &nbsp; Some departments need to extract rows from the production daily for busines analyze, so we decide to open the standby in read only mode for data extracting with database link. The database link can protect the database user password information well. But now they change the data analyze platform, database link does not work anymore, they need to extract the rows into flat files for further processing with greenpalm. </p>

<p>&nbsp; &nbsp; SQLULDR2 is a good tool for extracting rows to flat files for Oracle database. But the security team ask DBAs to well protect the database user password, which required DBAs can only give them encrypted password string. So I add the connection inforamtion encryption feature to SQLULDR2. </p>

<p>&nbsp; &nbsp; By default, SQLULDR2 does not think that the connection information is encrypted, we just put the connection information into the parameter file. </p>

<blockquote class="prefont">
user=scott/tiger@//localhost:1521/db10g<br />
query=select * from emp
</blockquote>

<p>&nbsp; &nbsp; But now we need to protect the connection information by encrypt them in SQLULDR2 with the crypt command line option. </p>

<blockquote class="prefont">
D:\&gt;sqluldr2 user=scott/tiger@//localhost:1521/db10g crypt=create<br />
4899919fa603950b53e639d80245beae8b5d8bb7437bf79e92a473d60377e269<br />
499ee76090faa97f7f043eeae19ffa5445ac5e9d89921dce7f043eeae19ffa54
</blockquote>

<p>&nbsp; &nbsp; Then we put the encrypted connection information into the parameter file, and set the crypt option to "ON". </p>

<blockquote class="prefont">
crypt=on<br />
user=concat the two encrypted lines here<br />
query=select * from emp
</blockquote>

<p>&nbsp; &nbsp; Then we just call SQLULDR2 with this parameter file. </p>

<blockquote class="prefont">
SQLULDR2 parfile=testpar.txt
</blockquote>

<p>&nbsp; &nbsp; You will see that the rows are correctly extracted without providing the real database user name and password, and even the database host information, which maximumly improve the security. </p>

</p>
      <p><b>Related Posts</b></p>
	
            <div><a href="http://www.dbatools.net/mytools/sqluldr2-alter-session-params.html">How to change SQLULDR2 session level's parameters?</a> (1)</div>
        
            <div><a href="http://www.dbatools.net/mytools/sqluldr2-compress.html">SQLULDR2 can compress the output file in GZIP format</a> (0)</div>
        
            <div><a href="http://www.dbatools.net/mytools/ociuldr-buffer-option.html">New command line option for text export utility -- BUFFER</a> (1)</div>
        
            <div><a href="http://www.dbatools.net/mytools/unload-oracle-raw-data.html">The LONG RAW data type support of text unload (export) utility</a> (2)</div>
        
            <div><a href="http://www.dbatools.net/mytools/unload-oracle-with-ociuldr.html">How to unload or export rows as text file, excel CSV file, or excel xls file?</a> (23)</div>
        
      </p>
      <p><b><a href="http://twitter.com/dbatools" target="_blank">Twitter Me?</a> | <a href="http://www.dbatools.net/mytools/sqluldr2-password-protection.html#comments" title="Comment on: Protect the database connection information in SQLULDR2">Leave New Comment</a></b>(Current: 1)</p> 
      <p>Link: <a href="http://www.dbatools.net/mytools/sqluldr2-password-protection.html">http://www.dbatools.net/mytools/sqluldr2-password-protection.html</a> </p>
      </description>
      
  <div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/dbatools?a=j97ZWW4ds5Y:-FtUflOHMAs:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/dbatools?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dbatools?a=j97ZWW4ds5Y:-FtUflOHMAs:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/dbatools?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dbatools?a=j97ZWW4ds5Y:-FtUflOHMAs:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/dbatools?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dbatools?a=j97ZWW4ds5Y:-FtUflOHMAs:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/dbatools?i=j97ZWW4ds5Y:-FtUflOHMAs:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dbatools?a=j97ZWW4ds5Y:-FtUflOHMAs:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/dbatools?d=qj6IDK7rITs" border="0"></img></a>
</div>]]></content:encoded>
  <dc:subject>MyTools</dc:subject>
  <dc:date>2009-06-11T20:58:42+08:00</dc:date>
  <pubDate>Thu, 11 Jun 2009 20:58:42 +0800</pubDate>
  
     <category domain="http://www.sixapart.com/ns/types#tag">Encrypt</category>
  
     <category domain="http://www.sixapart.com/ns/types#tag">Export</category>
  
     <category domain="http://www.sixapart.com/ns/types#tag">Oracle</category>
  
     <category domain="http://www.sixapart.com/ns/types#tag">sqlldr</category>
  
     <category domain="http://www.sixapart.com/ns/types#tag">Text</category>
  
  </item>
  
  <item>
  <title>Copy data between different databases with copydata script</title>
  <link>http://www.dbatools.net/mytools/perl-copy-data-scripts.html</link>
  <description><![CDATA[&nbsp; &nbsp; We start to introduce MySQL and PostgreSQL into our business system, as a replacement of Oracle, to save the license cost. First we need to move some data from Oracle to MySQL or PostgreSQL for performance testing or...]]></description>
  <guid isPermaLink="false">1100@http://www.dbatools.net/</guid>
  <content:encoded><![CDATA[
      <p>Author: <a href="http://www.dbatools.net">AnySQL</a>, published on <a href="http://www.dbatools.net">dbatools.net</a>, Oracle Data Recovery, Tools, WebChart Report, etc. </p><p>&nbsp; &nbsp; We start to introduce MySQL and PostgreSQL into our business system, as a replacement of Oracle, to save the license cost. First we need to move some data from Oracle to MySQL or PostgreSQL for performance testing or business testing. It's not easy work for a Linux &amp; UNIX DBAs to support different types of database systems. </p>

<p>&nbsp; &nbsp; Perl is very powerful script language for DBAs. I wrote the <a href="http://www.dbatools.net/mytools/migrate-data-with-asyncdata.html">asyncdata</a> script with Perl, it support different types of databases well, but asyncdata is not good for one time data copy, so we still need a script to copy static data from one database to another database, so I write a new script (copydata.pl) according the source code of asyncdata. </p>

<p>&nbsp; &nbsp; The table structure of the source table and target table should be the same, the column name must be exactly matched, however the target table can have more columns than source table. But the table name can be different, just put the source table name and target table name into a configuration file. </p>

<blockquote class="prefont">
SOURCE_TABLE1 # TARGET_TABLE1 <br />
SOURCE_TABLE2 # TARGET_TABLE3 <br />
......
</blockquote>

<p>&nbsp; &nbsp; And them run the copydata script to copy the data, as following. </p>

<blockquote class="prefont">
$ copydata.pl -s test#test#Oracle:test1 -t test#test#Oracle:test2 -c test.cfg<br />
08/10 19:51:19 - Replication started, 2 tables in configuration file.<br />
......
</blockquote>

<p>&nbsp; &nbsp; Of cause, you need to insetall <a href="http://www.dbatools.net/tag/Perl">Perl</a> and <a href="http://www.dbatools.net/tag/Perl">Perl DBI</a> before you start to use it.  Perl is my primary script language for database management tools now.</p>

</p>
      <p><b>Related Posts</b></p>
	
            <div><a href="http://www.dbatools.net/mytools/mysql-trigger-for-asyncdata.html">Implement materialized view log on MySQL for asyncdata</a> (1)</div>
        
            <div><a href="http://www.dbatools.net/experience/perl-dbi-conn-string.html">How Perl or asyncdata connect to different databases</a> (0)</div>
        
            <div><a href="http://www.dbatools.net/mytools/oracle-trigger-for-asyncdata.html">Using trigger for asyncdata log table in Oracle database</a> (3)</div>
        
            <div><a href="http://www.dbatools.net/mytools/asyncdata-perf-tuning.html">Tuning the performance of data replication with asyncdata</a> (0)</div>
        
            <div><a href="http://www.dbatools.net/mytools/migrate-data-with-asyncdata.html">Migrate data between different databases with asyncdata script</a> (0)</div>
        
      </p>
      <p><b><a href="http://twitter.com/dbatools" target="_blank">Twitter Me?</a> | <a href="http://www.dbatools.net/mytools/perl-copy-data-scripts.html#comments" title="Comment on: Copy data between different databases with copydata script">Leave New Comment</a></b>(Current: 0)</p> 
      <p>Link: <a href="http://www.dbatools.net/mytools/perl-copy-data-scripts.html">http://www.dbatools.net/mytools/perl-copy-data-scripts.html</a> </p>
      </description>
      
  <div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/dbatools?a=xGvzdscFMH0:PiCkxNZ7oy4:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/dbatools?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dbatools?a=xGvzdscFMH0:PiCkxNZ7oy4:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/dbatools?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dbatools?a=xGvzdscFMH0:PiCkxNZ7oy4:7Q72WNTAKBA"><img src="http://feeds.feedburner.com/~ff/dbatools?d=7Q72WNTAKBA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dbatools?a=xGvzdscFMH0:PiCkxNZ7oy4:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/dbatools?i=xGvzdscFMH0:PiCkxNZ7oy4:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/dbatools?a=xGvzdscFMH0:PiCkxNZ7oy4:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/dbatools?d=qj6IDK7rITs" border="0"></img></a>
</div>]]></content:encoded>
  <dc:subject>MyTools</dc:subject>
  <dc:date>2009-06-10T21:32:33+08:00</dc:date>
  <pubDate>Wed, 10 Jun 2009 21:32:33 +0800</pubDate>
  
     <category domain="http://www.sixapart.com/ns/types#tag">asyncdata</category>
  
     <category domain="http://www.sixapart.com/ns/types#tag">copydata</category>
  
     <category domain="http://www.sixapart.com/ns/types#tag">Data</category>
  
     <category domain="http://www.sixapart.com/ns/types#tag">MySQL</category>
  
     <category domain="http://www.sixapart.com/ns/types#tag">Perl</category>
  
  </item>
  
</channel>
</rss>
