<?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>MacLochlainns Weblog &#187; matching lob index and segment</title>
	<atom:link href="http://blog.mclaughlinsoftware.com/tag/matching-lob-index-and-segment/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.mclaughlinsoftware.com</link>
	<description>Michael McLaughlin's Technical Blog</description>
	<lastBuildDate>Mon, 06 Sep 2010 21:21:48 +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>Matching LOB Indexes and Segments</title>
		<link>http://blog.mclaughlinsoftware.com/2008/04/17/matching-lob-indexes-and-segments/</link>
		<comments>http://blog.mclaughlinsoftware.com/2008/04/17/matching-lob-indexes-and-segments/#comments</comments>
		<pubDate>Thu, 17 Apr 2008 18:16:33 +0000</pubDate>
		<dc:creator>maclochlainn</dc:creator>
				<category><![CDATA[Oracle]]></category>
		<category><![CDATA[clob]]></category>
		<category><![CDATA[sql]]></category>
		<category><![CDATA[blob]]></category>
		<category><![CDATA[dba_lobs]]></category>
		<category><![CDATA[dba_segments]]></category>
		<category><![CDATA[lob space management]]></category>
		<category><![CDATA[manage lobs]]></category>
		<category><![CDATA[matching lob index and segment]]></category>
		<category><![CDATA[update lobs]]></category>

		<guid isPermaLink="false">http://maclochlainn.wordpress.com/?p=7</guid>
		<description><![CDATA[I enjoyed Tom Kyte&#8217;s example of how you find matching a LOB Index to Segment (Expert Oracle Database Architecture, pp. 542). I&#8217;ve noticed variations of it posted in various locations. While it works well for sample scheme that have only one LOB, the following works for any number of LOBs in any schema. This simplifies working with system- [...]]]></description>
			<content:encoded><![CDATA[<p>I enjoyed Tom Kyte&#8217;s example of how you find matching a LOB Index to Segment (<em>Expert Oracle Database Architecture</em>, pp. 542). I&#8217;ve noticed variations of it posted in various locations. While it works well for sample scheme that have only one LOB, the following works for any number of LOBs in any schema. This simplifies working with system- and user-defined segment names. The first CASE statement ensures that joins between user-named segment names are possible. The second CASE statement ensures two things: (a) Joins between system generated segment names don&#8217;t throw an error when matching unrelated system generated return values found in the DBA_SEGEMENTS view; and (b) Joins between named segments are possible and don&#8217;t throw an error.</p>

<div class="wp_syntax"><div class="code"><pre class="sql" style="font-family:monospace;">COL owner         FORMAT A5  HEADING <span style="color: #ff0000;">&quot;Owner&quot;</span>
COL table_name    FORMAT A5  HEADING <span style="color: #ff0000;">&quot;Table|Name&quot;</span>
COL column_name   FORMAT A10 HEADING <span style="color: #ff0000;">&quot;Column|Name&quot;</span>
COL segment_name  FORMAT A26 HEADING <span style="color: #ff0000;">&quot;Segment Name&quot;</span>
COL segment_type  FORMAT A10 HEADING <span style="color: #ff0000;">&quot;Segment|Type&quot;</span>
COL bytes                    HEADING <span style="color: #ff0000;">&quot;Segment|Bytes&quot;</span>
&nbsp;
<span style="color: #993333; font-weight: bold;">SELECT</span>   l<span style="color: #66cc66;">.</span>owner
<span style="color: #66cc66;">,</span>        l<span style="color: #66cc66;">.</span>table_name
<span style="color: #66cc66;">,</span>        l<span style="color: #66cc66;">.</span>column_name
<span style="color: #66cc66;">,</span>        s<span style="color: #66cc66;">.</span>segment_name
<span style="color: #66cc66;">,</span>        s<span style="color: #66cc66;">.</span>segment_type
<span style="color: #66cc66;">,</span>        s<span style="color: #66cc66;">.</span>bytes
<span style="color: #993333; font-weight: bold;">FROM</span>     dba_lobs l
<span style="color: #66cc66;">,</span>        dba_segments s
<span style="color: #993333; font-weight: bold;">WHERE</span>    REGEXP_SUBSTR<span style="color: #66cc66;">&#40;</span>l<span style="color: #66cc66;">.</span>segment_name<span style="color: #66cc66;">,</span><span style="color: #ff0000;">'([[:alnum:]]|[[:punct:]])+'</span>
<span style="color: #66cc66;">,</span> CASE
    WHEN REGEXP_INSTR<span style="color: #66cc66;">&#40;</span>s<span style="color: #66cc66;">.</span>segment_name<span style="color: #66cc66;">,</span><span style="color: #ff0000;">'[[:digit:]]'</span><span style="color: #66cc66;">,</span><span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&gt;</span> <span style="color: #cc66cc;">0</span>
    THEN REGEXP_INSTR<span style="color: #66cc66;">&#40;</span>s<span style="color: #66cc66;">.</span>segment_name<span style="color: #66cc66;">,</span><span style="color: #ff0000;">'[[:digit:]]'</span><span style="color: #66cc66;">,</span><span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span>
    ELSE <span style="color: #cc66cc;">1</span>
  END<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">=</span>
REGEXP_SUBSTR<span style="color: #66cc66;">&#40;</span>s<span style="color: #66cc66;">.</span>segment_name<span style="color: #66cc66;">,</span><span style="color: #ff0000;">'([[:alnum:]]|[[:punct:]])+'</span>
<span style="color: #66cc66;">,</span> CASE
    WHEN REGEXP_INSTR<span style="color: #66cc66;">&#40;</span>s<span style="color: #66cc66;">.</span>segment_name<span style="color: #66cc66;">,</span><span style="color: #ff0000;">'[[:digit:]]'</span><span style="color: #66cc66;">,</span><span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&gt;</span> <span style="color: #cc66cc;">0</span>
    THEN REGEXP_INSTR<span style="color: #66cc66;">&#40;</span>s<span style="color: #66cc66;">.</span>segment_name<span style="color: #66cc66;">,</span><span style="color: #ff0000;">'[[:digit:]]'</span><span style="color: #66cc66;">,</span><span style="color: #cc66cc;">1</span><span style="color: #66cc66;">&#41;</span>
    ELSE <span style="color: #cc66cc;">1</span>
  END<span style="color: #66cc66;">&#41;</span>
<span style="color: #993333; font-weight: bold;">AND</span>      l<span style="color: #66cc66;">.</span>table_name <span style="color: #66cc66;">=</span> UPPER<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'&amp;table_name'</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #993333; font-weight: bold;">AND</span>      l<span style="color: #66cc66;">.</span>owner <span style="color: #66cc66;">=</span> UPPER<span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">'&amp;owner'</span><span style="color: #66cc66;">&#41;</span>
<span style="color: #993333; font-weight: bold;">ORDER</span> <span style="color: #993333; font-weight: bold;">BY</span> l<span style="color: #66cc66;">.</span>column_name<span style="color: #66cc66;">,</span> s<span style="color: #66cc66;">.</span>segment_name;</pre></div></div>

<p>It produces the following type of output:</p>

<div class="wp_syntax"><div class="code"><pre class="text" style="font-family:monospace;">Table  Column                               Segment      Segment
Name   Name       Segment Name              Type           Bytes
------ ---------- ------------------------- ---------- ---------
PLSQL  ITEM_BLOB  SYS_IL0000074435C00007$$  LOBINDEX      65,536
PLSQL  ITEM_BLOB  SYS_LOB0000074435C00007$$ LOBSEGMENT 2,097,152
PLSQL  ITEM_DESC  SYS_IL0000074435C00006$$  LOBINDEX      65,536
PLSQL  ITEM_DESC  SYS_LOB0000074435C00006$$ LOBSEGMENT   720,896</pre></div></div>

<p>This should help you monitor growth of LOBs in your database. The maximum <code>CHUNK</code> size is 32.768. If you elect a value greater than that you raise an <code>ORA-22851</code> error.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.mclaughlinsoftware.com/2008/04/17/matching-lob-indexes-and-segments/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
