martes, 7 de mayo de 2013

Actividad de Espejeo

  • Definicion de la actividad


Realizar un espejeo en un SGBD.  Usando un segundo equipo como servidor Mirror. Donde se guardará el respaldo de los datos encontrados en el servidor principal

Investigacion y/o documentacion necesaria para realizar lar practica

Es una configuración donde dos o tres servidores de dase de datos, ejecutándose en equipos independientes, cooperan para mantener copias de la base de datos y archivo de registro de transacciones (log). Es decir, tanto el servidor primario como el servidor espejo mantienen una copia de la base de datos y el registro de transacciones

*      1 . Servidor Principal

Conecta las aplicaciones y recibe las transacciones

*       2 . Servidor Mirror(Esclavo)

Recibe los logs de transacciones del Servidor Principal y las aplica en la base de datos reflejada

*       3 . Servidor Witness (Opcional)

Monitoriza el estado en que se encuentran los servidores Principal y Mirror

 
Pasos para hacer un mirroring


 

  • Secuencia de pasos para realizarla


REPLICACION EN MYSQL
2 SERVIDORES
MASTER 192.168.0.1
ESCLAVO 192.168.0.2

 
1.- CREAMOS UNA BASE DE DATOS LLAMADA PC, CREAMOS UNA TABLA LLAMADA pc
 
2.- AQUÍ SE CREA EL LOG BINARIO DEL ARCHIVO MY.INI
 
3.- AQUÍ SE APAGAMOS Y PRENDIMOS MYSQL PARA REINICIARLO PARA QUE APLIQUE LOS CAMBION RECIEN ESTABLECIDOS.
 
4.- AQUÍ SE PONEN LOS COMANDOS PARA REPLICAR EL SERVIDOR ESCLAVO , TAMBIEN SE CREA EL USUARIO QUE VAMOS AUTILIZAR PARA REALIZAR LA REPLICACION, ASI MISMO SE LE ASIGNAN TODOS LOS PRIVILEGIOS AL USUARIO CREADO.


5.-DENTRO DEL CODIGO SE LE ASIGNAN LOS PERMISOS A LA BASE DE DATOS CREADA, AHORA CON EL COMANDO SHOW MASTER STATUS SE MUESTRA EL STATUS DEL SERVIDOR MASTER.



6.- SE CREA EL BACKUP DE LA BASE DE DATOS, ES DECIR, LA COPIA DE RESERVA PARA RESPALDAR LA INFORMACION DE LA BASE DE DATOS.


7.- AQUÍ SE MUESTRA CUANDO SE CREO EL ARCHIVO RESERVA.SQL



8.- SE CREA LA BASE DE DATOS EN LA OTRA COMPUTADORA QUE ES EL SERVIDOR ESCLAVO.

 
9.-  ABRIMOS EL ARCHIVO RESERVA.SQL QUE SE ENCUENDRA EN EL DISCO LOCAL EN LA BASE DE DATOS CREADA EN LA COMPUTADORA ESCLAVO.
 
10.- AQUÍ SE ASIGNA EN EL ESCLAVO LOS DATOS DEL SERVIDOR MAESTRO


11.- SE APAGA Y SE PRENDE MYSQL PARA QUE APLIQUE LOS CAMBIOS REALIZADOS.

 
12.- PARAMOS EL SERVIDOR ESCLAVO PARA DARLE LA CONFIGURACION NECESARIA PARA QUE FUNCIONE CORRECTAMENTE, SE CREA LA INSTRUCCIÓN CHANGE MASTER CON UNA IP , USUARIO, PASSWORD Y EL ARCHIVO LOG QUE SE CREO EN EL MASTER Y LA POSICION DEL ARCHIVO.
 
13.- INICIAMOS EL SERVIDOR Y UTILIZAMOS LA BASE DE DATOS CREADA EN ESTE CASO pc.
 
14.- AQUÍ SE LE INSERTAN DATOS A LA TABLA PC.

 
15.- POR ULTIMO SE MUESTRA EL DATO QUE INGRESAMOS A LA TABLA PC CON LA SENTENCIA SELECT * FROM.


  • Nombre de quienes participaron en la actividad


Raul Alejandro Escoto Reyes
Jorge Asis Gonzalez Barradas
Iris Melissa Gonzalez Blanco
Edgar Ivan Meza Castillo
Selene Alejandra Nolasco Marin

