martes, 12 de marzo de 2013

Crear particiones utilizando diferentes plataformas Mysql y Oracle

Creación de particiones en Mysql:

En MySQL 5.0, se pueden usar particiones de dispositivos en bruto como ficheros de datos del espacio de tablas.

Cuando se crea un nuevo fichero de datos, se debe colocar la palabra clave newraw inmediatamente a continuación del tamaño del fichero de datos en innodb_data_file_path. La partición deberá ser al menos tan grande como el tamaño que se haya especificado. Nótese que 1MB en InnoDB significa 1024 * 1024 bytes, en tanto que 1MB, en las especificaciones de los discos, generalmente significa 1.000.000 de bytes.
[mysqld]
innodb_data_home_dir=
innodb_data_file_path=/dev/hdd1:3Gnewraw;/dev/hdd2:2Gnewraw
 
La próxima vez que se inicie el servidor, InnoDB advertirá la palabra clave newraw e inicializará la nueva partición.
 
En Windows puede asignarse una partición de disco como fichero de datos de este modo:
[mysqld]
innodb_data_home_dir=
innodb_data_file_path=//./D::10Gnewraw
 
Ejemplo:
1.- Creamos la tabla reports:
CREATE TABLE reports (
  id int(10) NOT NULL AUTO_INCREMENT,
  date datetime NOT NULL,
  report TEXT,
  PRIMARY KEY (id,date)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
Como se puede ver hemos añadido como índice de tabla el campo date, esto es necesario si luego queremos particionar por fecha.

2.-
Ahora que tenemos la tabla creada vamos a particionar por mes:
ALTER TABLE reports PARTITION BY RANGE(TO_DAYS(date))(
  PARTITION p201111 VALUES LESS THAN (TO_DAYS("2011-12-01")),
  PARTITION p201112 VALUES LESS THAN (TO_DAYS("2012-01-01")),
  PARTITION p201201 VALUES LESS THAN (TO_DAYS("2012-02-01")), 
  PARTITION p201202 VALUES LESS THAN (TO_DAYS("2012-03-01")),
  PARTITION p201203 VALUES LESS THAN (TO_DAYS("2012-04-01")),
  PARTITION p201204 VALUES LESS THAN (TO_DAYS("2012-05-01")),
  PARTITION p201205 VALUES LESS THAN (TO_DAYS("2012-06-01")),
  PARTITION pDefault VALUES LESS THAN MAXVALUE);
La última partición (pDefault) tendrá todos los registros que no entren en las particiones anteriores. De esta manera nos aseguramos que la información nunca dejará de insertarse en la tabla.



Creación de particiones 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 .
  • Particionado Interval:  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).

viernes, 8 de marzo de 2013

Bitácora



¿Qué es?

Las bitácoras son fundamentales en lo que es la administración de bases de datos, pues con estas se puede tener un registro físicamente de todos los usuarios u objetos que se encuentren en determinada base de datos así como la información de las operaciones de las transacciones . Está almacenada en disco de forma que no es afectada por ningún tipo de fallo salvo error del propio disco o catástrofe.

 Funciones:

·         En caso de pérdida de usuarios u objetos y sus dueños así como los roles que desempeñan dentro del gestor nos sirven como respaldo de la información.

·         Para permitir la recuperación de transacciones fallidas, el sistema mantiene un fichero de bitácora o diario (también llamado fichero log ó journal). BD. Esta información puede necesitarse para recuperar desde transacciones fallidas.


Bitácora en mysql:

mysql -hlocalhost -uroot --tee=C: "Bitacora.txt"

c=Letra del dispositivo de almacenamiento
"Bitacora.txt=nombre de la bitacora


Bitácora en Oracle:
Para crear una bitácora en oracle es necesario el uso de triggers.

CREATE OR REPLACE TRIGGER  "AUDIT_EMPSALES_VALUES"
AFTER
update of "SALARY" on "EMPLOYEES"
for each row
begin
INSERT INTO audit_record_tb1
   VALUES(sys_context('userenv','current_user'),
      sysdate, :old.employee_id, :old.salary, :new.salary);
end;
/
ALTER TRIGGER  "AUDIT_EMPSALES_VALUES" ENABLE
/


jueves, 7 de marzo de 2013

Comparacion entre partición de disco y sistema de archivos


Las particiones son divisiones de tamaño fijo del disco duro..

