viernes, 6 de noviembre de 2009

ALTA DISPONIBILIDAD

-REAL APLICATION CLUSTERS

Oracle Real Application Clusters (RAC) es la principal tecnología para clustering de
base de datos que permite a dos o más computadoras (también referidos como
“nodos”) de un cluster acceder concurrentemente a una sola base de datos
compartida. Esto crea efectivamente un sistema de base de datos única que abarca
múltiples sistemas de hardware y aparece frente a la aplicación como una sola base
de datos unificada. Esto trae aparejado enormes beneficios de disponibilidad y
escalabilidad para todas sus aplicaciones, como por ejemplo:
  •    Tolerancia a fallas dentro del cluster, en especial, a fallas de la computadora.  
  •   Flexibilidad y eficiencia de costos en la planificación de capacidad, de manera que un sistema pueda escalar a cualquier capacidad deseada a pedido y a medida que las necesidades de negocio cambian.

Real Application Clusters permite Grids para empresas. Los Grids para Empresas están creados con grandes configuraciones de componentes estandarizados, con precios de commodity: procesadores, servidores, redes y almacenamiento. RAC es la única tecnología que puede aprovechar estos componentes para obtener sistemas de procesamiento útiles para la empresa. Real Application Clusters y Grid reducen drásticamente los costos operacionales y brindan nuevos niveles de flexibilidad, de manera que los sistemas se vuelven más adaptables, preactivos y ágiles. El suministro dinámico de nodos, almacenamiento, CPUs y memoria permite que los niveles de servicio sean mantenidos fácil y eficientemente mientras se reducen los costos mediante un mejor uso. Asimismo, Real Application Clusters es completamente transparente para la aplicación que accede a la base de datos RAC, permitiendo así que las aplicaciones existentes sean implementadas en RAC sin la necesidad de ninguna modificación.

Una ventaja clave de la arquitectura RAC es la tolerancia inherente a fallas suministrada por múltiples nodos. Dado que los nodos físicos se ejecutan independientemente, la falla de uno o más nodos no afectará otros nodos del cluster. El failover ocurre en cualquier nodo del Grid. En un caso extremo, un sistema Real Application Clusters aún suministraría el servicio de base de datos incluso cuando todos los nodos excepto uno hayan dejado de funcionar. Esta arquitectura permite que un grupo de nodos sea puesto online u offline en forma transparente, para el mantenimiento, mientras el resto del cluster sigue brindando el servicio de base de datos. RAC brinda integración incorporada con Oracle Fusion Middleware para hacer el failover de los grupos de conexión. Con esta capacidad, se notifica inmediatamente a la aplicación acerca de la falla, en vez de tener que esperar varios minutos para que ocurra una interrupción TCP. La aplicación puede inmediatamente tomar las medidas adecuadas de recuperación. Y Grid load balancing redistribuirá la
carga a lo largo del tiempo.

Real Application Clusters también ofrece a los usuarios la flexibilidad de agregar nodos al cluster a medida que la demanda de capacidad aumenta, ampliando cada vez más el sistema para ahorrar costos y eliminar la necesidad de reemplazar sistemas más pequeños de nodo único por unos más grandes. Facilita el proceso de
la actualización de capacidad, y hace que sea más rápido, ya que uno o más nodos pueden agregarse al cluster, en vez de reemplazar los sistemas existentes con nuevos nodos más grandes para actualizar los sistemas. La tecnología Cache Fusion implementada en Real Application Clusters y el soporte de InfiniBand networking permite el aumento casi linear de la capacidad sin realizar cambios en sus aplicaciones.
 
Oracle Database 11g optimiza aún más el desempeño, la escalabilidad y los
mecanismos de failover de Real Application Clusters para mejorar sus beneficios de
escalabilidad y alta disponibilidad.


- DATA GUARD

Oracle Data Guard debería ser la base de toda implementación para la recuperación de desastres en la infraestructura de IT. Data Guard ofrece la tecnología para implementar y administrar una o más copias standby de la base de datos deproducción, ya sea en el centro de datos local o en un centro de datos remoto, que podría ubicarse en cualquier lugar del mundo. Una variedad de opciones configurables se encuentran disponibles en Data Guard, las cuales permiten que los administradores definan el nivel de protección que requieren para su empresa. Data Guard también funciona de manera transparente en los clusters de Grid ya que los servidores pueden agregarse dinámicamente en la base de datos standby en caso de que se requiera un failover. Data Guard respalda dos tipos de bases de datos:

  • standby– bases de datos standby físicas que utilizan la tecnología Redo Apply y las
  • bases de datos standby lógicas que utilizan la tecnología SQL Apply. 