miércoles, 1 de mayo de 2013

REPLICA

Investigar:


  • Que es Replica (replication) de una BD:
Las replicas locales consisten en un duplicado de la BD del servidor en el disco duro de su computadora, es decir, en el servidor local.
La replica de una BD se reliza solamente una vez la primera y posteriormente se procede a la replicacion de los documentos cada vez que se considere necesario.
  • Beneficios de la replica de datos en un DBMS:
    • Rendimiento:
Normalmente y dependiendo del caso, hay mas lecturas que escritura en una BD, por lo que tener varios nodos dolo procesando la lectura puede traer un gran beneficio de rendimiento en una BD muy consultada.
    • Pruebas de fallas:
Es como un esclavo estando casi sincrónica-mente actualizado puede ser útil en caso de que el nodo maestro caiga, este puede reemplazarlo y así no detener el servicio.
    • Fiabilidad:
Muchas veces se puede tener una replicación para tener la seguridad de que los datos están siendo copiados a otro nodo, en caso de sufrir un desperfecto en el maestro.
    • Generación de Bloqueos:
Aunque esta es mas precisa, también se puede usar para procesos que necesiten leer datos, generando bloqueos, al hacerlo sobre un esclavo esto no interviene en el funcionamiento de todo el sistema, es muy usado para hacer copias de seguridad, o extraer grandes cantidades de datos para generar estadísticas.
  • Ejemplo de una replicacion de BD (puede ser video o descripcion):

lunes, 29 de abril de 2013

ESPEJEO

Investigar:

  • Que es Espejo (mirroring)? 
Es una solucion para el aumento de la disponibilidad de una BD de SQL Server Mirroring se implementa en una BD y solo funciona con BD que utilizan el modelo de recuperación completa.
  •  Beneficios del espejeo de Datos en un DBMS.
    • Aumenta la disponibilidad de una BD:
En el caso de un desastre, en el modo de alta seguridad  con conmutación automática por error rápidamente trae la copia de reserva de la BD en linea. En el resto de modos de funcionamiento, el administrador de BD tiene la alternativa de forzar el servicio para la copia de reserva de la BD. 
    • Aumenta la protección de datos.
Duplicación de BD proporciona una redundancia completa o casi completa de los datos, dependiendo de si el mdo de funcionamiento es de alta seguridad o de alto rendimiento.
    • Mejora de la disponibilidad de la BD de produccion durante las a ctualizaciones.
Para reducir al mínimo el tiempo de inactividad para una BD reflejada, puede actualizar secuencialmente las instancias de SQL Server que alojan los socios de conmutacion por error. Esto hara incurrir en el tiempo de inactividad de una unica prueba de fallos. Esta forma de actualizacion se conoce como una actualizacion sucesiva. 

  •  Como se hace una  Activación de espejeo en un DBMS

  • Ejemplos de Creación de Espacios de disco con espejo:

viernes, 26 de abril de 2013

SEGURIDAD

Investigación #23
  • Cuales son los problemas de seguridad que se pueden presentar en relación a las bases de datos ( minimo 5 problemas):
    1. Lectura no autorizada de los datos (robo de informacion).
    2. La modificacion no autorizada de los datos.
    3. La destruccion no autorizada de los datos.
    4. El sistema debe diseñarse a prueba de intromisiones
    5. Ningún sistema puede evitar de manera absoluta las intromisiones malintencionadas
  • Como manejan las posibles soluciones los administradores de las bases de datos 

  1.  Autenticacion: examinan las capacidades de logo unico a la red.
  2. Sistma de Archivos Encriptados:  Proporciona a la tecnologia principal de encriptacion de archivos para almacenar archivos.
  3. Seguridad IP: Proporciona a los administradores de redes un elemento estrategico de defensa para la proteccion.
  4. Servicios de Seguridad en Windows 2000: Examina los procedimientos relacionados con la gestion de cuentas.
  5. Tarjetas Inteligentes: Examina los procesos de autenicacion utilizando tarjetas inteligentes y los protocolos, servicios y especificaciones asociadas.
  6. Obligatoria: Sirve para imponer seguridad de varios niveles.

miércoles, 17 de abril de 2013

RENDIMIENTO DE UNA BD

