<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8473009914564604925</id><updated>2011-11-28T01:26:33.726+01:00</updated><category term='Printing'/><category term='Curso Administración Oracle'/><category term='Pro*C'/><category term='Java'/><category term='curiosidades'/><title type='text'>Programación  ++</title><subtitle type='html'>Este un un blog dedicado a la programción con la particularidad que me he decidido a compartir problemas concretos, que pueden ser dificiles de encontrar en manuales o ayudas y con el que todos nos tropezamos todos los días para desarrollo en Oracle, ProC, C++, Java....</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://programatte.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8473009914564604925/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://programatte.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>gustaf</name><uri>http://www.blogger.com/profile/10527661595489579274</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>15</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8473009914564604925.post-4451568764056065299</id><published>2008-11-29T11:47:00.005+01:00</published><updated>2008-11-29T11:55:48.771+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='curiosidades'/><title type='text'>Documentación interna de Codigo: Imprescindible.</title><content type='html'>Buenas,&lt;br /&gt;&lt;br /&gt;hacia tiempo que no actualizaba mi blog pero ya era hora!!&lt;br /&gt;&lt;br /&gt;En el dia dia de la dura programación y despues de saber que el titulo que te ha costado 5 años conseguir tiene el mismo valor que un cuadro del Ikea, solo que firmado por el Rey, te encuentras con esto en un codigo que estás modificando:&lt;br /&gt;&lt;br /&gt;&lt;p style="margin-right: 0.9pt; margin-left: 13.85pt; margin-bottom: 0.0001pt;"&gt;&lt;span style=";font-family:MS Shell Dlg;font-size:85%;color:black;"   &gt;&lt;span style=";font-family:&amp;quot;;font-size:10;color:black;"    lang="ES-AR"&gt;         /* Modificacion 20-Agosto-2004. Compruebo fecha de carga del nombre del&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-right: 0.9pt; margin-left: 13.85pt; margin-bottom: 0.0001pt;"&gt;&lt;span style=";font-family:MS Shell Dlg;font-size:85%;color:black;"   &gt;&lt;span style=";font-family:&amp;quot;;font-size:10;color:black;"    lang="ES-AR"&gt;         fichero contra el rango de  fechas de vigencia de TABLA_1.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-right: 0.9pt; margin-left: 13.85pt; margin-bottom: 0.0001pt;"&gt;&lt;span style=";font-family:MS Shell Dlg;font-size:85%;color:black;"   &gt;&lt;span style=";font-family:&amp;quot;;font-size:10;color:black;"    lang="ES-AR"&gt;         En caso de salirse del intervalo, hago como si el fichero no hubiera existido jamas.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-right: 0.9pt; margin-left: 13.85pt; margin-bottom: 0.0001pt;"&gt;&lt;span style=";font-family:MS Shell Dlg;font-size:85%;color:black;"   &gt;&lt;span style=";font-family:&amp;quot;;font-size:10;color:black;"    lang="ES-AR"&gt;         Nota del programata: Este programa es una mierda, por mussshos parches que pongamos,&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-right: 0.9pt; margin-left: 13.85pt; margin-bottom: 0.0001pt;"&gt;&lt;span style=";font-family:MS Shell Dlg;font-size:85%;color:black;"   &gt;&lt;span style=";font-family:&amp;quot;;font-size:10;color:black;"    lang="ES-AR"&gt;         la estructura no vale pa ná, pdta: este programa me tiene frito,&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-right: 0.9pt; margin-left: 13.85pt; margin-bottom: 0.0001pt;"&gt;&lt;span style=";font-family:MS Shell Dlg;font-size:85%;color:black;"   &gt;&lt;span style=";font-family:&amp;quot;;font-size:10;color:black;"    lang="ES-AR"&gt;         mañana seguram tenga que cambiar alguna otra cosa...&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-right: 0.9pt; margin-left: 13.85pt; margin-bottom: 0.0001pt;"&gt;&lt;span style=";font-family:MS Shell Dlg;font-size:85%;color:black;"   &gt;&lt;span style=";font-family:&amp;quot;;font-size:10;color:black;"    lang="ES-AR"&gt;         Bueno, ahora es junio 2005, un año despues llega la nueva version, a ver que pasa...&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-right: 0.9pt; margin-left: 13.85pt; margin-bottom: 0.0001pt;"&gt;&lt;span style=";font-family:MS Shell Dlg;font-size:85%;color:black;"   &gt;&lt;span style=";font-family:&amp;quot;;font-size:10;color:black;"    lang="ES-AR"&gt;         jeje, soy yo otra vez, pero en abril del 2006, veo que el codigo sigue igual de retorcido.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="margin-right: 0.9pt; margin-left: 13.85pt; margin-bottom: 0.0001pt;"&gt;&lt;span style=";font-family:MS Shell Dlg;font-size:85%;color:black;"   &gt;&lt;span style=";font-family:&amp;quot;;font-size:10;color:black;"    lang="ES-AR"&gt;         Este comentario no tiene fin alguno, pero no veas lo que relaja. */&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Con estas cosas  normal que Zapatero nos quite el titulo, bueno... y lo bien que no lo pasamos!!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8473009914564604925-4451568764056065299?l=programatte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programatte.blogspot.com/feeds/4451568764056065299/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8473009914564604925&amp;postID=4451568764056065299' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8473009914564604925/posts/default/4451568764056065299'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8473009914564604925/posts/default/4451568764056065299'/><link rel='alternate' type='text/html' href='http://programatte.blogspot.com/2008/11/documentacin-interna-de-codigo.html' title='Documentación interna de Codigo: Imprescindible.'/><author><name>gustaf</name><uri>http://www.blogger.com/profile/10527661595489579274</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8473009914564604925.post-4730423450461093448</id><published>2008-02-28T16:52:00.004+01:00</published><updated>2008-02-28T16:57:23.568+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>Java Struts: Capa Vista - Creacción de un ActionForms</title><content type='html'>&lt;p:colorscheme colors="#ffffff,#000000,#1c1c1c,#333399,#00e4a8,#ffcf01,#ff0000,#3333cc"&gt;  &lt;/p:colorscheme&gt;&lt;div shape="_x0000_s1026"&gt;  &lt;div class="O1" style=""&gt;&lt;span style=";font-family:Tahoma;font-size:133;"  &gt;&lt;span style="position: absolute; left: -3.48%; top: 0.74em;font-family:Wingdings;font-size:55;color:red;"   &gt;n&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:Tahoma;font-size:100%;"  &gt;&lt;span style="font-size:130%;"&gt;Pasos para la creación de un ActionForms:&lt;/span&gt; &lt;/span&gt;&lt;/div&gt;  &lt;div class="O2"&gt;&lt;ul&gt;&lt;li&gt;&lt;span style=";font-family:Tahoma;font-size:100%;"  &gt;&lt;span style="color: rgb(51, 51, 204); position: absolute; left: -2.6%; top: 0.91em;font-family:Wingdings;" &gt;n&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:Tahoma;"&gt;La clase ActionForms es Abstracta -&gt; Creación de una &lt;/span&gt;&lt;span style="font-family:Tahoma;"&gt;subclase para obtener los datos del formulario. &lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;  &lt;div class="O2"&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:Tahoma;"&gt;&lt;span style="color: rgb(51, 51, 204); position: absolute; left: -2.39%; top: 0.91em;font-family:Wingdings;" &gt;n&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Tahoma;"&gt;Dentro de la subclase&lt;span style=""&gt;  &lt;/span&gt;se debe definir un atributo por cada &lt;/span&gt;&lt;span style="font-family:Tahoma;"&gt;campo que se desea capturar del formulario HTML. &lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;  &lt;div class="O2"&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:Tahoma;"&gt;&lt;span style="color: rgb(51, 51, 204); position: absolute; left: -2.33%; top: 0.91em;font-family:Wingdings;" &gt;n&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Tahoma;"&gt;Al enviar el formulario se crea una instancia de LoginForm y &lt;/span&gt;&lt;span style="font-family:Tahoma;"&gt;se completa a partir de los parámetro de petición. El marco &lt;/span&gt;&lt;span style="font-family:Tahoma;"&gt;Strut lo realiza haciendo coincidr cada nombre de &lt;/span&gt;&lt;span style="font-family:Tahoma;"&gt;parámetro de petición con el nombre de atributo de la &lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:Tahoma;font-size:100%;"  &gt;subclase ActionForm:&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p:colorscheme colors="#ffffff,#000000,#1c1c1c,#333399,#00e4a8,#ffcf01,#ff0000,#3333cc"&gt;  &lt;/p:colorscheme&gt;&lt;div shape="_x0000_s1026" class="O"&gt;  &lt;span style=";font-family:Tahoma;font-size:9;"  lang="EN-GB" &gt;&lt;i&gt;&lt;/i&gt;&lt;/span&gt;&lt;span style=";font-family:Tahoma;font-size:9;"  &gt;&lt;i&gt;                       &lt;/i&gt;&lt;span style="font-style: italic;"&gt;  package com.tutorial.struts.forms;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;                         import javax.servlet.http.HttpServletRequest;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;                         import org.apache.struts.action.*;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;                         /**&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;                          * Bean de formulario para que el usuario se valide.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;                          **/&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;                         public class LoginForm extends ActionForm &lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;                         {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;                               private String password = null;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;                               private String email = null;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;                               public void setEmail(String email) &lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;                               {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;                                 this.email = email;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;                               }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;                             &lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;                               public String getEmail() &lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;                               {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;                                 return (this.email);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;                               }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;                             &lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;                               public String getPassword() &lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;                               {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;                                 return (this.password);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;                               }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;                             &lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;                               public void setPassword(String password) &lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;                               {&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;                                 this.password = password;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;                               }&lt;/span&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/span&gt;                                                            &lt;/div&gt;  &lt;/div&gt;    &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8473009914564604925-4730423450461093448?l=programatte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programatte.blogspot.com/feeds/4730423450461093448/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8473009914564604925&amp;postID=4730423450461093448' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8473009914564604925/posts/default/4730423450461093448'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8473009914564604925/posts/default/4730423450461093448'/><link rel='alternate' type='text/html' href='http://programatte.blogspot.com/2008/02/java-struts-capa-vista-creaccin-de-un.html' title='Java Struts: Capa Vista - Creacción de un ActionForms'/><author><name>gustaf</name><uri>http://www.blogger.com/profile/10527661595489579274</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8473009914564604925.post-4920131190331350162</id><published>2008-02-22T14:09:00.008+01:00</published><updated>2008-02-28T16:40:38.095+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Java'/><title type='text'>Java: Modelo Vista Controlador en Struts ( MVC )</title><content type='html'>&lt;div shape="_x0000_s1026" class="O" style=""&gt;  &lt;div style=""&gt;&lt;span style="color: rgb(6, 86, 65);font-family:Garamond;font-size:16;"  lang="EN-GB" &gt;&lt;b&gt;    Una aplicación basada en Struts, tiene un &lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(6, 86, 65);font-family:Garamond;font-size:16;"  lang="EN-GB" &gt;&lt;b&gt;componente básico llamado ActionServlet. Este es un &lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(6, 86, 65);font-family:Garamond;font-size:16;"  lang="EN-GB" &gt;&lt;b&gt;servlet, que tramita las peticiones de los clientes delegando a &lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(6, 86, 65);font-family:Garamond;font-size:16;"  lang="EN-GB" &gt;&lt;b&gt;un componente definido por el usuario &lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(6, 86, 65);font-family:Garamond;font-size:16;"  lang="EN-GB" &gt;&lt;b&gt;por cada petición.&lt;br /&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;  &lt;div style=""&gt;&lt;span style="color: rgb(6, 86, 65);font-family:Garamond;font-size:16;"  lang="EN-GB" &gt;&lt;b&gt;&lt;span style="width: 9.47%;"&gt; &lt;/span&gt;    Este Servlet es el punto central del framewor&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(6, 86, 65);font-family:Garamond;font-size:16;"  lang="EN-GB" &gt;&lt;b&gt;k, aunque no es necesario que todas la &lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(6, 86, 65);font-family:Garamond;font-size:16;"  lang="EN-GB" &gt;&lt;b&gt;actividad fluya a través de él. En una aplicación basada en Struts se pueden hacer peticiones a &lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(6, 86, 65);font-family:Garamond;font-size:16;"  lang="EN-GB" &gt;&lt;b&gt;una &lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(6, 86, 65);font-family:Garamond;font-size:16;"  lang="EN-GB" &gt;&lt;b&gt;JSP que contengan o no “tag libraries” de Struts, sin pasar por el Servlet ActionSer&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(6, 86, 65);font-family:Garamond;font-size:16;"  lang="EN-GB" &gt;&lt;b&gt;vlet. &lt;/b&gt;&lt;/span&gt;&lt;/div&gt;    &lt;/div&gt;&lt;br /&gt;&lt;p:colorscheme colors="#ffffff,#000000,#808080,#000000,#00cc99,#3333cc,#ccccff,#b2b2b2"&gt;  &lt;/p:colorscheme&gt;&lt;div shape="_x0000_s1026" class="O" style=""&gt;  &lt;div style=""&gt;&lt;span style="color: rgb(6, 86, 65);font-family:Garamond;font-size:16;"  lang="EN-GB" &gt;&lt;b&gt;    El ActionServlet (controlador) de Struts captura y encamina las peticiones HTTP que llegan a la &lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(6, 86, 65);font-family:Garamond;font-size:16;"  lang="EN-GB" &gt;&lt;b&gt;aplicación (t&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(6, 86, 65);font-family:Garamond;font-size:16;"  lang="EN-GB" &gt;&lt;b&gt;oma la decisión de a dónde enviar la petición HTTP), a otros componentes de aplicación. &lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(6, 86, 65);font-family:Garamond;font-size:16;"  lang="EN-GB" &gt;&lt;b&gt;Estos componente&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(6, 86, 65);font-family:Garamond;font-size:16;"  lang="EN-GB" &gt;&lt;b&gt;s pueden ser páginas JSP o instancias de una subclase de la clase &lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 51, 204);font-family:Garamond;font-size:16;"  lang="EN-GB" &gt;&lt;b&gt;&lt;i&gt;org.apache.struts.action.Action&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(6, 86, 65);font-family:Garamond;font-size:16;"  lang="EN-GB" &gt;&lt;b&gt; que el propio&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(6, 86, 65);font-family:Garamond;font-size:16;"  lang="EN-GB" &gt;&lt;b&gt; framework suministra.&lt;br /&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;p:colorscheme colors="#ffffff,#000000,#808080,#000000,#00cc99,#3333cc,#ccccff,#b2b2b2"&gt;  &lt;/p:colorscheme&gt;&lt;div shape="_x0000_s1026" class="O" style=""&gt;  &lt;div style=""&gt;&lt;span style="color: rgb(6, 86, 65);font-family:Garamond;font-size:16;"  lang="EN-GB" &gt;&lt;b&gt;    Cuando se inicia el Servlet ActionServlet, carga y analiza la información de&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(6, 86, 65);font-family:Garamond;font-size:16;"  lang="EN-GB" &gt;&lt;b&gt; un fichero que contiene la &lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(6, 86, 65);font-family:Garamond;font-size:16;"  lang="EN-GB" &gt;&lt;b&gt;configuración de la aplicación para aplicar las características de Struts. Entre otras cosas, el fichero de &lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(6, 86, 65);font-family:Garamond;font-size:16;"  lang="EN-GB" &gt;&lt;b&gt;configuración de&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(6, 86, 65);font-family:Garamond;font-size:16;"  lang="EN-GB" &gt;&lt;b&gt;fine las correspondencias que existen entre las peticiones HTTP que captura el &lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(6, 86, 65);font-family:Garamond;font-size:16;"  lang="EN-GB" &gt;&lt;b&gt;Servlet controlador y las acciones que van a tratar esa petición.&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;  &lt;div style=""&gt;&lt;span style="color: rgb(6, 86, 65);font-family:Garamond;font-size:16;"  lang="EN-GB" &gt;&lt;b&gt;Estas correspondencias son manipuladas como instancias de la clase&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(6, 86, 65);font-family:Garamond;font-size:16;"  lang="EN-GB" &gt;&lt;b&gt; &lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 51, 204);font-family:Garamond;font-size:16;"  lang="EN-GB" &gt;&lt;b&gt;&lt;i&gt;org.apache.st&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="color: rgb(51, 51, 204);font-family:Garamond;font-size:16;"  lang="EN-GB" &gt;&lt;b&gt;&lt;i&gt;ruts.action.ActionMapping&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;    &lt;/div&gt;&lt;br /&gt;&lt;/div&gt;    &lt;/div&gt;&lt;br /&gt;&lt;p&gt;&lt;em&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;/em&gt;&lt;/p&gt;&lt;em&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/em&gt;&lt;p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_axs5smCcx6c/R8bUeqnJ0GI/AAAAAAAAAAM/fA1CMyTPqNQ/s1600-h/Imagen1.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 389px; height: 212px;" src="http://bp3.blogger.com/_axs5smCcx6c/R8bUeqnJ0GI/AAAAAAAAAAM/fA1CMyTPqNQ/s320/Imagen1.png" alt="" id="BLOGGER_PHOTO_ID_5172054845381267554" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;em&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;/em&gt; &lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;em&gt;&lt;span style="font-size:85%;"&gt; &lt;/span&gt;&lt;/em&gt;&lt;/p&gt;&lt;em&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/em&gt;&lt;p align="left"&gt;&lt;em&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/em&gt;&lt;/p&gt;&lt;br /&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8473009914564604925-4920131190331350162?l=programatte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programatte.blogspot.com/feeds/4920131190331350162/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8473009914564604925&amp;postID=4920131190331350162' title='2 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8473009914564604925/posts/default/4920131190331350162'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8473009914564604925/posts/default/4920131190331350162'/><link rel='alternate' type='text/html' href='http://programatte.blogspot.com/2008/02/modelo-vista-controlador-en-struts-mvc.html' title='Java: Modelo Vista Controlador en Struts ( MVC )'/><author><name>gustaf</name><uri>http://www.blogger.com/profile/10527661595489579274</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_axs5smCcx6c/R8bUeqnJ0GI/AAAAAAAAAAM/fA1CMyTPqNQ/s72-c/Imagen1.png' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8473009914564604925.post-3411380031114829549</id><published>2008-02-09T18:34:00.000+01:00</published><updated>2008-02-09T18:46:22.442+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Curso Administración Oracle'/><title type='text'>Backup en Oracle.</title><content type='html'>El comando para invocar la  utilidad para exportación de datos se debe lanzar desde la línea de comandos del sistema operativo. El comando es exp.&lt;br /&gt;La sentencia es:&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="color: rgb(204, 153, 51);"&gt;exp &lt;usuario&gt; / &lt;password&gt; buffer= 1048576 full= yes file= export.dmp log= export.log&lt;/password&gt;&lt;/usuario&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Se exportará toda la información de un determinado usuario sobre un archivo de sistema&lt;br /&gt;operativo (export.dmp), el cual se creará en el directorio desde el cual se esté lanzando el&lt;br /&gt;comando. Para ello, se utiliza un buffer de 1 Mb.&lt;br /&gt;Todas las secuencias se almacenan en un archivo histórico con el fin de visualizar al final&lt;br /&gt;la operación, si todo ha terminado correctamente (export.log).&lt;br /&gt;Uno de los métodos más cómodos para lanzar la operación de exportación es el comando&lt;br /&gt;siguiente:&lt;br /&gt;&lt;div style="text-align: center;"&gt;&lt;span style="color: rgb(204, 153, 51);"&gt;exp &lt;usuario&gt; / &lt;password&gt; parafile= parametro.txt&lt;/password&gt;&lt;/usuario&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;En el archivo parámetro.txt sería donde introduciríamos los parámetros de exportación. Con&lt;br /&gt;este método, se podría realizar varios estándares de exportación de datos, creando varios&lt;br /&gt;archivos de parámetros según el caso.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Parámetros de Exportación&lt;/span&gt;&lt;br /&gt;Estos parámetros se pueden incluir en la misma línea de comandos del ejecutable de expor-&lt;br /&gt;tación o dentro de un archivo de parámetros determinado (PARFILE):&lt;br /&gt;&lt;div style="text-align: left;"&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;BUFFER:&lt;/span&gt; Especifica, en bytes, el tamaño del buffer asignado para los accesos a los registros de un objeto.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;COMPRESS:&lt;/span&gt; Este parámetro está indicado para el tratamiento de las cláusulas de       almacenamiento de los objetos. Con el valor de COMPRESS= YES, la exportación      calculará el espacio ocupado por cada uno de los objetos accedidos para que, con una importación posterior, todo este espacio ocupado por la información del objeto  se agrupe en una única extensión.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;CONSISTENT:&lt;/span&gt; Tiene la función de mantener la consistencia en la exportación de      datos, en el caso de que éstos puedan ser modificados mientras la exportación se está llevando a cabo. Debe tener el valor CONSISTENT= YES.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;CONSTRAINTS:&lt;/span&gt; Sirve para indicar el proceso que también exporte las constraints de      las tablas.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;DIRECT:&lt;/span&gt; Este parámetro indica el modo en el que se va a realizar la exportación de      datos, convencional o directa.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;FEEDBACK:&lt;/span&gt; Este parámetro sirve, básicamente, para realizar un seguimiento del      número de filas que se van exportando.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;FILE:&lt;/span&gt; Sirve para especificar el nombre del archivo binario donde la utilidad va a ir      almacenando los datos exportados. La extensión por defecto es DMP, aunque se  podría especificar otra extensión.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;FULL:&lt;/span&gt; cuando está en yes, sirve para exportar toda la información de una base de      datos.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;GRANTS:&lt;/span&gt; Cuando está en yes, se exportará los permisos de los objetos en relación.&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8473009914564604925-3411380031114829549?l=programatte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programatte.blogspot.com/feeds/3411380031114829549/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8473009914564604925&amp;postID=3411380031114829549' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8473009914564604925/posts/default/3411380031114829549'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8473009914564604925/posts/default/3411380031114829549'/><link rel='alternate' type='text/html' href='http://programatte.blogspot.com/2008/02/backup-en-oracle.html' title='Backup en Oracle.'/><author><name>gustaf</name><uri>http://www.blogger.com/profile/10527661595489579274</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8473009914564604925.post-3281120956711191129</id><published>2008-01-30T23:57:00.000+01:00</published><updated>2008-01-31T00:05:14.280+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Curso Administración Oracle'/><title type='text'>8. Procesamiento Paralelo en Oracle (III). Cómo se usa:</title><content type='html'>&lt;div style="text-align: justify;"&gt;En las sentencias CREATE/ALTER, puede indicarse el grado de paralelismo de sentencias DML con la cláusula PARALLEL (DEGREE d, INSTANCES i), siendo d e i números enteros positivos:&lt;br /&gt;&lt;/div&gt;&lt;ul style="color: rgb(204, 153, 51);"&gt;&lt;li&gt;DEGREE:el número de CPUs&lt;/li&gt;&lt;/ul&gt;&lt;ul style="color: rgb(204, 153, 51);"&gt;&lt;li&gt;INSTANCES: nodos de base de datos distribuida&lt;/li&gt;&lt;/ul&gt;&lt;ul style="color: rgb(204, 153, 51);"&gt;&lt;li&gt;El número ideal de procesos esclavos paralelos que trabajan sobre una sentencia  viene determinado por los siguientes factores:&lt;/li&gt;&lt;/ul&gt;&lt;ul style="color: rgb(204, 153, 51);"&gt;&lt;li&gt;Los valores DEGREE e INSTANCES, especificados en la cláusula PARALLEL o en el   hint&lt;/li&gt;&lt;/ul&gt;&lt;ul style="color: rgb(204, 153, 51);"&gt;&lt;li&gt;El número de CPUs de la máquina y de instancias&lt;/li&gt;&lt;/ul&gt;&lt;ul style="color: rgb(204, 153, 51);"&gt;&lt;li&gt; El número de particiones a ser accedidas&lt;/li&gt;&lt;/ul&gt;&lt;ul style="color: rgb(204, 153, 51);"&gt;&lt;li&gt; El mínimo valor del parámetro FREELISTS (listas de transacciones libres) en la cláusula STORAGE de entre todos los índices globales a ser actualizados.&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt;El número real de procesos está limitado por la disponibilidad de las instancias, y el mínimo se calcula a partir del parámetro PARALLEL_MIN_PERCENT. Las consultas se paralelizan cuando hay un hint en la sentencia SELECT o se ha especificado la cláusula PARALLEL para la tabla.&lt;br /&gt;&lt;br /&gt;Cuando se acceden a varias tablas, se elige de todas ellas el hint o valores PARALLEL que definan un mayor grado de paralelismo, como referencia para el grado total de paralelismo de la consulta. El uso del paralelismo es fácil. Sin embargo, existen ciertas restricciones en su uso.&lt;br /&gt;&lt;br /&gt;El soporte de las restricciones es limitado: si alguna se viola, la sentencia se ejecuta en serial &lt;span style="font-weight: bold;"&gt;(no da error)&lt;/span&gt;.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8473009914564604925-3281120956711191129?l=programatte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programatte.blogspot.com/feeds/3281120956711191129/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8473009914564604925&amp;postID=3281120956711191129' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8473009914564604925/posts/default/3281120956711191129'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8473009914564604925/posts/default/3281120956711191129'/><link rel='alternate' type='text/html' href='http://programatte.blogspot.com/2008/01/8-procesamiento-paralelo-en-oracle-cmo.html' title='8. Procesamiento Paralelo en Oracle (III). Cómo se usa:'/><author><name>gustaf</name><uri>http://www.blogger.com/profile/10527661595489579274</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8473009914564604925.post-404874290346503190</id><published>2008-01-29T00:19:00.000+01:00</published><updated>2008-01-29T09:29:43.246+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Curso Administración Oracle'/><title type='text'>7. Procesamiento Paralelo en Oracle (II). Operaciones que soportan Paralelismo</title><content type='html'>&lt;div style="text-align: justify;"&gt;&lt;span style="font-size:100%;"&gt;Existe un alto grado de afinidad entre el paralelismo y el particionamiento en Oracle, pues se &lt;/span&gt;usa el mapeo partición-dispositivo. Este es un nuevo beneficio de las tablas particionadas.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size:100%;"&gt;Consulta paralela: soporta paralelismo dentro de una partición, pero se puede usar también &lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-size:100%;"&gt;en tablas no particionadas.&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;Nuevas opciones, paralelizadas por partición (no hay paralelismo dentro de cada partición):&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: left; color: rgb(204, 153, 51);"&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;INSERT... SELECT... con carga directa sobre tablas particionadas.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;DELETE sobre tablas particionadas.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;UPDATE sobre tablas particionadas.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;INSERT... SELECT... con carga directa sobre tablas no particionadas.&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div style="text-align: justify;"&gt;&lt;span style="font-size:100%;"&gt;Las operaciones paralelas siempre tienen un proceso maestro que coordina los procesos &lt;/span&gt;&lt;span style="font-size:100%;"&gt;esclavos. El tipo de operación determina cuándo y cómo se paraleliza la operación. Existen &lt;/span&gt;&lt;span style="font-size:100%;"&gt;tres métodos de paralelización:&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;ul style="text-align: justify;"&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-weight: bold;"&gt;Por rangos de rowid&lt;/span&gt; (sólo consultas paralelas): Se aplica a consultas de tablas particionadasy no particionadas. Proporciona paralelismo dentro de una partición: variosprocesos esclavos pueden estar accediendo a una partición&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul style="text-align: justify;"&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-weight: bold;"&gt;Por procesos esclavos&lt;/span&gt; (INSERT en tablas no particionadas): Se aplica sólo enROWID, las filas se distribuyen entre los procesos paralelos que insertan en sendos segmentos temporales. Posteriormente, se asigna a cada fila de los segmentos temporales un rowid, y se mueven a la tabla destino tras la HWM. Ejemplo:&lt;br /&gt;INSERT...SELECT... sobre tablas no particionadas. Como las nuevas filas no tienen&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: center;"&gt;&lt;span style="color: rgb(204, 153, 51);font-size:100%;" &gt;                                   &lt;span style="font-style: italic;"&gt;INSERT /*+PARALLEL(TABLA1,3)*/ INTO TABLA2 SELECT * FROM TABLA1;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;ul style="text-align: justify;"&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;&lt;span style="font-weight: bold;"&gt;Por partición (sólo tablas particionadas)&lt;/span&gt;: No hay paralelismo dentro de una partición para operaciones DML. Un proceso esclavo puede ser asignado a más de una partición para compartir recursos. Ejemplo, suponiendo que la tabla “pedido” está particionada:&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: justify;"&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-style: italic; color: rgb(204, 153, 51);font-size:100%;" &gt;               UPDATE /*+PARALLEL(PEDIDO,3)*/ PEDIDO SET PENDIENTE = ʼFʼ;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:100%;"&gt;Por defecto, el paralelismo está desactivado, pudiéndose hacer &lt;span style="font-weight: bold;"&gt;sólo consultas paralelas.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;La sentencia ALTER SESSION ENABLE PARALLEL DML, que permite la ejecución paralela &lt;/span&gt;&lt;span style="font-size:100%;"&gt;de DML ha de ser la primera de la transacción.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;Cada operación PDML ha de terminar con COMMIT o ROLLBACK (si no, error). En una transacción, tras una DML en serie (salvo SELECT), se ignoran los hints o cláusulas paralelas, y se continúa en serial.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;El nuevo atributo de V$SESSION, PMDL_ENABLED, permite consultar si una sesión tiene &lt;/span&gt;&lt;span style="font-size:100%;"&gt;habilitada el PDML. V$PQ_SESSTAT da información de las sentencias PDML.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8473009914564604925-404874290346503190?l=programatte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programatte.blogspot.com/feeds/404874290346503190/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8473009914564604925&amp;postID=404874290346503190' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8473009914564604925/posts/default/404874290346503190'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8473009914564604925/posts/default/404874290346503190'/><link rel='alternate' type='text/html' href='http://programatte.blogspot.com/2008/01/7-procesamiento-paralelo-en-oracle-ii.html' title='7. Procesamiento Paralelo en Oracle (II). Operaciones que soportan Paralelismo'/><author><name>gustaf</name><uri>http://www.blogger.com/profile/10527661595489579274</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8473009914564604925.post-103867618188084702</id><published>2008-01-20T21:40:00.000+01:00</published><updated>2008-01-21T12:48:23.182+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Curso Administración Oracle'/><title type='text'>6. Procesamiento paralelo en Oracle.(I)</title><content type='html'>&lt;span style="font-size:100%;"&gt;Las operaciones DML paralelas aceleran el acceso a grandes tablas, cuando se modifican al menos un 1% de las filas.&lt;br /&gt;Son útiles en entornos &lt;a href="http://www.orafaq.com/wiki/DSS"&gt;DSS&lt;/a&gt; o Datawarehouse, y en ciertas operaciones &lt;a href="http://es.wikipedia.org/wiki/OLTP"&gt;OLTP&lt;/a&gt; (&lt;b&gt;O&lt;/b&gt;n&lt;b&gt;L&lt;/b&gt;ine &lt;b&gt;T&lt;/b&gt;ransaction &lt;b&gt;P&lt;/b&gt;rocessing).&lt;br /&gt;Muchas operaciones paralelas requieren tablas e índices particionados, excepto INSERT... SELECT...&lt;br /&gt;La principal ventaja es el rendimiento: el paralelismo puede acelerar la velocidad de proceso de transacciones DML.&lt;br /&gt;&lt;br /&gt;Por ejemplo, si en una tabla particionada en 3 particiones se ejecuta una sentencia del tipo&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: center;"&gt;&lt;span style="font-style: italic; color: rgb(204, 153, 51);font-size:100%;" &gt;UPDATE PEDIDO SET PENDIENTE = 'F'; &lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;La modificación se aplica a todas las filas que cumplen dicha condición, las cuales hay que buscar en toda la tabla (suponiendo que no existe un índice por el atributo "pendiente").&lt;br /&gt;&lt;br /&gt;Para mejorar el rendimiento, es posible usar directivas de paralelismo en la misma sentencia SQL:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div style="text-align: center; color: rgb(204, 153, 51);"&gt;                      &lt;span style="font-style: italic; color: rgb(204, 153, 51);font-size:100%;" &gt;UPDATE /*+PARALLEL(PEDIDO,3)*/ PEDIDO SET PENDIENTE = 'F'; &lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;En este caso, la modificación se realiza en paralelo en las tres particiones, reduciendo el tiempo de procesamiento a la tercera parte aproximadamente.&lt;br /&gt;&lt;br /&gt;Con Parallel DML se ejecuta la sentencia como una simple transacción sobre una única sesión: El control de la atomicidad de la tranascción es máximo (commit/rollback único).&lt;br /&gt;Otros beneficios que obtendremos con el procesamiento paralelo sera:&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;         No es necesario tener multiples sesiones que ejecuten operaciones sobre los mismos datos.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;         Dividir el trabajo por rangos rangos conocidos de de rowid o por claves.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:100%;"&gt;         Coordinar de forma manual el trabajo en paralelo o multiples instancias.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8473009914564604925-103867618188084702?l=programatte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programatte.blogspot.com/feeds/103867618188084702/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8473009914564604925&amp;postID=103867618188084702' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8473009914564604925/posts/default/103867618188084702'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8473009914564604925/posts/default/103867618188084702'/><link rel='alternate' type='text/html' href='http://programatte.blogspot.com/2008/01/6-procesamiento-paralelo-en-oraclei.html' title='6. Procesamiento paralelo en Oracle.(I)'/><author><name>gustaf</name><uri>http://www.blogger.com/profile/10527661595489579274</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8473009914564604925.post-3822345196045768526</id><published>2008-01-11T20:46:00.000+01:00</published><updated>2008-01-12T13:58:46.809+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Curso Administración Oracle'/><title type='text'>5. Accede de modo eficiente a los datos en Oracle</title><content type='html'>&lt;p&gt;El plan de ejecución está constituido por las decisiones que el optimizador toma para acceder a los datos, y depende de la meta que tenga éste definida (all_rows, first_rows). Cuando se detecte que una sentencia SQL accede de manera ineficiente a los datos, es necesario corregirla. El 90% del ajuste de las sentencias SQL en nuestras aplicaciones se consigue con: &lt;/p&gt;&lt;table class="lista" width="616" align="center" border="0"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td valign="top" width="16"&gt;&lt;ul&gt;&lt;li&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;td width="588"&gt;&lt;div align="justify"&gt;&lt;span style="font-size:85%;"&gt;Evitar sentencias ineficientes como: de acceso en árbol &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-size:85%;"&gt;(CONNECT BY, START WITH), &lt;/span&gt;&lt;span style="font-size:85%;"&gt;de agrupaciones con HAVING, &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-size:85%;"&gt;o la cláusula DISTINCT.&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top"&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;td&gt;&lt;div align="justify"&gt;&lt;span style="font-size:85%;"&gt;Evitar consultas basadas en vistas complejas, &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-size:85%;"&gt;que pueden penalizar su eficiencia inadvertidamente.&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top"&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;td&gt;&lt;div align="justify"&gt;&lt;span style="font-size:85%;"&gt;Evitar escaneos completos (full-table scan) de tablas grandes,&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-size:85%;"&gt;añadiendo índices, &lt;/span&gt;&lt;span style="font-size:85%;"&gt;y obligando al optimizador a usarlo mediante hints.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-size:85%;"&gt;Verificar el uso óptimo de los índices.&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top"&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;td&gt;&lt;div align="justify"&gt;&lt;span style="font-size:85%;"&gt;Cachear en el keep buffer pool tablas pequeñas a las que se acceda &lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-size:85%;"&gt;frecuentemente a toda ella.&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td valign="top"&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/td&gt;&lt;td&gt;&lt;div align="justify"&gt;&lt;span style="font-size:85%;"&gt;Evitar concatenaciones con tablas que no requieren datos.&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-size:85%;"&gt;Verificar el uso óptimo de las técnicas de join (nested loop,&lt;/span&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;span style="font-size:85%;"&gt;hash join, sort-merge join).&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;El camino que el optimizador elige para acceder a los datos tiene gran impacto en la eficiencia de la sentencia SQL. Por ejemplo, si el optimizador tiene como meta el mejor rendimiento total (all_rows) es probable que elija el recorrido de la tabla completa (full-table scan), en vez de un acceso por índice (index scan), y preferirá una concatenación del tipo sort-merge join (que da el resultado completo antes) a una nested loop (que puede devolver la primera fila antes).&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8473009914564604925-3822345196045768526?l=programatte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programatte.blogspot.com/feeds/3822345196045768526/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8473009914564604925&amp;postID=3822345196045768526' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8473009914564604925/posts/default/3822345196045768526'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8473009914564604925/posts/default/3822345196045768526'/><link rel='alternate' type='text/html' href='http://programatte.blogspot.com/2008/01/5-accede-de-modo-eficiente-los-datos-en.html' title='5. Accede de modo eficiente a los datos en Oracle'/><author><name>gustaf</name><uri>http://www.blogger.com/profile/10527661595489579274</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8473009914564604925.post-4503355729168449600</id><published>2007-12-28T12:45:00.001+01:00</published><updated>2007-12-28T13:19:17.547+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Curso Administración Oracle'/><title type='text'>4. El Optimizador de Oracle</title><content type='html'>&lt;p class="MsoNormal"&gt;&lt;span style="font-size:85%;"&gt;Oracle dispone de un elemento, llamado optimizador, que planifica la ejecución de las consultas a los datos. Es el elemento clave para que las consultas sean eficientes. &lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:85%;"&gt;Puede funcionar de dos maneras:&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt; &lt;/div&gt;&lt;ul style="color: rgb(204, 102, 0); text-align: justify;"&gt;&lt;li&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-weight: bold;" class="negrita1"&gt;&lt;span style="font-family:Verdana;"&gt;Basado en reglas&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Verdana;"&gt;&lt;span style="font-weight: bold;"&gt;.&lt;/span&gt; En este caso, el proceso   servidor elige el camino a los datos, examinando &lt;st1:personname productid="la SELECT" st="on"&gt;la SELECT&lt;/st1:personname&gt;, de acuerdo a un ranking definido mediante unas reglas internas. No se recomienda su uso, pues el plan de ejecución de la sentencia SQL no tiene en cuenta la distribución de los datos entre los bloques, y es habitual, por ejemplo, que se usen índices que están disponibles, pero que no devuelven la mayoría de las filas, ralentizando así las consultas. El diseñador del SQL ha de tener en cuenta este hecho y desactivar índices explícitamente o colocar las tablas en el orden adecuado en la cláusula &lt;span class="negrita1"&gt;WHERE&lt;/span&gt;, dependiendo   de la distribución de los datos.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-weight: bold;" class="negrita1"&gt;&lt;span style="font-family:Verdana;"&gt;Basado en coste&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Verdana;"&gt;&lt;span style="font-weight: bold;"&gt;.&lt;/span&gt; Es el modo recomendado. Consiste en que el optimizador examina cada sentencia e identifica todos los accesos posibles a los datos. Después, calcula el coste para cada camino y elige el de menor coste. El cálculo se hace basado en el número de lecturas lógicas y, para ello, se utilizan las estadísticas generadas para las tablas e índices.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt; &lt;span style="font-size:85%;"&gt;&lt;span style=";font-family:Verdana;" &gt;El parámetro que permite seleccionar el modo es &lt;b style=""&gt;OPTIMIZER_MODE. &lt;/b&gt;El valor CHOOSE es el defecto (coste). Otros valores son:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul style="color: rgb(204, 102, 0);"&gt;&lt;li&gt;&lt;span style="font-weight: bold;font-size:78%;" class="negrita1" &gt;&lt;span style="font-family:Verdana;"&gt;ALL_ROWS&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:Verdana;font-size:78%;"  &gt; tiene en cuenta en tiempo de respuesta total.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;font-size:78%;" class="negrita1" &gt;&lt;span style="font-family:Verdana;"&gt;RULE&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:Verdana;font-size:78%;"  &gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;es para que funcione en modo regla.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold; color: rgb(204, 102, 0);font-size:78%;" class="negrita1" &gt;&lt;span style="font-family:Verdana;"&gt;FIRST_ROWS&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(204, 102, 0);font-size:78%;" class="negrita1" &gt;&lt;span style="font-weight: normal;font-family:Verdana;" &gt; calcula los costes, minimizando el tiempo de respuesta inmediato.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div align="center"&gt;&lt;div style="text-align: justify;"&gt;&lt;/div&gt;&lt;p style="text-align: justify;"&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;Las   estadísticas que usa el optimizador basado en costes se recopilan en &lt;span class="cursiva1"&gt;dba_tables, dba_indexes, dba_tab_cols, etc.&lt;/span&gt;, mediante   los comandos &lt;span class="negrita1"&gt;ANALYZE TABLE/INDEX&lt;/span&gt; o con el   procedimiento almacenado &lt;span class="cursiva1"&gt;dbms_stats.gather_schema_stats&lt;/span&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: justify;"&gt;   &lt;span style=";font-family:Verdana;font-size:85%;"  &gt;Otros   parámetros que afectan al optimizador:&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;  &lt;p class="MsoNormal" style="margin-bottom: 12pt; text-align: justify;"&gt;&lt;span style="font-size:78%;"&gt;&lt;span style=";font-family:Verdana;font-size:9;"  &gt;&lt;o:p&gt; &lt;span&gt;&lt;span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;        &lt;ul style="color: rgb(204, 102, 0); text-align: justify;"&gt;&lt;li&gt;&lt;span class="negrita1"  style="font-size:78%;"&gt;&lt;span style="font-family:Verdana;"&gt;&lt;span style="font-weight: bold;"&gt;DB_FILE_MULTIBLOCK_READ_COUNT:&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:Verdana;font-size:78%;"  &gt;Si tiene un valor alto, el optimizador basado en costes reconoce que las lecturas multibloque son más baratas en coste que las lecturas secuenciales, tendiendo a realizar full-scan sobre las tablas.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;font-size:78%;" class="negrita1" &gt;&lt;span style="font-family:Verdana;"&gt;PARALLEL_AUTOMATIC_TUNING:&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:Verdana;font-size:78%;"  &gt; Si tiene el valor ON, paraleliza los full-scan.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;font-size:78%;" class="negrita1" &gt;&lt;span style="font-family:Verdana;"&gt;SORT_AREA_SIZE:&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:Verdana;font-size:78%;"  &gt; Si tiene un valor alto, es más probable que el optimizador decida realizar una ordenación del conjunto resultado, en lugar de un acceso por índice.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;font-size:78%;" class="negrita1" &gt;&lt;span style="font-family:Verdana;"&gt;HASH_AREA_SIZE:&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:Verdana;font-size:78%;"  &gt; Si tiene valor, el optimizador es más propenso a realizar hash-joins en vez de nested-loop o sort-merge.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p class="MsoNormal" style="text-align: justify;"&gt;&lt;span style="font-size:78%;"&gt;&lt;span style=";font-family:Verdana;font-size:9;"  &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8473009914564604925-4503355729168449600?l=programatte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programatte.blogspot.com/feeds/4503355729168449600/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8473009914564604925&amp;postID=4503355729168449600' title='3 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8473009914564604925/posts/default/4503355729168449600'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8473009914564604925/posts/default/4503355729168449600'/><link rel='alternate' type='text/html' href='http://programatte.blogspot.com/2007/12/4-el-optimizador-de-oracle.html' title='4. El Optimizador de Oracle'/><author><name>gustaf</name><uri>http://www.blogger.com/profile/10527661595489579274</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8473009914564604925.post-8055164931216405137</id><published>2007-12-19T11:26:00.000+01:00</published><updated>2007-12-19T12:00:00.721+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Curso Administración Oracle'/><title type='text'>3. GESTIÓN DE ESPACIO EN ORACLE. Creación de Tablespace</title><content type='html'>&lt;span style="font-size:85%;"&gt;El primer tablespace es el SYSTEM. Este tablespace debe estar disponible  siempre durante el funcionamiento normal de la BD porque contiene el diccionario  de datos. Después de la creación de la BD, se recomienda la creación de otros  espacios de tablas para que los datos de los usuarios puedan ser separados de  los del diccionario de datos. Incluso, si varias aplicaciones se van a ejecutar  sobre la misma BD, es recomendable que sus datos estén separados.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;Para crear un tablespace se puede utilizar el comando create tablespace:&lt;/span&gt; &lt;table class="codigonormal" align="center" border="0" height="45"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td&gt;&lt;span style="font-size:85%;"&gt;SVRMGR&gt; create tablespace nombre_tablespace&lt;br /&gt;2&gt; datafile  'nombre_fichero' size 50M online;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;&lt;span style="font-size:85%;"&gt;En el &lt;/span&gt;&lt;span style="font-weight: bold;font-size:85%;" class="negrita" &gt;ejemplo&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;anterior se ha creado un tablespace  de 50 Mb. de tamaño. Cada espacio de tabla tiene un conjunto de parámetros de  almacenamiento que controla su crecimiento: &lt;/span&gt;&lt;/p&gt; &lt;table style="width: 669px; height: 274px;" class="lista" align="center" border="0"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign="top" width="10"&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt; &lt;td width="471"&gt;&lt;span class="negrita"  style="font-size:85%;"&gt;&lt;span style="font-weight: bold;"&gt;initial&lt;/span&gt;:&lt;/span&gt;&lt;span style="font-size:85%;"&gt; tamaño de la extensión inicial  (10k). &lt;/span&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top"&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt; &lt;td&gt;&lt;span class="negrita"  style="font-size:85%;"&gt;&lt;span style="font-weight: bold;"&gt;next&lt;/span&gt;:&lt;/span&gt;&lt;span style="font-size:85%;"&gt; tamaño de la siguiente extensión a asignar  (10k). &lt;/span&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top"&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt; &lt;td&gt;&lt;span class="negrita"  style="font-size:85%;"&gt;&lt;span style="font-weight: bold;"&gt;minextents&lt;/span&gt;: &lt;/span&gt;&lt;span style="font-size:85%;"&gt;número de extensiones asignadas en el  momento de la creación del tablespace (1). &lt;/span&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top"&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt; &lt;td&gt;&lt;span class="negrita"  style="font-size:85%;"&gt;&lt;span style="font-weight: bold;"&gt;maxextents&lt;/span&gt;: &lt;/span&gt;&lt;span style="font-size:85%;"&gt;número máximo de extensiones.  &lt;/span&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top"&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt; &lt;td&gt;&lt;span class="negrita"  style="font-size:85%;"&gt;&lt;span style="font-weight: bold;"&gt;pctincrease&lt;/span&gt;:&lt;/span&gt;&lt;span style="font-size:85%;"&gt; Porcentaje en el que crecerá la  siguiente extensión antes de que se asigne, en relación con la última extensión  utilizada. &lt;/span&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top"&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt; &lt;td&gt;&lt;span class="negrita"  style="font-size:85%;"&gt;&lt;span style="font-weight: bold;"&gt;optimal&lt;/span&gt;:&lt;/span&gt;&lt;span style="font-size:85%;"&gt; Tamaño óptimo declarado para este  tablespace. &lt;/span&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top"&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt; &lt;td&gt;&lt;span class="negrita"  style="font-size:85%;"&gt;&lt;span style="font-weight: bold;"&gt;pctused&lt;/span&gt;:&lt;/span&gt;&lt;span style="font-size:85%;"&gt; porcentaje de utilización del bloque por  debajo del cual Oracle considera que un bloque puede ser utilizado para insertar  filas nuevas en él.&lt;/span&gt; &lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p&gt; &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8473009914564604925-8055164931216405137?l=programatte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programatte.blogspot.com/feeds/8055164931216405137/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8473009914564604925&amp;postID=8055164931216405137' title='5 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8473009914564604925/posts/default/8055164931216405137'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8473009914564604925/posts/default/8055164931216405137'/><link rel='alternate' type='text/html' href='http://programatte.blogspot.com/2007/12/3-gestin-de-espacio-en-oracle-creacin.html' title='3. GESTIÓN DE ESPACIO EN ORACLE. Creación de Tablespace'/><author><name>gustaf</name><uri>http://www.blogger.com/profile/10527661595489579274</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8473009914564604925.post-2169450781329245028</id><published>2007-11-28T10:49:00.000+01:00</published><updated>2007-11-28T11:10:41.200+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Curso Administración Oracle'/><title type='text'></title><content type='html'>&lt;table class="MsoNormalTable" style="" border="0" cellpadding="0"&gt;  &lt;tbody&gt;&lt;tr style=""&gt;   &lt;td style="padding: 0.75pt;" valign="top"&gt;   &lt;table class="MsoNormalTable" style="background: rgb(231, 146, 116) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" border="0" cellpadding="0"&gt;    &lt;tbody&gt;&lt;tr style="height: 12.25pt;"&gt;     &lt;td style="padding: 0.75pt 6.8pt; height: 12.25pt;"&gt;     &lt;p class="MsoNormal" style="text-align: center;" align="center"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style="letter-spacing: -0.7pt;font-family:Arial;color:white;"  &gt;CREACIÓN     DE USUARIOS  EN ORACLE&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;     &lt;/td&gt;    &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;      &lt;p style="text-align: justify;"&gt;&lt;span style=";font-family:Verdana;font-size:100%;"  &gt;El   objetivo de la creación de usuarios es establecer una cuenta segura y útil,   que tenga los privilegios adecuados y los valores por defecto apropiados. En   Oracle se puede especificar todo lo necesario para abrir una cuenta con el   comando &lt;span class="negrita1"&gt;CREATE USER&lt;/span&gt;.&lt;/span&gt;&lt;/p&gt;&lt;p style="text-align: justify;"&gt;&lt;span style="font-size:130%;"&gt;Los parámetros que se le pueden pasar son:&lt;/span&gt;&lt;span style=";font-family:Verdana;font-size:100%;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;p style="text-align: justify;"&gt;&lt;span style=";font-family:Verdana;font-size:100%;"  &gt;    &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;div align="center"&gt;   &lt;table class="MsoNormalTable" style="background: rgb(255, 242, 217) none repeat scroll 0% 50%; width: 282pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" border="0" cellpadding="0" width="376"&gt;    &lt;tbody&gt;&lt;tr style=""&gt;     &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color rgb(247, 223, 178) rgb(247, 223, 178) -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 2.7pt; background: rgb(247, 223, 178) none repeat scroll 0% 50%; width: 60.75pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" width="81"&gt;     &lt;p class="MsoNormal" style="text-align: center;" align="center"&gt;&lt;span style="font-size:78%;"&gt;&lt;b&gt;&lt;span style="text-transform: uppercase;font-family:Verdana;color:black;"  &gt;PARÁMETRO&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;     &lt;/td&gt;     &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color rgb(247, 223, 178) rgb(247, 223, 178) -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 2.7pt; background: rgb(247, 223, 178) none repeat scroll 0% 50%; width: 174pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" width="232"&gt;     &lt;p class="MsoNormal" style="text-align: center;" align="center"&gt;&lt;span style="font-size:78%;"&gt;&lt;b&gt;&lt;span style="text-transform: uppercase;font-family:Verdana;color:black;"  &gt;SIGNIFICADO&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;     &lt;/td&gt;    &lt;/tr&gt;    &lt;tr style=""&gt;     &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color rgb(247, 223, 178) rgb(247, 223, 178) -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 2.7pt;"&gt;     &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Verdana;font-size:78%;color:black;"   &gt;Username&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;     &lt;/td&gt;     &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color rgb(247, 223, 178) rgb(247, 223, 178) -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 2.7pt;"&gt;     &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Verdana;font-size:78%;color:black;"   &gt;Nombre del Usuario (Esquema).&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;     &lt;/td&gt;    &lt;/tr&gt;    &lt;tr style=""&gt;     &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color rgb(247, 223, 178) rgb(247, 223, 178) -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 2.7pt;"&gt;     &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Verdana;font-size:78%;color:black;"   &gt;Password&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;     &lt;/td&gt;     &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color rgb(247, 223, 178) rgb(247, 223, 178) -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 2.7pt;"&gt;     &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Verdana;font-size:78%;color:black;"   &gt;Palabra clave de la cuenta. Puede ser asociada directamente a     una cuenta del sistema operativo.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;     &lt;/td&gt;    &lt;/tr&gt;    &lt;tr style=""&gt;     &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color rgb(247, 223, 178) rgb(247, 223, 178) -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 2.7pt;"&gt;     &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Verdana;font-size:78%;color:black;"   &gt;Default&lt;br /&gt;Tablespace &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;     &lt;/td&gt;     &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color rgb(247, 223, 178) rgb(247, 223, 178) -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 2.7pt;"&gt;     &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Verdana;font-size:78%;color:black;"   &gt;Espacio de tablas por defecto en el que los objetos de este     usuario serán creados. Esto no da al usuario derecho de crear objetos.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;     &lt;/td&gt;    &lt;/tr&gt;    &lt;tr style=""&gt;     &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color rgb(247, 223, 178) rgb(247, 223, 178) -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 2.7pt;"&gt;     &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Verdana;font-size:78%;color:black;"   &gt;Temporary&lt;br /&gt;Tablespace &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;     &lt;/td&gt;     &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color rgb(247, 223, 178) rgb(247, 223, 178) -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 2.7pt;"&gt;     &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Verdana;font-size:78%;color:black;"   &gt;Es espacio de tablas en el que se almacenarán los segmentos     temporales de las ordenaciones.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;     &lt;/td&gt;    &lt;/tr&gt;    &lt;tr style=""&gt;     &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color rgb(247, 223, 178) rgb(247, 223, 178) -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 2.7pt;"&gt;     &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Verdana;font-size:78%;color:black;"   &gt;Quota&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;     &lt;/td&gt;     &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color rgb(247, 223, 178) rgb(247, 223, 178) -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 2.7pt;"&gt;     &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Verdana;font-size:78%;color:black;"   &gt;Espacio máximo que puede ocupar en un espacio de tablas.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;     &lt;/td&gt;    &lt;/tr&gt;    &lt;tr style=""&gt;     &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color rgb(247, 223, 178) rgb(247, 223, 178) -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 2.7pt;"&gt;     &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Verdana;font-size:78%;color:black;"   &gt;Profile&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;     &lt;/td&gt;     &lt;td style="border-style: none solid solid none; border-color: -moz-use-text-color rgb(247, 223, 178) rgb(247, 223, 178) -moz-use-text-color; border-width: medium 1pt 1pt medium; padding: 2.7pt;"&gt;     &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Verdana;font-size:78%;color:black;"   &gt;Asigna un perfil al usuario. Los perfiles se utilizan para restringir     el uso de recursos como el tiempo de CPU.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;     &lt;/td&gt;    &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;   &lt;/div&gt;   &lt;p style="text-align: justify;"&gt;Ejemplo de creación de usuario en Oracle:&lt;br /&gt;&lt;span style=";font-family:Verdana;font-size:100%;"  &gt;    &lt;/span&gt;&lt;/p&gt;&lt;p style="text-align: justify;"&gt;  &lt;/p&gt;&lt;div align="center"&gt;  &lt;table class="MsoNormalTable" style="background: rgb(231, 231, 231) none repeat scroll 0% 50%; width: 152.25pt; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" border="0" cellpadding="0" width="203"&gt;  &lt;tbody&gt;&lt;tr style=""&gt;   &lt;td style="padding: 2.05pt; width: 146.25pt;" width="195"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Verdana;font-size:85%;color:black;"   lang="EN-GB" &gt;SVRMGR&gt; create user mcp&lt;br /&gt; 2&gt; identified by zerep&lt;br /&gt; 3&gt; default tablespace users&lt;br /&gt; 4&gt; temporary tablespace temp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;  &lt;/div&gt;  &lt;p&gt;&lt;span style=";font-family:Verdana;font-size:8;"  &gt;&lt;span style="font-size:85%;"&gt;Si no se especifica un perfil, se aplica el &lt;/span&gt;&lt;span class="hotword1"  style="font-size:85%;"&gt;&lt;span onclick="MM_showHideLayers('perfil','','show')"&gt;perfil&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt; por defecto de &lt;st1:personname productid="la BD" st="on"&gt;la BD&lt;/st1:personname&gt;, que se llama DEFAULT, y tiene asignados todos los límites a UNLIMITED.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=";font-family:Verdana;font-size:8;"  &gt;&lt;span style="font-size:85%;"&gt;Si no se especifica una cuota, el usuario no puede crear objetos.&lt;/span&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;     &lt;p style="text-align: justify;"&gt;&lt;span style=";font-family:Verdana;font-size:100%;"  &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8473009914564604925-2169450781329245028?l=programatte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programatte.blogspot.com/feeds/2169450781329245028/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8473009914564604925&amp;postID=2169450781329245028' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8473009914564604925/posts/default/2169450781329245028'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8473009914564604925/posts/default/2169450781329245028'/><link rel='alternate' type='text/html' href='http://programatte.blogspot.com/2007/11/creacin-de-usuarios-en-oracle-el.html' title=''/><author><name>gustaf</name><uri>http://www.blogger.com/profile/10527661595489579274</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8473009914564604925.post-5966947105064388065</id><published>2007-11-22T00:38:00.000+01:00</published><updated>2007-11-22T00:47:52.633+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Curso Administración Oracle'/><title type='text'>Administración de la Base de Datos Oracle: Fichero INI.ORA</title><content type='html'>&lt;span style="font-size:85%;"&gt;Los parámetros que determinan el tamaño y composición de una instancia están almacenados&lt;br /&gt;en un fichero llamado init.ora.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt; AJUSTE DE PARÁMETROS. FICHERO INIT.ORA&lt;/span&gt;&lt;br /&gt;Este fichero es leído durante el arranque de la BD y puede ser modificado por el DBA. Cualquier&lt;br /&gt;modificación de este fichero no tiene efecto hasta la siguiente vez que se arranque&lt;br /&gt;la BD.&lt;br /&gt;&lt;span style="font-style: italic;"&gt;C:\oracle\admin\dbicops\pfile\init.ora&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; PARÁMETROS&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;db_name = “dbicops”&lt;br /&gt;db_files = 1024&lt;br /&gt;db_block_size = 8192&lt;br /&gt;control_files = (“C:\oracle\oradata\dbicops\control01.ctl”, “C:\oracle\oradata\dbicops\&lt;br /&gt;control02.ctl”, “C:\oracle\oradata\dbicops\control03.ctl”)&lt;br /&gt;db_block_buffers = 13498&lt;br /&gt;shared_pool_size = 36860928&lt;br /&gt;processes = 150&lt;br /&gt;log_buffer = 32768&lt;br /&gt;max_dump_file_size = 10240 # limit trace file size to 5M each&lt;br /&gt;background_dump_dest = C:\oracle\admin\dbicops\bdump&lt;br /&gt;user_dump_dest = C:\oracle\admin\dbicops\udump&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt; ESPECIFICACIÓN DE PARÁMETROS&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;DB_NAME: indica el identificador de la BD que en este caso es ‘prueba’. Debe tener como&lt;br /&gt;máximo 8 caracteres. Único parámetro obligatorio.&lt;br /&gt;CONTROL_FILES: Este parámetro contendrá el nombre de los ficheros de control y su ubicación,&lt;br /&gt;como, por ejemplo: /DISK1/control01.conç&lt;br /&gt;DB_BLOCK_SIZE: Tamaño del bloque de datos de Oracle. Por defecto: 2K o 4K. Una vez&lt;br /&gt;fijado no puede modificarse.&lt;br /&gt;DB_BLOCK_BUFFERS: Especifica el número de buffers de la caché en la SGA. Cuanto más&lt;br /&gt;grande, menos acceso a disco tendremos. Sin embargo, ocuparemos más memoria, y será&lt;br /&gt;necesario realizar más swapping. Compromiso de eficacia y rapidez.&lt;br /&gt;SHARED_POOL_SIZE: Tamaño en bytes del pool compartido. Por defecto: 3500000.&lt;br /&gt;LOG_BUFFER: Número de bytes asignados al buffer de redo log en la SGA.&lt;br /&gt;PROCESSES: Máximo número de procesos de SO que pueden acceder de forma concurrente.&lt;br /&gt;Mínimo: 1 por usuario + procesos de arrancados con cada instancia.&lt;br /&gt;DB_FILES: Número de ficheros que se podrán crear en una BD. Mín 1, máx depende del&lt;br /&gt;SO.&lt;br /&gt;LOG_FILES:Máximo número de ficheros de log.&lt;br /&gt;MAX_DUMP_FILE_SIZE: Máximo tamaño en bloques de SO de los ficheros de traza.&lt;br /&gt;BACKGROUND_DUMP_DEST: Ubicación de los ficheros de las trazas de los procesos.&lt;br /&gt;USER_DUMP_DEST: Ubicación de los ficheros de traza de los usuarios.&lt;br /&gt;CORE_DUMP_DEST: Ubicación de los ficheros de traza de los ficheros core.&lt;br /&gt;ROLLBACK_SEGMENTS: Nombres de los segmentos de rollback.&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8473009914564604925-5966947105064388065?l=programatte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programatte.blogspot.com/feeds/5966947105064388065/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8473009914564604925&amp;postID=5966947105064388065' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8473009914564604925/posts/default/5966947105064388065'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8473009914564604925/posts/default/5966947105064388065'/><link rel='alternate' type='text/html' href='http://programatte.blogspot.com/2007/11/administracin-de-la-base-de-datos.html' title='Administración de la Base de Datos Oracle: Fichero INI.ORA'/><author><name>gustaf</name><uri>http://www.blogger.com/profile/10527661595489579274</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8473009914564604925.post-5234980153565296486</id><published>2007-11-14T17:40:00.000+01:00</published><updated>2007-11-14T17:44:58.999+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Printing'/><title type='text'>Impresión directa con PCL</title><content type='html'>&lt;span style="font-size:85%;"&gt;Puede que alguna vez necesiteis hace  impresión directa sobre la impresora utilizando PCL, os paso una página con la secuencia de comandos que necesitas para dar formato a tu impresion:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://pcl.to/font_selection.html"&gt;&lt;span style="font-size:85%;"&gt;http://pcl.to/font_selection.html&lt;/span&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8473009914564604925-5234980153565296486?l=programatte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programatte.blogspot.com/feeds/5234980153565296486/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8473009914564604925&amp;postID=5234980153565296486' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8473009914564604925/posts/default/5234980153565296486'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8473009914564604925/posts/default/5234980153565296486'/><link rel='alternate' type='text/html' href='http://programatte.blogspot.com/2007/11/impresin-directa-con-pcl.html' title='Impresión directa con PCL'/><author><name>gustaf</name><uri>http://www.blogger.com/profile/10527661595489579274</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8473009914564604925.post-68743053167193062</id><published>2007-11-13T10:19:00.000+01:00</published><updated>2008-01-21T14:35:11.020+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Pro*C'/><title type='text'>Define un Host Array en estructura para Pro*C</title><content type='html'>&lt;span style="font-size:85%;"&gt;La forma mas eficiente de trabajar en Pro*C y realizar consultas en bloque es mediante Host Array. En los ejemplos de Oracle se muesta consultas en host array de uno o dos campos, pero lo habitual que consultar multiples campos accediento a varias tablas. La forma mas efeciente y comoda de consultar es agrupar cada una de los campos a consultar en una estructura, y definir un array de MAX_ELEMENTOS de dicha estructura.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;En nuestro ejemplo vamos a consultar los siguientes campos en nuestra query: Dessrv, fecha, numero_srv, estado.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;1.- Declaración de tamaños y estrctura:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;EXEC SQL BEGIN DECLARE SECTION;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;/* Definicion de tamaño de cada campo */&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;#define TAM_FECHA 10&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;#define TAM_DES_SERV 40&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;#define TAM_NUM 15&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;#define TAM_ESTADO 10&lt;br /&gt;#define MAX_ELEMENTOS 500&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;/* Definicion de tipo para cada campo de la estructura */&lt;br /&gt;typedef char TDesServ[TAM_DES_SERV + 1];&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;typedef char TFecha[TAM_FECHA + 1]; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;typedef char TNUM[TAM_IMSI +1]; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;typedef char TEstado[TAM_ESTADO +1]; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;/* Definición de tipo de cada campo de la estructura en Oracle */&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;EXEC SQL TYPE TDesServ IS STRING (TAM_DES_SERV + 1);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;EXEC SQL TYPE TFecha IS STRING (TAM_FECHA + 1); &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;EXEC SQL TYPE TNUM IS STRING (TAM_NUM +1); &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;EXEC SQL TYPE TEstado IS STRING (TAM_ESTADO +1); &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;br /&gt;/* ___ Estructura de datos ___ */&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;typedef struct TEstrcutura{ &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;TDesServr vDesServ; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;TFecha vFecha; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;TNUM vNUM; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;TEstado vEstado; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;}ESTRUCTURA;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;/* Estructura de indices para eviar error de oracle en campo nulo */&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;typedef struct TindEstructura{ &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;short indvDesServ; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;short indvFecha; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;short indvNUM; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;short indvEstado;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;}indESTRUCTURA;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;EXEC SQL END DECLARE SECTION;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;2.- Volcado de los datos sobre el host array:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;EXEC SQL BEGIN DECLARE SECTION; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;int iOraNumRegistros = MAX_ELEMENTOS;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;ESTRUCTURA ptOraRegist[MAX_ELEMENTOS]; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;indESTRUCTURA ptOraIndRegist[MAX_ELEMENTOS]; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;EXEC SQL END DECLARE SECTION;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;/* Inicalizacion de la estructura de orale */&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;memset((void *) ptOraRegist, 0, sizeof(ESTRUCTURA)*MAX_ELEMENTOS);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;memset((void *) ptOraIndRegist, 0, sizeof(indESTRUCTURA)*MAX_ELEMENTOS);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;br /&gt;/* Volcado de datos sobre el host array para MAX_ELEMENTOS */&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;EXEC SQL FOR :iOraNumRegistros &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;FETCH C_QUERY_INFO INTO :ptOraRegist:ptOraIndRegist;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;3.- Acceso a los elementos de array:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;Para acceder a cada uno de los elementos de array se accede a traves del indice del array:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;ptRegist[Cont].vDesServ&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;ptRegist[Cont].vNUM&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;Siendo Cont una varable con los valores comprendidos entre 0 y MAX_ELEMENTOS -1&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8473009914564604925-68743053167193062?l=programatte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programatte.blogspot.com/feeds/68743053167193062/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8473009914564604925&amp;postID=68743053167193062' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8473009914564604925/posts/default/68743053167193062'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8473009914564604925/posts/default/68743053167193062'/><link rel='alternate' type='text/html' href='http://programatte.blogspot.com/2007/11/define-un-hots-array-en-estructura-para.html' title='Define un Host Array en estructura para Pro*C'/><author><name>gustaf</name><uri>http://www.blogger.com/profile/10527661595489579274</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8473009914564604925.post-992088622697053145</id><published>2007-11-13T09:16:00.000+01:00</published><updated>2007-11-13T09:44:50.408+01:00</updated><title type='text'>Empezamos!</title><content type='html'>Hola a todos,&lt;br /&gt;&lt;br /&gt;Hoy me he decido a poner en marcha un blog dedicado a la programación y todo lo que pueda entrar en ella. Soy Ingeniero en Informática y llevo trabajando en este mundo hace unos 7 años, por fín me he decidido por compartir mis experiencias, problemas, ofuscaciones etec....&lt;br /&gt;&lt;br /&gt;Aunque todavía no he decidido muy bien el formato, guion etec.., pero lo que si que tengo claro es que compartiré mis experiencias y problemas de forma que pueda contribuir a que solventar problemas comunes o no tan comunes que te puede ahorar mucho tiempo en tu trabajo.&lt;br /&gt;&lt;br /&gt;Espero cumplir mi objetivo y que me ayudeis tambien a conseguirlo con vuestros comentarios.&lt;br /&gt;&lt;br /&gt;Gustavo.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8473009914564604925-992088622697053145?l=programatte.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://programatte.blogspot.com/feeds/992088622697053145/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8473009914564604925&amp;postID=992088622697053145' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8473009914564604925/posts/default/992088622697053145'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8473009914564604925/posts/default/992088622697053145'/><link rel='alternate' type='text/html' href='http://programatte.blogspot.com/2007/11/empezamos.html' title='Empezamos!'/><author><name>gustaf</name><uri>http://www.blogger.com/profile/10527661595489579274</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry></feed>
