viernes, 30 de diciembre de 2011

Libros de Oracle 11g

Estudiando en la Universidad, cursé una materia que se llama Bases de Datos, el ing. que la impartio se le ocurrió dar Oracle, en este año (2011) creo q sacaron la nueva version 11g, los libros están en ingles



En este post dejo Dos libros, el primero se trata de los fundamentos de SQL y trae de todo, un poco de normalización pero mas que todo son consultas sql. Select, Insert, Update y Delete. la mayoria de capitulos hacen referencia a la diversidad del Select en conjunto con las funciones basicas pl-sql de oracle. Aquí el libro 1:


Libro I: OCA - Oracle Database 11g SQL Fundamentals (38MB)

El libro 2 es un poco mas interesante diria yo, ya que no trae cosas comunes que se encuentran al primer clic en San google como son las sentencias sql, este libro se trata de la administración de una base de datos oracle, la verdad muy interesante (imagino) ya que pasamos el ciclo dandole al lenguaje sql y no tuvimos tiempo para darle a este que en mi opinion es con el que hubieramos comenzado. Acá el enlace

Libro II: OCA - Oracle Database 11g - Administration I (17MB)

Cabe mencionar que estos libros te preparan para realizar las certificaciones de oracle con el examen 1Z0-051 y 1Z0-05 respectivamente





]

Leer mas sobre esta nota!!

domingo, 28 de agosto de 2011

Programacion I

Este espacio es creado para compartir las prácticas de laboratorio a los Alumnos de la Cátedra de Programación I de la UES-FMOcc.

A continuación se detallan las guías a utilizar en las practicas, descarguelas, utilicelas y comente sus dudas u opiniones:


Guia I - Ambientacion

Guia 2 - Calculadora Básica     
Proyecto.zip

Guia III

Guia 4 - Arreglos (vectores)



Guia 4 v2


Finalmente.... Guia 5 ... xD

Primer corto
Suerte...


Guia 6 (semana del 7 de nov)



Lunes 14 de Nov: No habrá guía, si habrá laboratorio acerca de vectores (ya que muchos tienen problemas con ese tema y han pedido refuerzo xD... asi q tratare de explicar lo q pueda ok.)


Guia 7 (Semana del 14 de nov)....   Ya está la guia!!! xD.....







Leer mas sobre esta nota!!

domingo, 26 de junio de 2011

Usuarios, Restaurar y exportar base de datos mysql


Se aconseja utilizar Mysql Workbench, ya que se encuentra disponible en el sitio web de mysql.

Para la creación del usuario es igual de sencillo que en la consola de mysql, en la ventana principal de mysql elegir la opción Manage Security.




La ventana siguiente nos muestra las opciones de administración de seguridad que mysql workbench nos ofrece para nuestros esquemas.



En la parte de usuarios y privilegios, dar clic en Agregar Cuenta, luego agregamos los datos correspondientes para crear el usuario, recordando que el símbolo % significa “cualquier host” y posteriormente aplicar los cambios. En la pestaña de Roles Administrativos se conceden los permisos que se deseen al usuario. Con esto, se crea de forma diferente un usuario para replicación.

Para Exportar o importar bases de datos, accedemos a "Exportar y Extraer datos" en "Administración de Seguridad" o "Manage Security". 

Para exportar una base de datos y guardarla en un archivo *.sql, seleccionar la pestaña "Exportar en disco".
En las opciones, seleccionamos la base o bases de datos a exportar, seguido en "Exportar autocontenido a archivo" indicamos la ruta y nombre del archivo donde se guardará la base de datos. Como siguiente paso nada mas nos queda comenzar a exportar.

Para restaurar una base de datos basta con dar clic en la pestaña "Importar desde archivo" :
Se nos presentan diversas opciones para restaurar una base de datos, clic en la opción "Importar auto-contenido desde archivo" y elegimos la ruta del archivo *.sql.
Finalmente damos clic en "comenzar a importar" y ya tendremos cargada la base de datos en nuestro sistema.

Se ha tratado de presentar una opción para mantener nuestras bases de datos a prueba de fallos de hardware principalmente, sin embargo resulta necesario aplicar técnicas más avanzadas de seguridad si queremos tener integridad en nuestros datos.

Espero este post sea de utilidad, cualquier comentario u observación no duden en contribuir.


Leer mas sobre esta nota!!