Investigar:
  • Familias de Tareas:
Dado que la mayor parte de los sistemas de software, como las BD, son complejos hay bastante variacion en su implementacion por los diferentes fabricantes. En consecuencias, hay una varicacion significativa en su rendimiento en las diferentes tareas. Puede que un sistemas sea el mas eficiente en una tarea concreta y puede que otro lo sea en una tarea diferente. Por tanto, una sola tarea no suele resultar suficiente para cuantificar el rendimiento del sistema. En lugar de eso, el rendimiento de un sistema se mide mediante familias de tareas estandarizadas, denominadas pruebas de rendimiento.

En terminos de flujo el sistema se ejecuta a un promedio de 1.98 transacciones por segundo, mientras el sistema B se ejecuta a 50 transacciones por segundo. suponiendo que las transacciones de todos los tipos son igual de probable el modo correcto de promediar los flujos respecto de los diferentes tipos de transacciones es tomar la media armonica de los flujos. La media armonica de N flujos f1,...,fn se define como:
  • Clases de Aplicaciones de BD:
El procesamiento en conexion de transacciones (Online Transaction Processing, OLTP) y la ayuda a la toma de decisiones (incluyendo el preosamiento en conexion analitico [Online Analytical Procesing OLAP] ) son dos grandes clases de aplicaciones manejadas por los sistemas de BD. Estas dos ckases de tareas tienen necesidades diferentes. La elevada concurrencia y las tecnicas inteligentes para acelerar el procesamiento de las operaciones de compromiso se nesecitan para soportar una elevada tasa de transacciones de actualizacion. Por otro lado, los buenos añgoritmos para la evalucacion de consultas y la optimizacion de las consultas son necesarios para la ayuda a la toma de decisiones.


  • Las Pruebas TPC
El consejo para el rendimiento del procesamiento de las transacciones (Transaction Processing Perfomance Council, TPC) ha definido una serie de normas de indices para los sitemas de BD. Los indices TPC se definen con gran minuciosidad. Definen el conjunto de relaciones y el tamaño de las tuplas. Definen el numero de tuplas de las relaciones no como un numero fijo, sino como un multiplo del numero de transacciones por segundo qeu se afirma que se realizan, para reflejar que una tasa mayot de ejecucion de transacciones probablemente se halle correlacionada con un numero mayot de cuentas.
Cuando se mide el rendimiento, el  sistema debe proporcionar un tiempo de respuesta qye se halle dentro de ciertos limites, de modo que un flujo elevado no pueda obtenerse a expensas de tiempos de respuesta muy elevados. 

  • Las Pruebas BDOO
La naturaleza de las aplicaciones de las BD Orientadas a Objetos es diferente de las aplicaciones tipicas de procesamiento de transacciones. Por tanto, se ha propuesto un conjunto diferente de indices para las BDOO. La prueba operaciones con objetos, version 1, popularmente conocido como indice 001, fue una de las primeras propuestas. El indice OO7 sigue una filosofia diferente de los indices TPC.
Los indices TPC proporcionan uno o dos resultados (en terminos del promedio de transacciones por segundo y de transacciones por segundo); el indice OO7 proporciona un conjunto de resultados, que contienen un resultado de indice independiente para cada una de las diferentes clases de  operaciones. El motivo de este enfoque es que no esta todavia claro lo que es la transaccion BDOO tipica.

Fuentes:
http://unefazuliasistemas.files.wordpress.com/2011/04/fundamentos-de-bases-de-datos-silberschatz-korth-sudarshan.pdf

lunes, 15 de abril de 2013

ACTIVIDAD 22

