<?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>Administración Oracle &#187; Mantenimiento Undo</title>
	<atom:link href="http://www.xgodoy.com/wordpress/tag/mantenimiento-undo/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.xgodoy.com/wordpress</link>
	<description>Blog para compartir experiencias y conocimientos en administración de bases de datos Oracle</description>
	<lastBuildDate>Fri, 25 Dec 2009 17:09:28 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>UNDO Monitoreo, Mantenimiento y Tunning. 10gR2</title>
		<link>http://www.xgodoy.com/wordpress/2009/06/01/undo-monitoreo-mantenimiento-y-tunning-10gr2/#utm_source=feed&#038;utm_medium=feed&#038;utm_campaign=feed</link>
		<comments>http://www.xgodoy.com/wordpress/2009/06/01/undo-monitoreo-mantenimiento-y-tunning-10gr2/#comments</comments>
		<pubDate>Mon, 01 Jun 2009 22:31:17 +0000</pubDate>
		<dc:creator>Jimy Godoy</dc:creator>
				<category><![CDATA[Administración]]></category>
		<category><![CDATA[Mantenimiento Undo]]></category>
		<category><![CDATA[Monitoreo Undo]]></category>
		<category><![CDATA[Reducir Undo]]></category>
		<category><![CDATA[Tunning Undo]]></category>
		<category><![CDATA[Undo]]></category>

		<guid isPermaLink="false">http://oracleroot.wordpress.com/?p=183</guid>
		<description><![CDATA[El crecimiento indiscriminado del tablespace de UNDO puede volverse un gran problema, además de indicarnos que algo no anda bien  un UNDO muy pequeño puede significar que ciertas instrucciones no terminen correctamente, en este articulo formas para monitorear el UNDO, mantenerlo y realizar tunning sobre este.]]></description>
			<content:encoded><![CDATA[<p class="parrafo">El crecimiento indiscriminado  del tablespace de UNDO puede volverse un gran problema, adem&aacute;s de indicarnos  que algo no anda bien, por otro lado un UNDO muy peque&ntilde;o puede significar que  ciertas instrucciones no terminen correctamente arrojando el siguiente error: </p>
<div class="Mensaje_sql">
<p>ORA-01555 snapshot too  old: rollback segment number [string] with name &quot;[string]&quot; too small</p>
</div>
<p class="parrafo">A  continuaci&oacute;n algunas formas para monitorear el estado del UNDO, las  transacciones que m&aacute;s UNDO requieren y t&eacute;cnicas para setear el tama&ntilde;o m&aacute;s  adecuado. </p>
<p class="parrafo">Primero  revisaremos los par&aacute;metros referentes al UNDO:</p>
<div class="sql">
  SQL&gt; sho parameters undo</p>
<p>NAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  TYPE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; VALUE<br />
    &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212; &#8212;&#8212;&#8212;&#8211; &#8212;&#8212;&#8212;&#8212;&#8212;-<br />
	undo_management&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AUTO<br />
    undo_retention&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  integer&nbsp;&nbsp;&nbsp;&nbsp; 900<br />
    undo_tablespace&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  string&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; UNDOTBS1<br />
    SQL&gt;</p>
</div>
<p class="parrafo"><strong>UNDO_MANAGEMENT</strong>: Par&aacute;metro din&aacute;mico (<em>alter  system set undo_management = &lt;valor&gt;) </em>disponible desde 9i y que  libera a los DBA de la administraci&oacute;n y monitoreo del UNDO. </p>
<p class="parrafo"><strong>UNDO_RETENTION</strong>: Par&aacute;metro din&aacute;mico (<em>alter system set undo_retention= &lt;valor&gt;) </em>que indica en segundos&nbsp; (por defecto 900) cuanto tiempo ha de  permanecer, al menos, la informaci&oacute;n de UNDO disponible. </p>
<p class="parrafo"><strong>UNDO_TABLESPACE:</strong>Par&aacute;metro din&aacute;mico (<em>alter  system &#8230;</em>) que indica el  espacio de almacenamiento de &ldquo;UNDO&rdquo; a usar en el arranque. Si se indica en modo  manual, provoca error y falla el arranque.</p>
<p class="parrafo">Para este caso setearemos la retenci&oacute;n de UNDO  a 600 segundos:</p>
<div class="sql">
<p>SQL&gt; alter system set undo_retention=600;</p>
</div>
<p class="subtitulo"><strong>Segmentos de  UNDO</strong></p>
<p class="parrafo">Con  la siguiente query podemos ver el estado de los segmentos de UNDO:</p>
<div class="sql">
<font style="font-family:'Courier New', Courier, monospace; font-size:11px;"><br />
<font color = "blue">SELECT</font>&nbsp;<font color = "blue">SYSDATE</font>&nbsp;<font color = "blue">AS</font>&nbsp;<font color = "maroon">fecha</font><font color = "silver">,</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "maroon">unexpired</font><font color = "silver">.</font><font color = "maroon">unexpired</font><font color = "silver">,</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "maroon">expired</font><font color = "silver">.</font><font color = "maroon">expired</font><font color = "silver">,</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "maroon">active</font><font color = "silver">.</font><font color = "maroon">active</font><br />
<font color = "blue">FROM</font>&nbsp;&nbsp;&nbsp;<font color = "maroon">(</font><font color = "blue">SELECT</font>&nbsp;<font color = "#FF0080"><b>Sum</font></b><font color = "maroon">(</font><font color = "maroon">bytes</font>&nbsp;<font color = "silver">/</font>&nbsp;<font color = "black">1024</font>&nbsp;<font color = "silver">/</font>&nbsp;<font color = "black">1024</font><font color = "maroon">)</font>&nbsp;<font color = "blue">AS</font>&nbsp;<font color = "maroon">unexpired</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "blue">FROM</font>&nbsp;&nbsp;&nbsp;<font color = "maroon">dba_undo_extents</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "blue">WHERE</font>&nbsp;&nbsp;<font color = "maroon">status</font>&nbsp;<font color = "silver">=</font>&nbsp;<font color = "red">&#8216;UNEXPIRED&#8217;</font><font color = "maroon">)</font>&nbsp;<font color = "maroon">unexpired</font><font color = "silver">,</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "maroon">(</font><font color = "blue">SELECT</font>&nbsp;<font color = "#FF0080"><b>Sum</font></b><font color = "maroon">(</font><font color = "maroon">bytes</font>&nbsp;<font color = "silver">/</font>&nbsp;<font color = "black">1024</font>&nbsp;<font color = "silver">/</font>&nbsp;<font color = "black">104</font><font color = "maroon">)</font>&nbsp;<font color = "blue">AS</font>&nbsp;<font color = "maroon">expired</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "blue">FROM</font>&nbsp;&nbsp;&nbsp;<font color = "maroon">dba_undo_extents</font>&nbsp;<font color = "maroon">tr</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "blue">WHERE</font>&nbsp;&nbsp;<font color = "maroon">status</font>&nbsp;<font color = "silver">=</font>&nbsp;<font color = "red">&#8216;EXPIRED&#8217;</font><font color = "maroon">)</font>&nbsp;<font color = "maroon">expired</font><font color = "silver">,</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "maroon">(</font><font color = "blue">SELECT</font>&nbsp;<font color = "blue">CASE</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "blue">WHEN</font>&nbsp;<font color = "#FF0080"><b>Count</font></b><font color = "maroon">(</font><font color = "maroon">status</font><font color = "maroon">)</font>&nbsp;<font color = "silver">=</font>&nbsp;<font color = "black">0</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "blue">THEN</font>&nbsp;<font color = "black">0</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "blue">ELSE</font>&nbsp;<font color = "#FF0080"><b>Sum</font></b><font color = "maroon">(</font><font color = "maroon">bytes</font>&nbsp;<font color = "silver">/</font>&nbsp;<font color = "black">1024</font>&nbsp;<font color = "silver">/</font>&nbsp;<font color = "black">1024</font><font color = "maroon">)</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "blue">END</font>&nbsp;<font color = "blue">AS</font>&nbsp;<font color = "maroon">active</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "blue">FROM</font>&nbsp;&nbsp;&nbsp;<font color = "maroon">dba_undo_extents</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "blue">WHERE</font>&nbsp;&nbsp;<font color = "maroon">status</font>&nbsp;<font color = "silver">=</font>&nbsp;<font color = "red">&#8216;ACTIVE&#8217;</font><font color = "maroon">)</font>&nbsp;<font color = "maroon">active</font></font></div>
<p class="parrafo">Por ejemplo  el resultado para esta prueba es:</p>
<p class="parrafo">Resultado:</p>
<div align="center" >
<p>  <img src="http://www.xgodoy.com/wordpress/wp-content/uploads/2009/06/01_undo_tunning_monitoreo.jpg" width="311" height="40" title="UNDO Monitoreo, Mantenimiento y Tunning. 10gR2" alt="01 undo tunning monitoreo UNDO Monitoreo, Mantenimiento y Tunning. 10gR2" /></div>
<p class="parrafo">Donde,</p>
<p class="parrafo"><strong>UNEXPIRED</strong> significa que estos segmentos de UNDO no contienen ninguna transacci&oacute;n activa,  pero estos contienen transacciones que todav&iacute;a son requeridos para FLASHBACK.<br />
    <strong>EXPIRED</strong> significa que  estos segmentos no son requeridos despu&eacute;s del periodo de retenci&oacute;n definido en <em>undo_retention</em>.<br />
    <strong>ACTIVE </strong>significa que  estos segmentos de UNDO contienen transacciones activas, o sea, no se ha realizado  commit.</p>
<p class="parrafo">Los valores son en MB. &nbsp;He creado una  tabla llamada <strong>undo_utilizado</strong> donde se guarda el retorno  de esta query cada 20 segundos para luego realizar un a an&aacute;lisis m&aacute;s fino. </p>
<p class="parrafo">Por ejemplo ejecutaremos un  insert sin dar commit:</p>
<div class="sql">
<p>SQL&gt; set time on<br />
  17:39:04 SQL&gt;<br />
  17:39:06 SQL&gt;<br />
  17:39:06 SQL&gt; @insert.sql<br />
  547306 rows created.</p>
<p>17:39:15 SQL&gt;</p>
</div>
<p class="parrafo">El  comportamiento de los segmentos de UNDO es:</p>
<div class="sql">
<p><span style="color: blue; ">SELECT</span>&nbsp;&nbsp;&nbsp;<span style="color: silver; ">*</span> <br />
      <span style="color: blue; ">FROM</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: maroon; ">test</span><span style="color: silver; ">.</span><span style="color: maroon; ">undo_utilizado</span> <br />
  <span style="color: blue; ">ORDER</span>&nbsp;<span style="color: blue; ">BY</span>&nbsp;<span style="color: maroon; ">fecha</span>&nbsp;<span style="color: blue; ">DESC</span><span style="color: silver; ">;</span></p>
</div>
<p class="parrafo">Resultado:</p>
<div align="center" >
<img src="http://www.xgodoy.com/wordpress/wp-content/uploads/2009/06/02_undo_tunning_monitoreo.jpg" width="311" height="117" title="UNDO Monitoreo, Mantenimiento y Tunning. 10gR2" alt="02 undo tunning monitoreo UNDO Monitoreo, Mantenimiento y Tunning. 10gR2" /></div>
<p class="parrafo">Como  se puede observar, actualmente existen 2,9375 MB de segmentos en estado ACTIVE  y 0,0625 MB en estado UNEXPIRED. Si ejecutamos un commit para la sesi&oacute;n ocurre  lo siguiente:</p>
<div class="sql">
<p>17:44:59 SQL&gt; commit;</p>
<p>Commit complete.</p>
<p>17:45:01 SQL&gt;</p>
</div>
<p>&nbsp;</p>
<div class="sql">
<p><span style="color: blue; ">SELECT</span>&nbsp;&nbsp;&nbsp;<span style="color: silver; ">*</span> <br />
      <span style="color: blue; ">FROM</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: maroon; ">test</span><span style="color: silver; ">.</span><span style="color: maroon; ">undo_utilizado</span> <br />
  <span style="color: blue; ">ORDER</span>&nbsp;<span style="color: blue; ">BY</span>&nbsp;<span style="color: maroon; ">fecha</span>&nbsp;<span style="color: blue; ">DESC</span><span style="color: silver; ">;</span></p>
</div>
<p class="parrafo">Resultado:</p>
<div align="center" >
<p><img src="http://www.xgodoy.com/wordpress/wp-content/uploads/2009/06/03_undo_tunning_monitoreo.jpg" width="311" height="118" title="UNDO Monitoreo, Mantenimiento y Tunning. 10gR2" alt="03 undo tunning monitoreo UNDO Monitoreo, Mantenimiento y Tunning. 10gR2" /></p>
</div>
<p class="parrafo">Como  se puede observar, luego de realizar commit, ya no existen segmentos en estado  ACTIVE y estos pasaron a ser segmentos en estado UNEXPIRED.</p>
<p class="parrafo">En  el tablespace de UNDO, los segmentos en estado UNEXPIRED significan espacio  utilizado.</p>
<p class="parrafo">Un  an&aacute;lisis de lo ocurrido con el siguiente grafico:</p>
<div align="center" >
<p><img src="http://www.xgodoy.com/wordpress/wp-content/uploads/2009/06/04_undo_tunning_monitoreo.jpg" width="505" height="295" title="UNDO Monitoreo, Mantenimiento y Tunning. 10gR2" alt="04 undo tunning monitoreo UNDO Monitoreo, Mantenimiento y Tunning. 10gR2" /></p>
</div>
<p class="parrafo">En  el grafico podemos identificar los siguientes eventos:</p>
<ul class="parrafo">
<li>
<p>17:39:06, aumento segmentos en estado <strong>ACTIVE</strong> de 0 MB a 2,9375 MB, esto debido  a la instrucci&oacute;n de insert realizada. El insert tard&oacute; 11 segundos.</p>
</li>
<li>
<p>17:44:59, aumento de segmentos en estado <strong>UNEXPIRED</strong> de 0,0625 MB a 3 MB y  disminuci&oacute;n de segmentos en estado <strong>ACTIVE</strong> de 2,9375 MB a 0 MB, esto debido a la instrucci&oacute;n de commit realizada en ese  instante.</p>
</li>
<li>
<p>17:55:43, Disminuci&oacute;n de segmentos en estado <strong>UNEXPIRED</strong> de 2,9375 MB a 1,0625 MB y aumento de segmentos en estado <strong>EXPIRED</strong> de 10,1875 MB a 12,0625 MB.  Esto debido a lo comprometido en el par&aacute;metro undo_retention.</p>
</li>
</ul>
<p class="parrafo">Podemos  concluir que al gatillar el insert comienzan a ocuparse segmento de undo y  quedan en estado activo (consume espacio en tablespace de UNDO), estos  segmentos quedan en estado activo hasta que se gatille un commit pasando a  quedar estos segmentos en estado UNEXPIRED (se sigue consumiendo espacio en  tablespace de UNDO), luego de un tiempo (determinado por el undo_retention) los  segmentos en estado UNEXPIRED pasan a estado EXPIRED liberando espacio en  tablespace de UNDO.</p>
<p class="parrafo">OJO!,  no siempre el tiempo de retenci&oacute;n en el UNDO es el definido en par&aacute;metro  undo_retention, el tiempo de retenci&oacute;n es calculado autom&aacute;ticamente por el  motor en periodos de 10 minutos, esto se puede verificar en la vista v$undostat,  la forma de auto calcular el tiempo de retenci&oacute;n es basado en un porcentaje del  tama&ntilde;o de tablaspace UNDO. </p>
<p class="parrafo">Para  verificar, la siguiente prueba:</p>
<div class="sql">
<p>09:38:39 SQL&gt; sho parameters undo</p>
<p>NAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TYPE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; VALUE<br />
    &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212; &#8212;&#8212;&#8212;&#8211;  &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
    undo_management&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  string&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AUTO<br />
    undo_retention&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  integer&nbsp;&nbsp;&nbsp;&nbsp; 600<br />
    undo_tablespace&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;string&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; UNDOTBS1</p>
<p>09:38:46 SQL&gt; alter system set undo_retention=60;</p>
<p>System altered.</p>
<p>09:38:59 SQL&gt;</p>
</div>
<p class="parrafo">El <em>undo_retention</em> estaba definido en 900  segundos, se modific&oacute; a 60 segundos. Luego para la prueba ejecutaremos un  insert:</p>
<div class="sql">
<p>09:42:33 SQL&gt; @insert.sql</p>
<p>1252775 rows created.</p>
<p>09:42:48 SQL&gt; commit;</p>
<p>Commit complete.</p>
<p>09:43:31 SQL&gt;</p>
</div>
<p class="parrafo">Lo  esperado es que la retenci&oacute;n de segmentos en estado UNEXPIRED no supere los 60  segundos. Un an&aacute;lisis de lo ocurrido con el siguiente grafico:</p>
<div align="center" >
<img src="http://www.xgodoy.com/wordpress/wp-content/uploads/2009/06/05_undo_tunning_monitoreo.jpg" width="505" height="289" title="UNDO Monitoreo, Mantenimiento y Tunning. 10gR2" alt="05 undo tunning monitoreo UNDO Monitoreo, Mantenimiento y Tunning. 10gR2" /></div>
<p class="parrafo">Como  se puede ver en el grafico, los segmentos de UNDO en estado UNEXPIRED se  mantuvieron por 600 segundos y no por 60 como se hab&iacute;a seteado en <em>undo_retention. </em>La no utilizaci&oacute;n del  tiempo determinado en undo_retention se debe al valor de retenci&oacute;n calculado  mor el motor y que es posible verificar en la vista v$undostat:</p>
<div class="sql">
<p >
  <span style="color: blue; ">SELECT</span>&nbsp;&nbsp;&nbsp;<span style="color: maroon; ">begin_time</span><span style="color: silver; ">,</span><br />
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: maroon; ">end_time</span><span style="color: silver; ">,</span><br />
  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: maroon; ">tuned_undoretention</span><br />
  <span style="color: blue; ">FROM</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: maroon; ">v$undostat</span><br />
  <span style="color: blue; ">WHERE</span>&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: maroon; ">begin_time</span>&nbsp;<span style="color: blue; ">BETWEEN</span>&nbsp;<span style="color: #FF0080; font-weight: bold; ">To_date</span><span style="color: maroon; ">(</span><span style="color: red; ">&#8217;20/05/2009&nbsp;09:30:00&#8242;</span><span style="color: silver; ">,</span><span style="color: red; ">&#8216;dd/mm/yyyy&nbsp;hh24:mi:ss&#8217;</span><span style="color: maroon; ">)</span>&nbsp;<span style="color: blue; ">AND</span>&nbsp;<span style="color: #FF0080; font-weight: bold; ">To_date</span><span style="color: maroon; ">(</span><span style="color: red; ">&#8217;20/05/2009&nbsp;09:55:00&#8242;</span><span style="color: silver; ">,</span><span style="color: red; ">&#8216;dd/mm/yyyy&nbsp;hh24:mi:ss&#8217;</span><span style="color: maroon; ">)</span><br />
  <span style="color: blue; ">ORDER</span>&nbsp;<span style="color: blue; ">BY</span>&nbsp;<span style="color: maroon; ">begin_time</span>&nbsp;<span style="color: blue; ">DESC</span></p>
</div>
<p class="parrafo">El resultado es:</p>
<div align="center" >
<img src="http://www.xgodoy.com/wordpress/wp-content/uploads/2009/06/06_undo_tunning_monitoreo.jpg" width="441" height="79" title="UNDO Monitoreo, Mantenimiento y Tunning. 10gR2" alt="06 undo tunning monitoreo UNDO Monitoreo, Mantenimiento y Tunning. 10gR2" /></div>
<p class="parrafo">Como  se puede observar, el periodo de undo_retention calculado por el motor es de  600 segundos.</p>
<p class="parrafo">Para  reparar esto, es necesario incorporar una variable oculta en el init.ora de la  base de datos que inhibe la utilizaci&oacute;n del TUNED_UNDORETENTION. Es necesario  setear en el init.ora el siguiente par&aacute;metro:</p>
<div class="shell">
<p>_undo_autotune = false</p>
</div>
<p class="parrafo">O en  spfile:</p>
<div class="shell">
<p>alter  system set &quot;_undo_autotune&quot; = false;</p>
</div>
<p class="parrafo">Con  esta configuraci&oacute;n, el TUNED_UNDORETENTION no es actualizado, luego el tiempo  de retenci&oacute;n de UNDO que se utilizar&aacute; es el especificado en undo_retention.</p>
<p class="parrafo">Repetiremos  el ejemplo:</p>
<p class="parrafo">Seteamos  el par&aacute;metro:</p>
<div class="sql">
<p>10:51:00 SQL&gt; Alter  system set &quot;_undo_autotune&quot; = false;</p>
<p>System altered.</p>
<p>10:51:06 SQL&gt; sho  parameters undo</p>
<p>NAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; TYPE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; VALUE<br />
    &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;  &#8212;&#8212;&#8212;&#8211; &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
    _undo_autotune&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; boolean&nbsp;&nbsp;&nbsp;&nbsp; FALSE<br />
    undo_management&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AUTO<br />
    undo_retention&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; integer&nbsp;&nbsp;&nbsp;&nbsp; 60<br />
    undo_tablespace&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;string&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; UNDOTBS1<br />
    10:52:09 SQL&gt;</p>
</div>
<p class="parrafo">Se  ejecuta un insert:</p>
<div class="sql">
<p>10:56:12 SQL&gt; @insert.sql</p>
<p>1252775 rows created.</p>
<p>10:56:29 SQL&gt;<br />
    10:56:54 SQL&gt; commit;</p>
<p>Commit complete.</p>
<p>10:56:57 SQL&gt;</p>
</div>
<p class="parrafo">Lo  esperado es que la retenci&oacute;n de segmentos en estado UNEXPIRED no supere los 60  segundos. Un an&aacute;lisis de lo ocurrido con el siguiente grafico: </p>
<div align="center" >
<img src="http://www.xgodoy.com/wordpress/wp-content/uploads/2009/06/07_undo_tunning_monitoreo.jpg" width="505" height="290" title="UNDO Monitoreo, Mantenimiento y Tunning. 10gR2" alt="07 undo tunning monitoreo UNDO Monitoreo, Mantenimiento y Tunning. 10gR2" /></div>
<p class="parrafo">Como  se puede ver en el grafico, los segmentos de UNDO en estado UNEXPIRED se  mantuvieron por 60 segundos, tal como lo indicado en el par&aacute;metro <em>undo_retention.</em></p>
<p class="subtitulo"><strong>Transacciones  que requieren UNDO</strong></p>
<p class="parrafo">Es  posible monitorear que transacciones est&aacute;n ocupando segmentos de UNDO y/o  generando bloqueos debido a falta de commit o rollback. Con la siguiente query se  puede revisar que transacciones est&aacute;n requiriendo UNDO activamente:</p>
<div class="sql">
<span ><br />
<span style="color: blue; ">SELECT</span>&nbsp;<span style="color: maroon; ">v$transaction</span><span style="color: silver; ">.</span><span style="color: maroon; ">status</span>&nbsp;<span style="color: blue; ">AS</span>&nbsp;<span style="color: maroon; ">status_transaccion</span><span style="color: silver; ">,</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: maroon; ">start_time</span><span style="color: silver; ">,</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: maroon; ">logon_time</span><span style="color: silver; ">,</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: maroon; ">blocking_session_status</span><span style="color: silver; ">,</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: maroon; ">schemaname</span><span style="color: silver; ">,</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: maroon; ">machine</span><span style="color: silver; ">,</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: maroon; ">program</span><span style="color: silver; ">,</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: maroon; ">module</span><span style="color: silver; ">,</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: maroon; ">v$sqlarea</span><span style="color: silver; ">.</span><span style="color: maroon; ">sql_text</span><span style="color: silver; ">,</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: maroon; ">serial#</span><span style="color: silver; ">,</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: maroon; ">sid</span><span style="color: silver; ">,</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: maroon; ">username</span><span style="color: silver; ">,</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: maroon; ">v$session</span><span style="color: silver; ">.</span><span style="color: maroon; ">status</span> <span style="color: blue; ">AS</span>&nbsp;<span style="color: maroon; ">status_sesion</span><span style="color: silver; ">,</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: maroon; ">sql_id</span><span style="color: silver; ">,</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: maroon; ">prev_sql_id</span><br />
<span style="color: blue; ">FROM</span>&nbsp;&nbsp;&nbsp;<span style="color: maroon; ">v$transaction</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: blue; ">INNER</span>&nbsp;<span style="color: blue; ">JOIN</span>&nbsp;<span style="color: maroon; ">v$session</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: blue; ">ON</span>&nbsp;<span style="color: maroon; ">v$transaction</span><span style="color: silver; ">.</span><span style="color: maroon; ">ses_addr</span>&nbsp;<span style="color: silver; ">=</span>&nbsp;<span style="color: maroon; ">v$session</span><span style="color: silver; ">.</span><span style="color: maroon; ">saddr</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: blue; ">LEFT</span>&nbsp;<span style="color: blue; ">JOIN</span>&nbsp;<span style="color: maroon; ">v$sqlarea</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: blue; ">ON</span>&nbsp;<span style="color: maroon; ">v$session</span><span style="color: silver; ">.</span><span style="color: maroon; ">sql_id</span>&nbsp;<span style="color: silver; ">=</span>&nbsp;<span style="color: maroon; ">v$sqlarea</span><span style="color: silver; ">.</span><span style="color: maroon; ">sql_id</span></span></div>
<p class="parrafo">Por  ejemplo ejecutaremos un insert sin dar commit:</p>
<div class="sql">
<p>14:56:20 SQL&gt; @insert.sql</p>
<p>4378448 rows created.</p>
<p>15:01:04 SQL&gt;</p>
</div>
<p class="parrafo">Al  ejecutar la consulta, el resultado es el siguiente (por cuestiones de  presentaci&oacute;n el resultado se presenta de manera transpuesta): </p>
<div align="center" >
<img src="http://www.xgodoy.com/wordpress/wp-content/uploads/2009/06/08_undo_tunning_monitoreo.jpg" width="505" height="225" title="UNDO Monitoreo, Mantenimiento y Tunning. 10gR2" alt="08 undo tunning monitoreo UNDO Monitoreo, Mantenimiento y Tunning. 10gR2" /></div>
<p class="parrafo">Donde,</p>
<p class="parrafo"><strong>LOGON_TIME</strong>, es la fecha y  hora en que se ejecut&oacute; la instrucci&oacute;n.<br />
    <strong>BLOCKING_SESSION_STATUS</strong>, indica si la  sesi&oacute;n est&aacute; bloqueando a otra sesi&oacute;n.<br />
    <strong>SCHEMANAME</strong>, schema que  ejecut&oacute; la instrucci&oacute;n.<br />
    <strong>MACHINE</strong>, nombre de la maquina desde donde se est&aacute;  ejecutando la instrucci&oacute;n.<br />
    <strong>PROGRAM</strong>, programa desde donde se ejecuta la instrucci&oacute;n.<br />
    <strong>MODULE</strong>, modulo desde donde se ejecuta la instrucci&oacute;n.<br />
    <strong>SQL_TEXT</strong>, instrucci&oacute;n SQL ejecutada.<br />
    <strong>SERIAL#</strong>, Serial number de la sesi&oacute;n que est&aacute; ejecutando  la instrucci&oacute;n.<br />
    <strong>SID</strong>, sesi&oacute;n Id de la sesi&oacute;n que est&aacute; ejecutando la  instrucci&oacute;n.<br />
    <strong>USERNAME</strong>, usuario que ejecut&oacute; la instrucci&oacute;n.<br />
    <strong>STATUS_SESION</strong>, estado de la  sesi&oacute;n. ACTIVE si se est&aacute; ejecutando alguna instrucci&oacute;n, INCATIVE si ya se  ejecut&oacute; la instrucci&oacute;n y no est&aacute; realizando ninguna operaci&oacute;n.<br />
    <strong>SQL_ID</strong>, ID de la instrucci&oacute;n SQL que se est&aacute;  ejecutando.<br />
    <strong>PREV_SQL_ID</strong>, ID de la  instrucci&oacute;n SQL previa a la que se est&aacute; ejecutando.</p>
<p class="parrafo">Al ejecutar un  commit:</p>
<div class="sql">
<p>16:18:32  SQL&gt; commit;</p>
<p>Commit  complete.</p>
<p>16:18:51  SQL&gt;</p>
</div>
<p class="parrafo">El resultado es el siguiente:</p>
<div align="center" >
<img src="http://www.xgodoy.com/wordpress/wp-content/uploads/2009/06/09_undo_tunning_monitoreo.jpg" width="199" height="254" title="UNDO Monitoreo, Mantenimiento y Tunning. 10gR2" alt="09 undo tunning monitoreo UNDO Monitoreo, Mantenimiento y Tunning. 10gR2" /></div>
<p class="parrafo">O sea, no  aparecen transacciones activas.</p>
<p class="parrafo">Una o varias  transacciones activas que no ejecuten un commit, pueden significar utilizaci&oacute;n  de una gran cantidad de segmentos de UNDO provocando utilizaci&oacute;n de espacio en  tablespace de UNDO.</p>
<p class="parrafo"><strong>Calculo UNDO_RETENTION &nbsp;&oacute;ptimo</strong></p>
<p class="parrafo">Es posible  setear seg&uacute;n las estad&iacute;sticas de la base de datos&nbsp; los &oacute;ptimos para el tama&ntilde;o de tablespace de  UNDO y el par&aacute;metro undo_retention.</p>
<p class="parrafo">El  undo_retention es calculado seg&uacute;n el tama&ntilde;o del tablespace de UNDO, por  ejemplo, si contamos con limitaciones de storage y el m&aacute;ximo tama&ntilde;o del  tablespace de UNDO es limitado, es posible calcular el undo_retention optimo  para no superar el tama&ntilde;o de tablespace definido con la siguiente f&oacute;rmula:</p>
<div align="center"><img src="http://www.xgodoy.com/wordpress/wp-content/uploads/2009/06/10_undo_tunning_monitoreo.jpg" width="481" height="113" title="UNDO Monitoreo, Mantenimiento y Tunning. 10gR2" alt="10 undo tunning monitoreo UNDO Monitoreo, Mantenimiento y Tunning. 10gR2" /></div>
<p class="parrafo">Para realizar  este c&aacute;lculo es necesario contar con las estad&iacute;sticas de v$undostat, luego para  esta prueba es necesario habilitar el undo_autotune de la siguiente forma:</p>
<p class="parrafo">Es  necesario setear en el init.ora el siguiente par&aacute;metro:</p>
<div class="shell">
<p>_undo_autotune = true</p>
</div>
<p class="parrafo">O en  spfile:</p>
<div class="shell">
<p>alter  system set &quot;_undo_autotune&quot; = true;</p>
</div>
<p class="parrafo">Adem&aacute;s se  recomienda que las estad&iacute;sticas que se toman en v$undostat sean de un tiempo  representativo, de este modo no se queda ninguna query fuera del proceso. Por  ejemplo, si fue reiniciada la base de datos hace algunos minutos, las  estad&iacute;sticas no ser&aacute;n de mucha ayuda, la idea es que la base de datos est&eacute;  activa y tomando estad&iacute;sticas m&iacute;nimo un d&iacute;a o el tiempo suficiente para que se  ejecuten todos los procesos de negocio que&nbsp;  debe soportar el servicio.</p>
<p class="parrafo">Para la prueba,  se activar&aacute; el autotune de la base de datos:</p>
<div class="sql">
<p>10:11:41 SQL&gt; alter system set &quot;_undo_autotune&quot; = true;</p>
<p>System altered.</p>
<p>10:11:43 SQL&gt; sho parameters undo</p>
<p>NAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  TYPE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; VALUE<br />
    &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212; &#8212;&#8212;&#8212;&#8211;  &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
    _undo_autotune&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  boolean&nbsp;&nbsp;&nbsp;&nbsp; TRUE<br />
    undo_management&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  string&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AUTO<br />
    undo_retention&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; integer&nbsp;&nbsp;&nbsp;&nbsp; 60<br />
    undo_tablespace&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; UNDOTBS1<br />
    10:11:53 SQL&gt;</p>
</div>
<p class="parrafo">La siguiente  query entrega los datos necesarios para calcular el <em>undo_retention</em> &oacute;ptimo:</p>
<div class="sql">
<span ><br />
<span style="color: blue; ">SELECT</span>&nbsp;<span style="color: red; ">&#8216;Tamaño&nbsp;Tablespace&nbsp;UNDO&nbsp;Actual&#8217;</span>&nbsp;<span style="color: blue; ">AS</span>&nbsp;<span style="color: maroon; ">&quot;Parametro&quot;</span><span style="color: silver; ">,</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #FF0080; font-weight: bold; ">Sum</span><span style="color: maroon; ">(a</span><span style="color: silver; ">.</span><span style="color: maroon; ">bytes)</span> <span style="color: blue; ">AS</span>&nbsp;<span style="color: maroon; ">&quot;Valor&quot;</span><br />
<span style="color: blue; ">FROM</span>&nbsp;&nbsp;&nbsp;<span style="color: maroon; ">v$datafile</span>&nbsp;<span style="color: maroon; ">a</span><span style="color: silver; ">,</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: maroon; ">v$tablespace</span>&nbsp;<span style="color: maroon; ">b</span><span style="color: silver; ">,</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: maroon; ">dba_tablespaces</span>&nbsp;<span style="color: maroon; ">c</span><br />
<span style="color: blue; ">WHERE</span>&nbsp;&nbsp;<span style="color: maroon; ">c</span><span style="color: silver; ">.</span><span style="color: maroon; ">contents</span>&nbsp;<span style="color: silver; ">=</span>&nbsp;<span style="color: red; ">&#8216;UNDO&#8217;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: blue; ">AND</span>&nbsp;<span style="color: maroon; ">c</span><span style="color: silver; ">.</span><span style="color: maroon; ">status</span>&nbsp;<span style="color: silver; ">=</span>&nbsp;<span style="color: red; ">&#8216;ONLINE&#8217;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: blue; ">AND</span>&nbsp;<span style="color: maroon; ">b</span><span style="color: silver; ">.</span><span style="color: blue; ">NAME</span>&nbsp;<span style="color: silver; ">=</span>&nbsp;<span style="color: maroon; ">c</span><span style="color: silver; ">.</span><span style="color: maroon; ">tablespace_name</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: blue; ">AND</span>&nbsp;<span style="color: maroon; ">a</span><span style="color: silver; ">.</span><span style="color: maroon; ">ts#</span>&nbsp;<span style="color: silver; ">=</span>&nbsp;<span style="color: maroon; ">b</span><span style="color: silver; ">.</span><span style="color: maroon; ">ts#</span><br />
<span style="color: blue; ">UNION</span>&nbsp;<span style="color: blue; ">ALL</span><br />
<span style="color: blue; ">SELECT</span>&nbsp;<span style="color: red; ">&#8216;Bloques&nbsp;UNDO&nbsp;por&nbsp;segundo&#8217;</span> <span style="color: blue; ">AS</span>&nbsp;<span style="color: maroon; ">&quot;Parametro&quot;</span><span style="color: silver; ">,</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #FF0080; font-weight: bold; ">Max</span><span style="color: maroon; ">(</span><span style="color: maroon; ">undoblks</span>&nbsp;<span style="color: silver; ">/</span>&nbsp;<span style="color: maroon; ">(</span><span style="color: maroon; ">(</span><span style="color: maroon; ">end_time</span>&nbsp;<span style="color: silver; ">-</span>&nbsp;<span style="color: maroon; ">begin_time</span><span style="color: maroon; ">)</span>&nbsp;<span style="color: silver; ">*</span>&nbsp;<span style="color: black; ">3600</span>&nbsp;<span style="color: silver; ">*</span>&nbsp;<span style="color: black; ">24</span><span style="color: maroon; ">)</span><span style="color: maroon; ">)</span>&nbsp;<span style="color: blue; ">AS</span>&nbsp;<span style="color: maroon; ">&quot;Valor&quot;</span><br />
<span style="color: blue; ">FROM</span>&nbsp;&nbsp;&nbsp;<span style="color: maroon; ">v$undostat</span><br />
<span style="color: blue; ">UNION</span>&nbsp;<span style="color: blue; ">ALL</span><br />
<span style="color: blue; ">SELECT</span>&nbsp;<span style="color: red; ">&#8216;Tamaño&nbsp;Bloque&nbsp;de&nbsp;Base&nbsp;De&nbsp;Datos&#8217;</span>&nbsp;<span style="color: blue; ">AS</span>&nbsp;<span style="color: maroon; ">&quot;Parametro&quot;</span><span style="color: silver; ">,</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #FF0080; font-weight: bold; ">To_number</span><span style="color: maroon; ">(</span><span style="color: blue; ">VALUE</span><span style="color: maroon; ">)</span> <span style="color: blue; ">AS</span>&nbsp;<span style="color: maroon; ">&quot;Valor&quot;</span><br />
<span style="color: blue; ">FROM</span>&nbsp;&nbsp;&nbsp;<span style="color: maroon; ">v$parameter</span><br />
<span style="color: blue; ">WHERE</span>&nbsp;&nbsp;<span style="color: blue; ">NAME</span>&nbsp;<span style="color: silver; ">=</span>&nbsp;<span style="color: red; ">&#8216;db_block_size&#8217;</span></span></div>
<p class="parrafo">El resultado es el siguiente:</p>
<div align="center" class="parrafo"><img src="http://www.xgodoy.com/wordpress/wp-content/uploads/2009/06/11_undo_tunning_monitoreo.jpg" width="351" height="79" title="UNDO Monitoreo, Mantenimiento y Tunning. 10gR2" alt="11 undo tunning monitoreo UNDO Monitoreo, Mantenimiento y Tunning. 10gR2" /></div>
<p class="parrafo">O sea, el tama&ntilde;o  del Tablespace de UNDO es 1.3 GB, la cantidad m&aacute;xima de bloques por segundo es  95 bloques y el tama&ntilde;o de un bloque es 8 KB. Luego el <em>undo_retention</em> optimo es:</p>
<div align="center"><img src="http://www.xgodoy.com/wordpress/wp-content/uploads/2009/06/12_undo_tunning_monitoreo.jpg" width="299" height="62" title="UNDO Monitoreo, Mantenimiento y Tunning. 10gR2" alt="12 undo tunning monitoreo UNDO Monitoreo, Mantenimiento y Tunning. 10gR2" /></div>
<p></p>
<div align="center"><img src="http://www.xgodoy.com/wordpress/wp-content/uploads/2009/06/13_undo_tunning_monitoreo.jpg" width="325" height="61" title="UNDO Monitoreo, Mantenimiento y Tunning. 10gR2" alt="13 undo tunning monitoreo UNDO Monitoreo, Mantenimiento y Tunning. 10gR2" /></div>
<p class="parrafo">Con la siguiente  queda simplificado el c&aacute;lculo a una sola query:</p>
<div class="sql">
<span ><br />
<span style="color: blue; ">SELECT</span>&nbsp;<span style="color: maroon; ">d</span><span style="color: silver; ">.</span><span style="color: maroon; ">undo_size</span>&nbsp;<span style="color: silver; ">/</span>&nbsp;<span style="color: maroon; ">(</span><span style="color: black; ">1024</span>&nbsp;<span style="color: silver; ">*</span>&nbsp;<span style="color: black; ">1024</span><span style="color: maroon; ">) &quot;ACTUAL&nbsp;UNDO&nbsp;SIZE&nbsp;[MByte]&quot;</span><span style="color: silver; ">,</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #FF0080; font-weight: bold; ">Substr</span><span style="color: maroon; ">(e</span><span style="color: silver; ">.</span><span style="color: blue; ">VALUE</span><span style="color: silver; ">,</span><span style="color: black; ">1</span><span style="color: silver; ">,</span><span style="color: black; ">25</span><span style="color: maroon; ">) &quot;ACTUAL&nbsp;UNDO&nbsp;RETENTION&nbsp;[Sec]&quot;</span><span style="color: silver; ">,</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: fuchsia; font-style: italic; ">Round</span><span style="color: maroon; ">(</span><span style="color: maroon; ">(</span><span style="color: maroon; ">d</span><span style="color: silver; ">.</span><span style="color: maroon; ">undo_size</span>&nbsp;<span style="color: silver; ">/</span>&nbsp;<span style="color: maroon; ">(</span><span style="color: #FF0080; font-weight: bold; ">To_number</span><span style="color: maroon; ">(</span><span style="color: maroon; ">f</span><span style="color: silver; ">.</span><span style="color: blue; ">VALUE</span><span style="color: maroon; ">)</span>&nbsp;<span style="color: silver; ">*</span>&nbsp;<span style="color: maroon; ">g</span><span style="color: silver; ">.</span><span style="color: maroon; ">undo_block_per_sec</span><span style="color: maroon; ">)</span><span style="color: maroon; ">)</span><span style="color: maroon; ">)</span>&nbsp;<span style="color: maroon; ">&quot;UNDO&nbsp;RETENTION&nbsp;OPTIMO&nbsp;[Sec]&quot;</span><br />
<span style="color: blue; ">FROM</span>&nbsp;&nbsp;&nbsp;<span style="color: maroon; ">(</span><span style="color: blue; ">SELECT</span>&nbsp;<span style="color: fuchsia; font-style: italic; ">Sum</span><span style="color: maroon; ">(</span><span style="color: maroon; ">a</span><span style="color: silver; ">.</span><span style="color: maroon; ">bytes</span><span style="color: maroon; ">)</span>&nbsp;<span style="color: maroon; ">undo_size</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: blue; ">FROM</span>&nbsp;&nbsp;&nbsp;<span style="color: maroon; ">v$datafile</span>&nbsp;<span style="color: maroon; ">a</span><span style="color: silver; ">,</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: maroon; ">v$tablespace</span>&nbsp;<span style="color: maroon; ">b</span><span style="color: silver; ">,</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: maroon; ">dba_tablespaces</span>&nbsp;<span style="color: maroon; ">c</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: blue; ">WHERE</span>&nbsp;&nbsp;<span style="color: maroon; ">c</span><span style="color: silver; ">.</span><span style="color: maroon; ">contents</span>&nbsp;<span style="color: silver; ">=</span>&nbsp;<span style="color: red; ">&#8216;UNDO&#8217;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: blue; ">AND</span>&nbsp;<span style="color: maroon; ">c</span><span style="color: silver; ">.</span><span style="color: maroon; ">status</span>&nbsp;<span style="color: silver; ">=</span>&nbsp;<span style="color: red; ">&#8216;ONLINE&#8217;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: blue; ">AND</span>&nbsp;<span style="color: maroon; ">b</span><span style="color: silver; ">.</span><span style="color: maroon; ">name</span>&nbsp;<span style="color: silver; ">=</span>&nbsp;<span style="color: maroon; ">c</span><span style="color: silver; ">.</span><span style="color: maroon; ">tablespace_name</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: blue; ">AND</span>&nbsp;<span style="color: maroon; ">a</span><span style="color: silver; ">.</span><span style="color: maroon; ">ts#</span>&nbsp;<span style="color: silver; ">=</span>&nbsp;<span style="color: maroon; ">b</span><span style="color: silver; ">.</span><span style="color: maroon; ">ts#</span><span style="color: maroon; ">)</span>&nbsp;<span style="color: maroon; ">d</span><span style="color: silver; ">,</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: maroon; ">v$parameter</span>&nbsp;<span style="color: maroon; ">e</span><span style="color: silver; ">,</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: maroon; ">v$parameter</span>&nbsp;<span style="color: maroon; ">f</span><span style="color: silver; ">,</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: maroon; ">(</span><span style="color: blue; ">SELECT</span>&nbsp;<span style="color: fuchsia; font-style: italic; ">Max</span><span style="color: maroon; ">(</span><span style="color: maroon; ">undoblks</span>&nbsp;<span style="color: silver; ">/</span>&nbsp;<span style="color: maroon; ">(</span><span style="color: maroon; ">(</span><span style="color: maroon; ">end_time</span>&nbsp;<span style="color: silver; ">-</span>&nbsp;<span style="color: maroon; ">begin_time</span><span style="color: maroon; ">)</span>&nbsp;<span style="color: silver; ">*</span>&nbsp;<span style="color: black; ">3600</span>&nbsp;<span style="color: silver; ">*</span>&nbsp;<span style="color: black; ">24</span><span style="color: maroon; ">)</span><span style="color: maroon; ">)</span>&nbsp;<span style="color: maroon; ">undo_block_per_sec</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: blue; ">FROM</span>&nbsp;&nbsp;&nbsp;<span style="color: maroon; ">v$undostat</span><span style="color: maroon; ">)</span>&nbsp;<span style="color: maroon; ">g</span><br />
<span style="color: blue; ">WHERE</span>&nbsp;&nbsp;<span style="color: maroon; ">e</span><span style="color: silver; ">.</span><span style="color: maroon; ">name</span>&nbsp;<span style="color: silver; ">=</span>&nbsp;<span style="color: red; ">&#8216;undo_retention&#8217;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: blue; ">AND</span>&nbsp;<span style="color: maroon; ">f</span><span style="color: silver; ">.</span><span style="color: maroon; ">name</span>&nbsp;<span style="color: silver; ">=</span>&nbsp;<span style="color: red; ">&#8216;db_block_size&#8217;</span></span></div>
<p class="parrafo">El resultado de  esta es:</p>
<div align="center"><img src="http://www.xgodoy.com/wordpress/wp-content/uploads/2009/06/14_undo_tunning_monitoreo.jpg" width="505" height="37" title="UNDO Monitoreo, Mantenimiento y Tunning. 10gR2" alt="14 undo tunning monitoreo UNDO Monitoreo, Mantenimiento y Tunning. 10gR2" /></div>
<p class="parrafo">Para modificar  el undo_retention de la base de datos y no superar en tama&ntilde;o los 1.3 GB del  Tablespace de UNDO es necesario setear el undo_retention a 1831 segundos:</p>
<div class="sql">
<p>11:50:38 SQL&gt; alter system set undo_retention=1831;</p>
<p>System altered.</p>
<p>11:50:53 SQL&gt; sho parameters undo</p>
<p>NAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  TYPE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; VALUE<br />
    &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212; &#8212;&#8212;&#8212;&#8211;  &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
    _undo_autotune&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  boolean&nbsp;&nbsp;&nbsp;&nbsp; TRUE<br />
    undo_management&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  string&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AUTO<br />
    undo_retention&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; integer&nbsp;&nbsp;&nbsp;&nbsp; 1831<br />
    undo_tablespace&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;UNDOTBS1<br />
    11:50:59  SQL&gt;</p>
</div>
<p class="parrafo">Ahora, si no  existen problemas de storage, o sea, el Tablespace de UNDO puede crecer aun m&aacute;s  y se requiere un tiempo de retenci&oacute;n mayor, es necesario calcular el tama&ntilde;o del  tablespace de UNDO &oacute;ptimo dependiendo del undo_retention que se requiera  setear.</p>
<p class="parrafo">Por ejemplo,  digamos que se requiere un tiempo de retenci&oacute;n igual a 3000 segundos:</p>
<div class="sql">
<p>12:00:34 SQL&gt; alter system set undo_retention=3000;</p>
<p>System altered.</p>
<p>12:00:46 SQL&gt; sho parameters undo</p>
<p>NAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  TYPE &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;VALUE<br />
    &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212; &#8212;&#8212;&#8212;&#8211;  &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
    _undo_autotune&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  boolean&nbsp;&nbsp;&nbsp;&nbsp; TRUE<br />
    undo_management&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  string&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AUTO<br />
    undo_retention&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; integer&nbsp;&nbsp;&nbsp;&nbsp; 3000<br />
    undo_tablespace&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; UNDOTBS1<br />
    12:00:52  SQL&gt;</p>
</div>
<p class="parrafo">El tama&ntilde;o &oacute;ptimo del tablespace de UNDO para  esta retenci&oacute;n se da por la siguiente f&oacute;rmula:</p>
<div align="center"><img src="http://www.xgodoy.com/wordpress/wp-content/uploads/2009/06/15_undo_tunning_monitoreo.jpg" width="505" height="66" title="UNDO Monitoreo, Mantenimiento y Tunning. 10gR2" alt="15 undo tunning monitoreo UNDO Monitoreo, Mantenimiento y Tunning. 10gR2" /></div>
<p class="parrafo">La siguiente query entrega los datos necesarios para calcular el tama&ntilde;o tablespace UNDO  &oacute;ptimo:</p>
<div class="sql">
<span ><br />
<span style="color: blue; ">SELECT</span>&nbsp;<span style="color: red; ">&#8216;undo_retention&#8217;</span>&nbsp;<span style="color: blue; ">AS</span>&nbsp;<span style="color: maroon; ">&quot;Parametro&quot;</span><span style="color: silver; ">,</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #FF0080; font-weight: bold; ">To_number</span><span style="color: maroon; ">(</span><span style="color: blue; ">VALUE</span><span style="color: maroon; ">)</span>&nbsp;<span style="color: blue; ">AS</span>&nbsp;<span style="color: maroon; ">&quot;Valor&quot;</span><br />
<span style="color: blue; ">FROM</span>&nbsp;&nbsp;&nbsp;<span style="color: maroon; ">v$parameter</span><br />
<span style="color: blue; ">WHERE</span>&nbsp;&nbsp;<span style="color: blue; ">NAME</span>&nbsp;<span style="color: silver; ">=</span>&nbsp;<span style="color: red; ">&#8216;undo_retention&#8217;</span><br />
<span style="color: blue; ">UNION</span>&nbsp;<span style="color: blue; ">ALL</span><br />
<span style="color: blue; ">SELECT</span>&nbsp;<span style="color: red; ">&#8216;Bloques&nbsp;UNDO&nbsp;por&nbsp;segundo&#8217; </span><span style="color: blue; ">AS</span>&nbsp;<span style="color: maroon; ">&quot;Parametro&quot;</span><span style="color: silver; ">,</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #FF0080; font-weight: bold; ">Max</span><span style="color: maroon; ">(</span><span style="color: maroon; ">undoblks</span>&nbsp;<span style="color: silver; ">/</span>&nbsp;<span style="color: maroon; ">(</span><span style="color: maroon; ">(</span><span style="color: maroon; ">end_time</span>&nbsp;<span style="color: silver; ">-</span>&nbsp;<span style="color: maroon; ">begin_time</span><span style="color: maroon; ">)</span>&nbsp;<span style="color: silver; ">*</span>&nbsp;<span style="color: black; ">3600</span>&nbsp;<span style="color: silver; ">*</span>&nbsp;<span style="color: black; ">24</span><span style="color: maroon; ">)</span><span style="color: maroon; ">)</span>&nbsp;<span style="color: blue; ">AS</span>&nbsp;<span style="color: maroon; ">&quot;Valor&quot;</span><br />
<span style="color: blue; ">FROM</span>&nbsp;&nbsp;&nbsp;<span style="color: maroon; ">v$undostat</span><br />
<span style="color: blue; ">UNION</span>&nbsp;<span style="color: blue; ">ALL</span><br />
<span style="color: blue; ">SELECT</span>&nbsp;<span style="color: red; ">&#8216;Tamaño&nbsp;Bloque&nbsp;de&nbsp;Base&nbsp;De&nbsp;Datos&#8217;</span>&nbsp;<span style="color: blue; ">AS</span>&nbsp;<span style="color: maroon; ">&quot;Parametro&quot;</span><span style="color: silver; ">,</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: #FF0080; font-weight: bold; ">To_number</span><span style="color: maroon; ">(</span><span style="color: blue; ">VALUE</span><span style="color: maroon; ">)</span> <span style="color: blue; ">AS</span>&nbsp;<span style="color: maroon; ">&quot;Valor&quot;</span><br />
<span style="color: blue; ">FROM</span>&nbsp;&nbsp;&nbsp;<span style="color: maroon; ">v$parameter</span><br />
<span style="color: blue; ">WHERE</span>&nbsp;&nbsp;<span style="color: blue; ">NAME</span>&nbsp;<span style="color: silver; ">=</span>&nbsp;<span style="color: red; ">&#8216;db_block_size&#8217;</span></span></div>
<p class="parrafo">El resultado de esta es la siguiente:</p>
<div align="center"><img src="http://www.xgodoy.com/wordpress/wp-content/uploads/2009/06/16_undo_tunning_monitoreo.jpg" width="257" height="79" title="UNDO Monitoreo, Mantenimiento y Tunning. 10gR2" alt="16 undo tunning monitoreo UNDO Monitoreo, Mantenimiento y Tunning. 10gR2" /></div>
<p class="parrafo">O sea, el undo_retention  es 3000 segundos, la cantidad m&aacute;xima de bloques por segundo es 95 bloques y el  tama&ntilde;o de un bloque es 8 KB. Luego el tama&ntilde;o de tablespace UNDO optimo es: </p>
<div align="center"><img src="http://www.xgodoy.com/wordpress/wp-content/uploads/2009/06/17_undo_tunning_monitoreo.jpg" width="291" height="69" title="UNDO Monitoreo, Mantenimiento y Tunning. 10gR2" alt="17 undo tunning monitoreo UNDO Monitoreo, Mantenimiento y Tunning. 10gR2" /></div>
<p></p>
<div align="center"><img src="http://www.xgodoy.com/wordpress/wp-content/uploads/2009/06/18_undo_tunning_monitoreo.jpg" width="233" height="68" title="UNDO Monitoreo, Mantenimiento y Tunning. 10gR2" alt="18 undo tunning monitoreo UNDO Monitoreo, Mantenimiento y Tunning. 10gR2" /></div>
<p class="parrafo">Con la siguiente  queda simplificado el c&aacute;lculo a una sola query:</p>
<div class="sql">
<span ><br />
<span style="color: blue; ">SELECT</span>&nbsp;<span style="color: #FF0080; font-weight: bold; ">Substr</span><span style="color: maroon; ">(e</span><span style="color: silver; ">.</span><span style="color: blue; ">VALUE</span><span style="color: silver; ">,</span><span style="color: black; ">1</span><span style="color: silver; ">,</span><span style="color: black; ">25</span><span style="color: maroon; ">) &quot;UNDO&nbsp;RETENTION&nbsp;[Sec]&quot;</span><span style="color: silver; ">,</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: maroon; ">d</span><span style="color: silver; ">.</span><span style="color: maroon; ">undo_size</span>&nbsp;<span style="color: silver; ">/</span>&nbsp;<span style="color: maroon; ">(</span><span style="color: black; ">1024</span>&nbsp;<span style="color: silver; ">*</span>&nbsp;<span style="color: black; ">1024</span><span style="color: maroon; ">) &quot;Tamaño&nbsp;Actual&nbsp;UNDO&nbsp;[MByte]&quot;</span><span style="color: silver; ">,</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: maroon; ">(</span><span style="color: #FF0080; font-weight: bold; ">To_number</span><span style="color: maroon; ">(</span><span style="color: maroon; ">e</span><span style="color: silver; ">.</span><span style="color: blue; ">VALUE</span><span style="color: maroon; ">)</span>&nbsp;<span style="color: silver; ">*</span>&nbsp;<span style="color: #FF0080; font-weight: bold; ">To_number</span><span style="color: maroon; ">(</span><span style="color: maroon; ">f</span><span style="color: silver; ">.</span><span style="color: blue; ">VALUE</span><span style="color: maroon; ">)</span>&nbsp;<span style="color: silver; ">*</span>&nbsp;<span style="color: maroon; ">g</span><span style="color: silver; ">.</span><span style="color: maroon; ">undo_block_per_sec</span><span style="color: maroon; ">)</span>&nbsp;<span style="color: silver; ">/</span>&nbsp;<span style="color: maroon; ">(</span><span style="color: black; ">1024</span>&nbsp;<span style="color: silver; ">*</span>&nbsp;<span style="color: black; ">1024</span><span style="color: maroon; ">)</span>&nbsp;<span style="color: maroon; ">&quot;Tamaño&nbsp;Optimo&nbsp;UNDO&nbsp;[MByte]&quot;</span><br />
<span style="color: blue; ">FROM</span>&nbsp;&nbsp;&nbsp;<span style="color: maroon; ">(</span><span style="color: blue; ">SELECT</span>&nbsp;<span style="color: #FF0080; font-weight: bold; ">Sum</span><span style="color: maroon; ">(</span><span style="color: maroon; ">a</span><span style="color: silver; ">.</span><span style="color: maroon; ">bytes</span><span style="color: maroon; ">)</span>&nbsp;<span style="color: maroon; ">undo_size</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: blue; ">FROM</span>&nbsp;&nbsp;&nbsp;<span style="color: maroon; ">v$datafile</span>&nbsp;<span style="color: maroon; ">a</span><span style="color: silver; ">,</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: maroon; ">v$tablespace</span>&nbsp;<span style="color: maroon; ">b</span><span style="color: silver; ">,</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: maroon; ">dba_tablespaces</span>&nbsp;<span style="color: maroon; ">c</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: blue; ">WHERE</span>&nbsp;&nbsp;<span style="color: maroon; ">c</span><span style="color: silver; ">.</span><span style="color: maroon; ">contents</span>&nbsp;<span style="color: silver; ">=</span>&nbsp;<span style="color: red; ">&#8216;UNDO&#8217;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: blue; ">AND</span>&nbsp;<span style="color: maroon; ">c</span><span style="color: silver; ">.</span><span style="color: maroon; ">status</span>&nbsp;<span style="color: silver; ">=</span>&nbsp;<span style="color: red; ">&#8216;ONLINE&#8217;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: blue; ">AND</span>&nbsp;<span style="color: maroon; ">b</span><span style="color: silver; ">.</span><span style="color: blue; ">NAME</span>&nbsp;<span style="color: silver; ">=</span>&nbsp;<span style="color: maroon; ">c</span><span style="color: silver; ">.</span><span style="color: maroon; ">tablespace_name</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: blue; ">AND</span>&nbsp;<span style="color: maroon; ">a</span><span style="color: silver; ">.</span><span style="color: maroon; ">ts#</span>&nbsp;<span style="color: silver; ">=</span>&nbsp;<span style="color: maroon; ">b</span><span style="color: silver; ">.</span><span style="color: maroon; ">ts#</span><span style="color: maroon; ">)</span>&nbsp;<span style="color: maroon; ">d</span><span style="color: silver; ">,</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: maroon; ">v$parameter</span>&nbsp;<span style="color: maroon; ">e</span><span style="color: silver; ">,</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: maroon; ">v$parameter</span>&nbsp;<span style="color: maroon; ">f</span><span style="color: silver; ">,</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: maroon; ">(</span><span style="color: blue; ">SELECT</span>&nbsp;<span style="color: #FF0080; font-weight: bold; ">Max</span><span style="color: maroon; ">(</span><span style="color: maroon; ">undoblks</span>&nbsp;<span style="color: silver; ">/</span>&nbsp;<span style="color: maroon; ">(</span><span style="color: maroon; ">(</span><span style="color: maroon; ">end_time</span>&nbsp;<span style="color: silver; ">-</span>&nbsp;<span style="color: maroon; ">begin_time</span><span style="color: maroon; ">)</span>&nbsp;<span style="color: silver; ">*</span>&nbsp;<span style="color: black; ">3600</span>&nbsp;<span style="color: silver; ">*</span>&nbsp;<span style="color: black; ">24</span><span style="color: maroon; ">)</span><span style="color: maroon; ">)</span>&nbsp;<span style="color: maroon; ">undo_block_per_sec</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: blue; ">FROM</span>&nbsp;&nbsp;&nbsp;<span style="color: maroon; ">v$undostat</span><span style="color: maroon; ">)</span>&nbsp;<span style="color: maroon; ">g</span><br />
<span style="color: blue; ">WHERE</span>&nbsp;&nbsp;<span style="color: maroon; ">e</span><span style="color: silver; ">.</span><span style="color: blue; ">NAME</span>&nbsp;<span style="color: silver; ">=</span>&nbsp;<span style="color: red; ">&#8216;undo_retention&#8217;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: blue; ">AND</span>&nbsp;<span style="color: maroon; ">f</span><span style="color: silver; ">.</span><span style="color: blue; ">NAME</span>&nbsp;<span style="color: silver; ">=</span>&nbsp;<span style="color: red; ">&#8216;db_block_size&#8217;</span></span></div>
<p class="parrafo">El resultado de esta es:</p>
<div align="center"><img src="http://www.xgodoy.com/wordpress/wp-content/uploads/2009/06/19_undo_tunning_monitoreo.jpg" width="505" height="38" title="UNDO Monitoreo, Mantenimiento y Tunning. 10gR2" alt="19 undo tunning monitoreo UNDO Monitoreo, Mantenimiento y Tunning. 10gR2" /></div>
<p class="parrafo">Luego, solo es necesario modificar el tama&ntilde;o del datafile asociado al  tablespace de UNDO a 2227 MB.</p>
<div class="sql">
<p>ALTER DATABASE  DATAFILE &#8216;/u02/oradata/jimydb/undotbs01.dbf&#8217; RESIZE 2227M;</p>
</div>
<p></p>
<p class="subtitulo"><strong>Reducir Tama&ntilde;o de Tablespace de UNDO</strong></p>
<p class="parrafo">Si el tablespace de UNDO tiene los datafiles asociados con la opci&oacute;n  autoextend, es posible que crezca indiscriminadamente por alguna raz&oacute;n en  particular (una transacci&oacute;n muy grande, un import de alguna tabla grande, etc),  luego, en alg&uacute;n momento tal vez se requiera reducir el tablespace de UNDO,  lamentablemente, no se puede. La t&eacute;cnica para reducir el tama&ntilde;o del tablespace  de UNDO consiste en crear un nuevo tablespace de tipo UNDO con el tama&ntilde;o  deseado, asignar este tablespace como UNDO predeterminado y eliminar el  antiguo.</p>
<p class="parrafo">Lo anteriormente descrito, paso a paso:</p>
<p class="parrafo">El tama&ntilde;o del tablespace de UNDO obtenido con la siguiente query:</p>
<div class="sql">
<span ><br />
<span style="color: blue; ">SELECT</span>&nbsp;<span style="color: #FF0080; font-weight: bold; ">Sum</span><span style="color: maroon; ">(</span><span style="color: maroon; ">v$datafile</span><span style="color: silver; ">.</span><span style="color: maroon; ">bytes</span>&nbsp;<span style="color: silver; ">/</span>&nbsp;<span style="color: black; ">1024</span>&nbsp;<span style="color: silver; ">/</span>&nbsp;<span style="color: black; ">1024</span><span style="color: maroon; ">)</span>&nbsp;<span style="color: blue; ">AS</span>&nbsp;<span style="color: maroon; ">&quot;Tamaño&nbsp;Actual&nbsp;TS&nbsp;UNDO&nbsp;[MB]&quot;</span><br />
<span style="color: blue; ">FROM</span>&nbsp;&nbsp;&nbsp;<span style="color: maroon; ">v$datafile</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: blue; ">INNER</span>&nbsp;<span style="color: blue; ">JOIN</span>&nbsp;<span style="color: maroon; ">v$tablespace</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: blue; ">ON</span>&nbsp;<span style="color: maroon; ">v$datafile</span><span style="color: silver; ">.</span><span style="color: maroon; ">ts#</span>&nbsp;<span style="color: silver; ">=</span>&nbsp;<span style="color: maroon; ">v$tablespace</span><span style="color: silver; ">.</span><span style="color: maroon; ">ts#</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: blue; ">INNER</span>&nbsp;<span style="color: blue; ">JOIN</span>&nbsp;<span style="color: maroon; ">dba_tablespaces</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: blue; ">ON</span>&nbsp;<span style="color: maroon; ">v$tablespace</span><span style="color: silver; ">.</span><span style="color: blue; ">NAME</span>&nbsp;<span style="color: silver; ">=</span>&nbsp;<span style="color: maroon; ">dba_tablespaces</span><span style="color: silver; ">.</span><span style="color: maroon; ">tablespace_name</span><br />
<span style="color: blue; ">WHERE</span>&nbsp;&nbsp;<span style="color: maroon; ">dba_tablespaces</span><span style="color: silver; ">.</span><span style="color: maroon; ">contents</span>&nbsp;<span style="color: silver; ">=</span>&nbsp;<span style="color: red; ">&#8216;UNDO&#8217;</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: blue; ">AND</span>&nbsp;<span style="color: maroon; ">dba_tablespaces</span><span style="color: silver; ">.</span><span style="color: maroon; ">status</span>&nbsp;<span style="color: silver; ">=</span>&nbsp;<span style="color: red; ">&#8216;ONLINE&#8217;</span></span></div>
<p class="parrafo">El resultado es el siguiente:</p>
<div align="center"><img src="http://www.xgodoy.com/wordpress/wp-content/uploads/2009/06/20_undo_tunning_monitoreo.jpg" width="185" height="40" title="UNDO Monitoreo, Mantenimiento y Tunning. 10gR2" alt="20 undo tunning monitoreo UNDO Monitoreo, Mantenimiento y Tunning. 10gR2" /></div>
<p class="parrafo">Supongamos que se requiere reducir el tama&ntilde;o del tablespace a 1000 MB, la  instrucci&oacute;n es la siguiente:</p>
<div class="sql">
<p>ALTER DATABASE  DATAFILE &#8216;/u02/oradata/jimydb/undotbs01.dbf&#8217; RESIZE 1000M;</p>
</div>
<p>Al ejecutar la instrucci&oacute;n aparece el siguiente error:</p>
<div class="Mensaje_sql">
<p>ORA-03297: file contains used data beyond requested RESIZE value</p>
</div>
<p class="parrafo">Bueno,  tal vez es muy tajante decir que el tama&ntilde;o del tablespace no se puede reducir,  la verdad si se puede pero solo hasta donde lo permita nuestro bien conocido High  Water Mark (HWM). La  siguiente query muestra el tama&ntilde;o actual del tablespace, lo recuperable, el  m&iacute;nimo tama&ntilde;o que puede tener el tablespace de UNDO, el o&nbsp; los datafiles a modificar con tama&ntilde;o  propuesto.</p>
<div class="sql">
<font style="font-family: 'Courier New', Courier, monospace; font-size: 10px"><br />
<font color = "blue">SELECT</font><br />
&nbsp;&nbsp;<font color = "maroon">tts</font><font color = "silver">.</font><font color = "maroon">tablespace</font><font color = "silver">,</font><br />
&nbsp;&nbsp;<font color = "maroon">tts</font><font color = "silver">.</font><font color = "maroon">&quot;Tamaño&nbsp;TableSpace&nbsp;[MB]&quot;</font><font color = "silver">,</font><br />
&nbsp;&nbsp;<font color = "maroon">tts</font><font color = "silver">.</font><font color = "maroon">&quot;Espacio&nbsp;Libre&nbsp;TableSpace&nbsp;[MB]&quot;</font><font color = "silver">,</font><br />
&nbsp;&nbsp;<font color = "maroon">tts</font><font color = "silver">.</font><font color = "maroon">&quot;Tamaño&nbsp;TableSpace&nbsp;[MB]&quot;</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;<font color = "silver">-</font>&nbsp;<font color = "maroon">&quot;Espacio&nbsp;Libre&nbsp;TableSpace&nbsp;[MB]&quot;</font>&nbsp;<font color = "blue">AS</font>&nbsp;<font color = "maroon">&quot;Espacio&nbsp;Propuesto&nbsp;TS&nbsp;[MB]&quot;</font><font color = "silver">,</font><br />
&nbsp;&nbsp;<font color = "maroon">tdf</font><font color = "silver">.</font><font color = "maroon">datafile</font>&nbsp;<font color = "blue">AS</font>&nbsp;<font color = "maroon">&quot;Datafile&nbsp;a&nbsp;Mofificar&quot;</font><font color = "silver">,</font><br />
&nbsp;&nbsp;<font color = "maroon">tdf</font><font color = "silver">.</font><font color = "maroon">&quot;Tamaño&nbsp;DataFile&nbsp;[MB]&quot;</font><font color = "silver">,</font><br />
&nbsp;&nbsp;<font color = "maroon">tdf</font><font color = "silver">.</font><font color = "maroon">&quot;Espacio&nbsp;Libre&nbsp;DataFile&nbsp;[MB]&quot;</font><font color = "silver">,</font><br />
&nbsp;&nbsp;<font color = "maroon">tdf</font><font color = "silver">.</font><font color = "maroon">&quot;Tamaño&nbsp;DataFile&nbsp;[MB]&quot;</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;<font color = "silver">-</font>&nbsp;<font color = "maroon">tdf</font><font color = "silver">.</font><font color = "maroon">&quot;Espacio&nbsp;Libre&nbsp;DataFile&nbsp;[MB]&quot;</font>&nbsp;<font color = "blue">AS</font>&nbsp;<font color = "maroon">&quot;Tamaño&nbsp;Propuesto&nbsp;DF&nbsp;[MB]&quot;</font><br />
<font color = "blue">FROM</font><br />
&nbsp;&nbsp;<font color = "maroon">(</font><font color = "blue">SELECT</font><br />
&nbsp;&nbsp;<font color = "maroon">tablespace</font><font color = "silver">,</font><br />
&nbsp;<font color = "#FF0080"><b>Sum</font></b><font color = "maroon">(</font><font color = "maroon">&quot;Tamaño&nbsp;DataFile&nbsp;[MB]&quot;</font><font color = "maroon">)</font>&nbsp;<font color = "blue">AS</font>&nbsp;<font color = "maroon">&quot;Tamaño&nbsp;TableSpace&nbsp;[MB]&quot;</font><font color = "silver">,</font><br />
&nbsp;<font color = "#FF0080"><b>Sum</font></b><font color = "maroon">(</font><font color = "maroon">&quot;Espacio&nbsp;Libre&nbsp;DataFile&nbsp;[MB]&quot;</font><font color = "maroon">)</font>&nbsp;<font color = "blue">AS</font>&nbsp;<font color = "maroon">&quot;Espacio&nbsp;Libre&nbsp;TableSpace&nbsp;[MB]&quot;</font><br />
&nbsp;&nbsp;&nbsp;<font color = "blue">FROM</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;<font color = "maroon">(</font><font color = "blue">SELECT</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "maroon">dfs</font><font color = "silver">.</font><font color = "maroon">tablespace_name</font>&nbsp;<font color = "blue">AS</font>&nbsp;<font color = "maroon">tablespace</font><font color = "silver">,</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "maroon">hwm</font><font color = "silver">.</font><font color = "maroon">bytes</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "silver">/</font>&nbsp;<font color = "black">1024</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "silver">/</font>&nbsp;<font color = "black">1024</font>&nbsp;<font color = "blue">AS</font>&nbsp;<font color = "maroon">&quot;Tamaño&nbsp;DataFile&nbsp;[MB]&quot;</font><font color = "silver">,</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "#FF0080"><b>Sum</font></b><font color = "maroon">(</font><font color = "maroon">dfs</font><font color = "silver">.</font><font color = "maroon">bytes</font><font color = "maroon">)</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "silver">/</font>&nbsp;<font color = "black">1024</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "silver">/</font>&nbsp;<font color = "black">1024</font>&nbsp;<font color = "blue">AS</font>&nbsp;<font color = "maroon">&quot;Espacio&nbsp;Libre&nbsp;DataFile&nbsp;[MB]&quot;</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "blue">FROM</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "maroon">dba_free_space</font>&nbsp;<font color = "maroon">dfs</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "blue">INNER</font>&nbsp;<font color = "blue">JOIN</font>&nbsp;<font color = "maroon">(</font><font color = "blue">SELECT</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "maroon">df</font><font color = "silver">.</font><font color = "maroon">file_id</font><font color = "silver">,</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "#FF0080"><b>Max</font></b><font color = "maroon">(</font><font color = "maroon">block_id</font><font color = "maroon">)</font>&nbsp;<font color = "maroon">maximum</font><font color = "silver">,</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "maroon">df</font><font color = "silver">.</font><font color = "maroon">bytes</font>&nbsp;<font color = "blue">AS</font>&nbsp;<font color = "maroon">bytes</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "blue">FROM</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "maroon">dba_extents</font>&nbsp;<font color = "maroon">ext</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "blue">INNER</font>&nbsp;<font color = "blue">JOIN</font>&nbsp;<font color = "maroon">dba_data_files</font>&nbsp;<font color = "maroon">df</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "blue">ON</font>&nbsp;<font color = "maroon">df</font><font color = "silver">.</font><font color = "maroon">file_id</font>&nbsp;<font color = "silver">=</font>&nbsp;<font color = "maroon">ext</font><font color = "silver">.</font><font color = "maroon">file_id</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "blue">GROUP</font>&nbsp;<font color = "blue">BY</font>&nbsp;<font color = "maroon">df</font><font color = "silver">.</font><font color = "maroon">file_id</font><font color = "silver">,</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "maroon">df</font><font color = "silver">.</font><font color = "maroon">bytes</font><font color = "maroon">)</font>&nbsp;<font color = "maroon">hwm</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "blue">ON</font>&nbsp;<font color = "maroon">dfs</font><font color = "silver">.</font><font color = "maroon">file_id</font>&nbsp;<font color = "silver">=</font>&nbsp;<font color = "maroon">hwm</font><font color = "silver">.</font><font color = "maroon">file_id</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "blue">INNER</font>&nbsp;<font color = "blue">JOIN</font>&nbsp;<font color = "maroon">dba_tablespaces</font>&nbsp;<font color = "maroon">dts</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "blue">ON</font>&nbsp;<font color = "maroon">dfs</font><font color = "silver">.</font><font color = "maroon">tablespace_name</font>&nbsp;<font color = "silver">=</font>&nbsp;<font color = "maroon">dts</font><font color = "silver">.</font><font color = "maroon">tablespace_name</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "blue">AND</font>&nbsp;<font color = "maroon">dts</font><font color = "silver">.</font><font color = "maroon">contents</font>&nbsp;<font color = "silver">=</font>&nbsp;<font color = "red">&#8216;UNDO&#8217;</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "blue">AND</font>&nbsp;<font color = "maroon">dts</font><font color = "silver">.</font><font color = "maroon">status</font>&nbsp;<font color = "silver">=</font>&nbsp;<font color = "red">&#8216;ONLINE&#8217;</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "blue">GROUP</font>&nbsp;<font color = "blue">BY</font>&nbsp;<font color = "maroon">hwm</font><font color = "silver">.</font><font color = "maroon">maximum</font><font color = "silver">,</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "maroon">dfs</font><font color = "silver">.</font><font color = "maroon">tablespace_name</font><font color = "silver">,</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "maroon">hwm</font><font color = "silver">.</font><font color = "maroon">bytes</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "blue">HAVING</font>&nbsp;&nbsp;&nbsp;<font color = "#FF0080"><b>Max</font></b><font color = "maroon">(</font><font color = "maroon">block_id</font><font color = "maroon">)</font>&nbsp;<font color = "silver">&gt;=</font>&nbsp;<font color = "maroon">hwm</font><font color = "silver">.</font><font color = "maroon">maximum</font><font color = "maroon">)</font><br />
&nbsp;&nbsp;&nbsp;<font color = "blue">GROUP</font>&nbsp;<font color = "blue">BY</font>&nbsp;<font color = "maroon">tablespace</font><font color = "maroon">)</font>&nbsp;<font color = "maroon">tts</font><br />
&nbsp;&nbsp;<font color = "blue">INNER</font>&nbsp;<font color = "blue">JOIN</font>&nbsp;<font color = "maroon">(</font><font color = "blue">SELECT</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "maroon">dfs</font><font color = "silver">.</font><font color = "maroon">tablespace_name</font>&nbsp;<font color = "blue">AS</font>&nbsp;<font color = "maroon">tablespace</font><font color = "silver">,</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "maroon">hwm</font><font color = "silver">.</font><font color = "maroon">file_name</font>&nbsp;<font color = "blue">AS</font>&nbsp;<font color = "maroon">datafile</font><font color = "silver">,</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "maroon">hwm</font><font color = "silver">.</font><font color = "maroon">bytes</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "silver">/</font>&nbsp;<font color = "black">1024</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "silver">/</font>&nbsp;<font color = "black">1024</font>&nbsp;<font color = "blue">AS</font>&nbsp;<font color = "maroon">&quot;Tamaño&nbsp;DataFile&nbsp;[MB]&quot;</font><font color = "silver">,</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "#FF0080"><b>Sum</font></b><font color = "maroon">(</font><font color = "maroon">dfs</font><font color = "silver">.</font><font color = "maroon">bytes</font><font color = "maroon">)</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "silver">/</font>&nbsp;<font color = "black">1024</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "silver">/</font>&nbsp;<font color = "black">1024</font>&nbsp;<font color = "blue">AS</font>&nbsp;<font color = "maroon">&quot;Espacio&nbsp;Libre&nbsp;DataFile&nbsp;[MB]&quot;</font><font color = "silver">,</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "maroon">dfs</font><font color = "silver">.</font><font color = "maroon">file_id</font><font color = "silver">,</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "#FF0080"><b>Max</font></b><font color = "maroon">(</font><font color = "maroon">block_id</font><font color = "maroon">)</font>&nbsp;<font color = "blue">AS</font>&nbsp;<font color = "maroon">block_id</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "blue">FROM</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "maroon">dba_free_space</font>&nbsp;<font color = "maroon">dfs</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "blue">INNER</font>&nbsp;<font color = "blue">JOIN</font>&nbsp;<font color = "maroon">(</font><font color = "blue">SELECT</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "maroon">df</font><font color = "silver">.</font><font color = "maroon">file_id</font><font color = "silver">,</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "maroon">df</font><font color = "silver">.</font><font color = "maroon">file_name</font><font color = "silver">,</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "#FF0080"><b>Max</font></b><font color = "maroon">(</font><font color = "maroon">block_id</font><font color = "maroon">)</font>&nbsp;<font color = "maroon">maximum</font><font color = "silver">,</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "maroon">df</font><font color = "silver">.</font><font color = "maroon">bytes</font>&nbsp;<font color = "blue">AS</font>&nbsp;<font color = "maroon">bytes</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "blue">FROM</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "maroon">dba_extents</font>&nbsp;<font color = "maroon">ext</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "blue">INNER</font>&nbsp;<font color = "blue">JOIN</font>&nbsp;<font color = "maroon">dba_data_files</font>&nbsp;<font color = "maroon">df</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "blue">ON</font>&nbsp;<font color = "maroon">df</font><font color = "silver">.</font><font color = "maroon">file_id</font>&nbsp;<font color = "silver">=</font>&nbsp;<font color = "maroon">ext</font><font color = "silver">.</font><font color = "maroon">file_id</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "blue">GROUP</font>&nbsp;<font color = "blue">BY</font>&nbsp;<font color = "maroon">df</font><font color = "silver">.</font><font color = "maroon">file_id</font><font color = "silver">,</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "maroon">df</font><font color = "silver">.</font><font color = "maroon">file_name</font><font color = "silver">,</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "maroon">df</font><font color = "silver">.</font><font color = "maroon">bytes</font><font color = "maroon">)</font>&nbsp;<font color = "maroon">hwm</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "blue">ON</font>&nbsp;<font color = "maroon">dfs</font><font color = "silver">.</font><font color = "maroon">file_id</font>&nbsp;<font color = "silver">=</font>&nbsp;<font color = "maroon">hwm</font><font color = "silver">.</font><font color = "maroon">file_id</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "blue">INNER</font>&nbsp;<font color = "blue">JOIN</font>&nbsp;<font color = "maroon">dba_tablespaces</font>&nbsp;<font color = "maroon">dts</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "blue">ON</font>&nbsp;<font color = "maroon">dfs</font><font color = "silver">.</font><font color = "maroon">tablespace_name</font>&nbsp;<font color = "silver">=</font>&nbsp;<font color = "maroon">dts</font><font color = "silver">.</font><font color = "maroon">tablespace_name</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "blue">AND</font>&nbsp;<font color = "maroon">dts</font><font color = "silver">.</font><font color = "maroon">contents</font>&nbsp;<font color = "silver">=</font>&nbsp;<font color = "red">&#8216;UNDO&#8217;</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "blue">AND</font>&nbsp;<font color = "maroon">dts</font><font color = "silver">.</font><font color = "maroon">status</font>&nbsp;<font color = "silver">=</font>&nbsp;<font color = "red">&#8216;ONLINE&#8217;</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "blue">GROUP</font>&nbsp;<font color = "blue">BY</font>&nbsp;<font color = "maroon">dfs</font><font color = "silver">.</font><font color = "maroon">file_id</font><font color = "silver">,</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "maroon">hwm</font><font color = "silver">.</font><font color = "maroon">file_name</font><font color = "silver">,</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "maroon">hwm</font><font color = "silver">.</font><font color = "maroon">maximum</font><font color = "silver">,</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "maroon">dfs</font><font color = "silver">.</font><font color = "maroon">tablespace_name</font><font color = "silver">,</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "maroon">hwm</font><font color = "silver">.</font><font color = "maroon">bytes</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "blue">HAVING</font>&nbsp;&nbsp;&nbsp;<font color = "#FF0080"><b>Max</font></b><font color = "maroon">(</font><font color = "maroon">block_id</font><font color = "maroon">)</font>&nbsp;<font color = "silver">&gt;=</font>&nbsp;<font color = "maroon">hwm</font><font color = "silver">.</font><font color = "maroon">maximum</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "blue">ORDER</font>&nbsp;<font color = "blue">BY</font>&nbsp;<font color = "maroon">dfs</font><font color = "silver">.</font><font color = "maroon">tablespace_name</font><font color = "silver">,</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "maroon">hwm</font><font color = "silver">.</font><font color = "maroon">file_name</font><font color = "maroon">)</font>&nbsp;<font color = "maroon">tdf</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;<font color = "blue">ON</font>&nbsp;<font color = "maroon">tts</font><font color = "silver">.</font><font color = "maroon">tablespace</font>&nbsp;<font color = "silver">=</font>&nbsp;<font color = "maroon">tdf</font><font color = "silver">.</font><font color = "maroon">tablespace</font><br />
<font color = "blue">ORDER</font>&nbsp;<font color = "blue">BY</font>&nbsp;<font color = "maroon">tts</font><font color = "silver">.</font><font color = "maroon">tablespace</font><font color = "silver">,</font><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font color = "maroon">tdf</font><font color = "silver">.</font><font color = "maroon">datafile</font></font></div>
<p class="parrafo">El resultado de esta:</p>
<div align="center"><img src="http://www.xgodoy.com/wordpress/wp-content/uploads/2009/06/21_undo_tunning_monitoreo.jpg" width="401" height="155" title="UNDO Monitoreo, Mantenimiento y Tunning. 10gR2" alt="21 undo tunning monitoreo UNDO Monitoreo, Mantenimiento y Tunning. 10gR2" /></div>
<p class="parrafo">Luego,  seg&uacute;n el resultado de la query, se puede reducir el tama&ntilde;o del tablespace  (datafile asociado) a 1361 MB:</p>
<div class="sql">
<p>14:43:12  SQL&gt; ALTER DATABASE DATAFILE &#8216;/u02/oradata/jimydb/undotbs01.dbf&#8217; RESIZE  1361M;</p>
<p>Database  altered.</p>
<p>14:43:18  SQL&gt;</p>
</div>
<p class="parrafo">Ning&uacute;n  Problema!</p>
<p class="parrafo">En  caso de que se requiera modificar el tama&ntilde;o del tablespace de UNDO a un valor  menor al permitido por la HWM es necesario aplicar la t&eacute;cnica comentada al  principio. Para este ejemplo, dejaremos el tablespace de UNDO en 1000 MB.</p>
<p class="parrafo">Primero  se debe crear un nuevo tablespace de UNDO:</p>
<div class="shell">
<p>CREATE UNDO  TABLESPACE &quot;UNDOTBS_TEMP&quot; DATAFILE  &#8216;/u02/oradata/jimydb/undotbs_temp.dbf&#8217; SIZE 1000M;</p>
</div>
<p class="parrafo">Luego  se debe establecer el nuevo tablespace como tablespace de UNDO&nbsp; predeterminado:</p>
<div class="shell">
<p>ALTER SYSTEM SET UNDO_TABLESPACE=&rsquo;UNDOTBS_TEMP&rsquo; scope=both;</p>
</div>
<p class="parrafo">Ahora  la base de datos cuenta con nuevo tablespace de UNDO y del tama&ntilde;o requerido,  luego, es posible eliminar el antiguo tablespace de UNDO</p>
<div class="shell">
<p>DROP TABLESPACE UNDOTBS1 INCLUDING CONTENTS AND DATAFILES;</p>
</div>
<p class="parrafo">Ejemplo:</p>
<div class="sql">
<p>17:38:35 SQL&gt; CREATE UNDO  TABLESPACE &quot;UNDOTBS_TEMP&quot; DATAFILE  &#8216;/u02/oradata/jimydb/undotbs_temp.dbf&#8217; SIZE 1000M;</p>
<p>Tablespace created.</p>
<p>17:39:05 SQL&gt; ALTER SYSTEM SET UNDO_TABLESPACE=&#8217;UNDOTBS_TEMP&#8217; SCOPE=BOTH;</p>
<p>System altered.</p>
<p>17:39:38 SQL&gt; DROP TABLESPACE UNDOTBS1 INCLUDING CONTENTS AND  DATAFILES;</p>
<p>Tablespace dropped.</p>
<p>17:39:46 SQL&gt;<br />
    17:39:48 SQL&gt; sho parameters undo</p>
<p>NAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  TYPE &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;VALUE<br />
    &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212; &#8212;&#8212;&#8212;&#8211;  &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
    _undo_autotune&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  boolean&nbsp;&nbsp;&nbsp;&nbsp; TRUE<br />
    undo_management&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  string&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AUTO<br />
    undo_retention&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; integer&nbsp;&nbsp;&nbsp;&nbsp; 3000<br />
    undo_tablespace&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; UNDOTBS_TEMP<br />
    17:40:50 SQL&gt;</p>
</div>
<p class="parrafo">&iexcl;Excelente!,  notar que se nombro el Nuevo tablespace como <strong>UNDOTBS_TEMP</strong> dado que se podr&iacute;a desear que el tablespace de UNDO  mantenga el mismo nombre del inicio, para eso habr&iacute;a que repetir los pasos  anteriores, ejemplo:</p>
<div class="sql">
<p>17:44:18 SQL&gt; CREATE UNDO TABLESPACE &quot;UNDOTBS1&quot; DATAFILE  &#8216;/u02/oradata/jimydb/undotbs01.dbf&#8217; SIZE 1000M;</p>
<p>Tablespace created.</p>
<p>17:44:47 SQL&gt; ALTER SYSTEM SET UNDO_TABLESPACE=&#8217;UNDOTBS1&#8242; SCOPE=BOTH;</p>
<p>System altered.</p>
<p>17:45:16 SQL&gt; DROP TABLESPACE UNDOTBS_TEMP INCLUDING CONTENTS AND  DATAFILES;</p>
<p>Tablespace dropped.</p>
<p>17:45:22 SQL&gt; sho parameters undo</p>
<p>NAME&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  TYPE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; VALUE<br />
    &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212; &#8212;&#8212;&#8212;&#8211; &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
    _undo_autotune&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  boolean&nbsp;&nbsp;&nbsp;&nbsp; TRUE<br />
    undo_management&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  string&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; AUTO<br />
    undo_retention&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; integer&nbsp;&nbsp;&nbsp;&nbsp; 3000<br />
    undo_tablespace&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; string&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; UNDOTBS1<br />
    17:45:29 SQL&gt;</p>
</div>
<p class="parrafo">&iexcl;Listo!,  ahora est&aacute; la base de datos igual que antes y el tablespace de UNDO sigue  siendo el mismo pero con un tama&ntilde;o reducido.</p>
<p class="parrafo">Tal vez genere errores al intentar eliminar el tablespace antiguo (en el  primer ejemplo), esto se debe a que existen segmentos activos, para ello es  necesario identificar los segmentos que no est&aacute;n OFFLINE:</p>
<div class="sql">
<span ><br />
<span style="color: blue; ">SELECT</span>&nbsp;<span style="color: maroon; ">segment_name</span><span style="color: silver; ">,</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: maroon; ">tablespace_name</span><span style="color: silver; ">,</span><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="color: maroon; ">status</span><br />
<span style="color: blue; ">FROM</span>&nbsp;&nbsp;&nbsp;<span style="color: maroon; ">dba_rollback_segs</span><br />
<span style="color: blue; ">WHERE</span>&nbsp;&nbsp;<span style="color: maroon; ">tablespace_name</span>&nbsp;<span style="color: silver; ">=</span>&nbsp;<span style="color: red; ">&#8216;UNDOTBS1&#8242;</span></span></div>
<p class="parrafo">El resultado es:</p>
<div align="center"><img src="http://www.xgodoy.com/wordpress/wp-content/uploads/2009/06/22_undo_tunning_monitoreo.jpg" width="433" height="215" title="UNDO Monitoreo, Mantenimiento y Tunning. 10gR2" alt="22 undo tunning monitoreo UNDO Monitoreo, Mantenimiento y Tunning. 10gR2" /></div>
<p class="parrafo">Todos los segmentos que no est&aacute;n OFFLINE es necesario forzar su estado,  para ello se debe modificar el init.ora con el siguiente par&aacute;metro:</p>
<div class="shell">
<p>*._offline_rollback_segments=(&quot;_SYSSMU3$&quot;,&quot;_SYSSMU5$&quot;)</p>
</div>
<p class="parrafo">Se baja la base de datos y se sube con archivo init.ora, luego se borran  los segmentos conflictivos:</p>
<div class="sql">
<p>DROP ROLLBACK SEGMENT &lsquo;_SYSSMU3$&rsquo;;<br />
    DROP ROLLBACK SEGMENT &lsquo;_SYSSMU5$&rsquo;;</p>
</div>
<p class="parrafo">Se omite el error que se arrojar&aacute; y se procede a  borrar el tablespace:</p>
<div class="sql">
<p>DROP TABLESPACE UNDOTBS1 INCLUDING CONTENTS AND DATAFILES;</p>
</div>
<p class="parrafo">Espero sea de gran utilidad los temas tratados en  este documento.</p>
<p class="parrafo">La plataforma sobre la cual se realiz&oacute; y verifico lo  expuesto en documento es:</p>
<p class="parrafo"><strong>Versi&oacute;n  Oracle</strong>: 10.2.0.3<br />
    <strong>S.O.</strong>: RHEL 4U5</p>
<p class="parrafo"><a href="http://www.megaupload.com/?d=HNP3WYOW" target="_blank"><img src="http://www.xgodoy.com/wordpress/wp-content/uploads/2009/06/pdf.gif" width="16" height="18" title="UNDO Monitoreo, Mantenimiento y Tunning. 10gR2" alt="pdf UNDO Monitoreo, Mantenimiento y Tunning. 10gR2" />Descargar Articulo Completo Formato PDF </a></p>
<p class="subtitulo"><strong>Saludos!</strong><br />
  <strong>Jimy Godoy Maureira</strong></p>
<h4 class='related-posts-header'>Artículos relacionados</h4><ul class="related-posts-list"></ul>]]></content:encoded>
			<wfw:commentRss>http://www.xgodoy.com/wordpress/2009/06/01/undo-monitoreo-mantenimiento-y-tunning-10gr2/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>