Un sistema de archivos son los métodos y estructuras de datos que un sistema operativo utiliza para seguir la pista de los archivos de un disco o partición; es decir, es la manera en la que se organizan los archivos en el disco.

La diferencia entre un disco o partición y el sistema de archivos que contiene es importante. Unos pocos programas (incluyendo, razonablemente, aquellos que crean sistemas de archivos) trabajan directamente en los sectores crudos del disco o partición; si hay un archivo de sistema existente allí será destruido o corrompido severamente. La mayoría de programas trabajan sobre un sistema de archivos, y por lo tanto no utilizarán una partición que no contenga uno (o que contenga uno del tipo equivocado).

Particionar un disco duro es realizar una división en él de modo que, a efectos prácticos, el sistema operativo crea que tienes varios discos duros, cuando en realidad sólo hay un único disco físico dividido en varias partes.Mientras que los sistemas de archivos indican el modo en que se gestionan los archivos dentro de estas  particiones.

Partición de disco, su importancia y como particionar un disco


Las particiones son divisiones de tamaño fijo del disco duro. partición del disco duro puede tener un sistema de archivos (sistema operativo) distinto. Cada disco duro constituye una unidad física distinta. Sin embargo, los sistemas operativos no trabajan con unidades físicas directamente sino con unidades lógicas . Dentro de una misma unidad física de disco duro puede haber varias unidades lógicas. Cada una de estas unidades lógicas constituye una partición del disco duro. Esto quiere decir que podemos dividir un disco duro en, por ejemplo, dos particiones (dos unidades lógicas dentro de una misma unidad física) y trabajar de la misma manera que si tuviésemos dos discos duros (una unidad lógica para cada unidad física).

Existen tres tipos de particiones: particiones primarias , particiones extendidas y unidades lógicas.

Importancia  de las Particiones:

Son dos los motivos fundamentales por los que se han de realizar particiones en un disco o bien disponer físicamente de al menos dos de ellos.
(DT, AGENCIAS) En primer lugar, permitirá mantener los datos personales en un lugar independiente a donde se encuentra el sistema operativo. En caso de que éste no pueda arrancar, será mucho más fácil acceder a ellos.

Por otro lado, el acceso a los datos es más rápido y las operaciones sobre los discos que efectúe el programa que se estén utilizando se realizarán de forma más eficaz.
 
Como Particionar Disco Curo:
 
 

miércoles, 6 de marzo de 2013

Actividad 1. Instancia de un SGBD


Cada vez que se inicia una base de datos, se reserva espacio para un área global de sistema (SGA, System Global Area) y se inician los procesos background de Oracle. El área global del sistema es un área de memoria utilizada para guardar la información de la base de datos compartida por los usuarios de la base de datos. A la combinación de procesos de background y de búfers de memoria se le denomina instancia de Oracle.

Una instancia Oracle tiene dos tipos de procesos: procesos de usuario y procesos 
de Oracle. 
• Un proceso de usuario ejecuta el código de un programa de aplicación (p.e. una consulta). 
• Los procesos de Oracle son procesos del servidor que realizan el trabajo necesario para responder a los procesos de usuario, y también son los encargados de realizar las tareas de mantenimiento del Servidor Oracle.



Instancias de un SGBD

Instancia Oracle


-Conjunto de estructuras de memoria y procesos que acceden a los archivos de una BD.
 
-Distintas instancias pueden acceder a la misma BD.
-Componentes:
 
*Área Global del Sistema (System Global Area, SGA): Área de memoria con la
información de la BD que pueden compartir los usuarios. Se crea cuando se
empieza a usar una BD. Puede verse alguna información desde SQL*PLUS, usando
el comando ShoW SGA.

Esta compuesta por:
Caché de BD: bloques de datos de la BD más recientemente accedidos - para reducir los
accesos a disco.

Buffer del registro de rehacer: para el fichero de redo log (se utiliza para la recuperación).
Memoria compartida: para consultas SQL y otros procesos.

*Área Global de Programa (Program Global Area, PGA): Buffer de memoria con
información sobre los procesos.
 
*Procesos de Usuario: Aplicaciones que ejecuta el usuario.
 
*Procesos de Oracle: Procesos del servidor (para atender a los usuarios) y
procesos de segundo plano (background), para tareas de registro,monitorizacion...