Data Guard Redo Apply (Standby Físicas)  
Una base de datos standby física es mantenida y sincronizada con la base de datos de producción mediante la tecnología Redo Apply. Los datos redo de la base de datos de producción son enviados a la standby física que, utilizando la recuperación de medios, aplica los cambios de datos redo a la base de datos standby. Al utilizar Redo Apply, la base de datos standby permanece físicamente idéntica a la base de datos de producción. Las bases de datos standby físicas son buenas para brindar protección ante desastres y errores de datos. En caso de que ocurra un error o desastre, la base de datos standby física puede abrirse, y utilizarse para ofrecer servicios de datos a las aplicaciones y los usuarios finales. Debido a que el
mecanismo eficiente de recuperación de medios es utilizado para aplicar los cambios en la base de datos standby, es respaldado con cada aplicación, y puede fácil y eficientemente seguir el ritmo incluso de las cargas de trabajo más grandes de transacciones. Las bases de datos standby físicas siempre han tenido la capacidad de abrirse en modo solo lectura, ofreciendo un medio para descargar las cargas de trabajo de producción que solo requieren acceso de lectura para la base de datos. Históricamente, la desventaja para este enfoque era la necesidad de que la recuperación de medios quede inactiva mientras la base de datos standby física se abría en modo solo lectura; provocando así que la base de datos standby física esté fuera de sincronización con la base de datos de producción. Los avances innovadores en Oracle Database 11g permiten que la recuperación de medios continúe mientras la base de datos standby física se abre en modo solo lectura. Esta nueva capacidad, denominada standby física con Real Time Query, elimina las desventajas mencionadas anteriormente respecto de abrir la base de datos standby para la actividad de solo lectura– ahora la base de datos standby física permanece en sincronía con la base de datos de producción incluso a medida que brinda servicios a las aplicaciones de solo lectura.

Un beneficio clave de tener una base de datos standby que sea físicamente idéntica a la base de datos de producción es la capacidad de utilizar esta base de datos standby como la fuente para las actividades de backup. Oracle Database 10g incorporó la tecnología Block Tracking que guarda un registro sobre cuáles bloques han cambiado desde el último backup incremental y reduce drásticamente el tiempo requerido para backups incrementales. Antes de Oracle Database 11g, los rápidos backups incrementales que utilizaban la tecnología de seguimiento de bloques (blocktracking) solo podían realizarse en la base de datos primaria. Esta restricción ha sidoeliminada en Oracle Database 11g, permitiendo que los clientes descarguen todas
sus actividades de backup en la base de datos standby.

Data Guard SQL Apply (standby lógica)
Una base de datos standby lógica es mantenida y sincronizada con la base de datos de producción mediante la tecnología SQL Apply. En vez de usar la recuperación de medios para aplicar cambios de la base de datos de producción, SQL Apply
transforma los datos redo en transacciones SQL y los aplica en una base de datos que está abierta para operaciones de lectura/escritura. La capacidad de tener abierta la base de datos permite que la base de datos standby lógica sea utilizada concurrentemente para descargar ciertas cargas de trabajo desde la base de datos de producción. Muchas organizaciones aprovechan la base de datos standby lógica para
Sistemas de Soporte de Decisiones e Información que pueden ser optimizados al agregar índices adicionales y/o Vistas Materializadas a la base de datos standby. 

El proceso SQL Apply mantiene la integridad de datos entre la base de datos de producción y la base de datos standby lógica al comparar los valores anteriores al cambio de los datos redo primarios con los valores anteriores al cambio de la base de datos standby para evitar las corrupciones lógicas. La base de datos standby lógica es una característica para la protección de datos que garantiza la alta disponibilidad con amplias capacidades que mejoran la escalabilidad de la infraestructura de IT. 

Las mejoras en Oracle Database 11g amplían las capacidades de las bases de datos standby lógicas, mejoran drásticamente el desempeño de aplicación y facilitan su uso. En Oracle Database 11g, SQL Apply sigue incorporando soporte de tipos de datos adicionales, otras características de Oracle y PL/SQL:    Tipo de datos XMLType (cuando se almacenan como CLOB)    Capacidad de ejecutar DDL en paralelo con una base de datos standby lógica   Encriptación Transparente de Datos (TDE)    DBMS_FGA (Auditoría de Grano Fino)    DBMS_RLS (Base de Datos Privada Virtual).


-TECNOLOGIA ORACLE FLASHBACK