Replicacion en mysql 5.5.8 - windows

Una Base De Datos Distribuida (BDD) es un conjunto de múltiples bases de datos lógicamente relacionadas las cuales se encuentran distribuidas en diferentes espacios lógicos e interconectados por una red de comunicaciones, tienen la capacidad de realizar procesamientos autónomos y globales (replicarse).


Es un sistema de base de datos almacenado en varios servidores y que es vista por el cliente como una sola, esto con el objetivo de mantener redundancia, balanceo de carga, etc.


 “Ante el usuario, un sistema distribuido debe lucir exactamente igual que un sistema que no es distribuido”
La replicación en MySql se puede dar de forma síncrona (clustering) o asíncrona, para el primero se utiliza MySql clúster mientras que para el segundo, un gestor de base de datos Mysql común. En nuestro caso la versión 5.5.8. Actualmente (Junio-2011), mysql clúster existe solamente para plataformas Linux.
La replicación copia y mantiene los objetos de las bases de datos en las múltiples bases de datos que levantan un sistema distribuido. La replicación puede mejorar el funcionamiento y proteger la disponibilidad de las aplicaciones, por que alterna opciones de acceso de los datos existentes.



Ahora bien, se explicaran las ventajas y desventajas de poseer una base de datos distribuida con mysql de forma asíncrona.     



VENTAJAS
  • Disponibilidad: un fallo en una parte del sistema solo afectará a un fragmento, en lugar de a toda la base de datos, el sistema sigue funcionando aún en caso de caída de uno de los nodos.
  • Aumento del paralelismo: Varios nodos pueden realizar consultas en paralelo sobre la misma tabla.
  • Aumento de la sobrecarga en las actualizaciones: El sistema debe asegurar que todas las réplicas de la tabla sean consistentes. Cuando se realiza una actualización sobre una de ellas, los cambios deben propagarse a todas a lo largo del sistema distribuido.
  • Rendimiento: Los sistemas trabajan en paralelo, lo cual permite balancear la carga en los servidores, se hacen todas las consultas SELECT a un servidor esclavo, mientras las actualizaciones se realizan en el maestro. 
  • Modularidad: se pueden modificar, agregar o quitar sistemas de la base de datos distribuida sin afectar a los demás sistemas (módulos).

DESVENTAJAS

  • Complejidad: Se debe asegurar que la base de datos sea transparente, se debe lidiar con varios sistemas diferentes que pueden presentar dificultades únicas. El diseño de la base de datos se tiene que trabajar tomando en cuenta su naturaleza distribuida, por lo cual no podemos pensar en hacer consultas JOIN que afecten varios sistemas.
  • Seguridad: se debe trabajar en la seguridad de la infraestructura así como cada uno de los sistemas. 
  • Carencia de estándares: aún no existen herramientas o metodologías que ayuden a los usuarios a convertir un DBMS (Sistema de Administración de Base de Datos) centralizado en un DBMS distribuido. 
  • Mayor probabilidad de errores: Como los nodos que constituyen el sistema funcionan en paralelo, es más difícil asegurar el funcionamiento correcto de los algoritmos, así como de los procedimientos de recuperación de fallos del sistema. 

¿COMO CONFIGURARLO?