Investigar

  • Que es
    • archivo indice:
      • Es una estructura de memoria secundaria que permite el acceso directo a las filas de una tabla (este o no agrupada)
      • Aumenta la velocidad de respuesta de la consulta, mejorando su rendimiento y optimizando su resultado.
      • Su manejo se hace de forma inteligente.
      • Hay dos tipos de indices:
        • Indices Ordenados: estos indices estan basados en una disposicion ordenada de los valores.
        • Indices Asociativos: Estos indices estan basados en una distribucion uniforme de los valores a traves de una serie de cajones. El valor asignado a cada cajon esta determinado  por una funcion, llamada funcion de asociacion
    • tipos de indices:
      • Se considerarán varias técnicas de indexación y asociación. Ninguna de ellas es la mejor. Sin embargo, cada técnica es la más apropiada para una aplicación específica de bases de datos. Cada técnica debe ser valorada según los siguientes criterios:
        •  Tipos de acceso. Los tipos de acceso que se soportan eficazmente. Estos tipos podrían incluir la búsqueda de registros con un valor concreto en un atributo, o buscar los registros cuyos atributos contengan valores en un rango especificado.
        • Tiempo de acceso.El tiempo que se tarda en buscar un determinado elemento de datos, o conjunto de elementos, usando la técnica en cuestión.
        • Tiempo de inserción. El tiempo empleado en insertar un nuevo elemento de datos. Este valor incluye el tiempo utilizado en buscar el lugar apropiado donde insertar el nuevo elemento de datos, así como el tiempo empleado en actualizar la estructura del índice.
        • Tiempo de borrado.El tiempo empleado en borrar un elemento de datos. Este valor incluye el tiempo utilizado en buscar el elemento a borrar, así como el tiempo empleado en actualizar la estructura del índice.
  • Como crear los Indices en


    • MySQL:



    • Oracle:




  • Crear minimo 4 archivos indices de su base de datos (veterinaria),

domingo, 14 de abril de 2013

ACTIVIDAD 21

MODOS DE OPERACION DE UN SGBD

MySQL:

  • roolback:
Finaliza la transaccion actual y deshace los cambios realizados.

   Sentencia ROLLBACK: señala el final sin exito de una transaccion, elimina todas las modificaciones de datos realizados desde el inicio de la transaccion y tambien libera los recursos que retiene la transaccio. Su sintaxis es la  siguiente:


  • commit:
finaliza la transaccion actual y hace  permanentes (confirma) los cambios realizados.

   Sentencia COMMIT: marca el final de una transaccion correcta, implicita o definida por el usuario. COMMIT hace que todas las modificaciones efectuadas sobre los datos desde el inicio de la transaccion sea parte permanente de la base de datos, y ademas, libera los recursos mantenidos por la conexion. su sintaxis es la siguiente:


  • recovery:
Realiza un respaldo de la base de datos creada en MySQL.

Sentencia RECOVERY O RESTORE:
en  terminal ponemos lo siguiente:


De nuevo, sustituyendo User por el usuario administrador de MySQL, mypassword por la contraseña de dicho usuario y database por el nombre de la base de datos que deseamos restaurar.

-Si marca un error a la hora de restaurar, entonces primero creamos la base de datos antes de iniciar la restauracion, en terminal entramos a MySQL.
despues creamos la Base de Datos
salimos de MySQL
                                quit;
Despues de esto corremos el comando de para restaurar la base de datos cambiando database por el nombre de la BD que acabamos de crear.

Oracle:


  • roolback: deshace los cambios de la transaccion en curso.
libera los recursos bloqueados por cualquier actualizacion hecha con la transaccion actual (LOCK TABLE).

si ejecutamos:
Borrar un registro pero cancela los cambios. queda como si no hubiesemos hecho nada.
  • commit: Guarda los cambios de la transaccion en curso 
Libera los recursos bloqueados por cualquier actualizacion hecha con la transaccion actual.

Si ejecutamos:
Borrar un registro y guarda los cambios.
  • recovery: Almacena el estado de la estructura fisica de  la Base de Datos.


ACTIVIDAD 20

CREACION DE BITACORAS EN LA BASE DE DATOS VETERINARIA


martes, 19 de marzo de 2013

ACTIVIDAD #19

Crear espacios de trabajo para tres usuarios de niveles distintos, con restricciones de almacenamiento acordes a cada perfil de usuario.

  • Usuario administrador: (todos los privilegios)
  • Usuario: médico veterinario: (con privilegios para  borrar, agregar y modificar  datos pero no para modificar estructuras de las tablas)
  • Usuario Asistente: solo tiene privilegios de consulta

ACTIVIDAD #18


Implementar el esquema de base de datos de la clínica veterinaria (incluir todas las tablas  y  datos de 5 pacientes con 2  registros de  visita a la clínica cada  uno) 