Cuando la gente autorizada comete errores, usted necesita las herramientas para corregir esos errores. Oracle Database 11g brinda una tecnología para la corrección de errores humanos denominada Flashback. Flashback que revoluciona la recuperación de datos. En el pasado, dañar una base de datos podría tardar minutos, pero varias horas en recuperarla. Con Flashback, el tiempo para corregir los errores es igual al tiempo que llevó cometer el error. También es extremadamente fácil de utilizar, y se puede utilizar un solo comando breve para recuperar toda la base de datos en lugar de seguir algún procedimiento complejo. Flashback ofrece una interface SQL para analizar y reparar rápidamente los errores humanos. Flashback
brinda reparación y análisis de grano fino para el daño localizado – como cuando se elimina el pedido erróneo de un cliente. Flashback también permite la corrección de daños más generalizados, y lo hace con rapidez para evitar un largo tiempo de baja – como cuando se eliminan todas las órdenes del mes de un cliente. Flashback es exclusivo para Oracle Database y soporta la recuperación en todos los niveles,
incluso las filas, transacciones, tablas, espacios de tabla y base de datos.

Flashback Query  
Mediante el uso de Oracle Flashback Query, los administradores pueden consultar cualquier dato del pasado. Esta poderosa característica puede utilizarse para ver y reconstruir los datos corruptos que pueden haberse eliminando o cambiado involuntariamente. 

Flashback Versions Query
Flashback Versions Query, similar a Flashback Query, es una característica que permite que los administradores consulten cualquier dato del pasado. La diferencia y el poder detrás de Flashback Versions Query es su capacidad de recuperar diferentes versiones de una fila a través de un intervalo de tiempo especificado. 

Flashback Transaction
A menudo, es probable que haya una corrupción lógica en una transacción que puede cambiar los datos en múltiples filas o tablas. Flashback Transaction Query permite que un administrador vea todos los cambios realizados por una transacción específica. 

Flashback Data Archive  
Las declaraciones de consultas Flashback mencionadas anteriormente dependen de la disponibilidad de los datos históricos en el espacio de tabla UNDO. La cantidad de tiempo durante el cual los datos históricos permanecen en el espacio de tabla UNDO depende del tamaño del espacio de tabla, el índice de cambios en los datos y los parámetros configurables de la base de datos. En general, los administradores configuran sus bases de datos para guardar los datos UNDO durante no más de días o semanas– definitivamente, no años ni décadas. Para superar este límite, Oracle Database 11g incorpora nuevas capacidades innovadoras disponibles mediante Flashback Data Archive. Flashback Data Archive guarda versiones históricas de los
datos como datos regulares dentro de la base de datos, los cuales pueden ser guardados todo el tiempo necesario por la empresa. Flashback Data Archive revoluciona las estrategias de retención de datos para ayudar a las empresas en el panorama regulatorio en continuo cambio, como Sarbanes-Oxley y HIPPA. Para
garantizar la integridad de los datos retenidos– Flashback Data Archive permite el acceso de solo lectura a versiones históricas de los datos. Flashback Data Archive es un conjunto de herramientas que ofrece a las empresas una increíble flexibilidad para administrar sus datos críticos de negocios. Claramente, las ventajas de Flashback Data Archive superan los beneficios implícitos de la reparación de fallas en los datos. Al utilizar esta tecnología, los desarrolladores y administradores de aplicaciones pueden permitir que los usuarios rastreen y vean la evolución de la información. Dada la naturaleza inalterable de Flashback Data Archive, las empresas obtienen una ventaja estratégica y financiera en términos de preservación de datos para fines como la auditoría. Los desarrolladores de aplicaciones pueden aprovechar Flashback Data Archive incorporando nuevas características en sus aplicaciones, permitiendo que los usuarios vean versiones anteriores de datos– como estados bancarios. Finalmente, los desarrolladores y administradores de aplicaciones ya no tienen la carga de crear y mantener una lógica personalizada para rastrear los cambios de los datos críticos de negocio. 


Flashback Database  
Para restablecer toda una base de datos a un momento pasado, el método tradicional es restablecer la base de datos desde un backup RMAN y recuperar hasta el momento anterior al error. Como el tamaño de bases de datos está creciendo, puede tardar horas o incluso días restaurar toda una base de datos.

Flashback Database es una nueva estrategia para restablecer toda una base de datos hasta un punto específico. Flashback Database utiliza registros flashback para retroceder la base de datos hasta un momento específico. Flashback Database, que utiliza registros flashback, es extremadamente rápido ya que solo restablece bloques que han cambiado. Fácil de utilizar y eficiente, Flashback Database puede literalmente restablecer una base de datos en cuestión de minutos, a diferencia de varias horas. 

