<?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>The Angry Geek &#187; Database</title>
	<atom:link href="http://www.angry-geek.org/tag/database/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.angry-geek.org</link>
	<description>I am geek - hear me roar!</description>
	<lastBuildDate>Mon, 12 Apr 2010 16:27:26 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Oracle: Moving Data to a new Tablespace</title>
		<link>http://www.angry-geek.org/2009/01/oracle-moving-data-to-a-new-tablespace/</link>
		<comments>http://www.angry-geek.org/2009/01/oracle-moving-data-to-a-new-tablespace/#comments</comments>
		<pubDate>Mon, 12 Jan 2009 16:02:02 +0000</pubDate>
		<dc:creator>Rocketeer</dc:creator>
				<category><![CDATA[Oracle Database]]></category>
		<category><![CDATA[Database]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Technical]]></category>
		<category><![CDATA[Work]]></category>

		<guid isPermaLink="false">http://www.angry-geek.org/?p=149</guid>
		<description><![CDATA[The worst thing about being the most technically competent person in a company is that all too often, the buck stops at my desk.  I can&#8217;t complain &#8211; it&#8217;s a problem of my own making; I&#8217;m too lazy to pass on knowledge in a usable format, so I end up having to do a lot [...]]]></description>
			<content:encoded><![CDATA[<!-- sphereit start --><p>The worst thing about being the most technically competent person in a company is that all too often, the buck stops at my desk.  I can&#8217;t complain &#8211; it&#8217;s a problem of my own making; I&#8217;m too lazy to pass on knowledge in a usable format, so I end up having to do a lot of the work.</p>
<p><span id="more-149"></span>One of my regular tasks is sorting out the database on our Support server.  This is a bit of a nightmare, since the users of that server are all &#8211; at least in their own minds &#8211; admin types, so configurations and usage changes on a daily basis.</p>
<p>Today &#8211; we ran out of space.  This isn&#8217;t as bad as it sounds, since I&#8217;ve put a restriction in place to limit any database file to 8GB (this is a limit enforced by my rather lame backup practices).  I knew the problem &#8211; one of our support databases was on the &#8220;USERS&#8221; tablespace, instead of the appropriate customer-specific tablespace.</p>
<p>Thanks to the guys at <a href="http://zhefeng.wordpress.com/2008/12/05/moving-tableindex-to-a-new-segment-or-tablespace/" target="_blank">DBA Sensation</a>, finding the correct commands to move Tables, Indexes and even LOB Segments to a new tablespace was trivial&#8230; But here&#8217;s a very useful script that generates a full set of commands to move all of a given user&#8217;s data from one tablespace to another&#8230;</p>

<div class="wp_syntax"><div class="code"><pre class="sql" style="font-family:monospace;"><span style="color: #993333; font-weight: bold;">SELECT</span> CASE
     WHEN segment_type <span style="color: #66cc66;">=</span> <span style="color: #ff0000;">'TABLE'</span> THEN
          <span style="color: #ff0000;">'ALTER TABLE '</span><span style="color: #66cc66;">||</span>seg<span style="color: #66cc66;">.</span>owner<span style="color: #66cc66;">||</span><span style="color: #ff0000;">'.'</span><span style="color: #66cc66;">||</span>seg<span style="color: #66cc66;">.</span>segment_name <span style="color: #66cc66;">||</span><span style="color: #ff0000;">' MOVE TABLESPACE '</span><span style="color: #66cc66;">||</span><span style="color: #ff0000;">'&amp;TARGET_TBSP'</span><span style="color: #66cc66;">||</span><span style="color: #ff0000;">';'</span>
     WHEN segment_type <span style="color: #66cc66;">=</span> <span style="color: #ff0000;">'INDEX'</span> THEN
          <span style="color: #ff0000;">'ALTER INDEX '</span><span style="color: #66cc66;">||</span>seg<span style="color: #66cc66;">.</span>owner<span style="color: #66cc66;">||</span><span style="color: #ff0000;">'.'</span><span style="color: #66cc66;">||</span>seg<span style="color: #66cc66;">.</span>segment_name <span style="color: #66cc66;">||</span><span style="color: #ff0000;">' REBUILD TABLESPACE '</span><span style="color: #66cc66;">||</span><span style="color: #ff0000;">'&amp;TARGET_TBSP'</span><span style="color: #66cc66;">||</span><span style="color: #ff0000;">';'</span>
     WHEN segment_type <span style="color: #66cc66;">=</span> <span style="color: #ff0000;">'LOBINDEX'</span> THEN
          <span style="color: #ff0000;">'ALTER TABLE '</span><span style="color: #66cc66;">||</span>seg<span style="color: #66cc66;">.</span>owner<span style="color: #66cc66;">||</span><span style="color: #ff0000;">'.'</span><span style="color: #66cc66;">||</span>lob<span style="color: #66cc66;">.</span>table_name <span style="color: #66cc66;">||</span><span style="color: #ff0000;">' MOVE LOB('</span><span style="color: #66cc66;">||</span>lob<span style="color: #66cc66;">.</span>column_name<span style="color: #66cc66;">||</span><span style="color: #ff0000;">') '</span> <span style="color: #66cc66;">||</span><span style="color: #ff0000;">'STORE AS (TABLESPACE '</span><span style="color: #66cc66;">||</span><span style="color: #ff0000;">'&amp;TARGET_TBSP'</span><span style="color: #66cc66;">||</span><span style="color: #ff0000;">');'</span>
     ELSE <span style="color: #ff0000;">'/* Segment '</span><span style="color: #66cc66;">||</span>seg<span style="color: #66cc66;">.</span>segment_name <span style="color: #66cc66;">||</span><span style="color: #ff0000;">' is of type: '</span><span style="color: #66cc66;">||</span>segment_type<span style="color: #66cc66;">||</span><span style="color: #ff0000;">' */'</span>
     END <span style="color: #993333; font-weight: bold;">AS</span> sql_command
<span style="color: #993333; font-weight: bold;">FROM</span> dba_segments seg<span style="color: #66cc66;">,</span> dba_lobs lob
<span style="color: #993333; font-weight: bold;">WHERE</span> seg<span style="color: #66cc66;">.</span>owner <span style="color: #66cc66;">=</span> <span style="color: #ff0000;">'&amp;SOURCE_OWNER'</span>
     <span style="color: #993333; font-weight: bold;">AND</span> seg<span style="color: #66cc66;">.</span>tablespace_name <span style="color: #66cc66;">=</span> <span style="color: #ff0000;">'&amp;SOURCE_TBSP'</span>
     <span style="color: #993333; font-weight: bold;">AND</span> seg<span style="color: #66cc66;">.</span>owner <span style="color: #66cc66;">=</span> lob<span style="color: #66cc66;">.</span>owner<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">+</span><span style="color: #66cc66;">&#41;</span>
     <span style="color: #993333; font-weight: bold;">AND</span> seg<span style="color: #66cc66;">.</span>segment_name <span style="color: #66cc66;">=</span> lob<span style="color: #66cc66;">.</span>index_name <span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">+</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #993333; font-weight: bold;">GROUP</span> <span style="color: #993333; font-weight: bold;">BY</span> seg<span style="color: #66cc66;">.</span>owner<span style="color: #66cc66;">,</span> seg<span style="color: #66cc66;">.</span>segment_name<span style="color: #66cc66;">,</span> 
     seg<span style="color: #66cc66;">.</span>segment_type<span style="color: #66cc66;">,</span> seg<span style="color: #66cc66;">.</span>tablespace_name<span style="color: #66cc66;">,</span> 
     lob<span style="color: #66cc66;">.</span>table_name<span style="color: #66cc66;">,</span> lob<span style="color: #66cc66;">.</span>column_name
<span style="color: #993333; font-weight: bold;">ORDER</span> <span style="color: #993333; font-weight: bold;">BY</span> seg<span style="color: #66cc66;">.</span>segment_type <span style="color: #993333; font-weight: bold;">DESC</span><span style="color: #66cc66;">,</span> seg<span style="color: #66cc66;">.</span>segment_name;</pre></div></div>

<p>A word of warning: This will work for all tables, indexes and LOB segments, but will not handle any tables that have a LONG datatype.  <a href="http://www.orafaq.com/forum/t/21725/0/">OraFAQ has a helpful thread about this</a> &#8211; the simple answer is that LONG datatypes don&#8217;t support the MOVE command.</p>
<!-- sphereit end --><span style="margin-bottom:40px; border-bottom:none;"><a class="iconsphere" title="Sphere: Related Content" onclick="return Sphere.Widget.search('http://www.angry-geek.org/2009/01/oracle-moving-data-to-a-new-tablespace/')" href="http://www.sphere.com/search?q=sphereit:http://www.angry-geek.org/2009/01/oracle-moving-data-to-a-new-tablespace/">Sphere: Related Content</a></span><br/><br/>]]></content:encoded>
			<wfw:commentRss>http://www.angry-geek.org/2009/01/oracle-moving-data-to-a-new-tablespace/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