Microsoft Windows [Versión 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. Reservados todos los derechos.
C:\Users\Chiquita>cd..
C:\Users>cd..
C:\>cd xampp
C:\xampp>cd mysql
C:\xampp\mysql>cd bin
C:\xampp\mysql\bin>mysql -hlocalhost -uroot -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.5.16 MySQL Community Server (GPL)
Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> USE VETERINARIA;
Database changed
mysql> CREATE TABLE PROPIETARIO(Id_PROPIETARIO INT NULL PRIMARY KEY,
NOMBRE VARCHAR(20),
DIRECCION VARCHAR(20),
TELEFONO VARCHAR(10),
PROFECCION VARCHAR(20));
Query OK, 0 rows affected (1.16 sec)
mysql> INSERT INTO PROPIETARIO (Id_PROPIETARIO,NOMBRE,DIRECCION,TELEFONO,PROFECCION) VALUES (1234,'LEONARDO PEREZ','MEJIA 2030','6566305622','ING. INDUSTRIAL');
Query OK, 1 rowaffected (0.25 sec)
mysql> INSERT INTO PROPIETARIO Id_PROPIETARIO,NOMBRE,DIRECCION,TELEFONO,PROFECCION) VALUES (1235,'ANTONIO LOPEZ','LA TULE 270','6566302980','ING. CIVIL'),
-> (1236,'MARCO BARRAZA','ROSALES 483','6566920343','DENTISTA'),
-> (1237,'DANIEL DELGADO','DE LEON 3920-20','6562391038','CIRUJANO');
Query OK, 3 rows affected (0.71 sec)
Records: 3  Duplicates: 0  Warnings: 0
mysql> INSERT PROPIETARIO VALUES(1238,'MARIO NAVA','PORTAL TRIUNFO','6561709602'
,'ING. INDUSTRIAL');
Query OK, 1 row affected (0.29 sec)



mysql> INSERT INTO CONSULTA VALUES(0001,'VACUNA','23/09/2011',NULL,NULL);
Query OK, 1 row affected, 1 warning (0.21 sec)

mysql> INSERT INTO CONSULTA VALUES(0002,'ANTIRIAVICO','23/10/2012',NULL,NULL);
Query OK, 1 row affected, 1 warning (0.04 sec)

mysql> INSERT INTO CONSULTA VALUES(0003,'ANTIRIAVICO','30/10/2012',NULL,NULL);
Query OK, 1 row affected, 1 warning (0.08 sec)

mysql> INSERT INTO CONSULTA VALUES(0004,'ANTIRIAVICO','30/12/2012',NULL,NULL);
Query OK, 1 row affected, 1 warning (0.07 sec)

mysql> INSERT INTO CONSULTA VALUES(0005,'CHEQUEO','30/12/2012',NULL,NULL);
Query OK, 1 row affected, 1 warning (0.09 sec)





ACTIVIDAD #17

Planear y definir la estructura lógica de la base de datos de acuerdo a los recursos disponibles

  • Memoria y Disco
Calcular el número de bytes por registro (de acuerdo al tipo de datos) y cuantos bytes aproximados se requiere para almacenar los datos de  100 pacientes con un promedio de  6 consultas al año) deben contener todos los campos  incluidos en la hoja clínica en el diseño

TABLA #1


TABLA #2


TABLA DE LOS TOTALES DE BYTES




martes, 12 de marzo de 2013

PARTICION EN MYSQL Y ORACLE

PARTICION UTILIZANDO DE PLATAFORMA ORACLE

Tipos de Particionado en Oracle

El particionado fue introducido por primera vez en la versión 8 de Oracle, como una nueva característica DW para la gestión de grandes cantidades de información, y para facilitar la tarea de los administradores de bases de datos. Dependiendo de la versión de Oracle en la que estemos, tenemos diferentes tipos de particionado disponibles:
  • Oracle 8.0: particionado Range
  • Oracle 8i: además del particionado Range se añaden los tipos Hash y Composite.
  • Oracle 9iR2/10g: se amplian con el tipo List y se permiten nuevas combinaciones de tipos en el particionado Composite.
  • Oracle 11g: se introducen las columnas virtuales para particionar(que no existen fisicamente en la tabla), así como el particionado de Sistema (donde podemos gestionar directamente en que partición de la tabla se insertan los registros) y el particionado por Intervalos.

Particionado de Tablas en Oracle