Flashback Table  
Con frecuencia, la corrupción lógica es puesta en cuarentena en una o más tablas, no requiriendo así un restablecimiento de toda la base de datos. Flashback Table es la característica que permite al administrador recuperar una tabla, o un grupo de tablas, hasta un momento específico, con rapidez y facilidad. 

Flashback Restore Points  
En las descripciones y ejemplos anteriores de Flashback Database y Flashback Table, hemos utilizado el tiempo como criterio para nuestras operaciones de restablecimiento o flashback. En Oracle Database 10g versión 2, se ofrecían Flashback Restore Points (Puntos de Restauración Flashback) como medio para
simplificar y acelerar la resolución de fallas en los datos. Un punto de restablecimiento es una etiqueta definida por el usuario que marca un momento específico en el que el administrador considera que la base de datos está en buen estado. Flashback Restore Points permite a los administradores remediar, más fácil y
eficientemente, sus bases de datos en caso de actividades perjudiciales o inapropiadas.

viernes, 18 de septiembre de 2009

4-¿Qué es un indice BITMAP en oracle?

Son efectivos para columnas simples con poca cardinalidad, esto es muchos valores distintos. Son más rápidos que los B*-Tree en entornos de read-only y almacenan valores de 0 ó 1 en el ROWID.

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.
Un índice de mapa de bits es un tipo especial de índice de base de datos que utiliza mapas de bits.
Índices de mapa de bits Tradicionalmente se han considerado para trabajar bien para datos como el género, que tiene un pequeño número de valores Distintos, por ejemplo, hombres y mujeres, pero muchas ocurrencias de esos valores.
   Ejemplo:
                create bitmap index person_region on person (region);
 
 




http://knol.google.com/k/jess-armand-calejero-romn/ndices-en-oracle/2lfzfow3ogkw0/8#

http://sqleficiente.wordpress.com/2008/07/19/indices-bitmap/

3-¿Qué es un index 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.



 
 
http://sqleficiente.wordpress.com/2008/07/19/indices-b-tree/

2-¿Qué es un index?

Los indices se usan para mejorar el rendimiento de las operaciones sobre una tabla. Los índices son estructuras opcionales asociadas con mesas y grupos que permiten a las instrucciones SQL para ejecutar más rápidamente contra una mesa. Así como el índice de este manual le ayuda a encontrar la información más rápido que si no hay índice, un índice de base de datos Oracle proporciona una ruta de acceso más rápido a datos de la tabla. Puede utilizar índices sin volver a escribir cualquier consulta.

Base de Datos Oracle ofrece varios sistemas de indexación de rendimiento que proporcionan una funcionalidad complementaria. Estos son:

Índices B-tree: el defecto y el más común

-B-índices de racimo árbol: se define específicamente para clúster
-Los índices de racimo Hash: definido específicamente para un grupo de hash
-Global y los índices locales: se refieren a las tablas e índices con particiones
-Revertir los índices de clave: más útil para aplicaciones de Oracle Real Application Clusters
-Los índices de mapa de bits: compacto, funcionan mejor para las columnas con un pequeño conjunto de valores.
-Función de los índices basados en: contener el valor de precalculadas de una función o expresión
-Función de los índices basados en: contener el valor de precalculadas de una función o expresión

Los índices son lógica y físicamente independiente de los datos en la tabla asociada. Ser estructuras independientes, que requieren espacio de almacenamiento. Usted puede crear o eliminar un índice, sin afectar las tablas de la base, las aplicaciones de base de datos, o de otros índices. La base de datos mantiene de forma automática cuando los índices de insertar, actualizar y eliminar filas de la tabla asociada. Si se le cae un índice, todas las aplicaciones siguen funcionando.




http://ora.u440.com/ddl/create%20index.html

http://translate.google.com.pe/translate?hl=es&sl=en&u=http://download.oracle.com/docs/cd/B19306_01/server.102/b14231/indexes.htm&ei=wfKzSqSiAcGOtgfF_pmtDg&sa=X&oi=translate&resnum=3&ct=result&prev=/search%3Fq%3Dque%2Bes%2Bun%2Bindex%2B%252Boracle%26hl%3Des

1-¿Qué es y para que sirve un tablespace del tipo undo(UNDO TABLESPACE)?