Recursos:
  • Dos pc’s, una que desempeñará el papel de maestro y la otra de esclavo.
  • Software de Mysql instalado (Descargar mysql 5.5.8.rar
  • Conexión física y configuraciones de red entre ambos equipos.
  •           Base de datos “Agenda” (Descargar base de datos).
Procedimiento:

Configurando el servidor Maestro

  • Editar el archivo "C:\Program Files\MySQL\MySQL Server 5.5\my.ini" con los siguientes datos:
[mysqld]
# Id del servidor de BD, no se debe de repetir entre ellos.

server-id=3
#Archivo log, en él se guardarán las actualizaciones y se utilizará para sincronización y
#replicación. Si no existe, crearlo en cualquier ruta con un Notepad.
log-bin="C:\Mysql\mysql_log.bin"
#Base de Datos a vincular y replicar entre ambos servidores.
binlog-do-db=agenda
replicate-do-db=agenda


  • Reiniciar el servicio de Mysql.



  • Acceder a la consola Mysql (colocando los datos correctos en donde aparecen corchetes): 


C:\>mysql –u [usuario] -p
Si no reconoce el comando, ejecutarlo en la ruta:

C:\Program Files\MySQL\MySQL Server 5.5\bin> mysql –u [usuario] –p
  • Crear usuario para replicación:


Mysql> grant replication slave on *.* to ‘usuario’@’dominio’ identified by 'password';


El dominio puede ser la IP de la pc esclavo, o sustituirlo por el porcentaje ‘%’. Se puede crear un usuario de forma gráfica, se detallará más adelante. 


  • Otorgar privilegios

Mysql>flush privileges;
Mysql>use agenda;
Mysql>flush tables with read lock;



  • Visualizando los Parámetros de configuración
Mysql>show master status;

Anotar los parámetros mostrados en la tabla, ya que se utilizarán para configurar el esclavo.



  • Hacer un back up de la base de datos “agenda” para crearla en el servidor esclavo. 
C:\>mysqldump –u root –p --opt agenda > agenda.sql



Configurando el servidor Esclavo

  • Editar el archivo my.ini, agregando la misma configuración que en el maestro.
  • Reiniciar el servicio de mysql.
  • Crear la base de datos (desde la consola de mysql):

Mysql> create database agenda;
Mysql> exit;

C:\> mysql –u root –p agenda < c:\agenda.sql
Esto suponiendo que el archivo .sql se ha colocado en C:\

  • Sincronización de maestro y esclavo para replicación, supondremos la ip:192.168.1.2 para el servidor maestro y haremos uso de los datos de la figura anterior: 
Mysql> slave stop;
Mysql> change master to mater_host=’192.168.1.2’, master_user=’wil’, master_password=’p123’, master_log_file=’mysql_log.000026’, master_log_pos=107;
Mysql> start slave;

  • Para verificar el estado de la replicación, podremos ejecutar el siguiente comando: 
Mysql> show slave status;



Ahora solo nos queda probar la replicación agregando/editando registros en un servidor y comprobándolos en el otro.

Recordemos que con esta configuración solamente se ha creado replicación en una dirección, es decir, hay solo un maestro y un esclavo que replica en él los cambios del maestro, mas no en sentido contrario. Para tener una configuración maestro-maestro y que los cambios en cualquier servidor se vean reflejados en el otro, es necesario hacer ambos servidores maestro y esclavo a la vez con la configuración antes mencionada.




Leer mas sobre esta nota!!

viernes, 24 de junio de 2011

Channel bonding en linux ubuntu

Una empresa ha instalado más cables de red de los que necesita en su centro de datos, ya que al momento de hacerlo, se hizo un análisis de costo beneficio y se decidió que era más barato dejar cables puestos que pagar luego porque se pusieran en un futuro. Alguien sugirió la idea de utilizar esos cables de red para aumentar el ancho de banda, agregando una o dos tarjetas de red más a cada servidor y asignándoles IPs del mismo rango de red. Esta idea atrajo la atención del gerente general, quien le ha solicitado a usted como jefe del departamento de IT, que realice dicho cambio en los servidores tanto Windows como Linux, y que compruebe la efectividad del mismo.

A continuación veremos detalladamente los pasos para resolver dicho problema en el entorno de Linux y posteriormente para Windows.

PARA LINUX





Para poder dar solución al problema antes planteado usamos  una la distribución de Linux Ubuntu, específicamente Ubuntu 10.10 y fue utilizada una técnica llamada “Channel Bonding”, la cual consiste en la unión de varias interfaces físicas de red, simulando un único dispositivo con gran ancho de banda, de manera que las aplicaciones sólo verán una interfaz de red. Con esta técnica no solo logramos aumentar el ancho de banda de nuestra red, sino que también podemos aplicar balanceo de carga y redundancia. En nuestra práctica utilizamos 3 tarjetas de red en una misma computadora (incluyendo la integrada) de diferentes marcas.

Para aplicar el Channel Bonding primero instalamos un paquete llamado “ifenslave”, que nos permitirá vincular las tarjetas físicas en una virtual, esto de la siguiente manera:

1. Abrimos la consola de comandos 

2. Ingresamos como usuario privilegiado con la instrucción sudo su y luego ingresando la contraseña de nuestro usuario.


3. Finalmente ejecutamos el comando apt-get install ifenslave.

4.  Como siguiente paso, activamos nuestro channel Bonding ejecutando el comando: modprobe bonding

Con el comando modinfo bonding se nos desplega toda la información y parámetros asociados al bonding.
 
# modinfo bonding
filename:       /lib/modules/2.6.28-14-server/kernel/drivers/net/bonding/bonding.ko
author:         Thomas Davis, tadavis@lbl.gov and many others
description:    Ethernet Channel Bonding Driver, v3.3.0
version:        3.3.0
license:        GPL
srcversion:     CA9CCB77B640BAD1A0358AC
depends:
vermagic:       2.6.28-14-server SMP mod_unload modversions
parm:           max_bonds:Max number of bonded devices (int)
parm:           num_grat_arp:Number of gratuitous ARP packets to send on failover event (int)
parm:           miimon:Link check interval in milliseconds (int)
parm:           updelay:Delay before considering link up, in milliseconds (int)
parm:           downdelay:Delay before considering link down, in milliseconds (int)
parm:           use_carrier:Use netif_carrier_ok (vs MII ioctls) in miimon; 0 for off, 1 for on (default) (int)
parm:           mode:Mode of operation : 0 for balance-rr, 1 for active-backup, 2 for balance-xor, 3 for broadcast, 4 for 802.3ad, 5 for balance-tlb, 6 for balance-alb (charp)
parm:           primary:Primary network device to use (charp)
parm:           lacp_rate:LACPDU tx rate to request from 802.3ad partner (slow/fast) (charp)
parm:           xmit_hash_policy:XOR hashing method: 0 for layer 2 (default), 1 for layer 3+4 (charp)
parm:           arp_interval:arp interval in milliseconds (int)
parm:           arp_ip_target:arp targets in n.n.n.n form (array of charp)
parm:           arp_validate:validate src/dst of ARP probes: none (default), active, backup or all (charp)
parm:           fail_over_mac:For active-backup, do not set all slaves to the same MAC.  none (default), active or follow (charp)

A continuación vemos en nuestra consola de comandos las interfaces de red que tenemos activas, con el comando ifconfig, en ellas aún no se nota nada nuevo. Ahora vamos a configurar nuestras interfaces de red para crear el bonding channel de la siguiente manera:

 
Editamos el archivo que contiene la configuración de nuestras interfaces con el comando 
nano /etc/network/interfaces
Escribimos lo siguiente, no olvidando cambiar eth0 y eth1 por sus interfaces de red.


 
Damos Ctrl+O y luego Enter para guardar y regresamos a nuestra consola de comandos (Ctrl+x).

Básicamente lo que hicimos fue crear una interfaz virtual llamada “bond0”, que nos servirá como maestra a la cual estarán vinculadas como “esclavos” las interfaces físicas que tenemos activas.

La opción “bond_miimon 100” nos sirve para indicar cada cuanto tiempo en milisegundos se estará verificando las interfaces que se encuentran activas.

Para elegir modo de vinculación agregamos a la configuración de nuestra interfaz maestra la opción “bond_mode” seguido del tipo de vinculación que deseemos, nosotros usamos la opción que trae por defecto que es la opción 0 (round robin); esto es completamente dependiente de nuestra topología de red e intereses. Por lo tanto disponemos de varias opciones:

MODOS DE OPERACION


balance-rr (Round-robin policy) (por defecto) (modo 0): Transmitirá paquetes secuencialmente en todas las tarjetas de red pertenecientes al bonding, partiendo desde el primer dispositivo esclavo hasta el último. Uso: provee balanceo y alta disponibilidad.

Active-backup (Active-backup policy) (activo-pasivo) (modo 1):Solo uno de los esclavos del bonding envía y recibe paquetes. Uso: solo alta disponibilidad.

Balance-xor (XOR policy - modo 2): Se alterna la transmisión de paquetes entre los esclavos del bonding. Uso: provee balanceo y alta disponibilidad.

   Broadcast policy (modo 3): Transmite todas las tramas por todas las interfaces slave. Este modo nos ofrece tolerancia a fallos. Uso: solo alta disponibilidad.

   IEEE 802.3ad Dynamic link aggregation (modo 4):  Crea grupos que comparten la misma velocidad y duplex.  Las tarjetas deben soportar IEEE 802.3ad. Uso: alta disponibilidad y balanceo de carga.

    Balance-tlb (Adaptive transmit load balancing - modo 5): Balancea todo el tráfico de salida, todo el tráfico de entrada es recibido por el esclavo activo. Uso: alta disponibilidad y balanceo de carga.

Balance-alb (Adaptive load balancing): Básicamente hace lo mismo que el mode5, pero también balancea el trafico de entrada. Uso: alta disponibilidad y balanceo de carga.

 
Ahora reiniciamos el servicio de networking de la computadora, para ello escribimos en el terminal /etc/init.d/networking restart. Al visualizar las interfaces de red con ifconfig se nos debe de mostrar una vista como la siguiente:

  

Y damos por finalizada la configuración de nuestro Channel Bonding.


IMPORTANTE:

De acuerdo a la imagen, se puede observar que tanto la interfaz bond0 y las interfaces físicas (eth0, eth1) comparten la misma dirección MAC, esto debido a que el bonding toma la dirección MAC del primer dispositivo y se la colca a todos los pertenecientes al channel bonding para evitar conflictos durante la comunicación. Esta es una práctica segura, pues aunque se desconecte el primer dispositivo de red, el bonding seguirá funcionando con la misma dirección MAC.
Realizamos la prueba de fuego: Reiniciar la pc.

 
Si ejecutamos el comando “dmesg” veremos los mensajes del kernel al iniciar el sistema, cuando el bonding es cargado se muestran mensajes como los siguientes:


# dmesg
(...)
[  469.467868] ADDRCONF(NETDEV_UP): bond0: link is not ready
[  469.541188] bonding: bond0: enslaving eth0 as a backup interface with a down link.
[  469.550127] e100: eth0: e100_watchdog: link up, 100Mbps, full-duplex
[  469.570291] bonding: bond0: link status definitely up for interface eth0.
[  469.570295] bonding: bond0: making interface eth0 the new active one.
[  469.570320] bonding: bond0: first active interface up!
[  469.570502] ADDRCONF(NETDEV_CHANGE): bond0: link becomes ready
[  469.600106] eth1: link up, 100Mbps, full-duplex, lpa 0x45E1
[  469.600296] bonding: bond0: enslaving eth1 as a backup interface with an up link.
[  480.260019] bond0: no IPv6 routers present
(...)

Para comprobar que todo ha funcionado correctamente se ha hecho uso de una herramienta llamada iperf. La cual nos ayudará a medir el ancho de banda entre dos equipos, para instalarla nuevamente ejecutamos como usuario privilegiado en la consola de comandos: apt-get install iperf

Conectamos nuestra computadora a otra en la cual también se haya instalado iperf  y esté configurado con cannel bonding y ejecutamos la instrucción:

 iperf -s        (coloca nuestro pc en modo servidor para escucha de clientes iperf)

En el otro host ejecutar el comando:
iperf –c

Si todo va bien en seguida nos mostrará el ancho de banda de nuestra red y la velocidad de transferencia. Cabe mencionar que tanto iperf como bonding son herramientas extensas y en el presente documento se ha hecho referencia a las que se necesitaban para cumplir el objetivo previsto.


WEBOGRAFIA:

http://tuxjm.net/docs/Configuracion_Canal_Linux_Bonding_Active-Backup_en_Ubuntu_Server/ 
https://help.ubuntu.com/community/UbuntuBonding 
http://www.estrellateyarde.org/so/channel-bonding-en-linux 
http://www.adictosaltrabajo.com/tutoriales/tutoriales.php?pagina=nic_bonding_con_ifenslave_en_ubuntu 




PARA WINDOWS

La idea principal es la misma, configurar ambas interfaces para vincularlas y hacerlas parecer como un solo dispositivo para aumentar el ancho de banda y ofrecer redundancia. El término utilizado para esta plataforma ya no será “bonding” sino “teaming” pero como se ha dicho, la idea es la misma.

Por ser software corporativo, importan muchos aspectos, las reglas básicas son las siguientes:
1. Las interfaces de red deben de ser de la misma marca
2. Se debe de poseer un software especial ofrecido por el distribuidor de las tarjetas que nos permita realizar teaming.

Las marcas recomendadas de tarjetas son Intel, Hp, Broadcom y Asrock, ya que su software para teaming es fácil de conseguir.
Por este requerimiento en especial no hemos podido realizar el teaming, pero a continuación se dejan sitios que hacen referencia a su configuración:


Este post será actualizado con la información debida cuando se tenga la oportunidad de realizar el proyecto con las tarjetas que ofrecen el software para su vinculación.


Leer mas sobre esta nota!!