Basicamente, el particionado se realiza utilizando una clave de particionado (partitioning key), que determina en que partición de las existentes en la tabla van a residir los datos que se insertan. Oracle también permite realizar el particionado de indices y de tablas organizadas por indices. Cada partición ademas puede tener sus propias propiedades de almacenamiento. Las tablas particionadas aparecen en el sistema como una única tabla, realizando el sistema la gestión automatica de lectura y escritura en cada una de las particiones (excepto  para el caso de la partición de Sistema introducida en la versión 11g). La definición de las particiones se indica en la sentencia de creación de las tablas, con la sintaxis oportuna para cada uno de los tipos.
  • Particionado Range: la clave de particionado viene determinada por un rango de valores, que determina la partición donde se almacenara un valor.
  • Particionado Hash: la clave de particionado es una función hash, aplicada sobre una columna, que tiene como objetivo realizar una distribución equitativa de los registros sobre las diferentes particiones. Es útil para particionar tablas donde no hay unos criterios de particionado claros, pero en la que se quiere mejor el rendimiento.
  • Particionado List: la clave de particionado es una lista de valores, que determina cada una de las particiones.
  • Particionado Composite: los particionados anteriores eran del tipo simples (single o one-level), pues utilizamos un unico método de  particionado sobre una o mas columnas. Oracle nos permite utilizar metodos de particionado compuestos, utilizando un primer particionado de un tipo determinado, y luego para cada particion, realizar un segundo nivel de particionado utilizando otro metodo. Las combinaciones son las siguientes (se han ido ampliando conforme han ido avanzando las versiones): range-hash, range-list, range-range, list-range, list-list, list-hash y hash-hash (introducido en la versión 11g).
  • Particionado Interval: tipo de particionado introducido igualmente en la versión 11g. En lugar de indicar los rangos de valores que van a determinar como se realiza el particionado, el sistema automáticamente creara las particiones cuando se inserte un nuevo registro en la b.d. Las técnicas de este tipo disponible son Interval, Interval List, Interval Range e Interval Hash (por lo que el particionado Interval es complementario a las técnicas de particionado vistas anteriormente).
  • Particionado System: se define la tabla particionada indicando las particiones deseadas, pero no se indica una clave de particionamiento. En este tipo de particionado, se delega la gestión del particionado a las aplicaciones que utilicen la base de datos (por ejemplo, en las sentencias sql de inserción deberemos de indicar en que partición insertamos los datos).
Referente al particionado, y como característica interesante, Oracle nos permite definir sentencias SQL del tipo DML haciendo referencia a las particiones. Es lo que llaman nombres de tabla con extension de partición (partition-extended table names). Por ejemplo, podremos hacer un select sobre una tabla particionada indicando en la sintaxis la partición de la queremos que se haga lectura. Por ejemplo:

SELECT * FROM schema.table PARTITION(part_name);
 

Esto es igualmente válido para las sentencias INSERT, UPDATE, DELETE, LOCK TABLE. Esta sintaxis nos proporciona una forma simple de acceder a las particiones individuales como si fueran tablas, y utilizarlas, por ejemplo, para la creación de vistas (utilizando la vista en lugar de la tabla), lo que nos puede ser util en muchas situaciones.
Vamos a ver un ejemplo de construcción de cada uno de los tipos de particionado.

Particionado Range

Esta forma de particionamiento requiere que los registros estén identificado por un “partition key”  relacionado por un predefinido rango de valores. El valor de las columnas “partition key” determina la partición a la cual pertenecerá el registro.
CREATE TABLE sales
  ( prod_id       NUMBER(6)
  , cust_id       NUMBER
  , time_id       DATE
  , channel_id    CHAR(1)
  , promo_id      NUMBER(6)
  , quantity_sold NUMBER(3)
  , amount_sold   NUMBER(10,2)
  )
 PARTITION BY RANGE (time_id)
 ( PARTITION sales_q1_2006 VALUES LESS THAN (TO_DATE('01-APR-2006','dd-MON-yyyy'))
 TABLESPACE tsa
 , PARTITION sales_q2_2006 VALUES LESS THAN (TO_DATE('01-JUL-2006','dd-MON-yyyy'))
 TABLESPACE tsb
 , PARTITION sales_q3_2006 VALUES LESS THAN (TO_DATE('01-OCT-2006','dd-MON-yyyy'))
 TABLESPACE tsc
 , PARTITION sales_q4_2006 VALUES LESS THAN (TO_DATE('01-JAN-2007','dd-MON-yyyy'))
 TABLESPACE tsd
 );
 Este tipo de particionamiento esta mejor situado cuando se tiene datos que tienen rango lógicos y que pueden ser distribuidos por este. Ej. Mes del Año o un valor numérico.