Cada base de datos Oracle debe tener un método de mantenimiento de la información que se utiliza para deshacer, los cambios a la base de datos. Esta información consta de los registros de las acciones de las transacciones, sobre todo antes de que se cometan. Estos registros se refieren colectivamente como Undo.
Undo se utilizan para:
   • Deshacer las transacciones cuando se emite una accion ROLLBACK.
   •Recuperar la base de datos.
   •Analizar los datos a partir de un punto anterior en el tiempo mediante el uso de Flashback Query.
   •Recuperarse de corrupciónes lógicas utilizando las funciones de Flashback.
   •Rollback de las transacciones.
   •Lectura consistente.
   •Operaciones de recuperación de la base de datos
   •Funcionalidad de Flashback.
Cada tablespace se compone de, al menos, un datafile y un datafile solo puede pertenecer a un tablespace.

Se crean de dos formas:
   -Mediante create database.
   -Mediante create tablespace
UNDO_TABLESPACE: un parámetro dinámico opcional que especifica el nombre de un deshacer de tablas. Este parámetro se debe utilizar sólo cuando la base de datos de tablas múltiples deshacer y desea dirigir la instancia de base de datos para utilizar un determinado deshacer de tablas.

  •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.
La modificación de un espacio de tablas Deshacer

 Deshacer de tablas se modifiquen mediante la instrucción ALTER TABLESPACE, sin embargo, como la mayoría de los aspectos de deshacer el sistema de tablas son gestionados, sólo tiene que ocuparse de las siguientes acciones:

  -Adición de un archivo de datos
  -Cambio de nombre de archivo de datos
  -Llevar un archivo de datos en línea o su traslado fuera de línea
  -Empezar o terminar una copia de seguridad abierta en un archivo de datos
  -Activar y desactivar deshacer garantía de retención

Estos son también los atributos sólo se le permite alterar. Si la posibilidad de deshacer de tablas se queda sin espacio, o si desea evitar que lo hagan, usted puede agregar más archivos a la misma o cambiar el tamaño de archivos de datos existentes. El ejemplo siguiente agrega otro archivo de datos de tablas de deshacer undotbs_01:

         ALTER TABLESPACE undotbs_01

            ADD DATAFILE '/ u01/oracle/rbdb1/undo0102.dbf' AUTOEXTEND ON NEXT 1M
             MAXSIZE UNLIMITED;

Usted puede utilizar el ALTER DATABASE...DATAFILE declaración para cambiar el tamaño o ampliación de un archivo de datos.


http://knol.google.com/k/jess-armand-calejero-romn/tablespaces-en-oracle/2lfzfow3ogkw0/3#

http://www.slideshare.net/calejero/tablespaces-en-oracle

viernes, 11 de septiembre de 2009

2-¿Qué es una extension de oracle(extents)?

Una extensión es una unidad lógica de almacenamiento que está formada por un número determinado de bloques de datos contiguos. La agrupación de una o varias extensiones forman un segmento que puede ser una tabla, un índice, un segmento de rollback o un segmento temporal. Por lo tanto, datos de una tabla, sabemos que están en un solo segmento de tipo tabla, que a su vez estará formado por una o varias extensiones y que, cada una de esas extensiones está formada por un número determinado de bloques de datos. Cuando se crea un segmento nuevo, es decir, una tabla, un índice o un segmento de rollback, se crea obligatoriamente una extensión en dicho segmento (en el caso de los rollback se crean dos). El tamaño de esta extensión inicial viene dado por el valor parámetro "initial" que se indica en el momento de crear el segmento.

En otras palabras un Extent es un espacio de disco que se reserva de una sola vez, un segmento que se reserva en un momento determinado de tiempo. El concepto de extent es un concepto físico, unos están separados de otros dentro del disco, todo objeto tiene su segmento asociado.

Asignación de Extensiones

Al crear o, mejor dicho, asignar una nueva extensión al segmento, se está reservando espacio en el disco para almacenar los nuevos datos de dicho segmento. Por lo tanto, al crear la nueva extensión está totalmente vacía y todo su espacio está disponible para almacenar los datos del segmento y, además, en el disco debe haber espacio libre para que Oracle reserve todo el tamaño que necesita la extensión, y lo formatea de forma especial para poder utilizarlo. A partir de ese momento, en esa extensión solamente se podrán almacenar datos del segmento al que pertenece.
Cuando se llenan todos los bloques de datos de una extensión, el segmento solicita una nueva extensión al sistema para poder seguir almacenando información.
¿Cómo podemos determinar el número de extensiones y su tamaño de un segmento?.
Para establecer el tamaño de las futuras extensiones que irá solicitando un segmento se utilizan varios parámetros a los que hay que dar valor en el momento de la creación de la tabla, índice o segmento de rollback. Estos parámetros se indican en la claúsula STORAGE de la sentencia que crea el segmento y son los siguientes

