lunes, 14 de septiembre de 2009

¿QUE ES UN INDICE BITMAP EN ORACLE?

Los indices B-Tree almacenan rowids en las hojas del arbol. Estos indices pueden llegar a utilizar grandes cantidades de espacio de almacenamiento. A diferencia de los indices B-Tree, los indices de tipo Bitmap utilizan una fraccion de espacio mucho menor representando los rowids como valores binarios (on/off).Los indices Bitmap son aconsejables en situaciones en que los diferentes valores que puede tomar la columna son relativamente pocos. Ejemplos: sexo, estado civil, etc. Cuantos menos valores posibles, mejor. A medida que crece la cantidad de valores posibles, aumentara el tamaño del indice.

¿QUE ES UN INDICE B-TREE EN ORACLE?

El indice B-Tree es el tipo de indice mas comun en una base de datos Oracle. Es el indice default, es decir que si uno crea un indice sin especificar el tipo, Oracle lo creara de tipo B-Tree.La estructura de un indice B-Tree tiene la forma de un arbol invertido. Las estructuras superiores se llaman ramas y la estructura inferior constituyen las hojas. Generalmente los indices B-Tree tienen uno o mas niveles de ramas. Cada rama de un nivel contiene informacion sobre otras ramas del nivel inmediatamente inferior. En el grafico podemos apreciar que la rama superior esta etiquetada con el nombre “Ingrid”. En el siguiente nivel las ramas estan divididas en las alfabeticamente “menores” a la izquierda y las “mayores” a la derecha. Por cada entrada en la tabla, el indice B-Tree registra una entrada en el indice. Cuando se ejecuta una sentencia, Oracle va recorriendo el indice desde la parte superior hasta encontrar el valor buscado. Una vez encontrado el valor buscado de acuerdo con lo requerido por la sentencia SQL, Oracle se dirigira a los datos de la tabla utilizando el rowid especificado en las hojas.Los indices no solo constituyen un metodo para acelerar la busqueda de datos. Tambien pueden ser utilizados para forzar la unicidad de las columnas. Cuando se crea una clave primaria sobre una tabla, Oracle crea un indice unico en forma automatica para garantizar la unicidad de los valores.

¿QUE ES UN INDEX?

Los indices se usan para mejorar el rendimiento de las operaciones sobre una tabla.

En general mejoran el rendimiento las SELECT y empeoran (minimamente) el rendimiento de los INSERT y los DELETE.

Una vez creados no es necesario nada más, oracle los usa cuando es posible.

En oracle existen tres tipos de indices:

  1. Table Index
  2. Bitmap Join Index
  3. Cluster Index
  • create index es una de las pocas sentencias que pueden usar nologging option.
  • create index requiere un segmento temporal si no hay espacio en memoria suficiente.
  • Crear indices basados en funciones require que query_rewrite_enabled este a true y query_rewrite_integrity este a trusted.

¿QUE ES Y PARA QUE SIRVE UN TABLESPACE DEL TIPO UNDO (UNDO TABLESPACE)?

TAblespace de Undo

  • Podemos tener varios tablespaces de “undo”, pero sólo uno de ellos estará activo.
  • No se pueden crear objetos sobre un tablespace de “undo”.
  • Al cambiar de tablespace “undo” activo (con undo_tablespace), los segmentos de rollback que contiene el nuevo tablespace pasan a estar online, mientras que los del tablespace anterior se ponen offline.

Se crean de dos formas:

  • Mediante create database.
  • Mediante create tablespace:
    Create undo tablespace undotbs02 datafile ‘c:\oraclexe\oradata\ex\undo02.dbf’ size 25M reuse autoextend on;

Para eliminarlo:

  • drop tablespace undotbs02;

Parámetros de inicialización de los espacios de tablas de deshacer:

  • Undo_Management (valores MANUAL/AUTO). Si auto se gestionará de forma automática el espacio de deshacer. No es dinámico, cuando se cambia de estado se debe rearrancar la instancia.
  • Undo_tablespace (MANUAL/AUTO). En entornos RAC (Real Application Clusters)

lunes, 7 de septiembre de 2009

¿QUE ES UNA EXTENSION EN ORACLE?

Una extension es una unidad logica de asignicion de espacio de almacenamiento de base de datos formada por una serie de bloques contiguos de bloques de datos. Uno o mas extensiones a su vez constituyen un segmento. Cuando el espacio existente en un segmento se usa totalmente, Oracle Database asigna una nueva extension para el segmento.

http://download.oracle.com/docs/cd/B28359_01/server.111/b28318/logical.htm#i4896

¿QUE ES UN SEGMENTO EN ORACLE?

Un segmento es un conjunto de extensiones que contiene todos los datos de una estructura especifica dentro de una logica de almacenamiento de tablas. Por ejemplo, para cada tabla, Oracle Database asigna una o mas extensiones para formar un segmento de datos de esa tabla, y para cada indice, Oracle Database asigna una o mas extensiones para formar su serie de sesiones de indice.

Es muy importante saber que un segmento pertenece a un solo tablespace.