Particionado Hash

Los registros de la tabla tienen su localización física determinada aplicando un valor hash a la columna del partition key. La funcion hash devuelve un valor automatico que determina a que partición irá el registro. Es una forma automática de balancear el particionado. Hay varias formas de construir este particionado. En el ejemplo siguiente vemos una definición sin indicar los nombres de las particiones (solo el número de particiones):

CREATE TABLE dept (deptno NUMBER, deptname VARCHAR(32))
     PARTITION BY HASH(deptno) PARTITIONS 16;
 
Igualmente, se pueden indicar los nombres de cada particion individual o los tablespaces donde se localizaran cada una de ellas:

CREATE TABLE dept (deptno NUMBER, deptname VARCHAR(32))
     STORAGE (INITIAL 10K)
     PARTITION BY HASH(deptno)
       (PARTITION p1 TABLESPACE ts1, PARTITION p2 TABLESPACE ts2,
        PARTITION p3 TABLESPACE ts1, PARTITION p4 TABLESPACE ts3);

Particionado List

Este tipo de particionado fue añadido por Oracle en la versión 9, permitiendo determinar el particionado según una lista de valores definidos sobre el valor de una columna especifica.
 
CREATE TABLE sales_list (salesman_id NUMBER(5), salesman_name VARCHAR2(30),
sales_state VARCHAR2(20),
sales_amount NUMBER(10),
sales_date DATE)
PARTITION BY LIST(sales_state)
(
PARTITION sales_west VALUES('California', 'Hawaii'),
PARTITION sales_east VALUES ('New York', 'Virginia', 'Florida'),
PARTITION sales_central VALUES('Texas', 'Illinois')
PARTITION sales_other VALUES(DEFAULT)
);
Este particionado tiene algunas limitaciones, como que no soporta múltiples columnas en la clave de particionado (como en los otros tipos), los valores literales deben ser únicos en la lista, permitiendo el uso del valor NULL (aunque no el valor MAXVALUE, que si puede ser utilizado en particiones del tipo Range). El valor DEFAULT sirve para definir la partición donde iran el resto de registros que no cumplen ninguna condición de las diferentes particiones.

Particionado Composite

Este tipo de particionado es compuesto, pues se conjuga el uso de dos particionados a la vez. Veamos un ejemplo utilizando el tipo RANGE y el HASH. En primer lugar, hace un particionado del tipo RANGE utilizando rangos de años. En segundo lugar, para cada partición definida por cada año, hacemos un segundo particionado (subparticion) del tipo aleatorio (HASH) por el valor de otra columna:
 

CREATE TABLE TAB2 (ord_id     NUMBER(10),
     ord_day    NUMBER(2),
     ord_month  NUMBER(2),
     ord_year   NUMBER(4)
     )
  PARTITION BY RANGE(ord_year)
  SUBPARTITION BY HASH(ord_id)
  SUBPARTITIONS 8
   ( PARTITION q1 VALUES LESS THAN(2001)
     ( SUBPARTITION q1_h1 TABLESPACE TBS1,
       SUBPARTITION q1_h2 TABLESPACE TBS2,
       SUBPARTITION q1_h3 TABLESPACE TBS3,
       SUBPARTITION q1_h4 TABLESPACE TBS4
     ),
     PARTITION q2 VALUES LESS THAN(2002) 
     ( SUBPARTITION q2_h5 TABLESPACE TBS5,
       SUBPARTITION q2_h6 TABLESPACE TBS6,
       SUBPARTITION q2_h7 TABLESPACE TBS7,
       SUBPARTITION q2_h8 TABLESPACE TBS8
     ),
     PARTITION q3 VALUES LESS THAN(2003) 
     ( SUBPARTITION q3_h1 TABLESPACE TBS1,
       SUBPARTITION q3_h2 TABLESPACE TBS2,
       SUBPARTITION q3_h3 TABLESPACE TBS3,
       SUBPARTITION q3_h4 TABLESPACE TBS4
     ),
     PARTITION q4 VALUES LESS THAN(2004)
     ( SUBPARTITION q4_h5 TABLESPACE TBS5,
       SUBPARTITION q4_h6 TABLESPACE TBS6,
       SUBPARTITION q4_h7 TABLESPACE TBS7,
       SUBPARTITION q4_h8 TABLESPACE TBS8
     )
   )