Initial:
Indica el tamaño en bytes de la primera extensión que tendrá el segmento. Se puede indicar después del valor una "K" o "M" para que el valor sea interpretado como Kilobytes o Megabytes en lugar de bytes. Si no se pone explícitamente este parámetro en la creación del segmento, se hereda por defecto el valor que tenga este parámetro en el tablespace en el que se está creando el segmento y que, si no se ha indicado tampoco, por defecto son 5 bytes. Cuando se crea una extensión oracle redondea el tamaño indicado al siguiente múltiplo superior a 5 bloques de datos. Por lo tanto, si nuestros bloques son de 8192 bytes y creamos un segmento con un inital de 256Kbytes, realmente estamos creando un segmento de 32 bloques y oracle lo redondea a 35 bloques que es el primer múltiplo superior a 5 de 32. Por lo tanto, nuestra initial extent será de 35 * 8192 = 280 Kbytes.
Para comprobar estos datos se puede consultar la tabla dba_segments en la que tenemos un registro por cada segmento distinto:
Select segment_name, initial_extent, next_extent, pct_increase, min_extent,
max_extent from dba_segments;

También se puede consultar la vista dba_extents que es un detalle de dba_segments ya que aquí se detalla por cada segmento todas sus extensiones, con su tamaño en concreto.
Select segment_name, extent_id, blocks, bytes from dba_extents;
A pesar de lo que aparece en la documentación de Oracle sobre los redondeos a múltiplos de 5 bloques, nos hemos encontrado con muchos casos en los que creamos segmentos con una sola extensión de 256 Kbytes con bloques de 8192 bytes (con el caso anterior), y en la vista dba_extents, al consultar el valor de initial_extent sigue siendo 256 Kbytes, y en dba_extents, que es donde debería redondearse realmente dicho valor a un múltiplo de 5, algunas extensiones aparecen con 256 Kbytes y otras con los 280 Kbytes que teóricamente deberían tener.


Next:
Indica el tamaño que tendrá la próxima extensión que se cree cuando no quede más sitio en las extensiones que ya tiene asignadas el segmento. De igual manera que en el caso del parámetro initial, Oracle redondea a un múltiplo de 5 bloques este valor, a la hora de crear la extensión nueva. Cada vez que se crea una nueva extensión, se recalcula el valor de este parámetro en función del valor de pctincrease y se actualiza la vista dba_segments.

Pctincrease:
En el momento que se asigna una nueva extensión al segmento, se recalcula el valor que va a tener la próxima que se le asigne y que será, el tamaño de la extensión recién creada (el next que tenía el segmento) aumentado en el porcentaje indicado por pctincrease. Por lo tanto, si qeremos que todas las extensiones de nuestro segmento tengan el mismo tamaño, habrá que asignarles el pctincrease a 0. Oracle recomienda establecer por norma el pctincrease a 0 para evitar que se descontrolen los tamaños de los segmentos, especialmente los temporales, aunque, curiosamente, su valor por defecto es de 50%. No se puede modificar el pctincrease de los segmentos de rollback que es siempre 0.
Mostremos un ejemplo: tenemos un segmento que en el campo next_extent tiene como valor 262144 y en pct_increase tiene 50 y los bloques son de 8192 bytes. Cuando crezca el segmento y solicite una nueva extensión, ésta se creará del tamaño indicado en next_extent redondeándola al primer múltiplo de 5 bloques superior o igual a dicho valor. En nuestro caso 262144 son 32 bloques así que creará una extensión de 35 que son 286720 bytes. Además, recalcula el valor del siguiente next_extent aumentando en un 50% el valor del antiguo next_extent, es decir 262144 * 1,5 = 393216 bytes.
Nota: el recálculo del siguiente extent (393216) se basa en el valor del anterior next_extent (262144) y no en el valor de la extensión creada al redondear a un múltiplo de 5 bloques (286720), ya que si no, nos habría salido un next_extent de 286720 * 1,5 = 430080. Por lo tanto, al consultar las tabla dba_segments veremos que next_extent es 393216 es decir 48 bloques, aunque, eso si, si se vuelve a llenar esta extensión, se creará realmente una extensión de 50 bloques que son los 430080 bytes.

Minextents:
Se indica el número de extensiones que se deben reservar a la vez para un determinado segmento en el momento de su creación. Por defecto es una excepto en los segmentos de rollback que son dos. Puede que las extensiones no estén contiguas. Por supuesto, si en la cláusula storage en la créación del objeto se indican valores para next y pctincrease, las extensiones iniciales que se crean se recalculan para cumplir lo indicado en estos parámetros.

