<?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>My Crusade &#187; transportable tablespace</title>
	<atom:link href="http://www.jarodwang.cn/tag/transportable-tablespace/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.jarodwang.cn</link>
	<description>For the future we believe in.</description>
	<lastBuildDate>Tue, 07 Sep 2010 05:42:38 +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>Transportable Tablespace Example</title>
		<link>http://www.jarodwang.cn/2008/05/05/transportable-tablespace-example/</link>
		<comments>http://www.jarodwang.cn/2008/05/05/transportable-tablespace-example/#comments</comments>
		<pubDate>Mon, 05 May 2008 14:27:30 +0000</pubDate>
		<dc:creator>jarodwang</dc:creator>
				<category><![CDATA[Oracle]]></category>
		<category><![CDATA[transportable tablespace]]></category>

		<guid isPermaLink="false">http://www.jarodwang.cn/?p=47</guid>
		<description><![CDATA[在Oracle Database Administrator&#8217;s Guide 11g Release 1 (11.1)里面有专门的一节介绍使用Transportable Tablespace的过程和一个例子： Transporting Tablespaces Between Databases: A Procedure and Example 简单来说有下面几个步骤： 对于跨平台的传输，可以通过查询v$transportable_platform视图来确定两个平台的字节序（endian）。如果表空间的传输是在同一个平台上进行的可以忽略这一步。 选取一个独立的（self-contained）表空间集合。 生成一个可传输的表空间集合。一个可传输表空间集合（或者可传输集合）由需要传输的表空间的数据文件（datafile）和一个包含了表空间集合的结构化信息（元数据（metadata））的导出文件。可以使用数据泵（Data Pump）来进行导出。 传输表空间集合。将数据文件和导出文件拷贝到目标数据库可见的地方。 导入表空间集合。使用数据泵工具将表空间集合的元数据导入到目标数据库。 例子 传输表空间的步骤在下面的例子中将完整描述，假设存在如下的数据文件和表空间： 表空间 数据文件 soe +DG/orcldb/datafile/soe.dbf soeindex +DG/orcldb/datafile/soeindex.dbf 步骤一：确定源和目标平台是否被支持和确定字节序 分别在源和目标平台上执行下面的查询。如果查询返回了一行结果，则这个平台就支持跨平台的表空间传输。 select d.platform_name, endian_format from v$transportable_platform tp, v$database d where tp.platform_name = d.platform_name; 在测试平台上返回的查询结果如下： PLATFORM_NAME ENDIAN_FORMAT &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212; &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;- Linux IA (32-bit) Little [...]]]></description>
			<content:encoded><![CDATA[<p>在Oracle Database Administrator&#8217;s Guide 11g Release 1 (11.1)里面有专门的一节介绍使用Transportable Tablespace的过程和一个例子：</p>
<p><a title="A Procedure and Example" href="http://download.oracle.com/docs/cd/B28359_01/server.111/b28310/tspaces013.htm#i1007252" target="_blank">Transporting Tablespaces Between Databases: A Procedure and Example</a></p>
<p>简单来说有下面几个步骤：</p>
<ol>
<li>对于跨平台的传输，可以通过查询v$transportable_platform视图来确定两个平台的字节序（endian）。如果表空间的传输是在同一个平台上进行的可以忽略这一步。</li>
<li>选取一个独立的（self-contained）表空间集合。</li>
<li>生成一个可传输的表空间集合。一个可传输表空间集合（或者可传输集合）由需要传输的表空间的数据文件（datafile）和一个包含了表空间集合的结构化信息（元数据（metadata））的导出文件。可以使用数据泵（Data Pump）来进行导出。</li>
<li>传输表空间集合。将数据文件和导出文件拷贝到目标数据库可见的地方。</li>
<li>导入表空间集合。使用数据泵工具将表空间集合的元数据导入到目标数据库。</li>
</ol>
<p><strong>例子</strong></p>
<p>传输表空间的步骤在下面的例子中将完整描述，假设存在如下的数据文件和表空间：</p>
<p>表空间               数据文件</p>
<p>soe                       +DG/orcldb/datafile/soe.dbf</p>
<p>soeindex     +DG/orcldb/datafile/soeindex.dbf</p>
<p><strong>步骤一：确定源和目标平台是否被支持和确定字节序</strong></p>
<p>分别在源和目标平台上执行下面的查询。如果查询返回了一行结果，则这个平台就支持跨平台的表空间传输。</p>
<p><code>select d.platform_name, endian_format from v$transportable_platform tp, v$database d where tp.platform_name = d.platform_name;</code></p>
<p>在测试平台上返回的查询结果如下：</p>
<p>PLATFORM_NAME                                 ENDIAN_FORMAT<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212; &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
Linux IA (32-bit)                                   Little</p>
<p>由于测试中的源和目标平台是同一台机器，所以不必进行字节序的转换。</p>
<p><strong>步骤二：选取一个独立的表空间集合</strong></p>
<p>传输集合内部的对象（object）可能和集合以外的对象存在物理或者逻辑上的依赖关系。可是只有独立的表空间集合才可以进行传输。在这里“独立的”意味着表空间集合的内部没有任何对集合以外的对象的引用（reference）。可以使用由Oracle提供的包DBMS_TTS中的transport_set_check过程来进行独立性检查：</p>
<p><code>SQL&gt; execute dbms_tts.transport_set_check('soe,soeindex', TRUE);</code></p>
<p>在执行了这个PL/SQL过程之后，可以通过查询transport_set_violations视图来检查：</p>
<p><code>SQL&gt; select * from transport_set_violations;</code></p>
<p>no rows selected.</p>
<p>没有结果返回说明了soe和soeindex组成的表空间集合是独立的。</p>
<p><strong>步骤三：生成一个可传输表空间集合</strong></p>
<p>使得集合中的所有表空间成为只读（read-only）：</p>
<p><code>SQL&gt; alter tablespace soe read only;</code></p>
<p><code>SQL&gt; alter tablespace soeindex read only;</code></p>
<p>在源平台上使用数据泵导出工具导出表空间集合</p>
<p><code>SQL&gt; create directory dpump_dir as '/scratch/jarod/dpump_dir';</code></p>
<p><code>SQL&gt; host</code></p>
<p><code>$ expdp system/oracle dumpfile=expdat.dmp directory=dpump_dir transport_tablespace=soe,soeindex</code></p>
<p>由于这里数据泵只是导出了表空间的元数据，而没有任何数据被卸载（unload），所以即使是对于较大的表空间集合这个过程也进行得相当快。</p>
<p><strong>步骤四：传输表空间集合</strong></p>
<p>这里选择了使用由Oracle提供的DBMS_FILE_TRANSFER包中的copy_file过程，因为它能支持源和目标是ASM或者文件系统路径。</p>
<p><code>SQL&gt; create directory asm_dir as '+DG/orcldb/datafile';</code></p>
<p><code>SQL&gt; create directory datafile_dir as '/scratch/jarod/datafile_dir';</code></p>
<p>从ASM中将数据文件拷贝到文件系统的目录datafile_dir中：</p>
<p>SQL&gt; begin</p>
<p>dbms_file_transfer.copy_file(</p>
<p>source_directory_object =&gt; &#8216;asm_dir&#8217;,</p>
<p>source_file_name =&gt; &#8216;soe.dbf&#8217;,</p>
<p>destination_directory_object =&gt; &#8216;datafile_dir&#8217;,</p>
<p>destination_file_name =&gt; &#8216;soe.dbf&#8217;);</p>
<p>end;</p>
<p>SQL&gt; /</p>
<p>SQL&gt; begin</p>
<p>dbms_file_transfer.copy_file(</p>
<p>source_directory_object =&gt; &#8216;asm_dir&#8217;,</p>
<p>source_file_name =&gt; &#8216;soeindex.dbf&#8217;,</p>
<p>destination_directory_object =&gt; &#8216;datafile_dir&#8217;,</p>
<p>destination_file_name =&gt; &#8216;soeindex.dbf&#8217;);</p>
<p>end;</p>
<p>SQL&gt; /</p>
<p>此时，在/scratch/jarod/datafile_dir目录中就会生成soe.dbf和soeindex.dbf两个文件。这两个文件接下来就将被传输到目标平台上去。但由于测试环境中源和目标平台是同一台机器，所以现在为了模拟目标平台，首先应当把soe和soeindex两个表空间连同其对应的数据文件删除掉：</p>
<p><code>SQL&gt; drop tablespace soe including contents and datafiles cascade constraints;</code></p>
<p>现在，把导出的数据文件拷贝到ASM中去，仍然使用copy_file过程，注意这次源是存放数据文件的文件系统路径，而目标是ASM。值得注意的是，如果是真实的目标平台，则目标数据库中必须存在和源数据中相同的schema和directory对象。</p>
<p>SQL&gt; begin</p>
<p>dbms_file_transfer.copy_file(</p>
<p>source_directory_object =&gt; &#8216;datafile_dir&#8217;,</p>
<p>source_file_name =&gt; &#8216;soe.dbf&#8217;,</p>
<p>destination_directory_object =&gt; &#8216;asm_dir&#8217;,</p>
<p>destination_file_name =&gt; &#8216;soe.dbf&#8217;);</p>
<p>end;</p>
<p>SQL&gt; /</p>
<p>SQL&gt; begin</p>
<p>dbms_file_transfer.copy_file(</p>
<p>source_directory_object =&gt; &#8216;datafile_dir&#8217;,</p>
<p>source_file_name =&gt; &#8216;soeindex.dbf&#8217;,</p>
<p>destination_directory_object =&gt; &#8216;asm_dir&#8217;,</p>
<p>destination_file_name =&gt; &#8216;soeindex.dbf&#8217;);</p>
<p>end;</p>
<p>SQL&gt; /</p>
<p>成功执行之后，可以使用ASMCMD工具来验证数据文件是否被拷贝到了磁盘组中。</p>
<p><strong>步骤五：导入表空间集合</strong></p>
<p>使用impdp工具来导入表空间集合的元数据</p>
<p><code>$impdp system/oracle dumpfile='expdat.dmp' directory=dpump_dir transport_datafiles='+DG/orcldb/datafile/soe.dbf, +DG/orcldb/datafile/soeindex.dbf'</code></p>
<p>导入完毕之后，再将表空间重新设置为可读写：</p>
<p><code>SQL&gt; alter tablespace soe read write;</code></p>
<p><code>SQL&gt; alter tablespace soeindex read write;</code></p>
<p>至此，整个表空间传输的例子完毕。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jarodwang.cn/2008/05/05/transportable-tablespace-example/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Introduction to Transportable Tablespace</title>
		<link>http://www.jarodwang.cn/2008/04/29/introduction-to-transportable-tablespace/</link>
		<comments>http://www.jarodwang.cn/2008/04/29/introduction-to-transportable-tablespace/#comments</comments>
		<pubDate>Tue, 29 Apr 2008 15:05:06 +0000</pubDate>
		<dc:creator>jarodwang</dc:creator>
				<category><![CDATA[Oracle]]></category>
		<category><![CDATA[transportable tablespace]]></category>

		<guid isPermaLink="false">http://www.jarodwang.cn/?p=46</guid>
		<description><![CDATA[可传输表空间（Transportable Tablespace）特性可用于将一个表空间的集合（set）从一个Oracle数据库拷贝到另一个Oracle数据库。 使用可传输表空间来移动数据要比导出/导入或者卸载/加载同样的数据快很多。这是因为包含了所有实际数据的数据文件（datafile）只需要被拷贝到目的位置，而仅仅使用数据泵（Data Pump）来传输表空间对象的元数据（metadata）到新的数据库即可。 可传输表空间特性在许多场景下都可以用到，包括： 导出和导入数据仓库表中的分区（partition） 将结构化的数据发布到CD上 将一个表空间的多个只读版本拷贝到多个数据库中 归档（archiving）历史数据 进行表空间point-in-time-recovery (TSPITR) 有两种方法可以传输表空间： 手动。包括了执行SQL*Plus，RMAN和Data Pump中的相关命令。 使用企业管理器（Enterprise Manager）中的传输表空间向导（Transport Tablespaces Wizard）。 关于跨平台（platform）传输表空间 从Oracle Database 11g开始，可以跨平台进行表空间的传输。这个功能可用于： 将数据库从一个平台迁移到另一个平台 为内容提供商向运行有不同平台的Oracle数据库的客户发布和分发结构化数据提供了一个更加易用和高效的方法 简化了数据从数据仓库到运行在较小的平台上的数据超市的分发 使得在不同操作系统和平台上的Oracle Database之间可以共享只读的（read-only）表空间，只要存储系统可以被各个平台所访问并且各个平台具有相同的字节序（endianness） 跨平台表空间传输支持很多，但不是全部的平台。可以通过查询v$transportable_platform视图来查看被支持的平台，和确定每个平台的字节序。 SQL&#62; col platform_name for a40 SQL&#62; select * from v$transportable_platform; 如果源平台和目标平台具有不同的字节序，则需要在源平台或者目标平台上将表空间转换成为目标平台的字节序。如果字节序相同，则无需这一转换。]]></description>
			<content:encoded><![CDATA[<p>可传输表空间（Transportable Tablespace）特性可用于将一个表空间的集合（set）从一个Oracle数据库拷贝到另一个Oracle数据库。</p>
<p>使用可传输表空间来移动数据要比导出/导入或者卸载/加载同样的数据快很多。这是因为包含了所有实际数据的数据文件（datafile）只需要被拷贝到目的位置，而仅仅使用数据泵（Data Pump）来传输表空间对象的元数据（metadata）到新的数据库即可。</p>
<p>可传输表空间特性在许多场景下都可以用到，包括：</p>
<ul>
<li>导出和导入数据仓库表中的分区（partition）</li>
<li>将结构化的数据发布到CD上</li>
<li>将一个表空间的多个只读版本拷贝到多个数据库中</li>
<li>归档（archiving）历史数据</li>
<li>进行表空间point-in-time-recovery (TSPITR)</li>
</ul>
<p>有两种方法可以传输表空间：</p>
<ul>
<li>手动。包括了执行SQL*Plus，RMAN和Data Pump中的相关命令。</li>
<li>使用企业管理器（Enterprise Manager）中的传输表空间向导（Transport Tablespaces Wizard）。</li>
</ul>
<p><strong>关于跨平台（platform）传输表空间</strong></p>
<p>从Oracle Database 11g开始，可以跨平台进行表空间的传输。这个功能可用于：</p>
<ul>
<li>将数据库从一个平台迁移到另一个平台</li>
<li>为内容提供商向运行有不同平台的Oracle数据库的客户发布和分发结构化数据提供了一个更加易用和高效的方法</li>
<li>简化了数据从数据仓库到运行在较小的平台上的数据超市的分发</li>
<li>使得在不同操作系统和平台上的Oracle Database之间可以共享只读的（read-only）表空间，只要存储系统可以被各个平台所访问并且各个平台具有相同的字节序（endianness）</li>
</ul>
<p>跨平台表空间传输支持很多，但不是全部的平台。可以通过查询v$transportable_platform视图来查看被支持的平台，和确定每个平台的字节序。</p>
<p>SQL&gt; col platform_name for a40</p>
<p>SQL&gt; select * from v$transportable_platform;</p>
<p>如果源平台和目标平台具有不同的字节序，则需要在源平台或者目标平台上将表空间转换成为目标平台的字节序。如果字节序相同，则无需这一转换。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.jarodwang.cn/2008/04/29/introduction-to-transportable-tablespace/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