Las combinaciones permitidas son las siguientes (se han ido ampliando conforme han ido avanzando las versiones de Oracle): range-hash, range-list, range-range, list-range, list-list, list-hash y hash-hash (introducido en la versión 11g).

 

Particionado Composite en Oracle

Particionado Interval

El particionado Interval ha sido introducido en la versión 11g para habilitar un mantenimiento de particiones desasistido. Normalmente, cuando realizamos un particionado sobre una tabla, indicamos una lista de valores o rangos para crear de antemano las particiones.  Posteriormente, ajustamos la definición de las particiones para incluir nuevas para nuevos rangos o valores. Con las particiones Interval, preparamos  para que Oracle cree las particiones de forma automática cuando lo necesite. Básicamente, se define un intervalo y una directiva para decirle a Oracle como se tiene que comportar. Veamos un ejemplo:
 
CREATE TABLE T_11G(C1 NUMBER(38,0),
 C2 VARCHAR2(10),
 C3 DATE)
 PARTITION BY RANGE (C3) INTERVAL (NUMTOYMINTERVAL(1,'MONTH'))
 (PARTITION P0902 VALUES LESS THAN (TO_DATE('2009-03-01 00:00:00','YYYY-MM-DD HH24:MI:SS')));

Hemos creado una partición base, y con lo especificado en Interval definimos como gestionar la creación automática de nuevas particiones. La posibilidad de definir un intevalo y que Oracle se encargue de crear las particiones a medida que se vayan necesitando resulta muy interesante para facilitar el mantenimiento y administración de particiones.

Particionado System

Una de las nuevas funcionalidades introducida en la version 11g es el denominado partitioning interno o de sistema. En este particionado Oracle no realiza la gestión del lugar donde se almacenaran los registros, sino que seremos nosotros los que tendremos que indicar en que partición se hacen las inserciones.

create table t (c1 int,
                c2 varchar2(10),
                c3 date)
     partition by system
    (partition p1,
     partition p2,
     partition p3);
Si hicieramos un insert sobre la tabla (por ejemplo, insert into t values (1,’A',sysdate);), daría error, siendo la instrucción a ejecutar correcta la siguiente:
insert into t partition (p3) values (1,’A',sysdate);
Puede ser util este particionado para aplicaciones donde nos interesa ser nosotros lo que gestionamos la forma en la que se realiza el particionado (lógica de aplicación).

Uso de columnas virtuales para particionar

En la versión 11g se pueden definir en las tablas columnas virtuales (no existen físicamente). Ademas estas columnas se pueden utilizar para realizar particionado sobre ellas. La forma de crear una tabla con columnas de este tipo sería la siguiente:
 create table t (c1 int,
                c2 varchar2(10),
                c3 date,
                c3_v char(1)
                generated always as
                (to_char(c3,'d')) virtual
                )
 partition by list (c3_v)
  (partition p1 values ('1'),
   partition p2 values ('2'),
   partition p3 values ('3'),
   partition p4 values ('4'),
   partition p5 values ('5'),
   partition p6 values ('6'),
   partition p7 values ('7') );

Gestión del particionado.

La gestión del particionado es totalmente dinámica, de forma que se podrán añadir particiones a una tabla particionada existente, juntar o borrar particiones, convertir una particion en una tabla no particionada, partir una partición en dos (Splitting), hacer un truncate (borra los datos de la partición pero deja la estructura). También podemos mover una partición de un tablespace a otro, renombrarla, etc. Os recomiendo la lectura de blog Bases de Datos y Tecnología donde se explican en detalle algunas de estas operaciones, así como el  blog Database Design que también habla sobre el tema).
El particionado en Oracle tiene muchas mas funcionalidades de las que podeis ampliar información en la propia documentación online del fabricante
 

PARTICION ULTILIZANDO DE PLATAFORMA MYSQL

(SON ENLACES)

PARTICION MYSQL

 CREACION DE PARTICIONES MYSQL