Por ejemplo, creamos un segmento con minextents = 4, con un initial de 262144, next de también 262144, bytes y con un pctincrease del 50%, el resultado será la creación de 4 extensiones de tamaños, 286720, 286720, 409600, 614400 y de un next extent de 884736. Estos tamaños vienen de redondear 32, 48 y 72 a múltiplos de 5 y el next extent es 108 bloques que es el 50% de 72 bloques.

Maxextents:
Es el numero máximo de extensiones que se pueden crear en ese objeto, contando también la primera. Se puede especificar UNLIMITED con lo que pueden crecer indefinidamente. No se recomienda que a los segmentos de rollback se les asigne unlimited maxextents ya que con operaciones complejas podrían aumentar excesivamente de tamaño y llenarían el disco. Así que hay que tener cuidado a la hora de crear rollback segments, sobretodo porque heredan por defecto el valor del parámetro que tenga asignado el tablespace en el que se crean.
Vamos a poner un ejemplo de creación de una tabla en la que se indican valores para los parámetros de la cláusula storage que acabamos de explicar. Crearemos, por ejemplo, una tabla llamada empleado que contiene un solo campo, nombre, con un initial extent de 256 Kilobytes, con 512 Kilobytes de next extent, un pctincrease de 50, con 3 extensiones iniciales y con un máximo de 10 extensiones:
create table empleado (nombre varchar2(50))
storage (initial 256K next 512K pctincrease 50 minextents 3 maxextents 10)
Si consultamos la vista dba_extents nos mostrará que ha creado las 3 extensiones que le hemos indicado con los siguientes valores:

Select extent_id, bytes, blocks from dba_extents
where segment_name = 'EMPLEADO' order by extent_id;
0         286720          35

1         532480          65

2         819200          100

Y, al consultar la vista dba_segments o incluso la vista user_tables para este segmento en concreto, observamos el valor de next_extent:
Select next_extent from user_extents where segment_name = 'EMPLEADO';
1179648 que es el resultado de 512K * 1,5 * 1,5.

Cuando Oracle necesita asignar una nueva extensión a un segmento realiza el siguiente proceso para buscar bloques de datos contiguos en igual número o superior al solicitado por la extensión:

En primer lugar, busca un conjunto de bloques contiguos igual al solicitado por la extensión más uno, para evitar la fragmentación (excepto cuando la extensión es de 5 o menos bloques). Por lo tanto, si la extensión nueva es de 29 bloques oracle buscará un conjunto de justo 30 bloques libres consecutivos.

Si no encuentra ningún conjunto de exactamente ese número de bloques, empieza a buscar un conjunto de más bloques contiguos. Si el primer conjunto que encuentra tiene más de 5 bloques que los que busca, se queda solamente con los que busca, mientras que si la diferencia es de menos de 5 bloques, se coge todo el conjunto.

Por lo tanto, en nuestro caso, si el primer conjunto que encuentra fuera de 35 o más bloques, cogería solo los 30 primeros, mientras que si encuentra un conjunto de entre 31 y 34 se lo quedaría entero.
Nota: En este paso se puede comprobar que, aunque a un segmento le asignemos pctincrease 0, puede que luego nos encontremos en dba_extents algun extensión algo más grande que otras del mismo segmento.
Cuando no encuentra ningún conjunto de bloques de tamaño superior al que busca, realiza un coalesce del tablespace, que es un proceso mediante el cual se unen los distintos bloques que han ido quedándose fragmentados en el tablespace al irse creando y eliminando extensiones mediante este proceso. Una vez hecho el coalesce, Oracle vuelve a repetir los pasos anteriores.

Si, finalmente no encuentra ningún conjunto de bloques para crear la nueva extensión, intenta aumentar el tamaño de alguno de los datafiles del tablespace. Esto solamente lo conseguirá si tienen activado el autoexpand. En caso de no conseguirlo, devolverá un error.


Desasignación de Extensiones

