<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Joan Ballester &#187; Bases de Datos</title>
	<atom:link href="http://joanballester.es/tag/bases-de-datos/feed" rel="self" type="application/rss+xml" />
	<link>http://joanballester.es</link>
	<description>Programación, Desarrollo Web, Software libre, GNU/Linux, Debian, Tecnología</description>
	<lastBuildDate>Fri, 18 May 2012 07:50:21 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Tablas en Oracle</title>
		<link>http://joanballester.es/programacion-desarrollo/tablas-en-oracle.html</link>
		<comments>http://joanballester.es/programacion-desarrollo/tablas-en-oracle.html#comments</comments>
		<pubDate>Tue, 28 Oct 2008 00:23:43 +0000</pubDate>
		<dc:creator>Joan Ballester</dc:creator>
				<category><![CDATA[Programación]]></category>
		<category><![CDATA[Bases de Datos]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[Tablas]]></category>

		<guid isPermaLink="false">http://www.joanballester.es/blog/?p=94</guid>
		<description><![CDATA[Un vistazo rápido a las tablas en Oracle. Las tablas son la unidad básica de almacenamiento en una base de datos en Oracle. Los datos son almacenados en filas (rows) y columnas (columns), y se define con: Nombre Conjunto de columnas (nombre y tipo (datatype)) Al crear una tabla, Oracle asigna un segmento de datos ...]]></description>
			<content:encoded><![CDATA[<p><strong>Un vistazo rápido a las tablas en <a href="http://www.joanballester.es/blog/tag/oracle" target="_self">Oracle</a>.</strong></p>
<p>Las tablas son la unidad básica de almacenamiento en una base de datos en <a href="http://www.joanballester.es/blog/tag/oracle" target="_self">Oracle</a>.</p>
<p>Los datos son almacenados en filas (rows) y columnas (columns), y se define con:</p>
<ul>
<li>Nombre</li>
<li>Conjunto de columnas (nombre y tipo (datatype))</li>
</ul>
<p>Al crear una tabla, <a href="http://www.joanballester.es/blog/tag/oracle" target="_self">Oracle </a>asigna un segmento de datos en el tablespace. Se puede controlar el espacio y el uso de ese segmento.</p>
<p><strong>Veamos los tipos de tablas en </strong><strong><a href="http://www.joanballester.es/blog/tag/oracle" target="_self">Oracle</a></strong><strong>:</strong></p>
<ul>
<li><strong>Regulares</strong>: Forma bastante común para almacenar los datos.
<ul>
<li>Tipo por defecto</li>
<li>Se tiene muy poco control sobre la distribución de las filas en su almacenamiento físico</li>
</ul>
</li>
<li><strong>Particionadas</strong>.</li>
<li><strong>Organizadas por índices</strong>.</li>
<li><strong>Agrupadas</strong> (clusterizadas).</li>
</ul>
<p><strong>Convenciones de nombres.</strong></p>
<ul>
<li>Nombre lo más descriptivo posible
<ul>
<li>Hasta 30 caracteres</li>
<li>Debe empezar por letra</li>
<li>Puede contener letras, números y caracteres especiales ( $ # y _ )</li>
</ul>
</li>
<li>Se puede documentar añadiendo comentarios</li>
</ul>
<p><strong>Operaciones:</strong></p>
<ul>
<li>Crear: CREATE TABLE nombre_tabla (nombre_columna TIPO, {nombre_columna TIPO});</li>
<li>Ejemplo: CREATE TABLE profesor (nombre VARCHAR(20), id INTEGER);</li>
<li>Opciones dentro de la creación:
<ul>
<li>TABLESPACE</li>
<li>STORAGE</li>
<li>PCTUSED / PCTFREE</li>
</ul>
</li>
</ul>
<p><strong>Cláusula Storage</strong>:</p>
<ul>
<li>Opciones:
<pre>STORAGE( INITIAL entero{K|M} NEXT entero{K|M}
{MINEXTENTS entero} {MAXEEXTENTS entero|UNLIMITED}
{PCTINCREASE %entero});</pre>
</li>
<li>Tamaño de los bloques:<br />
INITIAL, mínimo 2 bloques, máximo *, defecto 5 bloques<br />
NEXT, mínimo 1 bloque, máximo *</li>
</ul>
<p><strong>PCTUSED y PCTFREE</strong>. Controlan el espacio libre para inserciones y eliminaciones de filas en los bloques de un segmento.</p>
<p><strong>PCTFREE. </strong>Este parámetro se utiliza para modificar el comportamiento de <a href="http://www.joanballester.es/blog/tag/oracle" target="_self">Oracle</a> a la hora de insertar y modificar filas dentro de un bloque de datos o data block, se asigna a la hora de crear la tabla o índice, y también se puede modificar después alterando la tabla o índice.</p>
<p>Indica el porcentaje mínimo que se debe dejar libre para modificaciones de los datos de las filas que ya existen dentro del bloque.</p>
<ul>
<li>Valor por defecto 10</li>
<li>El valor es entre 0 y 99</li>
<li>En cualquier otro caso PCTFREE = 100*upd/(upd + ins)</li>
<li>Ejemplo: A una tabla le asignamos PCTFREE de 20, querrá decir que  se pueden insertar filas hasta que quede libre en dicho bloque solamente el 20%. Desde ese momento todas las filas nuevas que se creen se crearán en otros bloques. Ese 20% se utilizará para las modificaciones de las filas que ya están en el bloque.</li>
</ul>
<p><strong>PCTUSED.</strong> El concepto está ligado a PCTFREE. Imaginemos que se crea un segmento (tabla o índice) y se le asigna PCTFREE 20</p>
<p>¿Qué hacemos para aumentar el espacio libre de un bloque? O borramos filas o modificamos campos de las mismas disminuyendo el tamaño de los valores que están guardadas en ellas</p>
<p>¿Cuánto espacio libre tiene que haber para poder volver a insertar nuevas filas? Ese valor es el que nos da PCTUSED</p>
<p>Entonces, si a un bloque le hemos asignado un PCTUSED de 40 conseguimos que no se puedan insertar nuevos registros después de haberse llenado hasta dejar solamente el PCTINCREASE de espacio libre hasta que el espacio ocupado por las filas en dicho bloque no baje por debajo de 40. O sea, que el PCTUSED nos indica el límite mínimo por debajo del cual debe bajar el espacio ocupado dentro del bloque antes de volver a estar disponible para aceptar nuevas filas, nuevas inserciones.</p>
<p>Para consultar el valor tanto de pctfree como de pctused de cada segmento de tipo tabla o de tipo índice, podemos leer las vistas dba_tables y dba_indexes del usuario SYS.</p>
<pre>Select owner, table_name, pct_free, pct_used from dba_tables;
Select owner, index_name, pct_free from dba_indexes;</pre>
<p>Para modificar el valor de los parámetros de una tabla o de un índice se pueden utilizar las siguientes sentencias:</p>
<pre>Alter table nombre_de_tabla  pctfree nuevo_pct_free;
Alter table nombre_de_tabla pctused nuevo_pct_used;
Alter index nombre_de_indice pctfree nuevo_pct_free;</pre>
<ul>
<li>Valor por defecto 40</li>
<li>El valor es entre 1 y 99</li>
<li>PCTUSED = 100 &#8211; (PCTFREE + 100*upd/blocksize) + 100 ins/blocksize</li>
</ul>
<p>PCTUSED + PCTFREE &lt; 100 (deben ser menor de 100)<br />
<strong>upd</strong>: cantidad promedio en bytes, añadido en una actualización.<br />
<strong>ins</strong>: tamaño promedio de una fila al insertarse.</p>
<p>Después que un bloque se llena hasta el límite permitido por PCTFREE, <a href="http://www.joanballester.es/blog/tag/oracle" target="_self">Oracle</a> considera que el bloque no está disponible para la inserción de nuevas filas hasta que el porcentaje del bloque no cae por debajo del parámetro PCTUSED.</p>
<p>Continuará</p>
<p>&copy;2012 <a href="http://joanballester.es">Joan Ballester</a>. All Rights Reserved.</p>.]]></content:encoded>
			<wfw:commentRss>http://joanballester.es/programacion-desarrollo/tablas-en-oracle.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Diccionario de datos en Oracle</title>
		<link>http://joanballester.es/programacion-desarrollo/diccionario-de-datos-en-oracle.html</link>
		<comments>http://joanballester.es/programacion-desarrollo/diccionario-de-datos-en-oracle.html#comments</comments>
		<pubDate>Mon, 27 Oct 2008 07:00:18 +0000</pubDate>
		<dc:creator>Joan Ballester</dc:creator>
				<category><![CDATA[Programación]]></category>
		<category><![CDATA[Bases de Datos]]></category>
		<category><![CDATA[Diccionario]]></category>
		<category><![CDATA[Oracle]]></category>

		<guid isPermaLink="false">http://www.joanballester.es/blog/?p=88</guid>
		<description><![CDATA[El diccionario de datos es una parte fundamental de la base de datos Oracle. Está formado por tablas, vistas y packages a los que se puede acceder para obtener información. Las tablas se crean automáticamente durante la instalación y permiten saber: Estructura lógica y física de la DB Los usuarios de la DB Restricciones de ...]]></description>
			<content:encoded><![CDATA[<p>El diccionario de datos es una parte fundamental de la base de datos <a href="http://www.joanballester.es/blog/tag/oracle" target="_self">Oracle</a>. Está formado por tablas, vistas y packages a los que se puede acceder para obtener información. Las tablas se crean automáticamente durante la instalación y permiten saber:</p>
<ul>
<li>Estructura lógica y física de la <abbr title="Del inglés, DataBase">DB<br />
</abbr></li>
<li>Los usuarios de la <abbr title="Del inglés, DataBase">DB</abbr></li>
<li>Restricciones de integridad sobre las tablas de la <abbr title="Del inglés, DataBase">DB</abbr></li>
<li>Espacio asociado a cada objeto en la <abbr title="Del inglés, DataBase">DB</abbr> y la cantidad que se está utilizando por los distintos objetos creados por los usuarios de la <abbr title="Del inglés, DataBase">DB</abbr></li>
</ul>
<p>El usuario SYS es el dueño del <abbr title="Diccionario de datos">DD</abbr> y tiene todos los permisos sobre cualquier objeto de la <abbr title="Del inglés, DataBase">DB</abbr> (también los de cualquier usuario). Componentes de la <abbr title="Diccionario de datos">DD</abbr>:</p>
<ul>
<li><strong>Tablas base</strong>: Una serie de tablas a las que el servidor de datos accede cada vez que se procesa una instrucción DDL de SQL o en algunos comandos DML.</li>
<li><strong>Vistas estáticas</strong>: Se crean durante la instalación del <abbr title="en inglés Relational Data Base Management System">RDBMS</abbr> y decodifican y resumen la información contenida en las tablas base. Durante la creación de estas vistas se generan sinónimos públicos para proveer el acceso a los usuarios del <abbr title="en inglés Relational Data Base Management System">RDBMS</abbr>. Estas vistas deben ser utilizadas para las labores de administración rutinarias que necesiten información específica sobre configuración y estado de la <abbr title="Del inglés, DataBase">DB</abbr>. Tienen el nombre de estáticas porque no mantienen información relacionada con las sesiones. Se dividen en 3 categorías:
<ul>
<li><strong>Vistas con prefijo USER</strong>: Puede utilizarlas cualquier usuario de la <abbr title="Del inglés, DataBase">DB</abbr> y se refieren a objetos poseídos por dicho usuario.<br />
Ej: Usuario <em>dave</em> ejecuta: <br />SELECT * FROM USER_TABLES; <br />Se desplegará toda la información de las tablas cuyo propietario sea <em>dave</em>.</li>
<li><strong>Vistas con prefijo ALL</strong>: Evidente, las podrá usar cualquier usuario y además añaden la columna OWNER al resto de información. Con estas vistas se puede tener acceso a la información de los objetos que el usuario es dueño además de los objetos públicos y los que el usuario tiene acceso (por pertenecer a un grupo de seguridad o poseer ciertos privilegios).</li>
<li><strong>Vistas con prefijo DBA</strong>: Dan información sobre todos los objetos de la <abbr title="Del inglés, DataBase">DB</abbr>. Usualmente también tienen la columna OWNER. Sólo las puede utilizar el administrador o usuarios con privilegio SELECT ANY TABLE o pertenezca a un rol que incluya el privilegio.</li>
</ul>
</li>
<li><strong>Vistas dinámicas</strong> (o performance views): Incluyen información sobre las condiciones actuales de operación del <abbr title="en inglés Relational Data Base Management System">RDBMS</abbr>. La mayor parte son creadas durante la instalación y algunas se crean específicamente para monitorear cierta actividad. Todas se identifican por el prefijo V$.<br />
EJ: La vista dinámica V$_SESSION incluye información sobre las sesiones actuales y la vista V$SYSSTAT provee información estadística sobre el <abbr title="en inglés Relational Data Base Management System">RDBMS</abbr>. Para obtener información general sobre las vistas del diccionario de datos se podría utilizar esta consulta:<br />
<br />SELECT * FROM DICTIONARY WHERE table_name LIKE ´%indicador%´;<br />
Por ejemplo, para ver todas las vistas relacionadas con tablas podríamos ejecutar:<br />
<br />SELECT * FROM DICTIONARY WHERE table_name LIKE ´%TABLE%´;
</li>
</ul>
<p>Todos los posts sobre <a href="http://www.joanballester.es/blog/tag/oracle" target="_self">Oracle </a>están basados en los apuntes de las clases de <a href="http://www.balearsinnovacio.com/blog/" target="_blank">Carlos A. García</a>.</p>
<p>&copy;2012 <a href="http://joanballester.es">Joan Ballester</a>. All Rights Reserved.</p>.]]></content:encoded>
			<wfw:commentRss>http://joanballester.es/programacion-desarrollo/diccionario-de-datos-en-oracle.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bases de datos 2</title>
		<link>http://joanballester.es/programacion-desarrollo/bases-de-datos-2.html</link>
		<comments>http://joanballester.es/programacion-desarrollo/bases-de-datos-2.html#comments</comments>
		<pubDate>Tue, 07 Oct 2008 06:13:15 +0000</pubDate>
		<dc:creator>Joan Ballester</dc:creator>
				<category><![CDATA[Programación]]></category>
		<category><![CDATA[Bases de Datos]]></category>
		<category><![CDATA[Oracle]]></category>

		<guid isPermaLink="false">http://www.joanballester.es/blog/?p=18</guid>
		<description><![CDATA[Ayer empezamos la asignatura de Bases de datos 2. Nos imparte la asignatura Carlos A. García (de Innova), y para ser el primer día ha estado muy bien. Nos hemos dedicado casi en exclusiva a modelar. Supongo que también quería saber el nivel que tenía la clase&#8230; Lógico. Para la asignatura utilizaremos Oracle. Me parece ...]]></description>
			<content:encoded><![CDATA[<p>Ayer empezamos la asignatura de Bases de datos 2.</p>
<p>Nos imparte la asignatura Carlos A. García (<a href="http://www.balearsinnovacio.com/blog/" target="_blank">de Innova</a>), y para ser el primer día ha estado muy bien. Nos hemos dedicado casi en exclusiva a modelar. Supongo que también quería saber el nivel que tenía la clase&#8230; Lógico.</p>
<p><img class="bigimg" style="width: 440px;" src="http://upload.wikimedia.org/wikipedia/commons/f/f6/Ejemplo_Diagrama_E-R_extendido.PNG" alt="Entidad Relación" /></p>
<p>Para la asignatura utilizaremos Oracle. Me parece muy buena elección, ya que aquí en Mallorca la mayoría de empresas <em>-sobretodo las relacionadas con la hostelería-</em> utilizan Oracle. Y no olvidemos que en Mallorca, la Hostelería es el sector que mueve más dinero, por tanto, la opción que más trabajo suele dar a un programador / analista o similar.</p>
<p>Fué muy interesante para mí, porque la verdad es que mis conocimientos por ese lado son mínimos. En <a href="http://www.embatconsultors.com" target="_blank">Embat</a>, <a href="http://www.embatconsultors.com/contacto.php" target="_blank">Juan Antonio</a> es siempre el que se dedica a la base de datos (está hecho un crack el tío xD), espero que en breve pueda tirarle un cable en ese campo, que le tengo muy abandonado!.</p>
<p>En el ámbito personal (<a href="http://www.mallorca-rock.com" target="_blank">Mallorca-Rock</a>, por ejemplo), siempre me he ido apañando con unas cuantas tablas en MySQL que crecen, crecen y creeecen&#8230; y en <a href="http://www.hotelopia.es" target="_blank">Hotelopia </a>no me dedico a ello. Actualmente el mundo de la web es tan grande y complejo que en una empresa grande (o relativamente) no tendrías porque llegar a tocar una base de datos. Para ello las empresas contratan a DBA&#8217;s (Administradores de bases de datos), y los que se dedican a la web en sí, no llegan a modelar (normalmente, claro).</p>
<p>En fín! Iremos refrescando conceptos, aprendiendo otros, y ya os iré contando&#8230; :-)</p>
<p>&copy;2012 <a href="http://joanballester.es">Joan Ballester</a>. All Rights Reserved.</p>.]]></content:encoded>
			<wfw:commentRss>http://joanballester.es/programacion-desarrollo/bases-de-datos-2.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