Las extensiones que han sido reservadas por un segmento no son devueltas a Oracle para que se las pueda signar a otro segmento del mismo tablespace hasta que se elimina el objeto mediante la instrucción DROP. Por lo tanto, cuando tenemos una tabla que nos ocupa varias extensiones, a pesar de que borremos todas sus filas, esa tabla seguirá teniendo reservadas las extensiones aunque eso si, estarán vacías.
Existen algunas excepciones. Se pueden devolver todas las extensiones de una tabla excepto las min_extents haciendo un truncate de la misma. Hay que ser muy cuidadoso con esta instrucción ya que se eliminan todos los datos de la tabla y, no hay rollback posible. En los segmentos de rollback, si tienen puesto el parámetro optimal, oracle periódicamente puede desasignarle las extensiones que no usa hasta que vuelve a tener el tamaño óptimo. Finalmente, existe una sentencia que también desasigna las extensiones que no se usan en una tabla:
Alter table nombre_de_table deallocate unused;
En cuanto se ha desasignado una extensión del segmento al que pertenecía, Oracle ya la puede volver a reclamar para que la puedan utilizar otros segmentos del mismo tablespace. Por lo tanto, cuando un nuevo objeto solicite una nueva extensión, si Oracle no encuentra espacio libre suficiente para crear una nueva, y entre las que ha ido desasignando tampoco encuentra ninguna suficientemente grande como para asignarla, puede unir varias de estas extensiones hasta conseguir una lo suficientemente grande como para poder asignársela al segmento. A esta operación se le llama COALESCE de extensiones.




http://www.programacion.com/bbdd/tutorial/oracle/5/

1-¿Qués es un segmento de oracle (segments)?

Un segmento es un conjunto de extensiones que contienen todos los datos de una estructura lógica de almacenamiento específica, dentro de un tablespace (segmentos de datos, segmentos de índice, segmentos temporales, etc).
Una serie de extensiones es un segmento. Cuando un objeto es creado, se reserva una extensión en su segmento.Cada segmento tiene un conjunto de parámetros de almacenamiento que controla su crecimiento:

initial: tamaño de la extensión inicial (10k).

next: tamaño de la siguiente extensión a asignar (10k).

minextents: número de extensiones asignadas en el momento de la creación del segmento (1).

maxextents: número máximo de extensiones (99).

pctincrease: Porcentaje en el que crecerá la siguiente extensión antes de que se asigne, en relación con la última extensión utilizada (50).

pctfree: porcentaje de espacio libre para actualizaciones de filas que se reserva dentro de cada bloque asignado al segmento (10).

pctused: porcentaje de utilización del bloque por debajo del cual Oracle considera que un bloque puede ser utilizado para insertar filas nuevas en él.

tablespace: nombre del espacio de tablas donde se creará el segmento.

Segmentos de Datos.- Es una tabla normal, o una partición de una particionada, o un cluster de tablas. El espacio del diccionario de datos se suele mantener más o menos constante, aunque es crítico que tenga suficiente espacio para crecer en el espacio de tablas SYSTEM. Así, hay que tener cuidado de colocar las tablas de usuario, los índices, segmentos temporales y los segmentos de rollback en otros espacios de tablas. Además, es recomendable que el espacio de tablas SYSTEM esté al 50% o 75% de su espacio disponible. Finalmente, asegurarse que los usuarios no tienen privilegios de escritura en el espacio de tablas SYSTEM.

Segmentos de Índice.- Los índices crecen en tamaño en mayor proporción que las tablas asociadas si los datos en la tabla son modificados frecuentemente. La gestión del espacio es mejor si se mantienen los índices de tablas grandes en espacios de tablas separados.
Segmentos de Rollback.- Los segmentos de rollback almacenan la imagen anterior a una modificación de un bloque. La información en el segmento de rollback se utiliza para asegurar la consistencia en lectura, el rollback (el valor en el segmento de rollback se copia en el bloque de datos) y la recuperación.

Segmentos Temporales.- Oracle los usa para hacer ordenaciones, que no caben en memoria: create index, select ... order by, select distinct, select ... group by, select ... union, select ... intersect, select ... minus.

También se usan para crear tablas temporales y sus índices (son tablas que contienen datos sólo durante una transacción o una sesión). Se puede mejorar su rendimiento ajustando el parámetro sort_area_size. Sin MTS, usar pga_aggregate_target para todas las áreas de sort de todas las sesiones (todas las PGAs).
Los segmentos temporales se crean cuando se efectuan las siguientes operaciones:

• Create Index

• Select con distinct, order by, union, intersect y minus.

• uniones no indexadas.

• Ciertas subconsultas correlacionadas.

Si las tablas a ordenar son pequeñas la ordenación se realiza en memoria principal, pero si la tabla es grande se realiza en disco. El parámetro SORT_AREA_SIZE determina el lugar donde se hace la ordenación. Incrementándole se reduce la creación de segmentos temporales.



http://www.infor.uva.es/~jvegas/cursos/bd/orarq/orarq.html
http://es.geocities.com/vidalreyna/ORACLE.htm#_Toc1186055